feat: Add 'Rebels in the sky' as a proxied game#345
Conversation
Resolve conflicts from upstream's DoorGames -> Lateania rename and its lazy-load refactor, while preserving the Rebels door game: - primitives.rs: keep both Lateania (upstream) and Rebels Screen variants plus their tab labels; next/prev auto-merged correctly. - render.rs: Lateania => page 4 (upstream), Rebels => 0 (no sidebar slot); keep Rebels page title. - state.rs: adopt upstream's lazy Lateania entry (drop eager enter_lateania in set_screen), keep enter_rebels on reselect/switch and leave_rebels. - input.rs: keep the Rebels launcher block, take upstream's Lateania input handling and door_games_allows_global_help; drop now-unused door_games_allows_global_navigation. - ssh.rs: keep both the RenderSignal and arcade-preload imports.
|
| GitGuardian id | GitGuardian status | Secret | Commit | Filename | |
|---|---|---|---|---|---|
| 15149220 | Triggered | Generic Password | 090ced9 | late-core/src/test_utils.rs | View secret |
🛠 Guidelines to remediate hardcoded secrets
- Understand the implications of revoking this secret by investigating where it is used in your code.
- Replace and store your secret safely. Learn here the best practices.
- Revoke and rotate this secret.
- If possible, rewrite git history. Rewriting git history is not a trivial act. You might completely break other contributing developers' workflow and you risk accidentally deleting legitimate data.
To avoid such incidents in the future consider
- following these best practices for managing and storing secrets including API keys and other credentials
- install secret detection on pre-commit to catch secret before it leaves your machine and ease remediation.
🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request.
|
GOAT |
Summary
Adds Rebels in the Sky as a late.sh door game. late.sh opens an outbound SSH
connection to the standalone rebels server (
frittura.org:3788, configurable), runs the remote terminal stream through an embeddedvt100emulator, and renders it as a ratatui widget in its own page (tab7).We preserve the top bar so it looks like we're still in late.sh, because of this we need the vt100 emulator rather than just copy/pasting raw bytes into the buffer.
How it works
app/door/rebels/proxy.rs): a per-sessionrusshclient connects to the rebels server, requests a PTY + shell, and bridges bytes both ways.identity.rs): a stable per-account(username, Ed25519 key)is derived from the late.shuser_idwith blake3 and used for publickey auth, so the same account always maps to the same rebels save.render.rs): remote output feeds avt100::Parser, blitted into the widget each frame; the proxy reader wakes the session'sRenderSignalon new output for prompt repaints.Configuration
LATE_REBELS_ENABLED(default on),LATE_REBELS_HOST(frittura.org),LATE_REBELS_PORT(3788),LATE_REBELS_SECRET(seeds the derived identity).When disabled, the page shows "Currently unavailable", another option would be to not display the page at all but I thought that it would get messy if we add more pages later.
Dependencies & testing
vt100andblake3.vt100-to-Bufferblitter, mouse-offset clipping. Integration (tests/rebels_proxy.rs): stubrusshserver covering connect -> PTY -> shell -> output round-trip and disconnect-to-Launcher.