Skip to content

v0.2.48.0 fix: Cycle 0056 pt2: the LLM Wiki view and the reader say what is true while a run starts, fails, hides or cannot reveal its folder - #137

Merged
ryota-murakami merged 9 commits into
mainfrom
codex/cycle-0056-pt2
Oct 26, 2026
Merged

ryota-murakami merged 9 commits into
mainfrom
codex/cycle-0056-pt2

Conversation

@ryota-murakami

@ryota-murakami ryota-murakami commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Bug-fix Cycle 0056, part 2 of 3 (Issue #135, tasks 15, 16, 18–22, 24, 25): the LLM Wiki view and the browser reader say what is true in the states the tasks list. Every defect found while fixing them is closed too.

  • The reader (task 15): a question waits with Asking the editor model… The editor may first ask you to allow Codebook to use it; answer there. in both editors (O4).
  • The LLM Wiki view.
    • The message above the tree is applied when the tree reads the new rows, so message and rows change in one render (task 16).
    • Tests await a debounce flush (whenIdle) instead of fixed sleeps (task 18).
    • The independent fact reads run together after the receipt (task 19).
    • The 30 s poll keeps running across an error row that follows a run row (task 20). A read or freshness failure that persists is written to Output once.
    • A collapsed or hidden view does no poll and no freshness check, not even a queued one, and reads once at once when shown (task 22).
  • Reveal Wiki Folder (task 21) says why it opened nothing. The cases are a missing folder, a file in the folder's place, a link whose target is missing, an unreadable path (with its code, including a 3 s ETIMEDOUT on a dead mount) and a remote window. A WSL window reveals like a local one. The settings lookup failing is shown and recorded.
  • Names and copy (tasks 24, 25).
    • One wikiHost value, shortRevision, and the sentences moved to constants.ts.
    • Inline actions in Title Case with their decided icons: Stop Watching $(eye-closed), Try Again $(debug-restart), Cancel keeps $(debug-stop), and Copy Recovery Request.
    • The welcome line names the default folder.
    • A click on row 5 opens the output setting (O3).

Changes to existing tests and their reasons (AC 4):

  • wikiQuestionPage.test.ts: the waiting status follows the task-15 sentence.
  • llmWikiManifest.test.ts: the welcome text and the manifest type follow task 25.
  • llmWikiView.test.ts:
    • fixed sleeps (300/250/120 ms) became await whenIdle(), which is deterministic and stricter (task 18);
    • the Reveal assertion moved out of the combined commands test into dedicated tests (published, missing, file, dangling link, unreadable, remote, WSL);
    • the missing-folder and remote expectations gained the next-step sentences;
    • the unreadable expectation follows the class-wide wording.
  • llmWikiViewReadLoop.test.ts:
    • the defer helper moved to tests/utils/defer.ts;
    • openView also collects the cause passed to recordFailure;
    • one test renamed to an observable-behaviour name.
  • readLlmWikiViewState.test.ts: row 5 now pins its command.
  • describeUnrevealableWikiFolder.test.ts: the input became folderKind, and the expectations gained the next-step and unreadable wording.
  • Test helpers:
    • fakeLlmWikiEditor.ts gained renderLog, message, a real onDidChangeVisibility and readsRootInsideCreateTreeView;
    • wikiUpdateWindow.ts gained whenIdle (it throws if the view was never created) and findWikiLocation.
  • isExistingFolder and isExistingFile with their tests were replaced by wikiFolderKindOf and its test (a single stat).

Local reviews before /ship (AGENTS.md Delivery), run on this diff on top of part 1's head and fixed in d0052c4f:

  • Local CodeRabbit CLI: 1 minor.
  • open-code-review-delegate: 14 of 14 files reviewed; 1 medium and 4 low.

Test Coverage

  • Step 7: 27 of 27 changed paths covered (100%), value-weighted 89%, no gaps. Three coverage tests were added (faea27df).
  • Later passes: each fix range is covered by its own tests, red first where the fix changes behaviour.
  • Tests ran: tests 7310 (the Step 5 lane on c82e4be8: 7304 pass, 0 fail, 6 skipped).

Pre-Landing Review

/ship ran three fixing cycles and did not converge (converged:false, ship review limit).

  • Pass 1: 13 reported findings, all fixed in 386449b1:
    • 7 untested state cells of the view's read loop, now tested;
    • a persistent read failure recorded every 30 s;
    • WSL treated as remote;
    • a file in the folder's place told as missing;
    • next steps;
    • README;
    • the initialisation order.
  • Pass 2: 6 findings, all fixed in abd06854:
    • the failure cause cleared too early, so a row-step failure was recorded every tick;
    • the dedupe key;
    • one stat helper and the unreadable sentence;
    • the remote next step;
    • a docstring.
  • Pass 3, together with Step 11: 7 specialist, 1 red team, 6 Claude adversarial and 2 Codex adversarial findings, all fixed in c82e4be8:
    • a freshness check queued before hide;
    • a dead-mount timeout and a dangling link;
    • failure-key guards, bounds and cause chain;
    • separate read and freshness once-only records;
    • the location rejection;
    • no message write after dispose;
    • systemErrorCode;
    • copy;
    • README.

These were not changed, with evidence:

  • 1 advisory: Promise.withResolvers needs a lib bump.
  • 3 items covered by Owner decisions O3/O4 (sentence-case running text, link and row description; the hint in both editors).
  • 1 already covered by a test (render-log order).
  • Low-confidence state-matrix cells, kept in the appendix.

No Critical or Major defect is still open, so no Issue is recorded.

Found by this PR's full lane and recorded in Issue #135 as task 30, to be fixed in part 3 (Study-workspace area, like task 28): studyWorkspace.test.js:75 timed out once at 12.3 s under load. It passed 5 of 5 alone, and part 2 changes no Study-workspace code.

Gate edits: 43 listed, 20 read, 2 findings: 2 kept, 0 restored, 0 open.

  • RH-16 extension/src/utils/llmWikiView.ts / extension/src/extension.ts: the try/catch around writing a failure to Output. A recorder or a disposed channel that throws must not hide the error row; it has nowhere to report.
  • RH-1 extension/src/tests/wikiFolderKindOf.test.ts: the dangling-link case skips where the OS refuses to create a symbolic link, through the shared createLinkIfAllowed helper.

Outside review:

  • Codex adversarial (gpt-6-astra) completed with FINDINGS: P2, fixed.
  • Codex structured review is missing coverage: it answered in prose with no severity tags (unverified).

Exploratory QA

In each of passes 1–3, two probes ran (functional), and both passed every time:

  1. The VSIX packages and passes check-package.mjs.
  2. The packaged VSIX carries the decided action titles and icons, the welcome line and the reader's waiting sentence.

The view's rendering on screen is N56 on part 3's candidate (AC 2b).

Design Review

There are no frontend files by diff scope, so design-lite was skipped. The design specialist was force-included in every pass for the view's learner-facing copy, and its findings are fixed above.

Eval Results

No prompt-related files changed, so evals were skipped.

Scope Drift

Scope Check: CLEAN.

Plan Completion

Issue #135, part 2 scope: 6 DONE (15, 18, 19, 21, 22, 24), 1 CHANGED (20: proven by read-loop tests, with the same observable), 2 PARTIAL (16, 25).

  • The PARTIAL items' native parts are N56 on part 3 (AC 2b).
  • Task 16 stays open until N56 step 4's frames.

Linked Spec

Linked to #135 (partial delivery: part 2 of 3, not auto-closing). Part 3 follows with tasks 17, 23, 29, 30 and N56. Issue #135 closes after part 3.

Verification Results

Step 8.1 obligations are AC 5's 15-check exact-HEAD gate, shown below.

TODOS

No TODOS.md (AGENTS.md).

Documentation

Scope: the committed, staged and unstaged diff against origin/main (086211d). Changed files are CHANGELOG.md, README.md, VERSION, extension/package.json, extension/scripts/tests/package.test.mjs and extension/src/constants.ts. I checked the 0.2.48.0 CHANGELOG entry against the packaged extension/README.md, as the project rule requires.

Result: every user-visible behaviour the 0.2.48.0 entry names already has a sentence in extension/README.md. That README was updated in earlier pre-landing review commits on this branch. The mapped behaviours:

  • The reader's Asking the editor model… wait, in the LLM Wiki reader section.
  • The message above the tree changing in the same render as the rows.
  • A collapsed or hidden view running no poll and no freshness check, with one read when it is shown again.
  • The poll continuing across an error row, with the once-only Output records for read and freshness failures.
  • The Reveal Wiki Folder messages: missing folder, a file in its place, a link whose target is missing, an unreadable path (with its error code, also on the 3-second timeout), and a remote window. A WSL window reveals the folder like a local one.
  • The view action names and icons in Title Case, with Cancel keeping the stop icon.
  • The welcome sentence naming the default folder, the Change location link, and the Output row opening the setting.

The root README status line matches 0.2.48.0. The README says the MCP API stays 1.8, the bundled skill stays 1.0.50 and stored data is unchanged. No files were edited. Debt: none found.

Test plan

The 15-check exact-HEAD gate (Issue #135 AC 5), run in order on 7ccdfdd9; all 15 pass:

  • pre-gate Stage 1 (gstack-pregate --stage preflight --allow-repo-commands): exit 0, PREGATE: pass, 6 checks (secrets: 2110 added lines clean).
  • pnpm format:check, typecheck, lint, health:static, dupes and dead-code: each exit 0.
  • pnpm test: exit 0. 7310 tests: 7304 pass, 0 fail, 6 skipped.
  • Reader DOM, all 5 checks exit 0: study-bootstrap, wiki-reader-dom, study-reading-pose, understanding-focus and repository-return.
  • pnpm test:package: exit 0. 1080 tests: 1070 pass, 0 fail.
  • pnpm health: exit 0.
  • node --test .codex/restore-product-context.test.mjs: 9 of 9 pass.

Still pending:

  • Required CI on this head, and hosted CodeRabbit APPROVED on the exact head.

Native acceptance of tasks 15, 16 and 25 is N56, run on part 3's candidate (Issue #135 AC 2b, AC 3).

🤖 Generated with Claude Code

Summary by CodeRabbit

  • 新機能
    • LLM Wikiの出力先を行から変更できるようになりました。出力先の既定値と変更方法も案内します。
    • Wikiフォルダーを開けない場合、原因に応じた案内を表示します。生成失敗後の再試行や復旧リクエストのコピーも利用できます。
    • エディターへの質問中、利用許可が必要な場合があることを表示します。
  • 改善
    • LLM Wikiビューが非表示の間は定期確認を停止し、再表示時に更新します。読み取りエラーの重複記録も抑えます。
  • ドキュメント
    • バージョン情報を0.2.48.0に更新しました。

ryota-murakami and others added 9 commits October 27, 2026 06:04
…den views do no background work, reveal says why it opens nothing, fact reads run together (tasks 16, 18-22)
…ames, the welcome names the default folder, a row 5 click changes the location, names and sentences are single-sourced (tasks 24, 25)
…I 1)

- OCR-M1: Copy Recovery Request in Title Case (package.json shortTitle, LLM_WIKI_ROW_ACTIONS); manifest test covers it.
- OCR-L1: Reveal Wiki Folder sentences move to constants.ts (wording unchanged).
- OCR-L2: manage-trust notices sit beside LLM_WIKI_ROW_ACTIONS; link resolves to resolveManageTrustCommand.
- OCR-L3: test harness whenIdle throws when the view was never created.
- OCR-L4: showing a hidden view reads at once instead of through the 1 s debounce.
- OCR-L5: read-loop test renamed to observable behaviour.
- CR2-1: README names inline actions in Title Case (welcome link stays sentence case).
…row, reveal reason precedence, real folder check)
- SM2-1..SM2-7: read-loop tests for debounce x dispose, reading x requestRefresh/refresh/show, error-after-run-row x hide/show, cleared message x getChildren
- RT2-A: a read failure that persists across poll ticks is recorded once in Output while the error row stands; a different failure or one after a good read is recorded again
- RT2-B (1): a WSL window reveals the Wiki folder like a local one
- RT2-B (2): a file at the output path gets its own Reveal Wiki Folder sentence (new isExistingFile helper)
- D2: the missing and remote Reveal Wiki Folder notices add the next step after task 21's sentence
- D3: README lists Copy Recovery Request among the Title Case inline actions
- RT2-C: the view's tree provider tolerates a root read inside createTreeView
- SM3: recordedFailureCause is cleared only once a non-error model is shown (after show, and after the freshness result is shown), so a persistent row-step or freshness failure is recorded once across poll ticks.
- RT3-b: the dedupe key is name|code|message for Errors and util.inspect text otherwise (failureKeyOf).
- RT3-c: one stat (wikiFolderKindOf) replaces isExistingFolder/isExistingFile; an unreadable path gets its own sentence with the error code; README updated.
- D4: the remote Reveal notice's next step is "Open it from a terminal in this window, which runs on that remote."; task 21's first sentence unchanged.
- M4: the show docstring no longer says it sets the message.
… review)

