Skip to content

[Feature]: dashboard management gaps — delete rollback entries, custom usage ranges, rename account selectors #3379

Open

Description

@lidge-jun

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:

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?

  1. 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.
  2. Accept a user-selected start/end range on the Usage page with hourly granularity, and scope the existing cost estimate to that range.
  3. 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

  1. added
    enhancementNew feature or request
    guiDashboard, tray, settings UI
    on Sep 3, 2026
  2. lidge-jun commented on Sep 3, 2026

    @lidge-jun
    OwnerAuthor

    리뷰 · 우선순위 57 / 80

    이 이슈는 대시보드가 이미 보여 주는 것을, 운영자가 손볼 수 있게 만들자는 요청입니다. 세 페이지의 증상이 같고, 데이터는 있는데 컨트롤이 없습니다. 지금 dev HEAD(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.ts journal 분기 - GET만 허용합니다. 삭제 메서드가 없습니다.

    src/integrations/journal.ts - 스냅샷 파일은 줄이고 저널 줄은 남깁니다. 삭제 UI 없이는 항목이 계속 쌓입니다.

    gui/src/pages/Usage.tsx Range - all / 30d / 7d만 있습니다. 임의 시작·끝과 시간 버킷이 없습니다.

    gui/src/components/CodexAccountPickerSetting.tsx - 선택기 on/off만 있고 이름 편집이 없습니다.

    메인테이너의 판단이 필요한 지점

    • 저널 삭제가 줄만 숨기는지, 파일까지 지우는지. 스냅샷이 이미 없을 때 문구.
    • 사용량 구간의 타임존과 시간 버킷을 서버에서 자를지, 클라이언트가 받은 점을 다시 묶을지.
    • 계정 표시 이름을 config에 넣을지, 별도 로컬 메타 저장소에 둘지.

    너의 추천
    이 이슈를 열어 두고 PR을 셋으로 나누세요. 첫 번째는 저널 삭제(복원과 같은 안전장치 + 스냅샷 없음 표시), 그다음 사용량 임의 구간, 마지막이 로컬 표시 이름입니다. 흡수된 원본은 다시 열지 마세요.

    이 댓글은 grok-bot이 작성했습니다

  3. lidge-jun commented on Sep 7, 2026

    @lidge-jun
    OwnerAuthor

    Partial: the custom usage time-range slice landed on dev via #3905 (merge da707ccb6, 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.

  4. added
    priority: P3Low: new provider/client integration, large or experimental feature (>2000 LOC or >50 files), RFC/ro
    on Sep 24, 2026
  5. devin-ai-integration commented on Sep 24, 2026

    @devin-ai-integration
    Contributor

    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:

  6. lidge-jun commented on Sep 27, 2026

    @lidge-jun
    OwnerAuthor

    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.tsx only toggles picker visibility, and src/server/management/config-routes.ts has no rename API for selector names. The generic OAuth account alias is a different field and does not cover it. That work belongs to the account/picker area, so this issue stays open for it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestguiDashboard, tray, settings UIpriority: P3Low: new provider/client integration, large or experimental feature (>2000 LOC or >50 files), RFC/ro

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions