cdx-manager 0.2.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,7 +6,7 @@ If you use AI coding tools at scale ; multiple accounts, multiple providers : yo
6
6
 
7
7
  One command to launch any session. Zero auth juggling.
8
8
 
9
- [![License](https://img.shields.io/badge/license-MIT-4C8BF5)](LICENSE) ![Version](https://img.shields.io/badge/version-v0.2.1-4C8BF5) ![Python](https://img.shields.io/badge/python-3.9%2B-3776AB?logo=python&logoColor=white)
9
+ [![License](https://img.shields.io/badge/license-MIT-4C8BF5)](LICENSE) ![Version](https://img.shields.io/badge/version-v0.3.2-4C8BF5) ![Python](https://img.shields.io/badge/python-3.9%2B-3776AB?logo=python&logoColor=white)
10
10
 
11
11
  ---
12
12
 
@@ -69,6 +69,38 @@ One command to launch any session. Zero auth juggling.
69
69
 
70
70
  ### Install
71
71
 
72
+ From npm:
73
+
74
+ ```bash
75
+ npm install -g cdx-manager
76
+ ```
77
+
78
+ With pipx:
79
+
80
+ ```bash
81
+ pipx install cdx-manager
82
+ ```
83
+
84
+ With uv:
85
+
86
+ ```bash
87
+ uv tool install cdx-manager
88
+ ```
89
+
90
+ With the standalone GitHub installer:
91
+
92
+ ```bash
93
+ curl -fsSL https://raw.githubusercontent.com/AlexAgo83/cdx-manager/main/install.sh | sh
94
+ ```
95
+
96
+ For a specific version:
97
+
98
+ ```bash
99
+ curl -fsSL https://raw.githubusercontent.com/AlexAgo83/cdx-manager/main/install.sh | CDX_VERSION=v0.3.2 sh
100
+ ```
101
+
102
+ From source:
103
+
72
104
  ```bash
73
105
  git clone <repo>
74
106
  cd cdx-manager
@@ -83,18 +115,12 @@ To uninstall:
83
115
  make uninstall
84
116
  ```
85
117
 
86
- Alternatively, for a non-symlinked global install:
118
+ Alternatively, for a non-symlinked global source install:
87
119
 
88
120
  ```bash
89
121
  npm install -g .
90
122
  ```
91
123
 
92
- Once published to npm:
93
-
94
- ```bash
95
- npm install -g cdx-manager
96
- ```
97
-
98
124
  ### Environment
99
125
 
100
126
  By default, `cdx` stores all data under `~/.cdx/`. Override with:
@@ -0,0 +1,32 @@
1
+ # CHANGELOGS_0_3_0
2
+
3
+ Release date: 2026-04-16
4
+
5
+ ## CDX Manager 0.3.0
6
+
7
+ CDX Manager 0.3.0 adds Python-native and standalone installation paths in addition to npm.
8
+
9
+ ### Packaging
10
+
11
+ - Added `pyproject.toml` so the CLI can be installed with `pipx`, `pip`, or `uv tool`.
12
+ - Added the Python console entrypoint `cdx = "src.cli:cli_entry"`.
13
+ - Added `install.sh` for GitHub Release based installs into `~/.local/share/cdx-manager` with a symlink in `~/.local/bin`.
14
+ - Included `install.sh` and `pyproject.toml` in the npm package file list.
15
+ - Documented npm, pipx, uv, curl installer, and source installation paths.
16
+ - Added GitHub Actions automation for PyPI publication when a GitHub Release is published.
17
+
18
+ ### Validation
19
+
20
+ ```bash
21
+ npm run lint
22
+ npm test
23
+ python3 -m venv /tmp/cdx-pyinstall
24
+ /tmp/cdx-pyinstall/bin/pip install --no-build-isolation .
25
+ /tmp/cdx-pyinstall/bin/cdx --version
26
+ npm --cache /tmp/cdx-npm-cache publish --dry-run
27
+ ```
28
+
29
+ ### Notes
30
+
31
+ - PyPI publication is now technically possible, but still requires PyPI credentials and an explicit publish step.
32
+ - The standalone installer defaults to the latest GitHub Release and supports `CDX_VERSION=vX.Y.Z` for pinned installs.
@@ -0,0 +1,27 @@
1
+ # CHANGELOGS_0_3_1
2
+
3
+ Release date: 2026-04-16
4
+
5
+ ## CDX Manager 0.3.1
6
+
7
+ CDX Manager 0.3.1 is a release-channel synchronization update.
8
+
9
+ ### Packaging
10
+
11
+ - Uses npm Trusted Publishing through GitHub Actions OIDC instead of long-lived npm tokens.
12
+ - Keeps npm, PyPI, GitHub Releases, pipx, uv, and the standalone installer aligned on the same release version.
13
+ - Retains the Python-native packaging and standalone install support introduced in 0.3.0.
14
+
15
+ ### Validation
16
+
17
+ ```bash
18
+ npm run lint
19
+ npm test
20
+ npm --cache /tmp/cdx-npm-cache publish --dry-run
21
+ python -m build
22
+ python -m twine check dist/*
23
+ ```
24
+
25
+ ### Notes
26
+
27
+ - This release exists because the npm Trusted Publishing workflow was added after the `v0.3.0` tag. A fresh release is required for GitHub Actions to run the updated workflow definition for npm publishing.
@@ -0,0 +1,21 @@
1
+ # CHANGELOGS_0_3_2
2
+
3
+ Release date: 2026-04-16
4
+
5
+ ## CDX Manager 0.3.2
6
+
7
+ CDX Manager 0.3.2 updates the npm release workflow to use the npm CLI version required for Trusted Publishing.
8
+
9
+ ### Packaging
10
+
11
+ - Runs the npm publish workflow on Node 24.
12
+ - Installs npm 11 before publishing so GitHub Actions OIDC trusted publishing is supported.
13
+ - Keeps npm, PyPI, GitHub Releases, pipx, uv, and the standalone installer aligned on the same release version.
14
+
15
+ ### Validation
16
+
17
+ ```bash
18
+ npm run lint
19
+ npm test
20
+ npm --cache /tmp/cdx-npm-cache publish --dry-run
21
+ ```
package/install.sh ADDED
@@ -0,0 +1,61 @@
1
+ #!/usr/bin/env sh
2
+ set -eu
3
+
4
+ REPO="AlexAgo83/cdx-manager"
5
+ VERSION="${CDX_VERSION:-}"
6
+ PREFIX="${PREFIX:-$HOME/.local}"
7
+ BIN_DIR="${BIN_DIR:-$PREFIX/bin}"
8
+ INSTALL_ROOT="${CDX_INSTALL_ROOT:-$PREFIX/share/cdx-manager}"
9
+
10
+ need() {
11
+ if ! command -v "$1" >/dev/null 2>&1; then
12
+ echo "cdx install: missing required command: $1" >&2
13
+ exit 1
14
+ fi
15
+ }
16
+
17
+ need curl
18
+ need tar
19
+ need python3
20
+
21
+ if [ -z "$VERSION" ]; then
22
+ VERSION="$(
23
+ curl -fsSL "https://api.github.com/repos/$REPO/releases/latest" |
24
+ python3 -c 'import json, sys; print(json.load(sys.stdin)["tag_name"])'
25
+ )"
26
+ fi
27
+
28
+ case "$VERSION" in
29
+ v*) TAG="$VERSION" ;;
30
+ *) TAG="v$VERSION" ;;
31
+ esac
32
+
33
+ TMP_DIR="$(mktemp -d)"
34
+ cleanup() {
35
+ rm -rf "$TMP_DIR"
36
+ }
37
+ trap cleanup EXIT INT TERM
38
+
39
+ ARCHIVE_URL="https://github.com/$REPO/archive/refs/tags/$TAG.tar.gz"
40
+ curl -fsSL "$ARCHIVE_URL" -o "$TMP_DIR/cdx-manager.tar.gz"
41
+ tar -xzf "$TMP_DIR/cdx-manager.tar.gz" -C "$TMP_DIR"
42
+
43
+ SRC_DIR="$(find "$TMP_DIR" -mindepth 1 -maxdepth 1 -type d | head -n 1)"
44
+ TARGET_DIR="$INSTALL_ROOT/${TAG#v}"
45
+
46
+ mkdir -p "$INSTALL_ROOT" "$BIN_DIR"
47
+ rm -rf "$TARGET_DIR"
48
+ mkdir -p "$TARGET_DIR"
49
+
50
+ cp -R "$SRC_DIR"/. "$TARGET_DIR"/
51
+ chmod +x "$TARGET_DIR/bin/cdx"
52
+ ln -sfn "$TARGET_DIR/bin/cdx" "$BIN_DIR/cdx"
53
+
54
+ echo "Installed cdx $TAG to $TARGET_DIR"
55
+ echo "Linked $BIN_DIR/cdx"
56
+ case ":$PATH:" in
57
+ *":$BIN_DIR:"*) ;;
58
+ *)
59
+ echo "Add $BIN_DIR to PATH to run cdx from anywhere." >&2
60
+ ;;
61
+ esac
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cdx-manager",
3
- "version": "0.2.1",
3
+ "version": "0.3.2",
4
4
  "description": "Terminal session manager for Codex and Claude accounts.",
