agentbridge-cli 0.1.13__tar.gz → 0.1.14__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.
Files changed (112) hide show
  1. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.codex/skills/build-release/SKILL.md +4 -6
  2. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.codex/skills/build-release/scripts/release_build.py +4 -2
  3. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.github/workflows/release.yml +0 -2
  4. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/PKG-INFO +5 -5
  5. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/README.md +4 -4
  6. agentbridge_cli-0.1.14/agentbridge/_build_info.py +1 -0
  7. agentbridge_cli-0.1.14/design-qa.md +55 -0
  8. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/README.md +6 -6
  9. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/StatusPopover.swift +1 -2
  10. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/pyproject.toml +1 -1
  11. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/scripts/build_macos_app.sh +5 -5
  12. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/uv.lock +1 -1
  13. agentbridge_cli-0.1.13/agentbridge/_build_info.py +0 -1
  14. agentbridge_cli-0.1.13/design-qa.md +0 -58
  15. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.codex/config.toml +0 -0
  16. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.codex/skills/build-release/agents/openai.yaml +0 -0
  17. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.env.example +0 -0
  18. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.github/dependabot.yml +0 -0
  19. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.github/workflows/ci.yml +0 -0
  20. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.github/workflows/dependency-review.yml +0 -0
  21. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/.gitignore +0 -0
  22. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/AGENTS.md +0 -0
  23. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/CLAUDE.md +0 -0
  24. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/LICENSE +0 -0
  25. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/Makefile +0 -0
  26. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/TODO.txt +0 -0
  27. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/__init__.py +0 -0
  28. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/config.py +0 -0
  29. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/dashboard.py +0 -0
  30. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/models.py +0 -0
  31. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/pool.py +0 -0
  32. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/server.py +0 -0
  33. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/android-chrome-192.png +0 -0
  34. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/android-chrome-512.png +0 -0
  35. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/apple-touch-icon.png +0 -0
  36. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/favicon-16.png +0 -0
  37. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/favicon-32.png +0 -0
  38. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/favicon-48.png +0 -0
  39. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/favicon.ico +0 -0
  40. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/favicon.svg +0 -0
  41. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/static/brand/site.webmanifest +0 -0
  42. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/templates/dashboard/base.html +0 -0
  43. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/templates/dashboard/chat.html +0 -0
  44. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/templates/dashboard/detail.html +0 -0
  45. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/templates/dashboard/page.html +0 -0
  46. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/templates/dashboard/pool.html +0 -0
  47. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/agentbridge/templates/dashboard/requests.html +0 -0
  48. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/architecture.png +0 -0
  49. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/agentbridge-popover-final.png +0 -0
  50. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/agentbridge-popover-normalized.png +0 -0
  51. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/agentbridge-popover-pass-1.jpeg +0 -0
  52. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/implementation-header-activity.png +0 -0
  53. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-header-activity.png +0 -0
  54. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-inactive-menu-icons.png +0 -0
  55. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-inactive-telegram-badge-normalized.png +0 -0
  56. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-inactive-telegram-badge.png +0 -0
  57. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-low-contrast-arrows-normalized.png +0 -0
  58. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-low-contrast-arrows.png +0 -0
  59. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-panel.png +0 -0
  60. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-telegram-badge-normalized.png +0 -0
  61. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/reference-telegram-badge.png +0 -0
  62. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/status-item-active-workers.png +0 -0
  63. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/status-item-arrow-contrast-comparison.png +0 -0
  64. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/status-item-badge-comparison.png +0 -0
  65. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/status-item-inactive-comparison.png +0 -0
  66. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/design-qa/status-item-no-workers.png +0 -0
  67. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/docs/plans/2026-02-14-dashboard-design.md +0 -0
  68. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/docs/plans/2026-02-14-dashboard-implementation.md +0 -0
  69. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/hatch_build.py +0 -0
  70. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/apple-store/app-store-icon-1024.png +0 -0
  71. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/icon/icon-1024.png +0 -0
  72. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/logo/logo-1024.png +0 -0
  73. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/manifest.json +0 -0
  74. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/sources/icon-source-keyed.png +0 -0
  75. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/sources/icon-source.png +0 -0
  76. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/sources/logo-source-keyed.png +0 -0
  77. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/sources/logo-source.png +0 -0
  78. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/sources/social-background-source.png +0 -0
  79. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/sources/social-source.png +0 -0
  80. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/android-chrome-192.png +0 -0
  81. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/android-chrome-512.png +0 -0
  82. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/apple-touch-icon.png +0 -0
  83. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/favicon/favicon-16.png +0 -0
  84. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/favicon/favicon-32.png +0 -0
  85. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/favicon/favicon-48.png +0 -0
  86. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/favicon/favicon.ico +0 -0
  87. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/favicon/favicon.svg +0 -0
  88. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/og-image-1200x630.png +0 -0
  89. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/image-assets/web-seo/site.webmanifest +0 -0
  90. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/logo.png +0 -0
  91. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Package.swift +0 -0
  92. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/AgentBridgeMenuBarApp.swift +0 -0
  93. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/BrandMark.swift +0 -0
  94. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/HealthClient.swift +0 -0
  95. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/MenuBarStatusPresenter.swift +0 -0
  96. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/ServerController.swift +0 -0
  97. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/ServerLauncher.swift +0 -0
  98. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/SettingsView.swift +0 -0
  99. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Sources/AgentBridgeMenuBar/StatusModels.swift +0 -0
  100. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/macos/Tests/AgentBridgeMenuBarTests/StatusModelsTests.swift +0 -0
  101. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/scripts/dashboard_load_test.py +0 -0
  102. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/scripts/verify_macos_app.sh +0 -0
  103. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/fixtures/ocr_test_document.png +0 -0
  104. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_config.py +0 -0
  105. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_dashboard.py +0 -0
  106. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_dependency_security.py +0 -0
  107. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_image_utils.py +0 -0
  108. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_model_mapping.py +0 -0
  109. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_models.py +0 -0
  110. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_pool.py +0 -0
  111. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_server.py +0 -0
  112. {agentbridge_cli-0.1.13 → agentbridge_cli-0.1.14}/tests/test_session_logger.py +0 -0
