Stop tracking generated Frame Home binaries

Remove generated payload files and the source stamp from the repository while
keeping the installer source.
Update the updater and documentation for the shared Studio and Frame Home releases.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
KevinandCopilot committed 2026-10-24 18:53:33 +02:00
1 parent 8d7fdfd305
commit 8e3bb2e1ea
10 files changed
+15 -45

No files matched your search

+4
View File
@@ -1,6 +1,10 @@
# build output
/build*/
/dist/
/frame/payload/bin/
/frame/payload/layer/libframe_home_layer.so
/frame/payload/layer/env_ps.spv
/frame/payload/SOURCE
studio/build*/
tools/*/build*/
# editor / OS clutter
+9 -8
View File
@@ -18,10 +18,9 @@ headset runs, and lets you edit, save and send them to the headset.
## Downloads
Every push builds everything. The newest build of `main` is always on the Releases page as **Latest build**; tagged
versions (`v1.0`, ...) get their own release. Builds of other branches are under Actions (open a run, then
Artifacts). Once installed, Frame Studio and Frame Home both update themselves from **Latest build**: Studio from its
top bar, Frame Home from the Environments panel on the headset.
Every push builds Frame Studio and its matching Frame Home payload. The **Latest build** release contains both Studio
packages and `FrameHome-installer.zip`; each `v*` version release contains both products too. Studio updates from its
top bar, and Frame Home updates from the Environments panel on the headset. Both use the same release channel.
| Computer | Frame Studio |
|---|---|
@@ -39,6 +38,8 @@ Studio needs a GPU with Vulkan 1.2: any recent NVIDIA, AMD or Intel driver on Wi
runs on Metal through MoltenVK, which comes inside the app. The 32-bit builds have at most 4 GB to work in, so the
very largest homes may not fit.
See [Installing Frame Home](docs/install-frame-home.md) for how to install the runtime on a Steam Frame.
## Highlights
**Frame Home (on the headset)**
@@ -75,7 +76,7 @@ very largest homes may not fit.
| [Performance](docs/performance.md) | Reaching 120 fps, checking it, fixing stutter |
| [Frame Studio guide](docs/studio-guide.md) | The Studio window, tools and panels |
| [Bundles](docs/bundles.md) | Several environments in one `.fbundle` |
| [Building from source](docs/building.md) | Building on each system, CI, the headset side |
| [Building from source](docs/building.md) | Building on each system, CI, and Frame Home payload builds |
| [Troubleshooting](docs/troubleshooting.md) | Symptoms and fixes, logs, the self-test |
## Building from source
@@ -87,8 +88,8 @@ Everything Studio needs is in `third_party/`; you need CMake 3.16+ and Ninja. In
| Windows (Visual Studio 2022 with C++) | `studio\build_windows.bat x64` (or `x86`, `arm64`) |
| Linux, macOS | `scripts/build-studio.sh <target>...` or `scripts/build-studio.sh all` |
The headset side is built on the Steam Frame; a ready-built copy is in `frame/payload/`. Full details, prerequisites
and the CI: [docs/building.md](docs/building.md).
Frame Home binaries are built in GitHub Actions and are not checked into `frame/payload/`. Full details, prerequisites
and CI: [docs/building.md](docs/building.md).
## Repository layout
@@ -97,7 +98,7 @@ and the CI: [docs/building.md](docs/building.md).
| `studio/` | Frame Studio: `studio.cpp` (the editor), `platform*.{h,cpp}` (Windows, Linux, macOS), `frame_pacer.h` |
| `src/` | Shared engine: renderer (`hsl_renderer`), scene loading and baking, `.fenv`, walkable area, Frame Home (`main.cpp`), the Environments panel (`switcher.cpp`), `fenv-tool` |
| `layer/` | The Vulkan layer inside SteamVR's compositor that shows Frame Home in place of its environment |
| `frame/` | The headset payload and the stand-alone installers |
| `frame/` | Frame Home installer source and stand-alone installer scripts |
| `scripts/`, `cmake/` | Build script and the llvm-mingw toolchain file |
| `tools/`, `tests_loco/` | Test and measuring tools, movement tests |
| `third_party/` | Vendored libraries (each with its own license) |
-1
View File
@@ -1 +0,0 @@
ed589d9db53c920be66e9334cc86e88e2893c2d410437d538477109cbf2fc02d
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-34
View File
@@ -1,34 +0,0 @@
#!/bin/sh
# The Steam Frame programs in frame/payload are built on the headset (arm64 SteamOS, its compositor's Vulkan driver)
# and committed; every Frame Studio download and the Frame Home installer ship them. frame/payload/SOURCE records the
# source they were built from, so Studio is never released beside an older headset build (Studio would save
# environments the headset can't open).
#
# scripts/frame-payload.sh stamp after copying freshly built programs into frame/payload
# scripts/frame-payload.sh check fails when the headset's source changed since (CI runs it before releasing)
set -eu
ROOT=$(cd "$(dirname "$0")/.." && pwd)
STAMP="$ROOT/frame/payload/SOURCE"
# What the headset programs are built from (studio/ is Studio's alone), as the files are now: committed or not.
source_hash() {
list=$(mktemp)
(cd "$ROOT" && git -c core.quotepath=off ls-files -- src third_party layer CMakeLists.txt > "$list" &&
git hash-object --stdin-paths < "$list" | paste -d ' ' - "$list" | sha256sum | cut -c1-64)
rm -f "$list"
}
case "${1:-}" in
stamp) source_hash > "$STAMP"
echo "frame/payload/SOURCE: $(cat "$STAMP")" ;;
check) want=$(source_hash)
have=$(cat "$STAMP" 2>/dev/null || true)
if [ "$want" != "$have" ]; then
echo "frame/payload is out of date: the headset's source changed since its programs were built." >&2
echo "Rebuild frame-home, frame-switcher and fenv-tool on the Frame, copy them into frame/payload/bin," >&2
echo "then run scripts/frame-payload.sh stamp (docs/building.md)." >&2
exit 1
fi
echo "frame/payload matches the source ($want)" ;;
*) sed -n '2,8p' "$0"; exit 2 ;;
esac
+2 -2
View File
@@ -708,8 +708,8 @@ DebugInfo readDebugInfo() {
}
// ── Updates (the Steam Frame only) ──
// Frame Home updates from GitHub. The release "latest" carries latest.json, whose "home" is a hash of the headset
// programs (frame-home, frame-switcher, fenv-tool and the compositor layer, worked out by CI from frame/payload). When
// Frame Home updates from GitHub. The shared "latest" release carries latest.json, whose "home" is a hash of the
// headset programs (frame-home, frame-switcher, fenv-tool and the compositor layer, worked out by CI). When
// it isn't the hash of what's installed here, the header offers Update Frame Home: that downloads
// FrameHome-installer.zip and runs its install.sh, which puts the new programs in place and restarts Frame Home and
// this panel. Checked a minute after the panel starts, then every 6 hours (30 minutes after a failed check).