- F1: a freshness check queued before the view is hidden no longer starts while it is hidden; a show reads again and queues a current one.
- F2: Reveal Wiki Folder gives up on a path look that never answers (3 s, ETIMEDOUT) and tells a link whose target is missing in its own sentence.
- F3: the unreadable sentence reads "Check the path and its permissions, or change the location."
- F4: a cause that cannot be read (throwing message getter) still shows the error row; failureKeyOf falls back to the type tag.
- F5: the failure key is bounded (500 characters), includes the cause one level down and ignores digit runs of the message.
- F6: a good read ends the read failure; the freshness check records its own failure once and a successful check clears it.
- F7: Reveal Wiki Folder tells and records a Wiki location that cannot be worked out.
- F8: the tree view writes no message after dispose and applies the current message once after creation.
- F9: systemErrorCode returns a code only when it is a string or a number.
- F10/F11: failureKeyOf tests; the UNKNOWN fallback of wikiFolderKindOf is tested through a look seam.
- F12: the show docstring no longer links getChildren.
- F13: the remote notice's next step: "...which runs in that remote environment, not on this computer."
- F14: the README says the poll runs while the view is shown and a run row shows, and a hidden view reads once when shown again.
Co-Authored-By: Claude <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 086211d and 7ccdfdd.

Files selected for processing: 31
  • CHANGELOG.md
  • README.md
  • VERSION
  • extension/README.md
  • extension/package.json
  • extension/scripts/tests/package.test.mjs
  • extension/src/constants.ts
  • extension/src/deepWikiReader.ts
  • extension/src/extension.ts
  • extension/src/tests/describeUnrevealableWikiFolder.test.ts
  • extension/src/tests/failureKeyOf.test.ts
  • extension/src/tests/llmWikiManifest.test.ts
  • extension/src/tests/llmWikiView.test.ts
  • extension/src/tests/llmWikiViewReadLoop.test.ts
  • extension/src/tests/readLlmWikiViewFacts.test.ts
  • extension/src/tests/readLlmWikiViewState.test.ts
  • extension/src/tests/systemErrorCode.test.ts
  • extension/src/tests/utils/defer.ts
  • extension/src/tests/utils/fakeLlmWikiEditor.ts
  • extension/src/tests/utils/wikiUpdateWindow.ts
  • extension/src/tests/wikiFolderKindOf.test.ts
  • extension/src/tests/wikiQuestionPage.test.ts
  • extension/src/utils/describeUnrevealableWikiFolder.ts
  • extension/src/utils/describeWikiGeneration.ts
  • extension/src/utils/failureKeyOf.ts
  • extension/src/utils/llmWikiView.ts
  • extension/src/utils/readLlmWikiViewFacts.ts
  • extension/src/utils/readLlmWikiViewState.ts
  • extension/src/utils/registerLlmWikiCommands.ts
  • extension/src/utils/systemErrorCode.ts
  • extension/src/utils/wikiFolderKindOf.ts

