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
RUN test -f /artifacts/TrashSorterPro/TrashSorterPro.exe \
16
+
&& test -f /artifacts/TrashSorterPro/desktop-exe.sha256 \
17
+
&& test -f /artifacts/TrashSorterPro/desktop-release-manifest.json
18
+
19
+
CMD ["sh", "-c", "printf '%s\n' 'Trash Sorter Pro desktop EXE artifact' 'Extract /artifacts/TrashSorterPro from this image on Windows.' 'Verify /artifacts/TrashSorterPro/desktop-exe.sha256 before use.'"]
- includes PySide6 desktop GUI, local camera/UART/audio behavior, assets, config sample, OpenCV runtime, and runtime models as required by `scripts/build_exe.py`;
- optional `latest` tags only after SHA tags pass verification.
19
-
3. Optional Docker Hub artifact images:
20
-
-`docker.io/<namespace>/trash-sorter-models:<manifest-sha>` if models need their own artifact;
21
-
-`docker.io/<namespace>/trash-sorter-dataset-archive:<YYYYMMDD>` only if the owner explicitly wants a large non-runtime archive on Docker Hub after privacy review.
22
-
4. Vercel/Supabase keepalive:
23
+
4. Optional Docker Hub artifact images:
24
+
-`docker.io/nguyenson1710/trash-sorter-models:<manifest-sha>` if models need their own artifact;
25
+
-`docker.io/nguyenson1710/trash-sorter-dataset-archive:<YYYYMMDD>` only if the owner explicitly wants a large non-runtime archive on Docker Hub after privacy review.
26
+
5. Vercel/Supabase keepalive:
23
27
- Vercel Cron calls a protected Next.js route;
24
28
- the route performs one tiny Supabase/Postgres read or single-row upsert;
25
29
- this creates real backend/database activity instead of merely pinging a static page.
@@ -74,6 +78,7 @@ Steps:
74
78
-`Test-Path web\node_modules`.
75
79
7. Confirm Docker Hub namespace:
76
80
- use `docker info | Select-String Username`;
81
+
- target namespace is `nguyenson1710`;
77
82
- if empty or push fails, owner must run `docker login` or create/provide the right repository namespace.
78
83
79
84
Exit criteria:
@@ -128,6 +133,7 @@ Default images:
128
133
129
134
| Image | Purpose | Included | Excluded |
130
135
| --- | --- | --- | --- |
136
+
|`trash-sorter-desktop-exe`| Windows EXE artifact |`dist/TrashSorterPro`, checksum, release manifest |`.env*`, local DB, logs, user config, caches |
131
137
|`trash-sorter-web`| Next.js dashboard | standalone Next build, public assets |`.env*`, host `node_modules`, local caches |
Reason: Supabase Free pausing is based on low activity over a 7-day period, and Vercel Hobby cron timing can drift. Exactly weekly can be close to the edge. If the owner insists on exactly one request per week, add a stale-heartbeat warning when last success is older than 5.5 days.
238
+
Decision: use the safer twice-weekly schedule (`0 3 * * 1,4`). Reason: Supabase Free pausing is based on low activity over a 7-day period, and Vercel Hobby cron timing can drift. Exactly weekly can be close to the edge.
226
239
227
240
Route contract:
228
241
@@ -276,6 +289,9 @@ Verification checklist:
276
289
- web root 200;
277
290
- model checksum inside agent.
278
291
3. Docker Hub:
292
+
- pull desktop EXE SHA tag;
293
+
- extract `/artifacts/TrashSorterPro`;
294
+
- run `sha256sum -c desktop-exe.sha256`;
279
295
- pull web SHA tag;
280
296
- pull agent SHA tag;
281
297
- inspect digests;
@@ -304,11 +320,9 @@ Exit criteria:
304
320
305
321
## 4. Known blockers before implementation
306
322
307
-
- Docker Hub push already failed once with `insufficient_scope`. Need confirmed Docker Hub login, namespace, and repositories.
308
-
- Current `python` launcher reports 3.14, while the project requires `<3.13`. Need uv-managed Python 3.12 or another compatible interpreter for desktop build.
309
-
- Exact keepalive cadence needs owner decision:
310
-
- exact weekly per request;
311
-
- or safer twice-weekly to avoid the Supabase 7-day inactivity edge.
323
+
- Docker Hub push previously failed once with `insufficient_scope` under a different namespace. Current target namespace is `nguyenson1710`; push still requires Docker Desktop login with rights to that namespace.
324
+
- Use uv-managed Python 3.12 because `pyproject.toml` requires `<3.13`.
325
+
- Keepalive cadence is twice weekly to avoid the Supabase 7-day inactivity edge.
312
326
- Manual hardware acceptance needs the Windows machine, camera, COM/UART, and laptop speaker available.
313
327
314
328
## 5. Source notes
@@ -319,6 +333,5 @@ Exit criteria:
319
333
320
334
## 6. Unresolved questions
321
335
322
-
- Docker Hub namespace/repositories: use `jasontm17` or another org?
323
-
- Keepalive cadence: exactly weekly, or safer twice-weekly?
324
-
- Should Docker Hub hold only runtime images, or also a large non-runtime dataset/archive image?
336
+
- None for the desktop EXE artifact image.
337
+
- Runtime web/agent image push, keepalive implementation, and large dataset/model archive images remain separate release slices unless explicitly included in the current implementation run.
0 commit comments