Add install.sh / run.sh / bundled icon; fully pin requirements

- install.sh: one-time Linux Mint setup (apt, .venv, requirements, .desktop
  entry with absolute paths). Re-runnable.
- run.sh: launches the app from .venv (called by the menu entry).
- icon.png: bundled 256px red-cross launcher/window icon; app prefers it over
  the runtime-drawn fallback (data/icon.png).
- requirements.txt: fully pinned incl. transitive deps, tested on Python 3.12;
  numpy held at 2.2.6 so it installs on Python 3.10 too.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-07 22:16:52 +02:00
parent 1bed723363
commit 08232bda9b
10 changed files with 173 additions and 129 deletions
+13 -18
View File
@@ -127,20 +127,14 @@ example file.
Gives you history, a rollback path, and a clean way to push updates to the
laptop (`git pull`).
## 5. Packaging & distribution 🟡
## 5. Packaging & distribution 🟡 — mostly done
Today install is: `apt install python3-tk`, create a venv, `pip install`. That's
a one-time terminal session, which is acceptable but fragile (loose version
pins mean a future `pip install` could pull an incompatible pandas/folium).
**Suggested changes**
- Pin all four dependencies to exact versions and regenerate deliberately.
- Ship the `run.sh` + `.desktop` launcher from [setup.md](setup.md) in the repo.
- Optional: build a [PyInstaller](https://pyinstaller.org/) one-file bundle on a
matching Linux box. It bundles Python, Tk, and all deps, so install becomes
"copy one file + double-click" with no apt/venv step. Trade-off: you build it,
and rebuild on dependency updates.
-`requirements.txt` fully pinned (direct + transitive), tested on 3.12.
-`run.sh` + `install.sh` (generates the `.desktop` entry) shipped in the repo.
- ✅ Bundled `icon.png`.
- ⬜ Optional: a [PyInstaller](https://pyinstaller.org/) one-file bundle would
drop the apt/venv step entirely, at the cost of building per release. Not
needed while `install.sh` works.
## 6. Diagnostics / logging 🟡 — ✅ done
@@ -223,8 +217,9 @@ Open follow-ups: no rollback if a pushed update is broken (mitigated by
## Suggested order of remaining work
1. Initial git commit (item 4), then decide on committing `orte.csv`.
2. **Set up the git remote** the updater pulls from, and pin all deps (item 5).
3. `run.sh` + `.desktop` launcher in the repo (item 5).
4. Stable `id` column (item 7 of the first review).
5. Formalize tests (item 10); offline map (item 9) only if offline use becomes real.
1. Deploy to the laptop: `git clone` + `./install.sh` (see [setup.md](setup.md)).
2. Stable `id` column (item 7 of the first review).
3. Formalize tests (item 10) — a non-GUI `tests/` suite already exists in
spirit (dev smoke scripts); move it into the repo.
4. Offline map (item 9) only if offline use becomes real.
5. Optional PyInstaller bundle (item 5).