Skip to content

feat(history): delete a topic from the list #119

Description

@smileygames

目的

トピックを一覧から消せるようにする。今は増える一方で、減らす手段が無い。

観測

2026-08-27、Master が注釈付きのスクリーンショットで要望。左のトピック一覧の行を指して「ここに削除ボタン」。

前提

2026-08-27 に maine698ab4)で確認。

  • トピックの行は #history .topic で、その中に押せる .pickstyles.css:561)がある。ボタンを足す場所はこの行の中。

  • 一トピックは logs/main/{topic_id}.jsonl(投稿)と logs/main/index.json の一エントリ(名前・作成時刻・{account_id: session_uuid})の二つで出来ている。消すとは、この二つをどう扱うかの話になる。

  • 索引に無い .jsonlread_index が拾い直す。索引のエントリだけを消してもファイルが残っていれば、次の読み出しで復活する。

  • #117 の空タイトル行(索引にあってファイルが無いトピック)は、現在どの経路でも消せない。この issue はその状態を変えない(決定5)。

    この行は当初「削除ボタンがその手動の逃げ道にもなる」と書かれていた。決定5がそれを否定したにもかかわらず前提の側が直されず、本文が同じ行について食い違ったまま実装へ渡った。実装 AI が発見し、決定を優先して正しく実装している。書き落としたのは親であり、記録として残す。

制約

  • 削除は取り消せない。rules/model/subtractive-structural-beauty.md の削除判断でいう、ローカルの意味のある状態にあたる(git に載っていない)。確認の一段は要る。
  • セッション id を消すと、そのトピックは二度と再開できない。これは受け入れた上での決定1である。

決定

2026-08-27 に Master が判断。

  1. ファイルも索引も消す。 logs/main/{topic_id}.jsonlindex.json のエントリの両方。索引だけを消す形は取らない(前提に書いたとおり、次の読み出しで復活するため)。

  2. 確認ダイアログを出す。 二度押しや猶予ではなく、明示のダイアログ。既存の #end-dialog / #quit-dialog の作法に合わせる。

  3. セッションが走っているトピックも消せる。 走っていることを理由に拒まない。

  4. 消すときは走っている CLI プロセスを止める。 席に残さない。トピックが消えれば戻り道も消えるため、走らせたままにすると、どのトピックにも属さないセッションが残る。

  5. 空タイトルの行(bug(history): a session-only topic leaves an index entry with no posts file #117)には削除ボタンを出さない。 一覧に出る行すべてにボタンを付ける形は取らない。

決定1から導かれること

  • 消えたものは戻らない。 ログは git に載っておらず、他所に写しも無い。rules/model/subtractive-structural-beauty.md の削除判断でいう「ローカルの非 git な意味のある状態」にあたり、復旧コストは高い側に立つ。したがって確認の一段は任意ではなく必須になる。その形は未決。
  • セッション id も一緒に消える。 「ログは残してセッションだけ捨てる」形は選択肢から外れた。トピックを消すとは、その会話と、そこに居た参加者への戻り道を、同時に捨てるということ。

決定4から導かれること

  • 確認ダイアログは、セッションが止まることを述べる必要がある。走っているセッションを持つトピックを消す操作は、会話とプロセスの両方を落とす。ダイアログがログの削除だけを述べていると、止まったセッションが不意打ちになる。

AI 判断(Master はこれを一行で覆せる)

  1. 開いているトピックを消したら、新規トピックへ移る。 消した直後の状態は、起動直後の状態と同じもの — 部屋は空で、まだ索引に無いトピックに居る。アプリが既に持っている状態を使い回す。
    「次のトピックへ移る」は取らない。頼んでいない会話が開くうえ、要らないものを続けて消しているとき、次も消したいトピックへ落ちる。「開いているものは消せない」も取らない。見ているから要らないと判断したのに、一度離れてから消せというのは順序が逆になる。

未決

なし。実装に入れる。

関連

Activity

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

Metadata

Metadata

Assignees

Labels

enhancement新機能・改善要望ready本文が実装開始できる形まで収束している状態。ただし更新は継続可能

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions