Skip to content

feat(launcher): discover apps via per-app app.json manifests#17

Merged
Charliechen114514 merged 1 commit into
mainfrom
feat/app-discovery
Jun 30, 2026
Merged

feat(launcher): discover apps via per-app app.json manifests#17
Charliechen114514 merged 1 commit into
mainfrom
feat/app-discovery

Conversation

@Charliechen114514

Copy link
Copy Markdown
Member

Adds an "app package" discovery model so apps are plug-and-play: drop a self-contained /../apps// directory (executable + app.json + icon) and CFDesktop picks it up at startup, no recompile.

  • AppDiscoverer scans /../apps//app.json, parses each manifest, resolves icon/exec to absolute paths; skips malformed manifests with a warning.
  • loadAppsConfig fallback chain is now: discover -> apps.json -> defaultApps.
  • Calculator becomes the first manifest app: executable + app.json deployed together under /../apps/calculator/ (self-contained package).
  • defaultApps() drops the calculator entry (now discovered, not hardcoded).
  • Tests: app_discoverer_test covers parse, absolute paths, skip-bad, skip-missing, empty-icon.

Adds an "app package" discovery model so apps are plug-and-play: drop a
self-contained <bin>/../apps/<id>/ directory (executable + app.json + icon)
and CFDesktop picks it up at startup, no recompile.

- AppDiscoverer scans <bin>/../apps/<id>/app.json, parses each manifest,
  resolves icon/exec to absolute paths; skips malformed manifests with a
  warning.
- loadAppsConfig fallback chain is now: discover -> apps.json -> defaultApps.
- Calculator becomes the first manifest app: executable + app.json deployed
  together under <bin>/../apps/calculator/ (self-contained package).
- defaultApps() drops the calculator entry (now discovered, not hardcoded).
- Tests: app_discoverer_test covers parse, absolute paths, skip-bad,
  skip-missing, empty-icon.
@Charliechen114514 Charliechen114514 merged commit ac77f79 into main Jun 30, 2026
6 checks passed
@Charliechen114514 Charliechen114514 deleted the feat/app-discovery branch June 30, 2026 15:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant