Skip to content

codex-app: LT project cycling order is recency-based, not sidebar order #59

Description

@stephenleo

Current behavior

In the codex-app GUI harness, LT (herdr_space) cycles projects ordered by last-activity recency, derived from ~/.codex/state_5.sqlite (recency_at_ms). This works, but is not ideal:

  • The cycle order does not match the sidebar's visual top-to-bottom project order.
  • Projects with unarchived chats that the user removed from the sidebar's project list still appear in the cycle.
  • Recency reshuffles over time, so the ring order isn't fully predictable.

Why it's this way

The app's sidebar project list is account-synced (sidebarElectron.addRemoteProject/removeRemoteProject) and not persisted anywhere readable locally — exhaustively checked: leveldb Local/Session Storage, NSUserDefaults, HTTP caches, logs_2.sqlite, codex-dev.db, ipc.sock, AX tree (web content not exposed). So there is no local ground truth for "projects currently shown in the sidebar". Recency ordering over visible (non-archived, non-subagent) threads was the best config-free approximation. See PR #58.

Possible future directions

  • A future app version may persist the sidebar project list locally or expose an RPC (project/list doesn't exist as of 0.145.0-alpha.18).
  • A deep-link route for projects (codex://projects/...) would let us skip the "open newest thread" indirection.
  • Revisit when the app's app-server RPC surface grows.

Marked as a ponytail: ceiling in src/harness/codex-app.ts (cycleProject).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions