Skip to content

fix(menubar): restore adaptive account card colors#32

Open
dkfhddla wants to merge 13 commits into
CINEV:mainfrom
dkfhddla:fix/menubar-card-theme-colors
Open

fix(menubar): restore adaptive account card colors#32
dkfhddla wants to merge 13 commits into
CINEV:mainfrom
dkfhddla:fix/menubar-card-theme-colors

Conversation

@dkfhddla

Copy link
Copy Markdown

Summary

  • keep account card backgrounds and separators on macOS system colors
  • explicitly set account-card label/button text colors so light and dark appearances both keep readable contrast

Validation

  • PYTHONPYCACHEPREFIX=/private/tmp/codex-pycache python3 -m py_compile app/menubar_app.py
  • UV_CACHE_DIR=/private/tmp/codex-uv-cache uv run ruff check app/menubar_app.py
  • UV_CACHE_DIR=/private/tmp/codex-uv-cache uv run pytest tests/unit/test_menubar_summary.py tests/unit/test_menubar_runtime.py
  • branch-review: no findings

dkfhddla and others added 9 commits May 20, 2026 14:51
## Summary

- Normalize current ChatGPT/Codex plan aliases, including `prolite`, `pro_lite`, `pro100`, `pro200`, Go, and education labels.
- Update fixed Codex capacity calculations so Pro Lite uses the current promo/standard multipliers and Pro uses the current 20x Plus baseline.
- Keep Go recognized as a plan without assigning an unsupported fixed Codex capacity, and document the behavior in OpenSpec.

## Validation

- `python -m pytest tests/unit/test_usage.py -q` (`27 passed`)
- `python -m ruff check app/core/plan_types.py app/core/usage/__init__.py tests/unit/test_usage.py`
- `git diff --check`

## Notes

- `openspec validate --specs` could not run locally because the `openspec` executable is not available on PATH in this environment.
- This supersedes the original narrow Pro Lite zero-capacity fix by refreshing the broader ChatGPT/Codex plan mapping used by dashboard Remaining donuts.
* feat(macos): 메뉴바 런타임 제어 복원

macOS 메뉴바 런타임 제어와 앱 런처를 revert 브랜치 위에 다시 추가합니다. Windows tray 변경은 포함하지 않아 별도 PR로 분리할 수 있게 정리했습니다.

* fix(cli): menubar refresh env 검증 지연

menubar refresh interval 기본값을 argparse 변환 시점까지 늦춥니다. 메뉴바와 무관한 명령이 잘못된 menubar 환경변수 때문에 실패하지 않도록 회귀 테스트를 추가합니다.
upstream/main 기준 리베이스와 선택적 force-with-lease push를 자동화합니다. 안전 기본값을 검증하는 단위 테스트도 함께 추가합니다.
## Summary
- force-kill tracked background runtime when graceful shutdown times out
- remove PID metadata after the force-stop path succeeds
- document the wedged shutdown scenario in the OpenSpec delta

## Verification
- uv run pytest tests/unit/test_cli_runtime.py tests/unit/test_cli.py -q
- uv run ruff check app/cli_runtime.py tests/unit/test_cli_runtime.py
- git diff --check
- manual health check after restart: GET /health/live returned 200 OK

Note: openspec validation was not run because the openspec executable is not installed in this environment.
## Summary
- open the dashboard SPA route from the macOS menu bar instead of the server root
- prefer the tracked runtime URL when managed-server mode is active
- document and test the dashboard-open route behavior

## Verification
- .venv/bin/python -m pytest tests/unit/test_menubar_runtime.py tests/unit/test_cli.py tests/unit/test_menubar_summary.py
- .venv/bin/python -m ruff check app/menubar_runtime.py app/menubar_app.py app/cli.py tests/unit/test_menubar_runtime.py tests/unit/test_cli.py
- .venv/bin/python -m ty check app/menubar_runtime.py app/menubar_app.py app/cli.py tests/unit/test_menubar_runtime.py tests/unit/test_cli.py
- npm run build
- curl -i http://127.0.0.1:2455/dashboard -> 200 OK

## Notes
- openspec validate --specs could not run because the openspec executable is unavailable in this environment.
- add a menu bar Sync Providers action that runs `codex-provider sync` in the background
- resolve `codex-provider` through `CODEX_PROVIDER_BIN` or an augmented absolute-path search for Dock/LaunchAgent launches
- keep provider sync UI responsive and recover from unexpected subprocess exceptions
- document the behavior with an OpenSpec change and add runtime unit coverage

- `uv run python -m pytest tests/unit/test_menubar_runtime.py`
- `uv run python -m ruff check app/menubar_runtime.py app/menubar_app.py tests/unit/test_menubar_runtime.py`
- `uv run python -m ty check app/menubar_runtime.py app/menubar_app.py tests/unit/test_menubar_runtime.py`

- `openspec validate add-menubar-provider-sync-action --strict` could not be run because the `openspec` executable is not installed in this environment.
- Frontend donut/typecheck verification could not be run here because `frontend/package.json` requires `bun@1.3.10`, local `bun` is unavailable, and `pnpm install` rejects the package manager specification.
* feat(menubar): add quota view toggle

* fix(menubar): match dashboard donut constraint

* fix(menubar): separate quota header buttons
@dkfhddla

Copy link
Copy Markdown
Author

@codex

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 08a28ce4f2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread app/cli.py Outdated
startup_timeout_seconds=args.startup_timeout,
start_on_launch=args.start_on_launch,
)
base_url = dashboard_url(options.host, options.port)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Respect HTTPS when deriving managed menubar base URL

When menubar --manage-server is used with --ssl-certfile/--ssl-keyfile, _run_menubar still sets base_url via dashboard_url(...), which always returns an http:// URL. In this configuration the managed server is TLS-enabled, so menu refresh calls and "Open Dashboard" target the wrong scheme and fail or misroute. This breaks the advertised TLS support for managed menubar mode.

Useful? React with 👍 / 👎.

Comment thread app/menubar_summary.py
Comment on lines +82 to +83
if "=" in value:
return value

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Treat cookie strings with '=' as full headers only by name

build_cookie_header treats any session value containing = as an already-formed Cookie header and returns it unchanged. A raw session ID can legitimately include = (for example padded/base64-like tokens), and in that case this function emits a header without the cookie name, causing authenticated dashboard requests to fail for those users.

Useful? React with 👍 / 👎.

@kgskr kgskr added the 🤖 codex: needs work Codex raised issues on the current PR head that still need work label Jun 15, 2026
@github-actions

Copy link
Copy Markdown

This pull request has been automatically marked as stale because it has had no activity for 7 days.

It will be closed in 23 more days unless there is new activity.

If this is still relevant, please:

  • Rebase or push an update if the branch drifted
  • Address pending review feedback if there is any
  • Leave a short comment confirming it is still being worked on

Thanks for the contribution 🙏

@github-actions github-actions Bot added the stale label Jun 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🤖 codex: needs work Codex raised issues on the current PR head that still need work stale

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants