nose-pluto/README.md
2025-10-01 22:19:52 -07:00

99 lines
2.0 KiB
Markdown

# NOSE:pluto
## Installation
1. Make a fresh RPi image with a "nose" user.
2. Clone this repo
3. From the root of this repo, run:
bun remote:install`
4. When it's done (it'll reboot) visit:
http://nose-pluto.local
And to make sure DNS is working:
http://ping.nose-pluto.local/
5. Have fun!
## Local Dev
Running the server will create `~/nose` for you to play with.
bun install
bun dev
open localhost:3000
## Production Dev
Make sure you bundle the JS:
bun run bundle
If you want to test (or run) production with DNS features, use `NO_DNS`:
env NO_DNS=1 NODE_ENV=production bun start
You can also use the package commands:
# run without DNS
bun prod-nodns
# run normally
bun prod
## Commands
Commands can return one of these types:
- `string`
- `{ error: string }`
- `{ html: string }`
- `{ text: string }`
They can also `throw` to display an error.
Additionally, you can return JS that gets immediately run in the browser using `script:`:
- `{ html: string, script: string }`
- `{ text: string, script: string }`
- `{ script: string }`
## Fonts
Use this to examine what's inside the C64 .woff2 font file in public/vendor:
https://wakamaifondue.com/
## Pluto Goals: Phase 1
- [x] Hosts valtown-style Bun apps (for your home network)
- [x] Provides a NOSE terminal/shell GUI
- [x] Runs one-shot TypeScript commands (via NOSE terminal)
- [x] Has a 960x540 (16:9) virtual screen size that scales to the actual size of the display
- [x] Runs on a Raspberry Pi 5
## Pluto Goals: Phase 2
- [x] public tunnel for your NOSE webapps
- [x] public tunnel lives through reboots
- [ ] tunnel to the terminal
- [x] remember your "mode"
- [ ] `nose` CLI
- [ ] status bar on terminal UX
- [x] "project"-based rehaul
- [x] self updating NOSE server
- [x] `pub/` static hosting in webapps
- [x] upload files to projects
- [ ] game/bin/www cartridges
- [-] pico8-style games
- [x] init/update/draw
- [x] simple drawing api
- [x] gamepad support
- [ ] sounds
- [ ] maps
- [ ] etc