Included review availability: This review used your included allowance. 3 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 4 reviews per hour.

Recent review details
Context from checks skipped due to timeout: 3
  • GitHub Check: Test (8/14)
  • GitHub Check: package
  • GitHub Check: Fallow (health, dupes, dead-code)
Additional context used
Code guidelines: 1
AGENTS.md — configured
Path-based instructions: 7
Prefer DAMP and observable behavior over mirroring the implementation.

CodeRabbit configuration file

Files:

  • extension/scripts/tests/package.test.mjs
  • extension/src/tests/readLlmWikiViewState.test.ts
  • extension/src/tests/utils/defer.ts
  • extension/src/tests/systemErrorCode.test.ts
  • extension/src/tests/readLlmWikiViewFacts.test.ts
  • extension/src/tests/llmWikiManifest.test.ts
  • extension/src/tests/wikiQuestionPage.test.ts
  • extension/src/tests/describeUnrevealableWikiFolder.test.ts
  • extension/src/tests/failureKeyOf.test.ts
  • extension/src/tests/utils/fakeLlmWikiEditor.ts
  • extension/src/tests/wikiFolderKindOf.test.ts
  • extension/src/tests/utils/wikiUpdateWindow.ts
  • extension/src/tests/llmWikiView.test.ts
  • extension/src/tests/llmWikiViewReadLoop.test.ts
