Repository navigation
[Feature]: dashboard management gaps — delete rollback entries, custom usage ranges, rename account selectors #3379
Description
Area
Dashboard
What are you trying to accomplish?
Manage the things the dashboard already displays. Three reports describe the same gap from different pages: the data is visible, the control is missing. Each is closed individually and absorbed here:
- Feature: allow deleting old "restore to this point" snapshots in the ZCode integration UI #2399 (@ncepuee) — delete old "restore to this point" snapshots in the integrations UI
- 希望 用量 可以根据 日期、小时维度来自定义查询,估算价格 #2748 (@areskts) — custom date/hour usage ranges with cost estimates(按日期、小时维度自定义查询并估算价格)
- [Feature] Add a dashboard editor for Codex account selector names #3017 (@hayabusasxs) — edit Codex account selector names
What prevents this today?
Rollback history is read-only. src/server/management/integration-routes.ts exposes the journal as GET only, and gui/src/pages/integrations/RollbackHistory.tsx renders restore and expired states with no delete affordance. src/integrations/journal.ts deliberately preserves journal rows while pruning snapshot files, so entries accumulate and the operator cannot clear them.
Usage ranges are fixed. gui/src/pages/Usage.tsx offers 7d / 30d / all only. Estimated cost totals exist (src/usage/summary.ts), but they cannot be scoped to an arbitrary interval, and there is no hourly bucketing.
Account selector names are display-only. gui/src/components/CodexAccountPickerSetting.tsx toggles codexAccountPickerEnabled and nothing else; src/server/management/config-routes.ts returns picker visibility and exposes no rename API. Operators running several accounts cannot label them meaningfully.
What should OpenCodex do?
- Allow deleting a rollback journal entry from the integrations UI, with the same safety the restore path already has, and state clearly whether the underlying snapshot is already gone.
- Accept a user-selected start/end range on the Usage page with hourly granularity, and scope the existing cost estimate to that range.
- Provide a rename API for Codex account selector labels and an editor in the dashboard, keeping the label local and never sending it upstream.
Example usage or interface
Usage [ 2026-08-01 00:00 ] → [ 2026-08-03 12:00 ] granularity: hour
estimated cost over range: $12.40
# rename is local metadata only
PATCH /api/config/codex/accounts/<id> { "displayName": "team-billing" }Alternatives or workarounds
Operators edit configuration files by hand or read raw request history, which is what a dashboard exists to prevent.
Additional context
Absorbs #2399, #2748, #3017. Credit for the original analysis belongs to @ncepuee, @areskts, and @hayabusasxs.
Checks
- I searched existing issues and documentation.
- This request describes a concrete OpenCodex workflow rather than merely naming a desired technology.
- I removed secrets and personal data.
Activity
lidge-jun commentedon Sep 3, 2026
리뷰 · 우선순위 57 / 80
이 이슈는 대시보드가 이미 보여 주는 것을, 운영자가 손볼 수 있게 만들자는 요청입니다. 세 페이지의 증상이 같고, 데이터는 있는데 컨트롤이 없습니다. 지금
devHEAD(664d80c76)에서 롤백 저널은src/server/management/integration-routes.ts가/api/client-integrations/journal을 GET만 받습니다.gui/src/pages/integrations/RollbackHistory.tsx는 복원·만료 상태를 그리지만 삭제 버튼이 없습니다.src/integrations/journal.ts는 스냅샷 파일은 오래된 것을 지우면서, 저널 줄은 일부러 남깁니다. 그래서 항목이 쌓이고 운영자가 치울 수 없습니다.사용량은
gui/src/pages/Usage.tsx의Range가"all" | "30d" | "7d"뿐입니다. 추정 비용은src/usage/summary.ts에 있지만 임의 구간·시간 단위로 못 자릅니다. Codex 계정 선택기 이름은gui/src/components/CodexAccountPickerSetting.tsx가codexAccountPickerEnabled만 켜고 끄며,src/server/management/config-routes.ts에 이름 바꾸기 API가 없습니다. 흡수된 #2399, #2748, #3017은 닫혀 있습니다. 세 작업은 코드 경로가 달라서 한 PR에 넣기 어렵습니다. 공통점은 “대시보드에 보이는 것을 편집한다”는 제품 이야기뿐입니다.우선순위가 중간인 이유는, 프록시가 멈추는 버그가 아니라 운영 UX이기 때문입니다. 그래도 저널이 무한히 쌓이는 쪽은 저장소 부담이 있어, 세 항목 중에서는 삭제가 제일 먼저입니다. 삭제 API는 복원 경로와 같은 소유권·거부 규칙을 써야 하고, 스냅샷 파일이 이미 없는 줄인지를 UI에 분명히 적어야 합니다. 사용량 임의 구간은 타임존(사용자 로컬 Asia/Seoul vs UTC)과 비용 추정의 시간 버킷을 같이 정해야 해서 범위가 큽니다. 계정 표시 이름은 로컬 메타데이터만, 업스트림으로 보내면 안 됩니다. 본문 PATCH 예시가 그 점을 이미 적었습니다.
types/config 분할과는 거의 무관합니다. 표시 이름을 설정 파일에 넣으면
src/config.ts를 만질 수 있으니, 그 패치만 분할 이후에 맞추면 됩니다. #3367 Logs 테이블 클립 같은 현재 GUI 폴리시와 파일이 겹치지 않습니다.src/server/management/integration-routes.tsjournal 분기 - GET만 허용합니다. 삭제 메서드가 없습니다.src/integrations/journal.ts- 스냅샷 파일은 줄이고 저널 줄은 남깁니다. 삭제 UI 없이는 항목이 계속 쌓입니다.gui/src/pages/Usage.tsxRange-all/30d/7d만 있습니다. 임의 시작·끝과 시간 버킷이 없습니다.gui/src/components/CodexAccountPickerSetting.tsx- 선택기 on/off만 있고 이름 편집이 없습니다.메인테이너의 판단이 필요한 지점
너의 추천
이 이슈를 열어 두고 PR을 셋으로 나누세요. 첫 번째는 저널 삭제(복원과 같은 안전장치 + 스냅샷 없음 표시), 그다음 사용량 임의 구간, 마지막이 로컬 표시 이름입니다. 흡수된 원본은 다시 열지 마세요.
이 댓글은 grok-bot이 작성했습니다
feat(integrations): let an operator delete one rollback journal entry (…
feat(usage): add inclusive custom time windows [skip ci]
feat(usage): add inclusive custom time windows [skip ci]
feat(usage): add inclusive custom time windows [skip ci]
feat(usage): add inclusive custom time windows [skip ci]
feat(usage): add inclusive custom time windows [skip ci]
feat(usage): add inclusive custom time windows [skip ci]
feat(usage): add inclusive custom time windows [skip ci]
feat(usage): add inclusive custom time windows [skip ci]
feat(usage): add inclusive custom time windows [skip ci]
Merge pull request #3905: select inclusive custom usage time windows (#…
lidge-jun commentedon Sep 7, 2026
Partial: the custom usage time-range slice landed on
devvia #3905 (mergeda707ccb6, reimplemented from @Manson2438's #2956 with a Co-authored-by trailer) — inclusive custom windows filtered at hour/minute boundaries, separate from the preset cache. Rollback-entry deletion already shipped in #3477. Remaining for this issue: renaming account selectors, so it stays open.feat(integrations): let an operator delete one rollback journal entry (…
feat(usage): add inclusive custom time windows [skip ci]
Merge pull request lidge-jun#3905: select inclusive custom usage time…
devin-ai-integration commentedon Sep 24, 2026
Triage:
priority: P3— dashboard management gaps.Criteria (P3): Low: new provider/client integration, large or experimental feature (>2000 LOC or >50 files), RFC/roadmap, or long-stale branch.
Matched pull requests:
priority: P3]priority: P3]lidge-jun commentedon Sep 27, 2026
Status check from release train 4 on current
dev: two of the three gaps are closed. Rollback entries can be deleted, and custom usage ranges landed in #3905. The remaining gap, renaming Codex account selectors, is still open.gui/src/components/CodexAccountPickerSetting.tsxonly toggles picker visibility, andsrc/server/management/config-routes.tshas no rename API for selector names. The generic OAuth accountaliasis a different field and does not cover it. That work belongs to the account/picker area, so this issue stays open for it.