codex-statusline 0.2.2__tar.gz → 0.3.0__tar.gz
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.
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/PKG-INFO +1 -1
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/codex_statusline.egg-info/PKG-INFO +1 -1
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/codex_statusline.egg-info/entry_points.txt +1 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/pyproject.toml +2 -1
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/__init__.py +1 -1
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/cli.py +1 -1
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/launcher.py +2 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/render.py +2 -1
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_update.py +2 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/LICENSE +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/README.md +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/codex_statusline.egg-info/SOURCES.txt +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/codex_statusline.egg-info/dependency_links.txt +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/codex_statusline.egg-info/top_level.txt +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/setup.cfg +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/__main__.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/configure.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/data.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/entry.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/hook.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/manage.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/src/update.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_auto_shells.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_configure.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_data.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_fish.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_management.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_render.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_startup.py +0 -0
- {codex_statusline-0.2.2 → codex_statusline-0.3.0}/tests/test_tmux.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "codex-statusline"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.3.0"
|
|
4
4
|
description = "A tmux statusline for OpenAI Codex CLI: context usage, 5h and weekly quota, and session tokens at a glance. Local-only."
|
|
5
5
|
requires-python = ">=3.11"
|
|
6
6
|
license = "MIT"
|
|
@@ -23,6 +23,7 @@ Changelog = "https://github.com/Moviw/codex-statusline/blob/main/CHANGELOG.md"
|
|
|
23
23
|
|
|
24
24
|
[project.scripts]
|
|
25
25
|
codex-statusline = "src.cli:main"
|
|
26
|
+
cxbar = "src.cli:main" # short alias
|
|
26
27
|
|
|
27
28
|
[build-system]
|
|
28
29
|
requires = ["setuptools>=77"]
|
|
@@ -25,7 +25,7 @@ def main():
|
|
|
25
25
|
record()
|
|
26
26
|
return 0
|
|
27
27
|
parser = argparse.ArgumentParser(
|
|
28
|
-
prog="codex-statusline",
|
|
28
|
+
prog="cxbar" if Path(sys.argv[0]).name == "cxbar" else "codex-statusline",
|
|
29
29
|
description="A status bar for Codex CLI: context, 5h/weekly quota, and tokens. "
|
|
30
30
|
"Run `codex` as usual once installed.",
|
|
31
31
|
)
|
|
@@ -247,6 +247,7 @@ def launch(args):
|
|
|
247
247
|
cfg = load_config()
|
|
248
248
|
reader = LogReader()
|
|
249
249
|
latest = {}
|
|
250
|
+
updater = "cxbar" if shutil.which("cxbar") else "codex-statusline"
|
|
250
251
|
if cfg["update_check"]:
|
|
251
252
|
from .update import newer_version
|
|
252
253
|
|
|
@@ -290,6 +291,7 @@ def launch(args):
|
|
|
290
291
|
)
|
|
291
292
|
state["quotas"] = merge_quotas(state["quotas"], others)
|
|
292
293
|
state["update"] = latest.get("version")
|
|
294
|
+
state["updater"] = updater
|
|
293
295
|
if time.monotonic() - branch_at > 3:
|
|
294
296
|
last_branch, branch_at = branch(state["cwd"]), time.monotonic()
|
|
295
297
|
state["branch"] = last_branch
|
|
@@ -278,7 +278,8 @@ def render(
|
|
|
278
278
|
hint = None
|
|
279
279
|
if isinstance(update, str) and re.fullmatch(r"\d+(\.\d+)*", update):
|
|
280
280
|
arrow = "^" if ascii_only else "↑"
|
|
281
|
-
|
|
281
|
+
tool = "cxbar" if state.get("updater") == "cxbar" else "codex-statusline"
|
|
282
|
+
hint = (f"{arrow} update available: {tool} update", f"{arrow} update", "warning")
|
|
282
283
|
head, rest = parts[0], parts[1:]
|
|
283
284
|
compact_head = (head[1], head[2])
|
|
284
285
|
# Widest first: all detail, compact head, all compact, then drop segments.
|
|
@@ -43,6 +43,8 @@ class UpdateTests(unittest.TestCase):
|
|
|
43
43
|
state = {"context_used": 10, "now": 1000, "update": "0.2.0", "quotas": {}}
|
|
44
44
|
wide = render(state, 240, tmux=False)
|
|
45
45
|
self.assertIn("↑ update available: codex-statusline update", wide)
|
|
46
|
+
short = render(dict(state, updater="cxbar"), 240, tmux=False)
|
|
47
|
+
self.assertIn("↑ update available: cxbar update", short)
|
|
46
48
|
self.assertIn("^ update available", render(state, 240, tmux=False, ascii_only=True))
|
|
47
49
|
self.assertNotIn("update", render(state, 40, tmux=False))
|
|
48
50
|
self.assertNotIn("update", render(dict(state, update="#(evil)"), 240, tmux=False))
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{codex_statusline-0.2.2 → codex_statusline-0.3.0}/codex_statusline.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|