@@ -9,7 +9,7 @@ Use the repository-owned GitHub Actions workflow and PyPI Trusted Publishing.
9
9
  Do not create a local tag or upload with local credentials: pushing a new
10
10
  `pyproject.toml` version to `main` triggers `.github/workflows/release.yml`,
11
11
  which tests, scans, builds, creates `v<version>`, creates the GitHub Release,
12
- publishes `agentbridge-cli`, and attaches ad-hoc-signed arm64 and x86_64 DMGs.
12
+ publishes `agentbridge-cli`, and attaches an ad-hoc-signed arm64 DMG.
13
13
 
14
14
  Use the next unused patch version unless the user requests another valid,
15
15
  unused semantic version. Treat an untagged version absent from PyPI as pending.
@@ -54,8 +54,8 @@ The preflight requires macOS. It checks consistent project and lock metadata, an
54
54
  unused PyPI version and tag, clean patch formatting, a frozen lock, Python 3.12
55
55
  and 3.13 tests, Ruff, Swift tests, a self-contained app/DMG build for the current
56
56
  Mac architecture, app signature and embedded-runtime smoke tests, wheel and
57
- sdist audits, and a wheel installation smoke test. CI builds both macOS
58
- architectures with ad-hoc signatures. Stop at the exact failed gate.
57
+ sdist audits, and a wheel installation smoke test. CI builds the arm64 macOS
58
+ artifact with an ad-hoc signature. Stop at the exact failed gate.
59
59
 
60
60
  4. Review and publish the release commit:
61
61
 
@@ -92,9 +92,7 @@ python3 .codex/skills/build-release/scripts/release_build.py wait-pypi --version
92
92
  gh release view v<version> --json url,tagName,assets