5
5
  "license": "MIT",
6
6
  "author": "Alexandre Agostini",
@@ -27,6 +27,8 @@
27
27
  "bin",
28
28
  "changelogs",
29
29
  "src",
30
+ "install.sh",
31
+ "pyproject.toml",
30
32
  "README.md",
31
33
  "LICENSE"
32
34
  ],
package/pyproject.toml ADDED
@@ -0,0 +1,44 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "cdx-manager"
7
+ version = "0.3.2"
8
+ description = "Terminal session manager for Codex and Claude accounts."
9
+ readme = "README.md"
10
+ requires-python = ">=3.9"
11
+ license = "MIT"
12
+ authors = [
13
+ { name = "Alexandre Agostini" }
14
+ ]
15
+ keywords = ["codex", "claude", "cli", "terminal", "session-manager", "ai-tools"]
16
+ classifiers = [
17
+ "Development Status :: 3 - Alpha",
18
+ "Environment :: Console",
19
+ "Intended Audience :: Developers",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.9",
22
+ "Programming Language :: Python :: 3.10",
23
+ "Programming Language :: Python :: 3.11",
24
+ "Programming Language :: Python :: 3.12",
25
+ "Programming Language :: Python :: 3.13",
26
+ "Topic :: Software Development",
27
+ "Topic :: Terminals",
28
+ ]
29
+ dependencies = []
30
+
31
+ [project.urls]
32
+ Homepage = "https://github.com/AlexAgo83/cdx-manager"
33
+ Repository = "https://github.com/AlexAgo83/cdx-manager.git"
34
+ Issues = "https://github.com/AlexAgo83/cdx-manager/issues"
35
+ Changelog = "https://github.com/AlexAgo83/cdx-manager/tree/main/changelogs"
36
+
37
+ [project.scripts]
38
+ cdx = "cdx_manager.cli:cli_entry"
39
+
40
+ [tool.setuptools]
41
+ packages = ["cdx_manager"]
42
+
43
+ [tool.setuptools.package-dir]
44
+ cdx_manager = "src"
package/src/cli.py CHANGED
@@ -39,7 +39,7 @@ from .status_view import (
39
39
  _format_status_rows,
40
40
  )
41
41
 
42
- VERSION = "0.2.1"
42
+ VERSION = "0.3.2"
43
43
 
44
44
 
45
45
  # ---------------------------------------------------------------------------
@@ -180,9 +180,13 @@ def main(argv, options=None):
180
180
  raise CdxError(f"Unknown command: {command}. Use cdx --help.")
181
181
 
182
182
 
183
- if __name__ == "__main__":
183
+ def cli_entry():
184
184
  try:
185
185
  raise SystemExit(main(sys.argv[1:]))
186
186
  except CdxError as error:
187
187
  sys.stderr.write(f"{format_error(error)}\n")
188
188
  raise SystemExit(error.exit_code)
189
+
190
+
191
+ if __name__ == "__main__":
192
+ cli_entry()