The extension owns runtime state and immutable evidence; external agents operate through the extension-owned MCP API.

CodeRabbit configuration file

Files:

  • extension/src/utils/readLlmWikiViewState.ts
  • extension/src/deepWikiReader.ts
  • extension/src/tests/readLlmWikiViewState.test.ts
  • extension/src/tests/utils/defer.ts
  • extension/src/tests/systemErrorCode.test.ts
  • extension/src/utils/describeWikiGeneration.ts
  • extension/src/utils/systemErrorCode.ts
  • extension/src/tests/readLlmWikiViewFacts.test.ts
  • extension/src/utils/readLlmWikiViewFacts.ts
  • extension/src/tests/llmWikiManifest.test.ts
  • extension/src/utils/describeUnrevealableWikiFolder.ts
  • extension/src/tests/wikiQuestionPage.test.ts
  • extension/src/utils/wikiFolderKindOf.ts
  • extension/src/tests/describeUnrevealableWikiFolder.test.ts
  • extension/src/tests/failureKeyOf.test.ts
  • extension/src/utils/failureKeyOf.ts
  • extension/src/tests/utils/fakeLlmWikiEditor.ts
  • extension/src/tests/wikiFolderKindOf.test.ts
  • extension/src/utils/registerLlmWikiCommands.ts
  • extension/src/extension.ts
  • extension/src/constants.ts
  • extension/src/utils/llmWikiView.ts
  • extension/src/tests/utils/wikiUpdateWindow.ts
  • extension/src/tests/llmWikiView.test.ts
  • extension/src/tests/llmWikiViewReadLoop.test.ts
