Repository navigation
cyberpunkunicorn-os: boot hello, setup and scans over the cable, CI releases - #10
Merged
Merged
Conversation
…the cable Firmware half of plan phases 0, 3 and 5: - @evt hello at the end of boot; system.caps lists every command; system.time sets the clock from the computer; system.status and the hello carry the git commit build.sh stamps (FW_COMMIT). - frequency.config / provision / unprovision set the board up as a Space's scanner over USB. The secret never comes back, and patch 0014 no longer echoes rpc arguments to the serial log. - With no Wi-Fi and a computer on the cable, a scan is signed on the board (HMAC-SHA256 keyed by sha256(secret), the hash the server stores) and forwarded by the computer (frequency.scan_relay / frequency.relay_reply), so the secret never leaves the board. - rpc frequency.scan now really queues when offline; sensors.read no longer ends its session twice. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AycPrTRVXqSDZhb2NNfyG6
Plan Phase 6, firmware side: build.sh writes build/manifest.json (version, commit, app.bin size and sha256, offset 0x10000) for the website's updater. A path-filtered workflow builds every change on Linux, gates app.bin on the app partition size, and a cu5k-v<version> tag publishes a release with app.bin, full.bin and the manifest. build.sh's in-place sed now works on GNU sed as well as macOS. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AycPrTRVXqSDZhb2NNfyG6
# Conflicts: # cyberpunkunicorn-os/apps/remote/PROTOCOL.md
…formio The lock's mkdir failed without its parent, so a fresh runner waited forever. CI hit its 60-minute timeout on that. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AycPrTRVXqSDZhb2NNfyG6
hellofrequencylab
marked this pull request as ready for review
October 20, 2026 22:12
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Firmware half of the phased plan's Phases 0, 3, 5 and 6. The website side goes to frequency-web separately.
What changes
@evt hello {proto, os, fw, commit, board}at the end of boot;system.capslists every registered command;system.time {epoch}sets the clock from the computer;build.shstamps the git commit (FW_COMMIT), whichsystem.statusand the hello reportfrequency.config/frequency.provision {device_id, secret, base?}/frequency.unprovision(newapps/frequency/provision.cpp). The secret is never sent back. Patch 0014 now echoesCOMMAND: rpcinstead of the whole line, so passwords and secrets stay out of the serial logrpcover USB in the last 30 s, and its clock set, the board signs a card tap (HMAC-SHA256 keyed by sha256(secret), the hash frequency-web already stores) and sends it as@evt frequency.scan_relay. The computer posts the exact body withX-Frequency-Device-Id+X-Frequency-Signature, then answers withfrequency.relay_reply. The secret never leaves the board.rpc frequency.scanreturns the signed scan in its reply insteadbuild.shwritesbuild/manifest.json(version, commit, app.bin size and sha256, offset 0x10000). New path-filtered workflow.github/workflows/cyberpunkunicorn-os.ymlbuilds on Linux and fails if app.bin outgrows the 0x3C0000 app partition. Acu5k-v<OS_VERSION>tag publishes a release with app.bin, full.bin and the manifest.build.sh's in-placesednow works on GNU sed tooFixes found along the way:
rpc frequency.scansaid "queued" when offline but never queued the scan, andsensors.readended its session twice.The contract is in
apps/remote/PROTOCOL.md, with new sections "Frequency tags", "Setup over the cable", "Scans through the cable",system.caps,system.timeand thehelloevent.BACKEND.mdandCLAUDE.mdare updated to match.Verified
system.caps,frequency.provision, then a cable scan once the website accepts the signature headers.Order
Merge after #9. Both touch
apps/remote/app_handlers.cpp: this PR changes thefrequency.scanhandler, not the LED lines that #9 removes.🤖 Generated with Claude Code
https://claude.ai/code/session_01AycPrTRVXqSDZhb2NNfyG6