Skip to content

fix(topics): head the list with a fixed new entry, and delete untitled rows (index.html, main.ts, styles.css, docs) - #126

Merged
smileygames merged 1 commit into
mainfrom
issue-125-new-topic-entry-and-untitled-delete
Aug 28, 2026
Merged

fix(topics): head the list with a fixed new entry, and delete untitled rows (index.html, main.ts, styles.css, docs)#126
smileygames merged 1 commit into
mainfrom
issue-125-new-topic-entry-and-untitled-delete

Conversation

@smileygames

Copy link
Copy Markdown
Member

Closes #125

索引に無い現在のトピックを行として描くのをやめ、一覧の先頭に固定の「新規」を置いた(決定1)。部屋がそのトピックに居る間、「新規」は選択状態で描く(AI 判断4)。

索引に在る題の無い行にも ❌ を付けた(決定2)。#119 決定5 の前提だった「消す理由の無い二つの行」の片方が決定1 で一覧から外れたため、残るのは #117 の孤児と、席の記録で実体化した行だけになる。画面はそれを「未記入」と呼び、確認ダイアログや状況行の差し込みにも同じ語を使う(AI 判断3)。

索引へいつ書くかは変えていない。record_session による実体化はそのままであり、変えたのは行の見せ方と消し方だけである。

…d rows (index.html, main.ts, styles.css, docs)

起動しただけで一言も発しなかった回が、索引に題の無い項目を残していた。その行は ❌ を持たないため画面から消せず、起動のたびに増える。一覧の作りと、題の無い行の扱いの両方を直す。

- 索引に無い現在のトピックを行として描かない(決定1)。`renderTopics` が一覧の先頭へ足していた架空の行をやめ、代わりに一覧の先頭へ固定の「新規」を置く。あの行は「名前の無いトピック」を名乗っていたが、実際には誰も始めていない会話であり、しかも索引に無い以上そこから消すものも持たなかった。「新規」は本当のこと——新しいトピックが始まる場所——を言う。
- 「新規」は `<ol>` の外に立てる。一覧は索引から描き直されるため、索引の行ではないものをその中に置けば毎回消える。索引が空でも「新規」は在る。
- 部屋が索引に無いトピックに居る間、「新規」は選択状態で描く(AI 判断4)。そうしないと、自分の居る場所が一覧のどこにも無い状態になり、架空の行が避けていた問題が形を変えて戻る。形は行の選択状態と同じ——枠のある窓の地の箱である。
- 索引に在る題の無い行にも ❌ を付ける(決定2)。#119 決定5 の理由は「そう読まれる二つの行は、どちらもここから消す理由が無い」であり、その片方は決定1 が一覧から外した。残るのはファイルの無い孤児(#117)と、発言が無いまま席の記録で実体化した行であり、どちらも消したい行である。決定5 は覆すのではなく、前提が外れる。
- 題の無い行は画面上「未記入」と呼ぶ(AI 判断3)。行の表示、削除の確認ダイアログ、削除後の状況行、開いたときの状況行、❌ の読み上げが同じ語を差し込み、「トピック「」を削除します。」を出さない。名前を直す欄は空のままである——「未記入」は空の題について画面が言う語であって、題ではない。
- 「新規」を見出しの隣から一覧の先頭へ移したため、`#history .panel-head button` の規則は `#history .new` になった。作る操作はそれが現れるリストの隣に置く(#59)という判断は残っている。

索引へいつ書くかは変えていない。`record_session` がトピックを実体化する理由(id が起動を越えて残らなければ resume の意味が無い)は正当であり、そのままである。直したのは行の見せ方と消し方だけである。

要求仕様の「トピック」「トピックの一覧」「実装済み」を、この二つの決定に合わせて書き替えた。

Closes #125

Co-authored-by: Claude Lin & Lay <eightborder@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

@smileygames smileygames left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI セルフレビュー(execution_mode = auto、#125 に対して)。

受け入れ基準

本文の決定と AI 判断を一つずつ diff で確認した。すべて満たしている。

  • 決定1(未実体トピックを行として描かない) — renderTopicslisted.unshift(...) が消え、代わりに topicNewEl.classList.toggle("current", ...) になっている。新規.panel-head から出て <ol> の外に置かれた。索引から描き直されても消えない位置であり、索引が空でも残る。
  • 決定2(題の無い行も消せる) — row.appendChild(deleteButton(topic)) が無条件になった。決定1 で架空の行が一覧から出た後なので、ここに来る行はすべて索引の行である。前提が変わったことを利用しており、決定5 を単独で覆してはいない。
  • AI 判断3(「未記入」) — topicName() に一本化され、行の表示・❌ の titlearia-label・開いたときの状況行・削除ダイアログ・削除後の状況行の五箇所が同じ語を差し込む。「トピック「」を削除します。」は出ない。既存の「未命名」も同時に「未記入」へ寄せてある。
  • AI 判断4(新規 の選択状態) — renderTopics が毎回 toggle する。描く側が一本なので、一覧と 新規 が食い違う経路が無い。

改名だけは topicName() を通していない。空の題の行で改名を始めると空の欄が開く。これは正しい——「未記入」は画面の語であって題ではなく、既定値として差し込めば語そのものが題になってしまう。判断として支持する。

逸脱

なし。変更は 4 ファイル(index.html / src/main.ts / src/styles.css / docs/0-requirements.md)で、本文の target files の範囲内。Rust には触れていない——本文の制約「実体化そのものは外さない。直すのは行の見せ方と消し方」に沿っている。

.unnamed の CSS は topicRow が今も付けており、死んだ規則にはなっていない。

docs

docs/0-requirements.md に二点入っている。「発言が無くても、席がそこで始まれば索引に入る」という段落(今回の不具合の発生源そのものの記述)と、決定5 を「前提が外れる」形へ書き替えた段落。実装と同じ PR に入っている。

CI

check / CI ともに success(8755486)。mergeStateStatus = CLEAN。

版数

patch。画面から観測できる変化ではあるが、規模は限定的で「大きな構造変更」ではない。

未確認として残るもの

実装者は使い捨ての vite server(5199、1420 ではない)で見た目を確認しているが、Tauri アプリとしての実機確認は未了。特に 新規 の選択状態と、題の無い行の ❌ から削除まで通す経路は実機で押していない。実機確認はマージの門ではないため止めない。

次: 自己レビュー通過につき、auto モードの直接マージへ進む。

@smileygames
smileygames merged commit 542f770 into main Aug 28, 2026
2 checks passed
@smileygames
smileygames deleted the issue-125-new-topic-entry-and-untitled-delete branch August 28, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug(topics): a session started without a post leaves an untitled row that cannot be deleted

1 participant