Reuse existing utilities and schema-derived types before proposing new abstractions.

CodeRabbit configuration file

Files:

  • extension/src/utils/readLlmWikiViewState.ts
  • extension/src/deepWikiReader.ts
  • extension/src/tests/readLlmWikiViewState.test.ts
  • extension/src/tests/utils/defer.ts
  • extension/src/tests/systemErrorCode.test.ts
  • extension/src/utils/describeWikiGeneration.ts
  • extension/src/utils/systemErrorCode.ts
  • extension/src/tests/readLlmWikiViewFacts.test.ts
  • extension/src/utils/readLlmWikiViewFacts.ts
  • extension/src/tests/llmWikiManifest.test.ts
  • extension/src/utils/describeUnrevealableWikiFolder.ts
  • extension/src/tests/wikiQuestionPage.test.ts
  • extension/src/utils/wikiFolderKindOf.ts
  • extension/src/tests/describeUnrevealableWikiFolder.test.ts
  • extension/src/tests/failureKeyOf.test.ts
  • extension/src/utils/failureKeyOf.ts
  • extension/src/tests/utils/fakeLlmWikiEditor.ts
  • extension/src/tests/wikiFolderKindOf.test.ts
  • extension/src/utils/registerLlmWikiCommands.ts
  • extension/src/extension.ts
  • extension/src/constants.ts
  • extension/src/utils/llmWikiView.ts
  • extension/src/tests/utils/wikiUpdateWindow.ts
  • extension/src/tests/llmWikiView.test.ts
  • extension/src/tests/llmWikiViewReadLoop.test.ts
