- Frametanium is in its own list (installer mode): updating downloads the
release bundle and runs install.sh, which now installs the headset app and
its tile too and, when the service runs it, restarts the service from a
timer of its own a few seconds later
- release.yml builds the headset app on an ARM64 runner and publishes
frametanium-steam-frame-arm64.tar.gz (tools/bundle.sh); deploy.sh uses the
same bundle and install.sh
- Built-in ports' library art is fetched at install (GitHub card + the
project's icon) instead of shipping box art
- Built-in Banjo-Kazooie (Lighthouse), installing over the Banjo_Kazooie
tile; a repo the user added before it became built-in isn't listed twice
- Frametanium can't remove itself
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHDaz86aayqMULHsjByEmT
Avoids confusion with the other Steam Frame project called FramePort. New service
frametanium.service, folders ~/.config/frametanium and ~/.local/share/frametanium
(service code in its service/ subfolder), headset app Frametanium. install.sh moves an
existing Port Manager install's settings and installed versions over and stops the old
service. Library art regenerated by the new tools/make_art.py.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHDaz86aayqMULHsjByEmT
Apps can now be added by repo (headset on-screen keyboard, pasted link, suggestions or the web page). The service
picks the ARM64 Linux download, unpacks zips/tarballs/AppImages/single programs, and either adds the app to the
Steam library with a generated run.sh and GitHub art, or runs the project's own install.sh. Adds update all,
per-app pre-release setting, remove (with uninstaller), and an edit panel on the web page.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHDaz86aayqMULHsjByEmT
manager.py is a standard-library service on the Frame (port 8643). It lists
each catalog port's releases, downloads the chosen asset (zip, or an
AppImage it unpacks with --appimage-extract and gives a launcher), stages
it next to ~/devkit-game/<gameid> and swaps it in, keeping ROMs placed next
to run.sh and the previous install for rollback. It refuses while the game
runs, fixes executable bits, registers the shortcut with Steam and adds
library art. A token in the settings unlocks private repos.
app/ is the controller-driven headset front end (C + SDL2, talks to the
service over loopback with tab-separated replies); page.html is the
browser one. deploy.sh installs both over SSH.
Tested on the laptop against the real releases: install, version switch,
ROM carry-over, rollback, the running-game guard, the AppImage path (under
qemu), and both front ends.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VHDaz86aayqMULHsjByEmT