4.2 KiB
4.2 KiB
Changelog
All notable changes to Flying Jib are documented in this file.
The format is based on Keep a Changelog, and this project aims to follow Semantic Versioning.
[Unreleased]
Added
- Mesh inventory/position handoff:
- Capture on border migrate;
handoff-applyover control plane - Apply on destination Squid
spawned(teleport + inventory) - Two-region automated e2e path test
- Dual real Flying Squid +
minecraft-protocoloffline client handoff e2e
- Capture on border migrate;
- Offline neighbor migrate UX (
lib/migrate.js):- 15s tunnel timeout; clear messages; restore previous tunnel; local handoff stash
migrate-failedevent — no silent master failover
- Soft-reconnect UX (
lib/reconnect.js):- Prefer stable localhost port on tunnel retarget
- Delayed kick (~1.2s) so migrate/tunnel can finish first
- CLI reconnect banner + kick reason with Direct Connect address
- Handoff anti-dupe (v2): handoff id, strip source inventory, single-apply store,
handoff-ack - Multi-host standalone CI matrix (linux-x64/arm64, darwin-arm64, win32-x64)
- Pear OTA config check:
npm run pear:check - Binary size report:
npm run size:report - Standalone minecraft-data prune (
scripts/prune-minecraft-data.js, wired into pack) - Threat model:
developer_docs/security/THREAT_MODEL.md - Manual playtest runbook:
developer_docs/PLAYTEST.md
Fixed
- Squid login: provide
player-list-textdefaults so Flying Squid header plugin does not crash on join - Squid stop: stop game tick + prismarine-world saving intervals; close Anvil region files
- flying-squid tab-list latency intervals cleared on disconnect (postinstall patch)
- Standalone default storage: ESM
import os from 'os'so bare-pack embeds bare-os (createRequire path failed at runtime) - Phase 4 border migrate (live path):
- Squid plugin
fj-mesh-border(warn / kick / events) - Protomux control migrate + guest tunnel retarget
host --mesh/--mesh-invite/--mc-name- Region records include tunnel
capfor mesh members
- Squid plugin
- Phase 4 mesh registry (core):
- Autobase + Hyperbee region enrollment
- CLI:
mesh-create,mesh-open,mesh-admit,mesh-enroll,mesh-list - Border advisory helpers (
lib/border.js) - GitHub Actions integrate workflow
- Phase 3 peer communication (CLI):
- Hyperswarm/Protomux presence + chat for private worlds
- Stdin chat on
host/join;/peerscommand
- Standalone packaging:
npm run make:standalone→ single Bare executable (no system Node)- Flying Squid postinstall patches for static plugin load
- Phase 2 private world sharing (core):
- CLI:
host(share),join(client tunnel) - HyperDHT world tunnel with capability header
fj1.invite encode/decode- Per-world tunnel key persistence
- CLI:
- Phase 1 Bare application scaffold:
- CLI:
create,list,start,status lib/squid-manager.js— embedded Flying Squid, forced127.0.0.1plugins/fj-bind-guard.js— loopback listen assertion- Bare interop:
bare-node-runtime, engine patches, events/readline shims
- CLI:
- Phase 0 documentation and agent governance scaffold:
living_docs/— roadmap, progress, status, architecture overview, open questions, changelogdeveloper_docs/— setup, architecture, modules, protocol, build/release, testing, contributinguser_docs/— getting started, private/mesh worlds, invites, troubleshooting, FAQagent/— rules, workflow, security, documentation policy, coding standards, ADRs 0000–0013
- Architecture decision: Local Authority + Capability Tunnel + Federated Regions
- ADR-0013: Bare/Pear-only runtime; single standalone executables via
bare-build; no app-level Node.js - Product name: Flying Jib
Changed
- Process model: supersede Electron + Node Squid child (ADR-0004) in favor of Bare main/worker + Squid on
bare-node-runtime - Release path: primary CI is hello-pear-bare / bare-build standalone + Pear OTA (not Electron Forge)
Security
- Documented invariants: no master servers; Minecraft TCP bind only on
127.0.0.1; Apache-2.0 / no AGPL hard deps - Users must not need system Node.js; no Node child for game server
[0.0.0] — 2026-07-30
Added
- Repository initialized as documentation-first Phase 0.