Skip to content

Commit dc66af3

Browse files
docs: backfill 0.2.0 changelog with user-facing changes since v0.1.0
1 parent e87f05e commit dc66af3

1 file changed

Lines changed: 20 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,26 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
1010

1111
### Added
1212

13-
- `docs/architecture.md` (#138): FTS5 search-index lock order, threading model, and forbidden nesting rules
14-
- `tests/test_search_index_concurrency.py` (#139): concurrent rebuild and query, background refresh under load, lock-order assertions, `index_locked` live-scan fallback
15-
- Dual-path parity oracles (#140): `tests/test_dual_path_parity_oracle.py` and `static/js/render/tool_result/dual_path_parity_oracle.test.js` run the same XSS payload through Python (`utils/md_exporter.py`, `utils/tool_dispatch.py`) and JS `renderToolResult`; malformed-input cases for truncated JSONL, broken parent UUIDs, and NUL bytes
13+
- `KNOWN_TOOL_TYPES` registry in `utils/tool_dispatch.py`; sync test keeps dispatch, file activity, Markdown export, and frontend renderers in step (#104)
14+
- `static/tool_types.json` generated from the registry and loaded at SPA boot; warns in the console when renderers drift; unknown tools show their type name and JSON payload (#105)
15+
- `GET /api/schema-report` and an amber banner on the session list when upstream JSONL fields appear or go missing (#108)
16+
- Disk summary cache at `~/.claude-code-chat-browser/session_summary_cache.sqlite` plus a display-name cache so project and session lists load faster after restart (#111)
17+
- FTS5 search index in `utils/search_index.py` with background rebuild; `/api/search` hits the index first and falls back to live scan; default window is 30 days (`all_history`, `since_days` for wider ranges) (#120)
18+
- `/api/search` returns proper error codes for empty queries, overlong queries, bad `since_days`, and locked indexes; search page gets an all-history checkbox, a 50-result cap warning, snippet highlighting, and separate empty vs error UI (#121)
19+
- Lock order and threading model for the search index in `docs/architecture.md` (#138)
20+
- `tests/test_search_index_concurrency.py` for rebuild/query concurrency and lock-order checks (#139)
21+
- Python and Vitest parity oracles in `tests/test_dual_path_parity_oracle.py` and `static/js/render/tool_result/dual_path_parity_oracle.test.js` (#140)
22+
23+
### Changed
24+
25+
- Session, stats, and export routes share `api/_session_handlers.py` and one `SESSION_LOAD_ERRORS` tuple (#125)
26+
- Tool result dispatch picks winners by explicit priority instead of tuple order (`plan` over `file_write`, `task_message` over narrower task shapes) (#127)
27+
- CLI bulk export prints the same `ErrorCode` values and messages as the HTTP API (#134)
28+
29+
### Fixed
30+
31+
- YAML frontmatter in Markdown export now quotes values that contain colons, `#`, tabs, newlines, or boolean literals; `models_used` and `service_tiers` export as sequences (#107)
32+
- `SEARCH_INDEX_UNAVAILABLE` (503) when the FTS index is locked and live scan also fails (#122)
1633

1734
## [0.1.0] - 2026-06-18
1835

0 commit comments

Comments
 (0)