Add MasterSelects app #6

Merged
backmeupplz merged 3 commits from symphony/MYG-KANEO-1-masterselects into master 2026-05-02 23:03:59 +00:00
backmeupplz commented 2026-05-02 22:11:43 +00:00 (Migrated from github.com)

Summary

  • Add MasterSelects as an installable MyGround app with metadata, compose template, and SVG icon.
  • Serve the upstream Vite app from node:24-alpine, cloning and building Sportinger/MasterSelects on container startup.
  • Fix the restart/update path so git fetch and git reset run with git -C /opt/masterselects ... after the first clone.
  • Add registry coverage for the new app definition and update-path regression.

Validation

  • npm install in web/ - passed in initial pass; warning only because local Node is v23.9.0 while Vitest declares Node 20/22/24.
  • npm run build in web/ - passed in initial pass; generated ignored web/dist for Rust embed compilation.
  • cargo test registry::tests - passed, 21 tests, after rework.
  • cargo test masterselects_has_correct_metadata_and_compose - passed after rework.
  • cargo test apps_available_returns_all_registered - passed after rework.
  • env BIND_IP=127.0.0.1 EXIT_PORT=4173 docker compose -f apps/masterselects.yml config - passed after rework.
  • docker run --rm node:24-alpine ... git -C /tmp/masterselects fetch --depth 1 origin master && git -C /tmp/masterselects reset --hard origin/master - passed; verified the update commands work outside the repo working directory.
  • git diff --check - passed.
  • cargo fmt --check - attempted; failed on broad pre-existing formatting drift across unrelated files, so it is not used as the gate for this scoped rework.

Manual QA

Manual QA: not required for repository review. This change adds static app registry assets and a compose template; automated registry/API tests plus compose validation cover the changed surface. Optional runtime smoke can install MasterSelects in a MyGround instance and open it through HTTPS/Tailscale to confirm browser WebGPU availability.

## Summary - Add MasterSelects as an installable MyGround app with metadata, compose template, and SVG icon. - Serve the upstream Vite app from `node:24-alpine`, cloning and building `Sportinger/MasterSelects` on container startup. - Fix the restart/update path so `git fetch` and `git reset` run with `git -C /opt/masterselects ...` after the first clone. - Add registry coverage for the new app definition and update-path regression. ## Validation - `npm install` in `web/` - passed in initial pass; warning only because local Node is v23.9.0 while Vitest declares Node 20/22/24. - `npm run build` in `web/` - passed in initial pass; generated ignored `web/dist` for Rust embed compilation. - `cargo test registry::tests` - passed, 21 tests, after rework. - `cargo test masterselects_has_correct_metadata_and_compose` - passed after rework. - `cargo test apps_available_returns_all_registered` - passed after rework. - `env BIND_IP=127.0.0.1 EXIT_PORT=4173 docker compose -f apps/masterselects.yml config` - passed after rework. - `docker run --rm node:24-alpine ... git -C /tmp/masterselects fetch --depth 1 origin master && git -C /tmp/masterselects reset --hard origin/master` - passed; verified the update commands work outside the repo working directory. - `git diff --check` - passed. - `cargo fmt --check` - attempted; failed on broad pre-existing formatting drift across unrelated files, so it is not used as the gate for this scoped rework. ## Manual QA Manual QA: not required for repository review. This change adds static app registry assets and a compose template; automated registry/API tests plus compose validation cover the changed surface. Optional runtime smoke can install MasterSelects in a MyGround instance and open it through HTTPS/Tailscale to confirm browser WebGPU availability.
backmeupplz commented 2026-05-02 22:20:18 +00:00 (Migrated from github.com)

Review blocker: the restart/update path in apps/masterselects.yml runs git fetch and git reset from /opt, because working_dir is /opt and cd /opt/masterselects happens after the else block. On any restart after the first clone, /opt/masterselects/.git exists, the else branch runs, and git fetch fails with fatal: not a git repository. Please run the update commands with git -C /opt/masterselects ... or cd /opt/masterselects before the else-branch fetch/reset, then re-run the existing compose/test validation.

Review blocker: the restart/update path in `apps/masterselects.yml` runs `git fetch` and `git reset` from `/opt`, because `working_dir` is `/opt` and `cd /opt/masterselects` happens after the else block. On any restart after the first clone, `/opt/masterselects/.git` exists, the else branch runs, and `git fetch` fails with `fatal: not a git repository`. Please run the update commands with `git -C /opt/masterselects ...` or `cd /opt/masterselects` before the else-branch fetch/reset, then re-run the existing compose/test validation.
backmeupplz commented 2026-05-02 22:22:45 +00:00 (Migrated from github.com)

Addressed in cca0654: the update branch now uses git -C /opt/masterselects fetch ... and git -C /opt/masterselects reset ..., so restarts run against the cloned repo instead of /opt.

Validation rerun:

  • cargo test registry::tests
  • cargo test masterselects_has_correct_metadata_and_compose
  • cargo test apps_available_returns_all_registered
  • env BIND_IP=127.0.0.1 EXIT_PORT=4173 docker compose -f apps/masterselects.yml config
  • docker run --rm node:24-alpine ... git -C /tmp/masterselects fetch --depth 1 origin master && git -C /tmp/masterselects reset --hard origin/master
  • git diff --check
Addressed in `cca0654`: the update branch now uses `git -C /opt/masterselects fetch ...` and `git -C /opt/masterselects reset ...`, so restarts run against the cloned repo instead of `/opt`. Validation rerun: - `cargo test registry::tests` - `cargo test masterselects_has_correct_metadata_and_compose` - `cargo test apps_available_returns_all_registered` - `env BIND_IP=127.0.0.1 EXIT_PORT=4173 docker compose -f apps/masterselects.yml config` - `docker run --rm node:24-alpine ... git -C /tmp/masterselects fetch --depth 1 origin master && git -C /tmp/masterselects reset --hard origin/master` - `git diff --check`
backmeupplz commented 2026-05-02 23:03:50 +00:00 (Migrated from github.com)

Final OpenClaw review update:

  • Added 9e8b0bc to close the remaining acceptance gap: MasterSelects post-install notes now mention the browser window.aiTools surface and that Native Helper / /api/ai-tools are upstream add-ons outside this template.
  • Validation rerun:
    • cargo test masterselects_has_correct_metadata_and_compose
    • cargo test apps_available_returns_all_registered
    • env BIND_IP=127.0.0.1 EXIT_PORT=4173 docker compose -f apps/masterselects.yml config
    • git diff --check origin/master...HEAD
  • Manual QA: not required for merge; this is a static registry/template change and compose validation covers the runnable template shape.
Final OpenClaw review update: - Added `9e8b0bc` to close the remaining acceptance gap: MasterSelects post-install notes now mention the browser `window.aiTools` surface and that Native Helper / `/api/ai-tools` are upstream add-ons outside this template. - Validation rerun: - `cargo test masterselects_has_correct_metadata_and_compose` - `cargo test apps_available_returns_all_registered` - `env BIND_IP=127.0.0.1 EXIT_PORT=4173 docker compose -f apps/masterselects.yml config` - `git diff --check origin/master...HEAD` - Manual QA: not required for merge; this is a static registry/template change and compose validation covers the runnable template shape.
Sign in to join this conversation.
No description provided.