diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e12af3..1c020b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.1.0] - 2026-06-04 + ### Added - **Summary disk cache (Phase 3)** — project list and tab summaries cached under `~/.cache/cursor-chat-browser/`, invalidated when global or per-workspace DB @@ -23,6 +25,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **Scoped KV loaders** in `services/workspace_db.py`: `load_bubbles_for_composer`, `load_message_request_context_for_composer`, `load_code_block_diffs_for_composer` — used by the single-tab path (#84) +- **Web UI** — browse and search all Cursor AI workspaces; conversation view with syntax-highlighted code blocks, dark/light mode, and bookmarkable chat URLs (#63) +- **Export formats** — one-click export of chats as Markdown, HTML, PDF, JSON, and CSV from the web UI (#63) +- **CLI export** (`cursor-chat-export` / `scripts/export.py`) — zip archive or individual Markdown files with YAML frontmatter; incremental mode (`--since last`) preserves state across runs (#63, #42, #61) +- **Cursor CLI agent session support** — browse and export sessions stored in `~/.cursor/chats/` by the `cursor agent` CLI; gracefully degrades when the IDE database is absent (#7, #8, #63) +- **Desktop app packaging** — Windows `.exe` via PyInstaller + pywebview; no Python installation required on the target machine (#63) +- **Type-safe models** with schema validation at SQLite read boundaries (#24, #30) +- **CI matrix** (Linux / macOS / Windows) running pytest, mypy, and gitleaks (#13, #19, #44, #62) +- **Python packaging infrastructure** (`pyproject.toml` with hatchling, bounded dependency pins, `requirements-lock.txt`, Dependabot) (#45, #47, #49, #53) +- Optional exclusion rules for sensitive projects and chats (#1, #2) +- Full-text search with workspace and log-type filters (#63) +- Hypothesis property-based tests for blob and bubble parsing (#71, #81) +- PDF export endpoint coverage in CI (#72) +- Unit tests for `determine_project_for_conversation` fallback chain (#87, #89) ### Changed - **List-path performance** — skip full `messageRequestContext` scan unless @@ -35,6 +50,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - **`assemble_workspace_tabs`** inner per-composer loop refactored into a shared `_assemble_tab_from_composer_data` helper reused by `assemble_single_tab`; full path behaviour is unchanged (#84) +- Extract shared `from_dict` validation helpers for model classes, reducing duplication (#70, #80) +- Enable mypy `strict-optional` and fix nullability gaps across the codebase (#69, #79) ### Deprecated - Direct use of `GET /api/workspaces//tabs` (no `?summary=1`) from the workspace @@ -42,24 +59,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 individual tabs. The full-assembly endpoint remains available for export, search, and backward-compatible consumers (planned removal: post-1.0) (#84) - -- **Web UI** — browse and search all Cursor AI workspaces; conversation view with syntax-highlighted code blocks, dark/light mode, and bookmarkable chat URLs (#63) -- **Export formats** — one-click export of chats as Markdown, HTML, PDF, JSON, and CSV from the web UI (#63) -- **CLI export** (`cursor-chat-export` / `scripts/export.py`) — zip archive or individual Markdown files with YAML frontmatter; incremental mode (`--since last`) preserves state across runs (#63, #42, #61) -- **Cursor CLI agent session support** — browse and export sessions stored in `~/.cursor/chats/` by the `cursor agent` CLI; gracefully degrades when the IDE database is absent (#7, #8, #63) -- **Desktop app packaging** — Windows `.exe` via PyInstaller + pywebview; no Python installation required on the target machine (#63) -- **Type-safe models** with schema validation at SQLite read boundaries (#24, #30) -- **CI matrix** (Linux / macOS / Windows) running pytest, mypy, and gitleaks (#13, #19, #44, #62) -- **Python packaging infrastructure** (`pyproject.toml` with hatchling, bounded dependency pins, `requirements-lock.txt`, Dependabot) (#45, #47, #49, #53) -- Optional exclusion rules for sensitive projects and chats (#1, #2) -- Full-text search with workspace and log-type filters (#63) -- Hypothesis property-based tests for blob and bubble parsing (#71, #81) -- PDF export endpoint coverage in CI (#72) - -### Changed -- Extract shared `from_dict` validation helpers for model classes, reducing duplication (#70, #80) -- Enable mypy `strict-optional` and fix nullability gaps across the codebase (#69, #79) - ### Fixed - Path traversal and symlink-escape protection on `/api/set-workspace` (#15, #22) - Disabled Werkzeug debug mode by default; opt-in via `--debug` / `FLASK_DEBUG=1` (#9, #20) @@ -73,4 +72,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Replace silent `except Exception: pass` with structured logging in workspace and bubble load paths (#66, #76) - Decouple API handlers from private `_`-prefixed service internals (#73) -[Unreleased]: https://github.com/cppalliance/cppa-cursor-browser/commits/HEAD +[Unreleased]: https://github.com/cppalliance/cppa-cursor-browser/compare/v0.1.0...HEAD +[0.1.0]: https://github.com/cppalliance/cppa-cursor-browser/releases/tag/v0.1.0