Skip to content

feat(3ds): deploy the console binary over the dev connection - #25

Merged
doodlewind merged 3 commits into
mainfrom
feat/3ds-deploy
Oct 1, 2026
Merged

doodlewind merged 3 commits into
mainfrom
feat/3ds-deploy

Conversation

@doodlewind

@doodlewind doodlewind commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

bun run deploy replaces the ftpd round trip for console binaries: it builds the .3dsx, the running shell writes it to sdmc:/3ds/pocketshell-main.3dsx, and the console restarts into it through the Homebrew Launcher's loader, running the guest the new file embeds. ftpd is needed once, to pair.

bun run push   --host <ip>        # guest change: hot push (~20 s), persists on the card
bun run deploy --host <ip>        # native change, or leave this build on the card (~19 s incl. build)
bun run deploy --ftp --host <ip>  # once, with ftpd open, for a Runtime older than pocketjs#504

vendor/pocketjs moves to the squash commit of pocket-nexus/pocketjs#504 before this merges (a squash-merge orphans the PR-branch commit).

Validation

Old 3DS at 192.168.8.159 (Luma3DS 13.0.2), after one bootstrap copy through ftpd:

  • bun run deploy ×4: staged the running .3dsx (2,829,836 bytes, 11.6–12.7 s on the wire), restarted without input, returned running the embedded guest each time; a deploy over a newer push (guest A pushed, .3dsx embedding B) ran B.
  • bun run check — asset review, typecheck, all shells (3DS 40, ipod 72, desktop 59/4/3/6/66).
  • bun run goldens — 24/24 byte-identical against the new runtime (Azahar 2125.1.2), re-run after the review round.
  • After the review round: an upgrade deploy, a clean deploy, and push A + redeploy (the tool pushes the embedded guest) all on the console.

The console is left on main's guest 654785b8e2e1f1c9, installed by deploy.

🤖 Generated with Claude Code

doodlewind and others added 3 commits October 1, 2026 08:03
`bun run deploy` builds the .3dsx, the running shell writes it to
sdmc:/3ds/pocketshell-main.3dsx and the console restarts into it through
the Homebrew Launcher's loader, running the guest the new file embeds.
ftpd is now needed once, to pair; `deploy --ftp --host <ip>` copies one
binary through ftpd for a Runtime older than this.

The PocketJS pin moves to pocket-nexus/pocketjs#504, which adds .3dsx
install and launch to the 3DS dev connection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@doodlewind
doodlewind marked this pull request as ready for review October 1, 2026 00:46
@doodlewind
doodlewind merged commit 9470d21 into main Oct 1, 2026
3 checks passed
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