Skip to content

Commit 5399da6

Browse files
committed
feat: initial implement of changelog and versioning policy
1 parent 46bda64 commit 5399da6

3 files changed

Lines changed: 71 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
### Added
11+
- Hypothesis property-based tests for blob and bubble parsing (#71, #82)
12+
- PDF export endpoint coverage in CI (#72, #82)
13+
14+
### Changed
15+
- Extract shared `from_dict` validation helpers for model classes, reducing duplication (#70, #80)
16+
- Enable mypy `strict-optional` and fix nullability gaps across the codebase (#69, #79)
17+
18+
### Fixed
19+
- Add incomplete-result signaling on parse failure so callers can distinguish partial vs. complete data (#67, #78)
20+
- Replace `print()` error output with structured logging throughout (#68, #77)
21+
- Replace silent `except Exception: pass` with structured logging in workspace and bubble load paths (#66, #76)
22+
- Rename `_`-prefixed internal functions to public names to satisfy strict linters (#82)
23+
24+
## [0.1.0] - 2026-05-21
25+
26+
### Added
27+
- **Web UI** — browse and search all Cursor AI workspaces; conversation view with syntax-highlighted code blocks, dark/light mode, and bookmarkable chat URLs (#63)
28+
- **Export formats** — one-click export of chats as Markdown, HTML, PDF, JSON, and CSV from the web UI (#63)
29+
- **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)
30+
- **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)
31+
- **Desktop app packaging** — Windows `.exe` via PyInstaller + pywebview; no Python installation required on the target machine (#63)
32+
- **Type-safe models** with schema validation at SQLite read boundaries (#24, #30)
33+
- **CI matrix** (Linux / macOS / Windows) running pytest, mypy, and gitleaks (#13, #19, #44, #62)
34+
- **Python packaging infrastructure** (`pyproject.toml` with hatchling, bounded dependency pins, `requirements-lock.txt`, Dependabot) (#45, #47, #49, #53)
35+
- Optional exclusion rules for sensitive projects and chats (#1, #2)
36+
- Full-text search with workspace and log-type filters (#63)
37+
38+
### Fixed
39+
- Path traversal and symlink-escape protection on `/api/set-workspace` (#15, #22)
40+
- Disabled Werkzeug debug mode by default; opt-in via `--debug` / `FLASK_DEBUG=1` (#9, #20)
41+
- Sanitise Marked.js HTML output with DOMPurify (#11, #21)
42+
- Wrapped all production `sqlite3.connect()` calls in context managers (#17, #23)
43+
- Skip NULL bubble rows in workspace tabs loader (#50, #52)
44+
- Thread-unsafe `_workspace_path_override` race condition (#43, #54)
45+
- Normalise Windows-style paths on non-Windows hosts (#8)
46+
47+
[Unreleased]: https://github.com/cppalliance/cppa-cursor-browser/compare/v0.1.0...HEAD
48+
[0.1.0]: https://github.com/cppalliance/cppa-cursor-browser/releases/tag/v0.1.0

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,28 @@ The desktop app uses [pywebview](https://pywebview.flowrl.com/) to render the Fl
240240
- **Frontend:** Vanilla HTML/CSS/JS (no npm, no build step)
241241
- **PDF:** fpdf2
242242

243+
## Versioning
244+
245+
This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) (`MAJOR.MINOR.PATCH`).
246+
247+
**Pre-1.0 stability (current):** The project is at `0.x.y`. During this phase:
248+
249+
- **Minor version bumps (`0.x``0.x+1`)** may include breaking changes to the HTTP API, CLI flags, or exported file formats. Consumers of the `/api/*` endpoints or the `cursor-chat-export` CLI should review the changelog before upgrading.
250+
- **Patch version bumps (`0.x.y``0.x.y+1`)** are backward-compatible bug fixes only.
251+
252+
**What constitutes a breaking change:**
253+
254+
| Surface | Breaking examples |
255+
|---|---|
256+
| HTTP API | Removing or renaming an endpoint; changing the JSON schema of a response in a non-additive way |
257+
| CLI (`cursor-chat-export`) | Removing or renaming a flag; changing default output structure |
258+
| Export formats | Removing YAML frontmatter fields; changing the zip directory layout |
259+
| Python package | Removing a public symbol from an importable module |
260+
261+
Adding new optional fields to JSON responses, adding new CLI flags with sensible defaults, or adding new export-format sections are *not* considered breaking.
262+
263+
A complete history of changes is maintained in **[CHANGELOG.md](CHANGELOG.md)** following the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format.
264+
243265
## License
244266

245267
This project is licensed under the [Boost Software License 1.0](https://www.boost.org/LICENSE_1_0.txt).

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ include = [
7979
"launcher.py",
8080
"requirements.txt",
8181
"README.md",
82+
"CHANGELOG.md",
8283
"DEPLOYMENT.md",
8384
"LICENSE",
8485
"cursor-browser.spec",

0 commit comments

Comments
 (0)