You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+32-2Lines changed: 32 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,6 +61,34 @@ source venv/bin/activate
61
61
pip install -r requirements.txt
62
62
```
63
63
64
+
For reproducible installs (same versions as CI), use the pinned lock file:
65
+
66
+
```bash
67
+
pip install -r requirements-lock.txt
68
+
```
69
+
70
+
### Dependency bounds and lock file
71
+
72
+
Runtime version **bounds** live in `pyproject.toml` under `[project.dependencies]` (`flask`, `fpdf2`, `pillow`, etc.). `requirements.txt` mirrors those specifiers for backward compatibility — keep them identical when you change deps.
73
+
74
+
**CI** installs from `requirements-lock.txt`, which pins exact versions (including transitive packages). Regenerate the lock after editing bounds:
75
+
76
+
```bash
77
+
pip install pip-tools
78
+
pip-compile requirements.txt \
79
+
--output-file requirements-lock.txt \
80
+
--no-header \
81
+
--annotation-style=line \
82
+
--allow-unsafe
83
+
```
84
+
85
+
Then restore the comment header at the top of `requirements-lock.txt` (see the existing file) and commit both `requirements.txt` / `pyproject.toml` and `requirements-lock.txt`.
86
+
87
+
**Automated updates:**
88
+
89
+
-**Dependabot** (`.github/dependabot.yml`) — weekly PRs for `pip` and `github-actions` when newer versions fit the declared bounds. Merging a Dependabot **pip** PR does **not** refresh the lock file; run the lock workflow or `pip-compile` locally afterward.
90
+
-**Update dependency lock file** (`.github/workflows/update-lock.yml`) — scheduled Mondays 08:00 UTC (and manual **Actions → Run workflow**) runs `pip-compile --upgrade` and opens a PR with an updated `requirements-lock.txt`.
91
+
64
92
## Quick Start (Web UI)
65
93
66
94
```bash
@@ -73,7 +101,7 @@ The Werkzeug debugger is **off by default** and must be opted in explicitly via
73
101
74
102
## Tests
75
103
76
-
Run the full suite from the repository root (install `requirements.txt` first):
104
+
Run the full suite from the repository root (install `requirements-lock.txt` or `requirements.txt` first):
77
105
78
106
```bash
79
107
python -m unittest discover tests -v
@@ -147,7 +175,9 @@ Cursor CLI agent sessions are read from `~/.cursor/chats/` (the default path use
0 commit comments