Each user-visible behavior that an entry names needs a sentence in the packaged README (extension/README.md).

CodeRabbit configuration file

Files:

  • CHANGELOG.md
Check commands, API versions, linked evidence, counts, and completion claims against the current cycle.

CodeRabbit configuration file

Files:

  • README.md
  • CHANGELOG.md
  • extension/README.md
Read AGENTS.md and the authority documents supplied as code guidelines.

CodeRabbit configuration file

Files:

  • VERSION
  • extension/scripts/tests/package.test.mjs
  • extension/src/utils/readLlmWikiViewState.ts
  • extension/src/deepWikiReader.ts
  • extension/src/tests/readLlmWikiViewState.test.ts
  • extension/src/tests/utils/defer.ts
  • extension/src/tests/systemErrorCode.test.ts
  • extension/src/utils/describeWikiGeneration.ts
  • extension/src/utils/systemErrorCode.ts
  • extension/src/tests/readLlmWikiViewFacts.test.ts
  • extension/src/utils/readLlmWikiViewFacts.ts
  • extension/src/tests/llmWikiManifest.test.ts
  • extension/src/utils/describeUnrevealableWikiFolder.ts
  • extension/src/tests/wikiQuestionPage.test.ts
  • extension/src/utils/wikiFolderKindOf.ts
  • extension/src/tests/describeUnrevealableWikiFolder.test.ts
  • README.md
  • extension/src/tests/failureKeyOf.test.ts
  • extension/package.json
  • extension/src/utils/failureKeyOf.ts
  • extension/src/tests/utils/fakeLlmWikiEditor.ts
  • extension/src/tests/wikiFolderKindOf.test.ts
  • CHANGELOG.md
  • extension/README.md
  • extension/src/utils/registerLlmWikiCommands.ts
  • extension/src/extension.ts
  • extension/src/constants.ts
  • extension/src/utils/llmWikiView.ts
  • extension/src/tests/utils/wikiUpdateWindow.ts
  • extension/src/tests/llmWikiView.test.ts
  • extension/src/tests/llmWikiViewReadLoop.test.ts
Source excerpt: Every user-visible behavior a CHANGELOG entry names needs a sentence in the packaged README (`extension/README.md`), as `.coderabbit.yaml`'s `CHANGELOG.md` instruction checks.

CodeRabbit inference engine (AGENTS.md)

Files:

  • CHANGELOG.md
  • extension/README.md
LanguageTool
README.md

[style] ~19-~19: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ows, opens and updates it (its second). Cycle 0053 was a feature cycle: a test inside...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

[style] ~19-~19: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...dy selects keeps running from the root. Cycle 0054 is a bug-fix cycle that closes the...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

[style] ~19-~19: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...p keeps a listing it could not release. Cycle 0051 opened a test replay in the learni...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

[style] ~19-~19: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...tton that shows a hidden summary again. Cycle 0052 was a bug-fix cycle that closed ev...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

extension/README.md

[style] ~252-~252: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’.
Context: ... Update LLM Wiki is available again whether or not the recorded process still exists. A Wi...

(WHETHER)

Additional comments: 31
extension/src/constants.ts: 1

11-11: LGTM!

Also applies to: 837-839, 1043-1043, 1048-1048, 1051-1051, 1055-1055, 1072-1074, 1076-1078, 1080-1087, 1089-1096, 1098-1105, 1107-1118, 1120-1127, 1129-1133, 1135-1142

extension/src/deepWikiReader.ts: 1

26-26: LGTM!

Also applies to: 151-151

extension/src/tests/wikiQuestionPage.test.ts: 1

48-48: LGTM!

Also applies to: 99-99, 118-118, 154-154

extension/README.md: 1

187-188: LGTM!

Also applies to: 248-248, 250-250, 253-255, 258-258

extension/package.json: 1

6-6: LGTM!

Also applies to: 172-173, 226-226, 237-238, 252-252, 352-352, 357-357

extension/src/tests/llmWikiManifest.test.ts: 1

13-18: LGTM!

Also applies to: 52-52, 61-61, 168-212

README.md: 1

19-19: LGTM!

