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
+34-2Lines changed: 34 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -61,6 +61,36 @@ 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). The lock is produced on **Linux** (same as CI and `update-lock.yml`); `pip-compile` on Windows may add platform-only pins such as `colorama` — do not commit those.
75
+
76
+
Regenerate after editing bounds (prefer **Actions → Update dependency lock file → Run workflow**, or on Linux / WSL):
77
+
78
+
```bash
79
+
pip install pip-tools
80
+
pip-compile requirements.txt \
81
+
--output-file requirements-lock.txt \
82
+
--no-header \
83
+
--annotation-style=line \
84
+
--allow-unsafe
85
+
```
86
+
87
+
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`.
88
+
89
+
**Automated updates:**
90
+
91
+
-**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.
92
+
-**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`.
93
+
64
94
## Quick Start (Web UI)
65
95
66
96
```bash
@@ -73,7 +103,7 @@ The Werkzeug debugger is **off by default** and must be opted in explicitly via
73
103
74
104
## Tests
75
105
76
-
Run the full suite from the repository root (install `requirements.txt` first):
106
+
Run the full suite from the repository root (install `requirements-lock.txt` or `requirements.txt` first):
77
107
78
108
```bash
79
109
python -m unittest discover tests -v
@@ -147,7 +177,9 @@ Cursor CLI agent sessions are read from `~/.cursor/chats/` (the default path use
0 commit comments