93
93
  ```
94
94
 
95
- Require both
96
- `AgentBridge-<version>-macos-arm64.dmg` and
97
- `AgentBridge-<version>-macos-x86_64.dmg` plus their `.sha256` files in the
95
+ Require `AgentBridge-<version>-macos-arm64.dmg` and its `.sha256` file in the
98
96
  release assets. Do not report success until PyPI returns exact-version files and
99
97
  all required GitHub assets exist. If the workflow fails, inspect
100
98
  `gh run view <run-id> --log-failed` and report the failed gate before considering
@@ -313,8 +313,10 @@ def preflight_macos_app(version: str) -> dict[str, object]:
313
313
  raise SystemExit("the AgentBridge release preflight requires macOS for app validation")
314
314
 
315
315
  architecture = platform.machine()
316
- if architecture not in {"arm64", "x86_64"}:
317
- raise SystemExit(f"unsupported macOS release architecture: {architecture}")
316
+ if architecture != "arm64":
317
+ raise SystemExit(
318
+ f"unsupported macOS release architecture: {architecture}; AgentBridge requires arm64"
319
+ )
318
320
 
319
321
  run(["swift", "test", "--package-path", "macos"])
320
322
  run(["scripts/build_macos_app.sh"])
@@ -214,8 +214,6 @@ jobs:
214
214
  include:
215
215
  - runner: macos-15
216
216
  architecture: arm64
217
- - runner: macos-15-intel
218
- architecture: x86_64
219
217
  runs-on: ${{ matrix.runner }}
220
218
  timeout-minutes: 30
221
219
  permissions:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentbridge-cli
3
- Version: 0.1.13
3
+ Version: 0.1.14
4
4
  Summary: Bridge OpenAI tools to Claude Code SDK, Codex CLI, and OpenRouter
5
5
  Project-URL: Homepage, https://github.com/tsilva/agentbridge
6
6
  Project-URL: Repository, https://github.com/tsilva/agentbridge
@@ -46,10 +46,10 @@ It supports streaming and non-streaming responses, image and PDF inputs where th
46
46
 
47
47
  ### macOS menu-bar app
48
48
 
49
- Download the DMG for your Mac architecture from the GitHub Release, drag
49
+ On an Apple silicon Mac, download the arm64 DMG from the GitHub Release, drag
50
50
  `AgentBridge.app` to Applications, and open it. The app is ad-hoc signed rather
51
51
  than Apple-notarized, so on first launch macOS may require you to Control-click
52
- the app, choose **Open**, and confirm.
52
+ the app, choose **Open**, and confirm. Intel Macs are not supported.
53
53
 
54
54
  You can also build the app locally on macOS 13 or later. This requires
55
55
  [uv](https://docs.astral.sh/uv/) and the Xcode Command Line Tools, but not an
@@ -185,8 +185,8 @@ Releases use the `Release` GitHub Actions workflow and PyPI Trusted Publishing
185
185
  for the `agentbridge-cli` project. The publisher is scoped to owner `tsilva`,
186
186
  repository `agentbridge`, workflow `release.yml`, and environment `pypi`; no
187
187
  PyPI API token is required. GitHub Releases contain the Python distributions
188
- plus ad-hoc-signed arm64 and x86_64 macOS DMGs and SHA-256 checksums. These DMGs
189
- are not Apple-notarized and require no Apple Developer credentials. Releases
188
+ plus an ad-hoc-signed arm64 macOS DMG and SHA-256 checksum. The DMG is not
189
+ Apple-notarized and requires no Apple Developer credentials. Releases
190
190
  through `0.1.10` remain available under the previous `agentbridge-py`
191
191
  distribution name.
192
192
 
@@ -14,10 +14,10 @@ It supports streaming and non-streaming responses, image and PDF inputs where th
14
14
 
15
15
  ### macOS menu-bar app
16
16
 
17
- Download the DMG for your Mac architecture from the GitHub Release, drag
17
+ On an Apple silicon Mac, download the arm64 DMG from the GitHub Release, drag
18
18
  `AgentBridge.app` to Applications, and open it. The app is ad-hoc signed rather
19
19
  than Apple-notarized, so on first launch macOS may require you to Control-click
20
- the app, choose **Open**, and confirm.
20
+ the app, choose **Open**, and confirm. Intel Macs are not supported.
21
21
 
22
22
  You can also build the app locally on macOS 13 or later. This requires
23
23
  [uv](https://docs.astral.sh/uv/) and the Xcode Command Line Tools, but not an
@@ -153,8 +153,8 @@ Releases use the `Release` GitHub Actions workflow and PyPI Trusted Publishing
153
153
  for the `agentbridge-cli` project. The publisher is scoped to owner `tsilva`,
154
154
  repository `agentbridge`, workflow `release.yml`, and environment `pypi`; no
155
155
  PyPI API token is required. GitHub Releases contain the Python distributions
156
- plus ad-hoc-signed arm64 and x86_64 macOS DMGs and SHA-256 checksums. These DMGs
157
- are not Apple-notarized and require no Apple Developer credentials. Releases
156
+ plus an ad-hoc-signed arm64 macOS DMG and SHA-256 checksum. The DMG is not
157
+ Apple-notarized and requires no Apple Developer credentials. Releases
158
158
  through `0.1.10` remain available under the previous `agentbridge-py`
159
159
  distribution name.
160
160
 
@@ -0,0 +1 @@
1
+ GIT_HASH = "0980cbb"
@@ -0,0 +1,55 @@
1
+ # Design QA
2
+
3
+ **Comparison target**
4
+
5
+ - Source visual truth: `/var/folders/wz/x29jb7_x5rdc_5dcjr4qnhg00000gn/T/codex-clipboard-5d0ece7b-8e7b-489f-8d94-28b6877699ba.png`
6
+ - Implementation screenshot: `/tmp/agentbridge-popover-neutral-20260829.png`
7
+ - Combined comparison: `/tmp/agentbridge-popover-comparison-20260829.png`
8
+ - State: connected, zero active requests, one worker, dark appearance.
9
+ - Viewport: native macOS status popover at its fixed 350-point content width.
10
+ - Source pixels: 818 × 404. Implementation pixels: 752 × 444. Both are native high-density captures; no density normalization was applied because this change is limited to the visible control colors rather than geometry.
11
+
12
+ **Full-view comparison evidence**
13
+
14
+ - The source shows the gear and Open Dashboard control inheriting the green brand tint.
15
+ - The implementation shows both controls in the same neutral secondary-label palette used by the refresh row and supporting text.
16
+ - The native screenshot API renders the vibrancy material with a pink capture artifact; this does not affect the visible verification that the two controls no longer use the green tint.
17
+
18
+ **Focused region comparison evidence**
19
+
20
+ - A separate crop was not needed: the settings icon and dashboard button are large and clearly readable in the combined full-view comparison.
21
+
22
+ **Required fidelity surfaces**
23
+
24
+ - Fonts and typography: unchanged.
25
+ - Spacing and layout rhythm: unchanged.
26
+ - Colors and visual tokens: the popover-wide control tint now uses the native secondary-label color. The logo, connected indicator, and activity fill retain their intentional brand/status colors.
27
+ - Image quality and asset fidelity: unchanged; the existing native brand mark and SF Symbols remain in use.
28
+ - Copy and content: unchanged.
29
+
30
+ **Findings**
31
+
32
+ - No actionable P0, P1, or P2 mismatches remain for the requested control-color change.
33
+
34
+ **Open Questions**
35
+
36
+ - None.
37
+
38
+ **Implementation Checklist**
39
+
40
+ - [x] Remove the green tint from popover controls.
41
+ - [x] Preserve brand and semantic status colors.
42
+ - [x] Build and run the native test suite.
43
+ - [x] Capture and compare the rendered popover.
44
+
45
+ **Comparison History**
46
+
47
+ - Initial source finding: the settings icon and dashboard button inherited the green popover-wide tint.
48
+ - Fix: changed the popover tint to the native secondary-label color.
49
+ - Post-fix evidence: the combined comparison shows both controls rendered in neutral gray, with the brand and status colors preserved.
50
+
51
+ **Follow-up Polish**
52
+
53
+ - None.
54
+
55
+ final result: passed
@@ -32,15 +32,15 @@ scripts/build_macos_app.sh
32
32
 
33
33
  The script builds the Swift executable, embeds a uv-managed Python 3.12 runtime
34
34
  and the locked AgentBridge dependencies, applies an ad-hoc signature for local
35
- use, and creates a DMG for the current Mac architecture under
36
- `build/macos/<architecture>/`. Building and running this local app does not
37
- require an Apple Developer account.
35
+ use, and creates an arm64 DMG under `build/macos/arm64/`. Building and running
36
+ this local app requires an Apple silicon Mac but does not require an Apple
37
+ Developer account.
38
38
 
39
39
  Open the generated DMG and drag `AgentBridge.app` to Applications.
40
40
 
41
- GitHub Releases provide the same ad-hoc-signed DMG for arm64 and x86_64 Macs.
42
- They are not Apple-notarized, so macOS may require you to Control-click the app,
43
- choose **Open**, and confirm on first launch.
41
+ GitHub Releases provide the same ad-hoc-signed DMG for Apple silicon Macs. It is
42
+ not Apple-notarized, so macOS may require you to Control-click the app, choose
43
+ **Open**, and confirm on first launch. Intel Macs are not supported.
44
44
 
45
45
  Mutable data stays outside the application bundle:
46
46
 
@@ -32,12 +32,11 @@ struct StatusPopover: View {
32
32
  .padding(.bottom, 16)
33
33
  .frame(width: 350)
34
34
  .fixedSize(horizontal: false, vertical: true)
35
- .tint(AgentBridgeBrand.fir)
35
+ .tint(secondaryTextColor)
36
36
  }
37
37
 
38
38
  private var header: some View {
39
39
  HStack(spacing: 8) {
40
- AgentBridgeBrandMark(size: 24)
41
40
  Text("AgentBridge")
42
41
  .font(.system(size: 17, weight: .bold))
43
42
  Spacer()
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentbridge-cli"
3
- version = "0.1.13"
3
+ version = "0.1.14"
4
4
  description = "Bridge OpenAI tools to Claude Code SDK, Codex CLI, and OpenRouter"
5
5
  readme = "README.md"
6
6
  license = {text = "MIT"}
@@ -23,11 +23,11 @@ with Path("pyproject.toml").open("rb") as file:
23
23
  PY
24
24
  )"
25
25
 
26
- case "${architecture}" in
27
- arm64) artifact_architecture="arm64" ;;
28
- x86_64) artifact_architecture="x86_64" ;;
29
- *) echo "Unsupported macOS architecture: ${architecture}" >&2; exit 1 ;;
30
- esac
26
+ if [[ "${architecture}" != "arm64" ]]; then
27
+ echo "Unsupported macOS architecture: ${architecture}; AgentBridge requires arm64" >&2
28
+ exit 1
29
+ fi
30
+ artifact_architecture="arm64"
31
31
 
32
32
  if [[ "${output_root}" != "${repository_root}"/build/macos/* ]]; then
33
33
  echo "Refusing to replace unexpected build directory: ${output_root}" >&2
@@ -37,7 +37,7 @@ constraints = [
37
37
 
38
38
  [[package]]
39
39
  name = "agentbridge-cli"
40
- version = "0.1.13"
40
+ version = "0.1.14"
41
41
  source = { editable = "." }
42
42
  dependencies = [
43
43
  { name = "claude-agent-sdk" },
@@ -1 +0,0 @@
1
- GIT_HASH = "6918a70"
@@ -1,58 +0,0 @@
1
- # Active-worker menu-bar badge and inactive brightness design QA
2
-
3
- ## Evidence
4
-
5
- - Source visual truths:
6
- - Badge proportions: `/var/folders/wz/x29jb7_x5rdc_5dcjr4qnhg00000gn/T/codex-clipboard-a88e73a8-8b49-415b-b2ef-9f289e13c5ea.png`
7
- - Unfocused menu-bar brightness: `/var/folders/wz/x29jb7_x5rdc_5dcjr4qnhg00000gn/T/codex-clipboard-6c362e7b-d087-493b-8d8f-683607e7a420.png`
8
- - Inner-arrow contrast: `/var/folders/wz/x29jb7_x5rdc_5dcjr4qnhg00000gn/T/codex-clipboard-7fb76339-7c5e-4568-98cf-3c91d8ad0f48.png`
9
- - Source pixels: 208 × 62 for the badge reference, 3232 × 76 for the unfocused menu-bar reference, and 260 × 58 for the inner-arrow reference, all at Retina density. Focused item crops retain their original 2× scale.
10
- - Implementation screenshots:
11
- - Active state: `/Users/tsilva/repos/tsilva/agentbridge/design-qa/status-item-active-workers.png`
12
- - Zero state: `/Users/tsilva/repos/tsilva/agentbridge/design-qa/status-item-no-workers.png`
13
- - Implementation pixels: 96 × 62 for a 48 × 31-point native AppKit fixture at 2× density.
14
- - Viewport: native macOS status-item button, 32 × 22 points inside a 48 × 31-point menu-bar crop.
15
- - Density normalization: the 64 × 62 source crop was centered on a 96 × 62 canvas without scaling so both sides retain 2× density.
16
- - State: dark, unfocused-style menu bar with 48 active workers for visual fidelity; running server with zero active workers for empty-state verification.
17
- - Combined comparisons:
18
- - Badge proportions: `/Users/tsilva/repos/tsilva/agentbridge/design-qa/status-item-badge-comparison.png`
19
- - Unfocused brightness: `/Users/tsilva/repos/tsilva/agentbridge/design-qa/status-item-inactive-comparison.png`
20
- - Inner-arrow contrast before/after: `/Users/tsilva/repos/tsilva/agentbridge/design-qa/status-item-arrow-contrast-comparison.png`
21
-
22
- ## Findings
23
-
24
- - No actionable P0/P1/P2 differences remain.
25
- - Fonts and typography: the badge uses a 7.5-point semibold native system font; the two-digit weight and density match the compact Telegram reference without crowding.
26
- - Spacing and layout rhythm: the 11-point capsule sits at the lower trailing edge of the existing icon, with the source-like overlap and enough of AgentBridge's mark remaining visible.
27
- - Colors and visual tokens: the badge uses the current semantic label color at 48% opacity and automatically reverses its number color for light and dark appearances. The main mark uses an appearance-aware label-color palette without template dimming, keeping it bright on an unfocused display like Telegram. Filled status symbols now use a contrasting secondary palette layer: translucent black arrows in dark appearance and translucent white detail in light appearance.
28
- - Image quality and asset fidelity: the existing SF Symbol remains native but is rendered as a non-template, appearance-aware image so AppKit does not mute it with inactive template tinting. The badge is rendered natively at Retina density with no raster replacement or custom icon asset.
29
- - Copy and content: the visible badge is the exact live active-worker number. The button tooltip and accessibility label include the same count with correct singular/plural wording.
30
- - Empty state: the zero-state rendering shows only the AgentBridge icon; no empty capsule or numeric badge remains.
31
-
32
- The full menu-bar reference establishes the inactive-display context and Telegram's brighter mark. The component capture is the complete implementation viewport for this isolated status item. Focused comparisons confirm capsule size, opacity, number weight, overlap, the brighter main-icon treatment, and clear separation between the outer circle and inner arrows.
33
-
34
- ## Comparison History
35
-
36
- 1. The first active-state rendering used a 14-point badge with wider padding. It obscured most of the circular AgentBridge symbol and was visibly larger and lighter than the Telegram badge.
37
- 2. The badge was reduced to 11 points, its type and horizontal padding were tightened, and label opacity was lowered from 68% to 48%. The revised combined comparison shows matching compact proportions and tone, while the zero-state capture confirms complete badge removal.
38
- 3. The inactive-display reference showed AppKit's template tint making AgentBridge materially dimmer than Telegram. The symbol now uses an appearance-aware palette and is explicitly non-template; the revised dark-appearance capture shows the bright main mark while retaining the subdued badge.
39
- 4. The first bright non-template render gave the circle and arrows nearly identical light values, making the arrows hard to perceive. Filled symbols now use a two-color palette with 68%-opaque black inner detail in dark appearance; the before/after comparison shows clear arrow contrast. Outline-only stopped and transitional symbols retain a single semantic label color so they remain visible.
40
-
41
- ## Implementation Checklist
42
-
43
- - [x] Observe live health-count changes in addition to server-phase changes.
44
- - [x] Show the exact active-worker count in a compact native badge.
45
- - [x] Hide the badge at zero.
46
- - [x] Keep the main icon bright instead of accepting inactive template dimming.
47
- - [x] Preserve appearance-aware light/dark coloring.
48
- - [x] Give filled symbols contrasting inner detail without darkening outline-only states.
49
- - [x] Preserve status-item click behavior.
50
- - [x] Include the count in tooltip and accessibility text.
51
- - [x] Verify active and zero states with Retina component captures.
52
- - [x] Pass Swift unit tests and a release build.
53
-
54
- ## Follow-up Polish
55
-
56
- - None.
57
-
58
- final result: passed