VERSION: 1

1-1: LGTM!

extension/scripts/tests/package.test.mjs: 1

98-98: LGTM!

CHANGELOG.md: 1

3-27: LGTM!

extension/src/extension.ts: 1

283-284: LGTM!

Also applies to: 2319-2319, 2440-2440, 2461-2461, 3034-3034, 3041-3041, 3186-3193, 3196-3196, 3201-3201, 3267-3267, 3277-3278

extension/src/utils/failureKeyOf.ts: 1

1-49: LGTM!

extension/src/tests/failureKeyOf.test.ts: 1

1-96: LGTM!

extension/src/utils/llmWikiView.ts: 1

20-20: LGTM!

Also applies to: 78-78, 119-119, 147-160, 180-194, 224-231, 255-266, 280-291, 415-423, 439-443, 456-462, 558-590, 605-619, 654-660, 676-686

extension/src/utils/readLlmWikiViewFacts.ts: 1

220-221: LGTM!

Also applies to: 223-223, 227-227, 297-305, 317-317

extension/src/utils/describeWikiGeneration.ts: 1

37-37: LGTM!

Also applies to: 47-47, 49-49

extension/src/utils/systemErrorCode.ts: 1

8-9: LGTM!

Also applies to: 13-13, 16-21

extension/src/tests/systemErrorCode.test.ts: 1

1-28: LGTM!

extension/src/tests/llmWikiViewReadLoop.test.ts: 1

18-18: LGTM!

Also applies to: 49-49, 51-51, 53-53, 65-68, 74-74, 534-535, 541-707, 803-1364

extension/src/tests/readLlmWikiViewFacts.test.ts: 1

4-4: LGTM!

Also applies to: 11-12, 158-220

extension/src/tests/utils/defer.ts: 1

1-17: LGTM!

extension/src/tests/utils/fakeLlmWikiEditor.ts: 1

20-21: LGTM!

Also applies to: 27-38, 87-109, 138-147

extension/src/tests/utils/wikiUpdateWindow.ts: 1

15-15: LGTM!

Also applies to: 97-100, 153-153, 182-182, 291-292, 367-367, 407-408, 410-410, 681-681, 745-769, 905-913, 973-973, 1073-1080

extension/src/tests/llmWikiView.test.ts: 1

521-521: LGTM!

Also applies to: 551-552, 990-991, 1004-1004, 1011-1278, 1906-1907

extension/src/utils/registerLlmWikiCommands.ts: 1

8-10: LGTM!

Also applies to: 23-23, 26-28, 48-54, 93-93, 109-109, 125-125, 128-160

extension/src/utils/describeUnrevealableWikiFolder.ts: 1

1-52: LGTM!

extension/src/utils/wikiFolderKindOf.ts: 1

1-86: LGTM!

extension/src/utils/readLlmWikiViewState.ts: 1

579-580: LGTM!

extension/src/tests/readLlmWikiViewState.test.ts: 1

549-549: LGTM!

Also applies to: 582-582

extension/src/tests/describeUnrevealableWikiFolder.test.ts: 1

1-108: LGTM!

extension/src/tests/wikiFolderKindOf.test.ts: 1

1-89: LGTM!

Walkthrough

LLM Wikiの質問待機案内、ビューの更新・失敗処理、出力先の判定と表示操作を変更しました。拡張機能のバージョンを0.2.48に更新し、関連するテストとリリース情報も更新しました。

Changes: LLM Wiki

