Skip to content

Commit 3bd7ce0

Browse files
authored
docs: add CHANGELOG.md and versioning policy (closes #74) (#85)
* feat: initial implement of changelog and versioning policy * removed: yet to be released v0.1.0 * docs: fix CHANGELOG issue refs for PDF tests and API decoupling #82 is PR for PDF export tests (issue #72), not the _-prefix rename. Reference issue #73 for decoupling API handlers from service internals.
1 parent 06fa959 commit 3bd7ce0

3 files changed

Lines changed: 44 additions & 4 deletions

File tree

CHANGELOG.md

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

README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -242,14 +242,12 @@ The desktop app uses [pywebview](https://pywebview.flowrl.com/) to render the Fl
242242

243243
## Versioning
244244

245-
> **Merge note:** The full policy and `CHANGELOG.md` ship in [PR #85](https://github.com/cppalliance/cppa-cursor-browser/pull/85) (#74). Land that PR with or before this one to avoid duplicate or dead links.
246-
247245
This project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html) (`MAJOR.MINOR.PATCH`).
248246

249247
**Pre-1.0 stability (current):** The project is at `0.x.y`. During this phase:
250248

251249
- **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.
252-
- **Patch version bumps (`0.x.y``0.x.y+1`)** are backward-compatible bug fixes only. Critical security fixes may break compatibility at any version with appropriate changelog notation.
250+
- **Patch version bumps (`0.x.y``0.x.y+1`)** are backward-compatible bug fixes only.
253251

254252
**What constitutes a breaking change:**
255253

@@ -263,7 +261,7 @@ Internal Python modules are not a semver-governed library API for external impor
263261

264262
Adding new optional fields to JSON responses, adding new CLI flags with sensible defaults, or adding new export-format sections are *not* considered breaking.
265263

266-
Notable changes will be documented in **[CHANGELOG.md](CHANGELOG.md)** following the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format (see #74 / PR #85).
264+
Notable changes will be documented in **[CHANGELOG.md](CHANGELOG.md)** following the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) format.
267265

268266
When an API surface is scheduled for removal, follow the process in **[docs/API_DEPRECATION.md](docs/API_DEPRECATION.md)** (response headers, changelog entries, minimum notice period).
269267

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ include = [
8080
"requirements.txt",
8181
"README.md",
8282
"docs/",
83+
"CHANGELOG.md",
8384
"DEPLOYMENT.md",
8485
"LICENSE",
8586
"cursor-browser.spec",

0 commit comments

Comments
 (0)