Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -35,31 +50,15 @@ 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/<id>/tabs` (no `?summary=1`) from the workspace
UI on page load; the UI now calls `?summary=1` for first paint and lazy-fetches
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)
Expand All @@ -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
Loading