Skip to content

Commit cebefce

Browse files
committed
fix: review comments
1 parent d9aa73a commit cebefce

4 files changed

Lines changed: 17 additions & 14 deletions

File tree

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ jobs:
2727
fail-fast: false
2828
matrix:
2929
os: [ubuntu-latest]
30-
python-version: ["3.11", "3.12", "3.13"]
30+
python-version: ["3.10", "3.11", "3.12", "3.13"]
3131
steps:
3232
# Pinned to immutable commit SHAs (not @v4 / @v5) so a compromised tag
3333
# cannot silently swap the underlying action code on this CI runner.

launcher.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@
55
directly in-process.
66
"""
77

8-
import webview
9-
108
from app import create_app
119

1210

1311
def main():
12+
try:
13+
import webview
14+
except ImportError:
15+
raise SystemExit(
16+
"pywebview is not installed. Install the [desktop] extra, e.g.\n"
17+
' pip install -e ".[desktop]"'
18+
) from None
19+
1420
app = create_app()
1521
webview.create_window(
1622
"Cursor Chat Browser",

pyproject.toml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ description = "Flask web application for browsing and exporting Cursor AI chat h
99
readme = "README.md"
1010
license = { file = "LICENSE" }
1111
authors = [{ name = "C++ Alliance", email = "admin@cppalliance.org" }]
12-
requires-python = ">=3.11"
12+
requires-python = ">=3.10"
1313

1414
# Runtime dependencies — bounded on both sides so CI resolves deterministically
1515
# and breaking major releases are caught at install time rather than at runtime.
@@ -18,9 +18,6 @@ requires-python = ">=3.11"
1818
dependencies = [
1919
"flask>=3.0,<4",
2020
"fpdf2>=2.7,<3",
21-
# fpdf2 depends on Pillow; declare a floor + cap so resolvers cannot pick
22-
# known-vulnerable Pillow releases while staying on Pillow 10.x.
23-
"pillow>=10.0.0,<11",
2421
]
2522

2623
[project.optional-dependencies]
@@ -63,6 +60,7 @@ include = [
6360
"launcher.py",
6461
]
6562

63+
# sdist includes tests + ancillary files; wheel is runtime-only.
6664
[tool.hatch.build.targets.sdist]
6765
include = [
6866
"api/",
@@ -90,4 +88,5 @@ no_strict_optional = true
9088
pretty = true
9189
# Exclude virtual-env and build artefact directories so that `mypy .` from the
9290
# repo root matches CI behaviour (CI runs in a clean runner without a local venv).
93-
exclude = ["venv/", "\\.venv/", "build/", "dist/"]
91+
# Anchored regexes — unanchored `venv/` would match any path segment containing "venv/".
92+
exclude = ["^venv/", "^\\.venv/", "^build/", "^dist/"]

requirements.txt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
# Backward-compatibility shim — pyproject.toml is the canonical source of
2-
# truth for dependencies. This file is retained so that
3-
# legacy workflows running `pip install -r requirements.txt` keep working,
4-
# but bounded version specifiers and the lock file live in pyproject.toml.
1+
# Backward-compatibility shim — mirrors [project.dependencies] in pyproject.toml.
2+
# Keep version specifiers in sync when runtime deps change.
53
#
64
# Prefer: pip install -e . (installs the package + runtime deps)
75
# pip install -e ".[dev]" (+ pytest and mypy)
86
# pip install -e ".[desktop]" (+ pywebview for the GUI launcher)
9-
flask>=3.0
10-
fpdf2>=2.7
7+
flask>=3.0,<4
8+
fpdf2>=2.7,<3
119
# pywebview is desktop-only — install with: pip install -e ".[desktop]"

0 commit comments

Comments
 (0)