ejclaw
4e0cf80d91
Render dashboard live progress markdown
2026-04-28 16:30:37 +09:00
ejclaw
810d3dbf2e
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 16:19:34 +09:00
Eyejoker
74cb43b1d8
Extract dashboard ServicePanel component ( #66 )
...
* review: harden readonly git checks and lint verification
* test: satisfy readonly reviewer sandbox typing
* test: fix readonly reviewer sandbox assertions
* test: remove impossible readonly sandbox guards
* test: relax readonly sandbox assertions
* test: cast readonly sandbox expectation shape
* test: cast readonly sandbox expectation through unknown
* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke
* Add STEP_DONE guards, verdict storage, and stale delivery suppression
* style: format paired stepdone telemetry files
* Route STEP_DONE through reviewer
* Add structured Discord attachments
* style: format structured attachment test
* Fix room thread bot output parity
* Remove duplicate work item attachment migration from owner branch
* Remove legacy dashboard rooms renderer
* Extract dashboard parsed body renderer
* Extract dashboard redaction helpers
* Extract dashboard RoomCardV2 component
* Include RoomCardV2 test in vitest suite
* Extract dashboard RoomBoardV2 component
* Extract dashboard EmptyState component
* Extract dashboard InboxPanel component
* Split dashboard InboxPanel card renderer
* Extract dashboard TaskPanel component
* Extract dashboard UsagePanel component
* Fix dashboard room thread chunk rendering
* Extract dashboard ServicePanel component
2026-04-28 16:18:54 +09:00
ejclaw
549016e84c
Extract dashboard ServicePanel component
2026-04-28 16:12:07 +09:00
ejclaw
baf52678e2
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 16:04:18 +09:00
Eyejoker
5902960144
Fix dashboard room thread chunk rendering ( #65 )
...
* review: harden readonly git checks and lint verification
* test: satisfy readonly reviewer sandbox typing
* test: fix readonly reviewer sandbox assertions
* test: remove impossible readonly sandbox guards
* test: relax readonly sandbox assertions
* test: cast readonly sandbox expectation shape
* test: cast readonly sandbox expectation through unknown
* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke
* Add STEP_DONE guards, verdict storage, and stale delivery suppression
* style: format paired stepdone telemetry files
* Route STEP_DONE through reviewer
* Add structured Discord attachments
* style: format structured attachment test
* Fix room thread bot output parity
* Remove duplicate work item attachment migration from owner branch
* Remove legacy dashboard rooms renderer
* Extract dashboard parsed body renderer
* Extract dashboard redaction helpers
* Extract dashboard RoomCardV2 component
* Include RoomCardV2 test in vitest suite
* Extract dashboard RoomBoardV2 component
* Extract dashboard EmptyState component
* Extract dashboard InboxPanel component
* Split dashboard InboxPanel card renderer
* Extract dashboard TaskPanel component
* Extract dashboard UsagePanel component
* Fix dashboard room thread chunk rendering
2026-04-28 16:03:52 +09:00
ejclaw
680677111a
Fix dashboard room thread chunk rendering
2026-04-28 15:56:18 +09:00
ejclaw
4ee9006492
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 15:47:08 +09:00
Eyejoker
72f71d5abf
Extract dashboard UsagePanel component ( #64 )
...
* review: harden readonly git checks and lint verification
* test: satisfy readonly reviewer sandbox typing
* test: fix readonly reviewer sandbox assertions
* test: remove impossible readonly sandbox guards
* test: relax readonly sandbox assertions
* test: cast readonly sandbox expectation shape
* test: cast readonly sandbox expectation through unknown
* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke
* Add STEP_DONE guards, verdict storage, and stale delivery suppression
* style: format paired stepdone telemetry files
* Route STEP_DONE through reviewer
* Add structured Discord attachments
* style: format structured attachment test
* Fix room thread bot output parity
* Remove duplicate work item attachment migration from owner branch
* Remove legacy dashboard rooms renderer
* Extract dashboard parsed body renderer
* Extract dashboard redaction helpers
* Extract dashboard RoomCardV2 component
* Include RoomCardV2 test in vitest suite
* Extract dashboard RoomBoardV2 component
* Extract dashboard EmptyState component
* Extract dashboard InboxPanel component
* Split dashboard InboxPanel card renderer
* Extract dashboard TaskPanel component
* Extract dashboard UsagePanel component
2026-04-28 15:46:47 +09:00
ejclaw
7fb562ae1f
Extract dashboard UsagePanel component
2026-04-28 15:41:24 +09:00
ejclaw
59bcb5c250
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 15:35:21 +09:00
Eyejoker
c19665a134
Extract dashboard TaskPanel component ( #63 )
...
* review: harden readonly git checks and lint verification
* test: satisfy readonly reviewer sandbox typing
* test: fix readonly reviewer sandbox assertions
* test: remove impossible readonly sandbox guards
* test: relax readonly sandbox assertions
* test: cast readonly sandbox expectation shape
* test: cast readonly sandbox expectation through unknown
* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke
* Add STEP_DONE guards, verdict storage, and stale delivery suppression
* style: format paired stepdone telemetry files
* Route STEP_DONE through reviewer
* Add structured Discord attachments
* style: format structured attachment test
* Fix room thread bot output parity
* Remove duplicate work item attachment migration from owner branch
* Remove legacy dashboard rooms renderer
* Extract dashboard parsed body renderer
* Extract dashboard redaction helpers
* Extract dashboard RoomCardV2 component
* Include RoomCardV2 test in vitest suite
* Extract dashboard RoomBoardV2 component
* Extract dashboard EmptyState component
* Extract dashboard InboxPanel component
* Split dashboard InboxPanel card renderer
* Extract dashboard TaskPanel component
2026-04-28 15:35:02 +09:00
ejclaw
bf1bd6e6dd
Extract dashboard TaskPanel component
2026-04-28 15:24:53 +09:00
ejclaw
a653c212b4
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 15:05:24 +09:00
Eyejoker
6d13c3aa49
Extract dashboard InboxPanel component ( #62 )
...
* review: harden readonly git checks and lint verification
* test: satisfy readonly reviewer sandbox typing
* test: fix readonly reviewer sandbox assertions
* test: remove impossible readonly sandbox guards
* test: relax readonly sandbox assertions
* test: cast readonly sandbox expectation shape
* test: cast readonly sandbox expectation through unknown
* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke
* Add STEP_DONE guards, verdict storage, and stale delivery suppression
* style: format paired stepdone telemetry files
* Route STEP_DONE through reviewer
* Add structured Discord attachments
* style: format structured attachment test
* Fix room thread bot output parity
* Remove duplicate work item attachment migration from owner branch
* Remove legacy dashboard rooms renderer
* Extract dashboard parsed body renderer
* Extract dashboard redaction helpers
* Extract dashboard RoomCardV2 component
* Include RoomCardV2 test in vitest suite
* Extract dashboard RoomBoardV2 component
* Extract dashboard EmptyState component
* Extract dashboard InboxPanel component
* Split dashboard InboxPanel card renderer
2026-04-28 15:04:37 +09:00
ejclaw
77ad6fa51d
Split dashboard InboxPanel card renderer
2026-04-28 14:58:06 +09:00
ejclaw
eb13c3d332
Extract dashboard InboxPanel component
2026-04-28 14:51:38 +09:00
ejclaw
e849a8ee3b
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 14:36:46 +09:00
Eyejoker
13f05273d7
Extract dashboard EmptyState component ( #61 )
...
* review: harden readonly git checks and lint verification
* test: satisfy readonly reviewer sandbox typing
* test: fix readonly reviewer sandbox assertions
* test: remove impossible readonly sandbox guards
* test: relax readonly sandbox assertions
* test: cast readonly sandbox expectation shape
* test: cast readonly sandbox expectation through unknown
* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke
* Add STEP_DONE guards, verdict storage, and stale delivery suppression
* style: format paired stepdone telemetry files
* Route STEP_DONE through reviewer
* Add structured Discord attachments
* style: format structured attachment test
* Fix room thread bot output parity
* Remove duplicate work item attachment migration from owner branch
* Remove legacy dashboard rooms renderer
* Extract dashboard parsed body renderer
* Extract dashboard redaction helpers
* Extract dashboard RoomCardV2 component
* Include RoomCardV2 test in vitest suite
* Extract dashboard RoomBoardV2 component
* Extract dashboard EmptyState component
2026-04-28 14:35:43 +09:00
ejclaw
705cb596b9
Extract dashboard EmptyState component
2026-04-28 14:28:57 +09:00
ejclaw
dde015fb24
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 14:24:42 +09:00
Eyejoker
d99c0bc6be
Extract dashboard RoomBoardV2 component ( #60 )
...
* review: harden readonly git checks and lint verification
* test: satisfy readonly reviewer sandbox typing
* test: fix readonly reviewer sandbox assertions
* test: remove impossible readonly sandbox guards
* test: relax readonly sandbox assertions
* test: cast readonly sandbox expectation shape
* test: cast readonly sandbox expectation through unknown
* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke
* Add STEP_DONE guards, verdict storage, and stale delivery suppression
* style: format paired stepdone telemetry files
* Route STEP_DONE through reviewer
* Add structured Discord attachments
* style: format structured attachment test
* Fix room thread bot output parity
* Remove duplicate work item attachment migration from owner branch
* Remove legacy dashboard rooms renderer
* Extract dashboard parsed body renderer
* Extract dashboard redaction helpers
* Extract dashboard RoomCardV2 component
* Include RoomCardV2 test in vitest suite
* Extract dashboard RoomBoardV2 component
2026-04-28 14:23:43 +09:00
ejclaw
a2dc27ca2e
Extract dashboard RoomBoardV2 component
2026-04-28 14:17:33 +09:00
ejclaw
7580f74313
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 14:05:44 +09:00
Eyejoker
05865197c7
Extract dashboard RoomCardV2 component ( #59 )
...
* review: harden readonly git checks and lint verification
* test: satisfy readonly reviewer sandbox typing
* test: fix readonly reviewer sandbox assertions
* test: remove impossible readonly sandbox guards
* test: relax readonly sandbox assertions
* test: cast readonly sandbox expectation shape
* test: cast readonly sandbox expectation through unknown
* Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke
* Add STEP_DONE guards, verdict storage, and stale delivery suppression
* style: format paired stepdone telemetry files
* Route STEP_DONE through reviewer
* Add structured Discord attachments
* style: format structured attachment test
* Fix room thread bot output parity
* Remove duplicate work item attachment migration from owner branch
* Remove legacy dashboard rooms renderer
* Extract dashboard parsed body renderer
* Extract dashboard redaction helpers
* Extract dashboard RoomCardV2 component
* Include RoomCardV2 test in vitest suite
2026-04-28 14:04:34 +09:00
ejclaw
1f7310e526
Include RoomCardV2 test in vitest suite
2026-04-28 13:56:51 +09:00
ejclaw
2251a69f1a
Extract dashboard RoomCardV2 component
2026-04-28 13:49:43 +09:00
ejclaw
c67462b477
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 13:25:57 +09:00
Eyejoker
f162f42c6b
Extract dashboard redaction helpers
...
Centralize dashboard secret redaction helpers and add focused regression tests.
2026-04-28 13:25:46 +09:00
ejclaw
ca83a1f0b7
Extract dashboard redaction helpers
2026-04-28 13:20:55 +09:00
ejclaw
646d1f1f19
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 13:16:10 +09:00
Eyejoker
23c5be6ecd
Extract dashboard parsed body renderer
...
Extract the dashboard markdown renderer into ParsedBody.tsx and remove stale inline parser helpers from App.tsx.
2026-04-28 13:15:59 +09:00
ejclaw
f5ff45859c
Extract dashboard parsed body renderer
2026-04-28 13:08:58 +09:00
ejclaw
a751db2464
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 13:01:13 +09:00
Eyejoker
880e1bfe24
Remove legacy dashboard rooms renderer
...
Remove unused Rooms v1 renderer and stale CSS after Rooms V2 became the only active dashboard path.
2026-04-28 13:00:58 +09:00
ejclaw
6bfedc28f0
Remove legacy dashboard rooms renderer
2026-04-28 12:55:44 +09:00
ejclaw
4deb8b51de
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 11:18:44 +09:00
Eyejoker
727aa3446e
Fix room thread bot output parity
...
Fix dashboard room thread rendering so regular Discord bot outputs from messages[] are shown when paired outputs are missing, while keeping watcher messages separated and deduplicating paired outputs.
2026-04-28 11:18:16 +09:00
ejclaw
76313b9ebd
Remove duplicate work item attachment migration from owner branch
2026-04-28 11:17:22 +09:00
ejclaw
c89da09f27
Fix room thread bot output parity
2026-04-28 11:09:11 +09:00
ejclaw
a00946c398
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 10:54:45 +09:00
Eyejoker
2d6711f4c7
Unify dashboard mobile navigation ( #54 )
2026-04-28 10:53:13 +09:00
ejclaw
166833a255
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 01:35:44 +09:00
Eyejoker
8bb77ffaa3
Fix structured IPC envelope leakage
...
Normalize EJClaw structured send_message envelopes, preserve attachments, unwrap stored room payloads, and add regression tests.
2026-04-28 01:35:26 +09:00
Eyejoker
20e1a1e5e1
Fix mobile rooms and live progress parity
...
Improve mobile room UX, separate live progress from recent chat, and lock the parity behavior with service tests.
2026-04-28 01:27:55 +09:00
Eyejoker
79efa6b37c
Add code quality gates
...
Add ESLint/quality gates, per-file ratchet budgets, and regression tests for code quality checks.
2026-04-28 01:19:06 +09:00
ejclaw
79b9e74386
Merge remote-tracking branch 'origin/main' into codex/owner/ejclaw
2026-04-28 00:53:46 +09:00
Eyejoker
e2dd12a235
Codex switch: translate settings-index ↔ rotation-index by auth path ( #51 )
...
settings-store lists codex accounts as
index 0 = ~/.codex/auth.json (default)
index N = ~/.codex-accounts/{N}/auth.json
but codex-token-rotation only loads ~/.codex-accounts/{N} when those
dirs exist (it ignores ~/.codex/auth.json in that mode), so the
rotation array's indices are off-by-one vs settings indices.
Old buggy behavior:
- "사용중" badge pointed at the wrong account.
- Clicking 전환 on UI #N called setCurrentCodexAccountIndex(N) which
selected rotation array element N — typically a different
~/.codex-accounts/{N+1} entry. Effectively the UI told us a
different account was now active than what the next codex spawn
actually used.
Fix
- New findCodexAccountIndexByAuthPath(path) on the rotation module
exposes a path-based lookup.
- New getActiveCodexSettingsIndex() / setActiveCodexSettingsIndex(idx)
in settings-store translate via codexAuthPath() ↔
findCodexAccountIndexByAuthPath().
- /api/settings/accounts.codexCurrentIndex and PUT
/api/settings/accounts/codex/current both go through the
settings-side translation, so UI indices are now authoritative.
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-27 22:47:40 +09:00
Eyejoker
4ed12332d4
Codex refresh: pull live plan_type from /wham/usage ( #50 )
...
* Settings: clarify Codex 만료=결제, drop Claude expiry badge
- Codex expiry badge now says "결제 만료/까지" so it's unambiguous that
this is the ChatGPT Pro/Team subscription end-date, not an OAuth
access-token TTL.
- Claude rows no longer show an expiry badge: Claude credentials only
expose an OAuth access_token TTL (auto-refreshed every few minutes
by the existing claude token refresh loop), which is meaningless to
the user. Replace it with a static "토큰 자동갱신" tag so the column
alignment stays consistent.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
* Codex refresh: pull live plan_type from /wham/usage (sidecar override)
OAuth refresh_token grant returns a fresh JWT but auth0 caches the
chatgpt_plan_type and chatgpt_subscription_active_until claims at issue
time. So users who upgrade/downgrade their plan kept seeing the old
plan in the dashboard even after a forced refresh.
After each refreshCodexAccount() call, additionally GET
https://chatgpt.com/backend-api/wham/usage with the freshly-issued
access_token. That endpoint returns the current plan_type and email
from OpenAI's account service. Persist it to a sidecar
plan-status.json next to auth.json (not into auth.json itself, since
codex CLI may rewrite that file). readCodexAccount prefers the live
plan_type and uses the sidecar's checked_at as subscriptionLastChecked,
so the dashboard immediately reflects post-billing-event plan changes.
Confirmed end-to-end: account that was billed-down from Pro to Plus
now shows plus instead of stale pro after one refresh.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-27 22:33:22 +09:00
Eyejoker
dafb84fa4d
Settings: clarify Codex 만료=결제, drop Claude expiry badge ( #49 )
...
- Codex expiry badge now says "결제 만료/까지" so it's unambiguous that
this is the ChatGPT Pro/Team subscription end-date, not an OAuth
access-token TTL.
- Claude rows no longer show an expiry badge: Claude credentials only
expose an OAuth access_token TTL (auto-refreshed every few minutes
by the existing claude token refresh loop), which is meaningless to
the user. Replace it with a static "토큰 자동갱신" tag so the column
alignment stays consistent.
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-27 22:26:17 +09:00