Layer / File(s) Summary
質問案内とリリース表示
extension/src/deepWikiReader.ts, extension/src/constants.ts, extension/package.json, extension/src/tests/llmWikiManifest.test.ts, extension/src/tests/wikiQuestionPage.test.ts, extension/README.md, CHANGELOG.md, README.md, VERSION, extension/scripts/tests/package.test.mjs
質問中にエディターがモデル利用の許可を求める場合があることを案内します。コマンド名・アイコン、既定の出力先の説明、バージョン表示を更新しました。
ビュー更新と失敗記録
extension/src/utils/llmWikiView.ts, extension/src/utils/failureKeyOf.ts, extension/src/utils/readLlmWikiViewFacts.ts, extension/src/utils/systemErrorCode.ts, extension/src/extension.ts, extension/src/tests/llmWikiViewReadLoop.test.ts, extension/src/tests/readLlmWikiViewFacts.test.ts, extension/src/tests/utils/*
ビューの表示中にポーリングと鮮度確認を行い、非表示中は停止します。再表示時には読み込みます。読み取り・鮮度確認の失敗記録をキー別に重複抑制し、読み取り処理の並行化と状態遷移のテストを追加しました。
出力先の判定と表示操作
extension/src/utils/wikiFolderKindOf.ts, extension/src/utils/describeUnrevealableWikiFolder.ts, extension/src/utils/registerLlmWikiCommands.ts, extension/src/utils/readLlmWikiViewState.ts, extension/src/constants.ts, extension/src/tests/wikiFolderKindOf.test.ts, extension/src/tests/describeUnrevealableWikiFolder.test.ts, extension/src/tests/llmWikiView.test.ts
出力先をフォルダー、ファイル、不在、リンク切れ、読み取り不能に分類します。表示できない理由を通知し、表示可能な場合にフォルダーを開きます。出力先行から設定変更を実行できるようにしました。

Priority: Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant Editor as エディター
  participant View as LLM Wikiビュー
  participant Facts as readLlmWikiViewFacts
  participant Tree as TreeDataProvider
  participant Output as Output
  Editor->>View: 表示状態の変更を通知
  View->>Facts: 表示中にビュー情報を読み込む
  Facts-->>View: 読み取り結果または失敗
  View->>Tree: ルート行を要求
  Tree-->>View: 行を返し、メッセージを更新
  opt 失敗キーが未記録
    View->>Output: 失敗を記録
  end
Loading

Possibly related issues

  • Issue 135: このPRは、Wikiビュー、reader、フォルダー表示、鮮度確認、非表示時のポーリング停止に関する項目を扱います。
  • Issue 132: Wikiビューとreaderの持ち越し項目が記載されており、このPRの変更内容と関連します。

Possibly related PRs

  • laststance/codebook#134: PR #134で追加されたLLM Wikiビューに対し、このPRは更新、失敗記録、フォルダー表示処理を変更します。
  • laststance/codebook#133: PR #133の生成状態と実行マーカーを、このPRのビューが読み取って表示します。
  • laststance/codebook#136: PR #136の実行状態とマーカーを、このPRのビューが再読み込みして表示します。
Merge Risk: Minimal · up to 7ccdf

No actionable merge-blocking issue is established. Complete the pending CI and native acceptance checks before release.

Security architecture risk: Low · up to 7ccdf

The inspected changes retain existing trust and location checks and add restrictions before opening a folder. No new privilege or cross-service exposure was identified. Risk is concentrated in local refresh and diagnostic behavior, with some security coverage remaining incomplete.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • observed — The traced filesystem scope is the configured Wiki destination in the current editor environment. Relative parent traversal is rejected by the unchanged resolver; explicit absolute destinations outside the project remain intentionally permitted, as they were before this PR.

Trust Boundaries and Controls

  • observed — Freshness checks receive the project and output directory captured by the displayed facts. Their results are discarded after disposal or when the current publication-and-folder identity differs, preserving the existing stale-result boundary.

Resilience and Maintainability Implications

  • observed — Read and freshness failures have separate deduplication keys and recovery resets. A rejected freshness check can emit a local Output diagnostic before its target is checked for staleness; the subsequent identity guard still prevents applying that obsolete result to a different Wiki.
Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed PRタイトルは、変更の主題であるLLM Wikiビューとリーダーの状態表示(実行開始・失敗・非表示・フォルダーを開けない場合)を具体的に示しており、変更内容と整合しています。ただし141文字と長めで、一文に多くの要素を詰めています。
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 19 functions across 26 files. (5 skipped: …
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 19 functions across 26 files. (5 skipped: 5 unsupported.)

Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@ryota-murakami
ryota-murakami merged commit ce97422 into main Oct 26, 2026
26 checks passed
@ryota-murakami
ryota-murakami deleted the codex/cycle-0056-pt2 branch October 26, 2026 22:46
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.

1 participant