MoonshotAI / MoonshotAI/kimi-code

web: session archive is irreversible but UI labels it as recoverable

Open
#1,008 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
7.5k
Forks
1.2k
Avg merge
11h 53m
Merged PRs (30d)
350

Description

Problem

In Kimi Code Web, the "归档" (Archive) action for sessions behaves like an irreversible delete, but the UI does not communicate this clearly and provides no recovery path.

Reproduction
  1. Create a session in any workspace.
  2. Open the session row kebab menu (or the chat header options) and choose 归档 / Archive.
  3. Confirm the inline prompt.
  4. The session disappears from the sidebar.
Expected behavior

One of the following should be true:

  • A) Archive is recoverable: There is a way to view archived sessions and unarchive them (e.g. an "Archived" section in the sidebar, like ChatGPT's "Archived Chats").
  • B) Archive is irreversible: The action is labeled and confirmed as "删除 / Delete", so users understand the session is gone from the UI.
Actual behavior
  • The session is marked archived: true in state.json but is no longer visible anywhere in the UI.
  • There is no "Archived" view, no search result for archived sessions, and no "Unarchive" action.
  • The API only supports archiving (POST /sessions/:id:archive); unarchive / restore actions return unsupported action.
  • The confirmation prompt only says "归档会话?" / "Archive session?", which does not imply the action is permanent.
Why this matters

Users familiar with Gmail or ChatGPT "Archive" expect the item to remain accessible in an archive folder. In Kimi Code, the same word means "remove forever from the UI", which is misleading and can cause users to think data is lost.

Data is not truly deleted (it is still in state.json and can be recovered by manually setting archived: false), but there is no supported UI/API path to do so.

Possible solutions

  1. Implement true unarchive (recommended long-term)

    • Backend: add an unarchive action (or allow archive to accept { archived: false }).
    • Web UI: add an "Archived" section in the sidebar where archived sessions can be viewed and restored.
    • Keep the "归档 / Archive" label.
  2. Rename archive to delete (short-term, minimal change)

    • Change all user-facing strings from "归档 / Archive" to "删除 / Delete".
    • Update the confirmation prompt to clearly state the action is irreversible.
    • This matches the current semantics without backend changes.
  3. Keep archive label but warn irreversibility (minimal change)

    • Keep "归档 / Archive".
    • Change the confirmation prompt to e.g. "归档会话?已归档的会话将无法恢复。" / "Archive session? Archived sessions cannot be restored."
    • Does not solve the recovery problem, but removes the misleading implication.

Affected code

  • apps/kimi-web/src/i18n/locales/zh/sidebar.ts
  • apps/kimi-web/src/i18n/locales/en/sidebar.ts
  • apps/kimi-web/src/i18n/locales/zh/header.ts
  • apps/kimi-web/src/i18n/locales/en/header.ts
  • apps/kimi-web/src/components/SessionRow.vue
  • apps/kimi-web/src/components/ChatHeader.vue
  • packages/server/src/routes/sessions.ts (for any backend action change)
  • packages/protocol/src/rest/session.ts

Environment

  • Kimi Code Web (apps/kimi-web)
  • Any browser

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with SessionRow.vue and ChatHeader.vue, then review the English and Chinese sidebar/header locales alongside packages/server/src/routes/sessions.ts and packages/protocol/src/rest/session.ts. Confirm whether the project will support recovery or present archive as irreversible, then trace the affected UI and API behavior. Done means the chosen semantics are consistent in labels, confirmation text, visibility, and supported actions.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.