Skip to content

feat: build community apps as FPApps - #31

Merged
ArthurGibert merged 2 commits into
ATOVproject:mainfrom
thorinside:feat/fpapp-build-workflow
Sep 12, 2026
Merged

ArthurGibert merged 2 commits into
ATOVproject:mainfrom
thorinside:feat/fpapp-build-workflow

Conversation

@thorinside

@thorinside thorinside commented Aug 29, 2026 •

Copy link
Copy Markdown
Contributor

Why this exists

Community apps are Rust apps built on the same App<N> interface as the apps
inside Faderpunk firmware. Until now, trying one meant building and flashing a
different complete firmware image.

This PR adds the community side of a simpler workflow: one command builds each
catalogued app as an installable .fpapp file. A player can then install that
single app from the normal Apps page without replacing the firmware.

What changes

  • make fpapps discovers every entry in apps-catalog.json and builds it.
  • Packages are written to build/fpapps/ and are deliberately ignored by Git.
  • FADERPUNK_DIR selects the firmware checkout to build against when the two
    repositories are not next to each other.
  • FIRMWARE_REVISION or FIRMWARE_ABI can pin compatibility explicitly for a
    release or automated build.
  • The README and contributor guide explain building, installing, testing, and
    submitting apps in plain language.

The important rule is simple: an FPApp is compiled for one exact firmware ABI.
After updating Faderpunk firmware, rebuild the packages. This strict match lets
community code use the real firmware services without pretending that two
different memory layouts are compatible.

What players see

Installed community apps appear in the normal app catalogue, with the same
settings and manual locations as built-in apps:

Sift in the normal Apps catalogue

The four Installed Apps slots

Verification

  • Built this branch's Heat Pump and Grooves packages against Faderpunk commit 60523faa043c02d388afe991d251442164f0f71a.
  • Built the combined catalogue containing Heat Pump, Grooves, and Sift with the same command and firmware revision.
  • Verified all three final package headers, checksums, native entry points, and firmware fingerprints with the fpapp verify command.
  • Heat Pump, Grooves, and Sift were installed and exercised on real Faderpunk hardware during development.

Dependency

Package building and installation require the companion native FPApp runtime in
ATOVproject/faderpunk#666.
Its small review-gate prerequisite is
ATOVproject/faderpunk#665.

thorinside and others added 2 commits September 11, 2026 13:42
Add one documented command that discovers every catalogued community app and builds installable .fpapp packages against an explicit Faderpunk checkout.\n\nKeep generated packages out of version control, explain the firmware compatibility rule, and show players how to install packages from the existing Apps page without replacing their firmware.
Two README claims describe the old revision-matching compatibility
model rather than the abi_major/abi_minor contract that replaced it
(ATOVproject/faderpunk#666): that a package is matched to a specific
firmware revision, and that it must be rebuilt after every firmware
update. Neither is true anymore.

Also drops the hardcoded app list ('Heat Pump, Grooves, and Sift'),
which was already stale — the catalogue holds far more than three
apps — in favor of pointing at apps-catalog.json, so the README
doesn't need editing per submission.

Makefile: fail with a clear message when FADERPUNK_DIR isn't a
Faderpunk checkout, instead of surfacing as fpapp's 'expected 40 hex
digits' from an empty FIRMWARE_REVISION.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@ArthurGibert
ArthurGibert force-pushed the feat/fpapp-build-workflow branch from 85258e5 to 651ee04 Compare September 11, 2026 11:44
@ArthurGibert
ArthurGibert merged commit 55ec337 into ATOVproject:main Sep 12, 2026
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.

2 participants