Repository navigation
Releases: joelburton/flutterbug
Releases · joelburton/flutterbug
Release list
v0.98
Game info card
- Story card now appears even when IFDB lookup fails. Previously the card on the index page was hidden if flutterbug couldn't find the game in IFDB. It now always shows when `--story` is set, falling back to the story filename when title/author/cover art aren't available.
Developer / packaging
- Startup warning for missing browser assets. If `play.bundle.js` or the AsyncGlk CSS are absent from the static directory, flutterbug now logs a clear error at boot rather than silently hanging at the loading screen.
- Browser bundle is now checked in. `play.bundle.js` and `asyncglk-css/` are included in the release so `pip install` users don't need Node or npm.
- New `make prerelease` target rebuilds the bundle from the latest AsyncGlk before a release.
- AsyncGlk dependency switched from a local sibling working copy to `github:curiousdannii/asyncglk`, so the build works from a clean checkout.
v0.97
Major change
- Switched from Plotkin's GlkOte to AsyncGlk as the in-browser game client. Mostly invisible if you're playing, but it's the foundation the rest of this release builds on.
CLI changes
--tunnelnow takes a tunnel system name:--tunnel lhr(localhost.run) or--tunnel cf(Cloudflare). The old standalone--tunnel/--cloudflareflags are gone.- New
--transcript PATH(-T) and--recording PATH(-R) — server-side game logging.--transcriptwrites a full transcript with player commands inlined (and player names in multiplayer);--recordingwrites a bare REPLAY-ready command list. Both flush after every write socatshows live state. Works around the emglken bug where in-game SCRIPT/RECORDING only flush on QUIT. - Short options added for most flags.
Themes
- New "Nerd" — green-on-black retro CRT theme.
- New "Redrum" — a dark red theme.
- Light and dark base palettes are now selectable as plain themes for users who want minimal styling.
UI polish
- "Use large status bar" toggle in the sidebar — 1.5× grid font, per-client, persisted locally.
- Sidebar floats over the gameport on narrow viewports (with a corner toggle button) instead of carving screen space out from below.
- Tab cycles between chat and game input.
v0.96
What's new
- Tunnel reliability: the
--tunnelflow now polls authoritative DNS (via dnspython, bypassing the OS stub resolver) before opening the browser, so Safari/Firefox no longer cache an early NXDOMAIN. On Linux, loopback stub resolvers (e.g. systemd-resolved) are skipped in favor of1.1.1.1/8.8.8.8— this also makes the lookup safe from a poisoned local stub. A 3-second pre-check delay was added to give the tunnel record time to land. - localhost.run warning:
--tunnel(which uses localhost.run) now prints a startup warning recommending--cloudflareif the tunnel misbehaves, since localhost.run has been flaky. - The "no
--secretprovided" notice is now INFO-level instead of WARNING.
Install / upgrade
The easiest path on Windows is the flutterbug-windows.zip linked below.
For everyone else, pin emglken to 0.6.0 (later versions have a Windows bug that prevents launch):
npm install -g emglken@0.6.0
pip install --user --upgrade git+https://github.com/joelburton/flutterbug.git@v0.96Full Changelog: v0.95...v0.96
v0.95
New
- Windows quick-start zip:
flutterbug-windows.zipis now attached to releases and contains four ready-to-run batch files — install, solo, tunnel, cloudflare — plus a short readme. Drag a story file onto one of theflutterbug-solo/flutterbug-tunnel/flutterbug-cloudflarebatch files to play, no command line required.
Install / upgrade
The easiest path on Windows is the zip linked below.
For everyone else, pin emglken to 0.6.0 (later versions have a Windows bug that prevents launch):
npm install -g emglken@0.6.0
pip install --user --upgrade git+https://github.com/joelburton/flutterbug.git@v0.95v0.94
New features
- Windows support: Flutterbug now runs on Windows (Chrome browser tested)
--verboseflag: shows tunnel provider output, HTTP access logs, and other diagnostic detail. Without it, only the user-facing messages appear.- Clearer startup errors: if the port is already in use, or the game interpreter isn't on PATH, you now get a clear red error message with install guidance instead of a cryptic stack trace.
Polish & bug fixes
- Tunnel launches now log the exact shell command they ran, so you can copy-paste it to reproduce a failed tunnel outside Flutterbug.
- Preformatted text in story windows uses the same monospace font as status bars
- Colored INFO/WARNING/ERROR log output that matches uvicorn's style.
--secret's help text now explains that it controls whether sign-ins survive a server restart.
Install / upgrade
Pin emglken to 0.6.0 (later versions have a Windows bug that prevents launch):
npm install -g emglken@0.6.0
pip install --user --upgrade git+https://github.com/joelburton/flutterbug.git@v0.94v0.93
New features
- Display modes: new
--mode=flex(default) and--mode=fixed. Flex lets each player pick their own browser window size and font size and reflows the game text to fit. Fixed mode locks the layout to whatever the first connected player ("host") sees — for games with carefully designed window arrangements, side-by-side panes, or fixed-width art. - Player list with typing indicators: see at a glance who's typing a chat message vs. a game command, in a compact horizontal list.
- Bundled fonts: Flutterbug now ships its own monospace (a custom Iosevka build) and serif (Source Serif 4), so the game looks the same on every device without depending on system fonts.
Polish & bug fixes
- Bigger chat box, smaller "recent commands" box (better proportions for actual conversation).
- Game output no longer steals focus from the chat input — typing in chat doesn't get interrupted when the game prints something.
- Player colors and positions in the list stay consistent across page refreshes.
- Cleaner save/restore: no more spurious "awaiting line input" error popups while saving or restoring.
v0.92
Security-hardening release.
--password(or explicit--no-password) is now required, so a forgotten flag fails loudly instead of silently exposing an open server.- WebSocket handshakes validate the
Originheader, blocking cross-origin CSRF against signed-in players. - Sign-in form opts out of password-manager autofill — usernames/passwords here aren't stable credentials and shouldn't be captured.
- Readme: added a warning about save-file overwrite/listing in the launch directory.
v0.91
Core functionality works and ready for community testing.