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
+62-1Lines changed: 62 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,9 +6,21 @@ Desktop and CLI tooling for ecological camera video: **MegaDetector** (default)
6
6
7
7
Development uses the **`main`** branch (and CI runs on pushes/PRs to `main`).
8
8
9
+
## Version history (why “3.0”?)
10
+
11
+
This codebase is released as **DeepMeerkat 3.0** and is the modern “**Meerkat 3**” line:
12
+
13
+
| Line | What it refers to |
14
+
|------|-------------------|
15
+
|**1.0**|**MotionMeerkat** — earlier motion-focused tooling in the same research lineage. |
16
+
|**2.0**|**DeepMeerkat** — the previous desktop/codebase generation, preserved as Git tag **`v2.0.0`** and branch **`v2.0`**. |
17
+
|**3.0**|**DeepMeerkat 3.0** (this repository) — MegaDetector-first PySide6 GUI and CLI, rewritten packaging and outputs. |
18
+
19
+
We **start numbering releases at 3.0** here so installers and PyPI stay aligned with that story (not with MotionMeerkat or legacy DeepMeerkat release tags).
20
+
9
21
## DeepMeerkat 2.0 (legacy)
10
22
11
-
The previous **2.x**line is preserved as Git tag **`v2.0.0`**and branch **`v2.0`** (last state before 3.0). Use those if you need the older codebase.
23
+
The **2.x**codebase is frozen at Git tag **`v2.0.0`**on branch **`v2.0`**. Use those only if you need the older application.
Set `DEEPMEERKAT_TEST_VIDEO` to a clip on your machine for manual checks (not used in CI).
45
57
58
+
## PyPI and GitHub releases (maintainers)
59
+
60
+
### 1. Version bump
61
+
62
+
- Set `version` in `pyproject.toml` (for example `3.0.0`).
63
+
- Commit on `main`.
64
+
65
+
### 2. Tag and push
66
+
67
+
Create an annotated tag (example for **3.0.0**):
68
+
69
+
```bash
70
+
git tag -a v3.0.0 -m "DeepMeerkat 3.0.0"
71
+
git push origin v3.0.0
72
+
```
73
+
74
+
Pushing `v*` triggers:
75
+
76
+
-**`.github/workflows/publish.yml`** — sdist/wheel to **Test PyPI** then **PyPI** (requires repository secrets `TEST_PYPI_TOKEN` and `PYPI_TOKEN`).
77
+
-**`.github/workflows/build_installers.yml`** — builds **GUI** PyInstaller bundles on **Linux, Windows, and macOS** and uploads them to the **GitHub Release** for that tag (uses `GITHUB_TOKEN`).
78
+
79
+
If installer jobs fail (timeouts, size limits, or missing system libs), fix the workflow or build locally (below) and attach assets by hand on the release page.
80
+
81
+
### 3. GitHub Release assets
82
+
83
+
After the tag build, the release **v3.0.0** should list downloadable files similar to:
84
+
85
+
-`DeepMeerkat-v3.0.0-Windows-x64.exe`
86
+
-`DeepMeerkat-v3.0.0-macOS` (unsigned binary; see below)
87
+
-`DeepMeerkat-v3.0.0-Linux-x64.tar.gz`
88
+
89
+
Names follow the staging step in `build_installers.yml`.
90
+
91
+
### 4. Manual installer build (optional)
92
+
93
+
From the repository root, with the same Python you use for development:
Outputs live under **`dist/`** (`deepmeerkat-gui` or `deepmeerkat-gui.exe`). A **CLI** one-file build is available via `packaging/deepmeerkat-cli.spec` (also large, includes PyTorch).
102
+
103
+
**macOS distribution:** CI produces a raw binary, not a signed **`.app`** or **`.dmg`**. For public distribution outside the lab, plan for **codesigning** and optionally **notarization** (Apple Developer Program), or ship via **pip** / conda instead.
104
+
105
+
**Linux:** The tarball contains a single executable built on a recent glibc (GitHub’s `ubuntu-latest`). Very old distributions may need a build on that target or a **pip** install.
106
+
46
107
## License
47
108
48
109
See `LICENSE`. Third-party models (MegaDetector) have their own terms; see the MegaDetector project documentation.
0 commit comments