direct: Browser Direct mode — Axis + ForgeFX runtime fully in-page (0.8.0-beta)#26
Merged
Conversation
…-page Open axisapp.live/?mode=direct, grant Web MIDI (sysex) or Web Serial, and Axis drives the device with no install and no local server: - direct.svelte.ts + DirectGate.svelte: boot flow (capability detection, permission, port pairing/choice, runtime assembly) beside remote.svelte.ts - direct/webmidi.ts + webserial.ts: ForgeFX Transport implementations (request serialization, quiet-window collection, F0..F7 byte-stream reassembly, 64B/3ms paced writes for the FM3 CDC path) - direct/idbStore.ts: IndexedDB StoreBackend behind an in-memory mirror + brotli-wasm/js-sha256 codec (desktop-compatible blob format); versions, backups and config live in the browser and cloud-sync under the same free-tier rules - direct/fsaFolder.ts: local storage folder over the File System Access API — the same Presets/ library + Sync/ mirror as desktop (Chromium) - forgefx.ts: transport mode tri-state (local/remote/direct); the four binary raw-fetch helpers route through the installed transport in direct mode; SSE stays local-only (direct subscribes to the runtime event bus) - web build hosts both modes at runtime: ?mode=direct boots Direct, everything else stays the remote gate (existing links/PWA unchanged) - ci.yml + deploy-remote.yml: sibling checkout of forgefx-midi + ForgeFX (the runtime is bundled from the file: workspace links) - docs/browser-direct-runtime-plan.md: architecture + browser matrix - 0.8.0-beta (ForgeFX engine 0.5.0-beta)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Open axisapp.live/?mode=direct, grant Web MIDI (sysex) or Web Serial, and Axis drives the device with no install and no local server. The full ForgeFX engine runs in-page (
forgefx-server/runtime, see sKuhLight/ForgeFX#30) — grid, params, scenes, tuner/meters, preset history + undo, snapshots/backups (IndexedDB, desktop-compatible brotli/sha256 blob format), free-tier cloud sync, and the local storage folder via the File System Access API.direct.svelte.ts+DirectGate.svelte: boot flow besideremote.svelte.ts(capability detection → permission → port pairing → runtime assembly); runtime loads as a lazy chunk (desktop/remote bundles unaffected)direct/webmidi.ts/webserial.ts: ForgeFXTransportimplementations (request serialization, quiet-window collection, F0..F7 reassembly, 64 B/3 ms paced writes for FM3 CDC)direct/idbStore.ts/fsaFolder.ts: StoreBackend + FolderAdapter browser implementationsforgefx.ts(local/remote/direct); binary helpers route through the installed transport in direct mode; SSE stays local-only?mode=directboots Direct, everything else remains the remote gate (existing links/PWA installs unchanged)Browser support: Chrome/Edge desktop = everything; Firefox & Android = MIDI-class devices (no FM3-over-USB — Web Serial is Chromium-desktop-only — and no folder picker); iOS/Safari → Axis Remote. Details in
docs/browser-direct-runtime-plan.md.Depends on sKuhLight/forgefx-midi#1 (merged) and sKuhLight/ForgeFX#30.