Releases: tomte55/Farsight
Release list
Farsight v2.3.1
What's changed
- fix(transfer): multi-flow drivers emit accepted + throttled aggregate progress + file-sent (UI showed a working transfer as frozen) (7b21a0e)
Full changelog: v2.3.0...v2.3.1
Download
- Farsight — one app that controls other machines, lets you host (be controlled), and transfers files. Install it on every machine.
Upgrading from v1? v2 is a fresh install with a new identity, so it will not auto-update from the old Farsight Host / Farsight Controller — download and run the installer once. The old apps can be uninstalled.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v2.3.0
What's changed
- feat(diagnostics): one-tap Copy ID button on the diagnostics upload result (4d584ae)
- fix(transfer): send-flows close() fails its channels so a cancel unwinds the pool + closes the file reader (no fd/closure leak) (ca0faab)
- fix(transfer): sendBulk rejects on flow death so the pool retires+requeues (no deadlock on flow drops); ctrl anchors flow 0 (edb8209)
- fix(transfer): pin multi-flow receiver close-on-settle wiring + bound the close/persist await (no hang on a wedged fd) (25e6da8)
- fix(transfer): multi-flow receiver closes open .part handles on every settle (no fd leak on cancel/stall) (b66dfd5)
- test(transfer): headless single-process multi-flow E2E (loopback signaling, real striping asserted) (2898286)
- fix(transfer): clamp flowCount to [1,16] at the service + override site (no unbounded flow count from any source) (1718be9)
- feat(transfer): parallel-connections setting (default 8, 1-16) plumbed to flowCount (e99a92f)
- fix(transfer): multi-flow receiver persists the record immediately on accept (no vanish on fast cancel) (db94e64)
- fix(transfer): deterministic teardown of all N multi-flow workers (no app-alive leak) (db6f5eb)
- feat(signaling): per-flow-unique TURN username via flowIndex (uncaps N relay allocations); tighten openChannel guards (26ec06d)
- feat(transfer): openChannel opens N grouped transfer workers -> {ctrl,flows}; per-flow rendezvous (d18b39a)
- test(transfer): pin ctrl-frame watchdog reset; isolate pagination test from watchdog; fix mirrors-createReceiver comment (ede3a6b)
- fix(transfer): multi-flow receiver handles inbound cancel + inactivity stall (mirrors single-flow) — no hang on drop (3f4a30d)
- feat(transfer): transfer-service multi-flow branch + real io/store seam wiring + range-based resume (82cb208)
- fix(transfer): group-rendezvous cancel-after-ready keeps live flows; pin once-fire race + cancel semantics (59f0712)
- feat(transfer): group-rendezvous coordinator -- N flow requests -> one grouped receive, single consent (07cb2db)
- fix(transfer): range_report batching bounds by measured bytes (not count) — worst-case frame under 256KB (149f8c7)
- feat(transfer): bounded + file-paginated range_report (fits the 256KB data-channel limit) (29bcc6f)
- fix(transfer): multi-flow completion terminates cleanly — receiver reports finalized files as covered + sender pump settled-guard/unref (812c8ef)
- feat(signaling): relay groupId/flowIndex/flowCount on transfer requests (whitelisted, pairing unchanged) (d470584)
- test(transfer): multi-flow service loopback to real disk — stripe, drop, reconcile, byte-identical (a32a89e)
- fix(transfer): thread the open partFile into multi-flow receiver's verifyAndFinalize (d2bfb42)
- test(transfer): pin multi-flow receiver periodic range_report cadence + timer teardown (fake clock) (d0f8cba)
- feat(transfer): createMultiFlowReceiver — router-driven reassembly, periodic range_report, coverage completion (593cbd8)
- fix(transfer): multi-flow sender hashes+file_end even a resumed byte-complete file; gap passes re-read only gaps + re-send file_end (71246e7)
- feat(transfer): createMultiFlowSender — producer+pool+reconcile over N flows, coverage-defined completion (d3fd7e1)
- feat(transfer): router.resetFile clears a verify-failed file for reconciliation re-send (76ae923)
- feat(transfer): positional sparse .part writer + positional source reader (aabf839)
- fix(transfer): router doesn't finalize a verify-failed/errored file; memoize openPart; guard chunkSize>0 (ae3b142)
- test(transfer): pin reconciliation sends only gaps (round-2 offsets) + direct coveredFor assertion (b2fe13d)
- test(transfer): in-memory multi-flow loopback -- stripe, drop a range, reconcile, reassemble byte-identical (4dfe08c)
- feat(transfer): sender coverage tracker for range reconciliation + coverage-defined completion (ef798e7)
- feat(transfer): positional-write receive router with range tracking + finalize-on-complete (4c37b8f)
- fix(transfer): send pool dispatches to idle flows (real N-way concurrency) + retire rejecting flows (dfbd0ab)
- feat(transfer): dynamic send pool with credit backpressure + dead-flow requeue (b78940b)
- feat(transfer): sequential hasher-reader that yields only uncovered chunks (aa91af9)
- feat(turn): optional per-flow-unique username so coturn user-quota stops capping parallel flows (a778d44)
- fix(shared): declare transfer-chunk + transfer-ranges in package exports (exports.test guard) (7d022dd)
- feat(transfer): range_report frame, accept.ranges, offer flowCount/groupId (dfa3372)
- fix(transfer): isComplete matches covers([0,size)) contract, not ivals.length shortcut (caa696a)
- feat(transfer): coalesced received-ranges interval set (covers/gaps/isComplete) (cca9eab)
- feat(transfer): self-addressing bulk chunk frame (fileId/offset/length header) (24a0daf)
Full changelog: v2.2.1...v2.3.0
Download
- Farsight — one app that controls other machines, lets you host (be controlled), and transfers files. Install it on every machine.
Upgrading from v1? v2 is a fresh install with a new identity, so it will not auto-update from the old Farsight Host / Farsight Controller — download and run the installer once. The old apps can be uninstalled.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v2.2.1
What's changed
- fix(fleet): fold remote-update into a clickable version link (keeps the row on one line) (9b79c7b)
Full changelog: v2.2.0...v2.2.1
Download
- Farsight — one app that controls other machines, lets you host (be controlled), and transfers files. Install it on every machine.
Upgrading from v1? v2 is a fresh install with a new identity, so it will not auto-update from the old Farsight Host / Farsight Controller — download and run the installer once. The old apps can be uninstalled.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v2.2.0
What's changed
- test(transfer): headless probe for received-dir + disk-space warning (eab1087)
- feat(transfer): settings folder picker + disk-space warning in consent modal (b41c9ad)
- feat(transfer): expose received-dir IPC over the preload bridge (2b27402)
- feat(transfer): configurable received-files folder + free-space in consent (main) (dd2aca9)
- feat(transfer): add classifyDiskSpace disk-fit classifier (a8b5396)
- feat(transfer): allow transferDir to be a per-receive function (8b5f30e)
- feat(config): persist receivedFilesDir in the config allowlist (39018a2)
Full changelog: v2.1.2...v2.2.0
Download
- Farsight — one app that controls other machines, lets you host (be controlled), and transfers files. Install it on every machine.
Upgrading from v1? v2 is a fresh install with a new identity, so it will not auto-update from the old Farsight Host / Farsight Controller — download and run the installer once. The old apps can be uninstalled.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v2.1.2
What's changed
- fix(transfer): show a 'verifying' state on the receiver instead of "Transferring…" (11607d7)
- fix(transfer): show the file/folder name on the receiver immediately (e4fb3e4)
- fix(transfer): clear the status-bar indicator when an early send is canceled (10f002a)
- fix(transfer): show received file count on the receiver (was 0/N all transfer) (c28a4dd)
- fix(update): wire remote-update directive in unified app (broke at 2.0.0) (c238701)
Full changelog: v2.1.1...v2.1.2
Download
- Farsight — one app that controls other machines, lets you host (be controlled), and transfers files. Install it on every machine.
Upgrading from v1? v2 is a fresh install with a new identity, so it will not auto-update from the old Farsight Host / Farsight Controller — download and run the installer once. The old apps can be uninstalled.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v2.1.1
What's changed
- fix(transfer): visible progress bar, file/folder labels, faster interrupt (60d775c)
Full changelog: v2.1.0...v2.1.1
Download
- Farsight — one app that controls other machines, lets you host (be controlled), and transfers files. Install it on every machine.
Upgrading from v1? v2 is a fresh install with a new identity, so it will not auto-update from the old Farsight Host / Farsight Controller — download and run the installer once. The old apps can be uninstalled.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v2.1.0
What's changed
- feat(ui): Slate Console redesign — compact dense rows, teal accent, flat controls (76edccb)
- feat: receive files, fleet naming/management, transfer removal; fix consent prompt, connecting feedback, session-window close, hidden menu bar (04b1c8c)
- docs: update README + self-hosting guide for the unified v2 app (dc1eb06)
Full changelog: v2.0.0...v2.1.0
Download
- Farsight — one app that controls other machines, lets you host (be controlled), and transfers files. Install it on every machine.
Upgrading from v1? v2 is a fresh install with a new identity, so it will not auto-update from the old Farsight Host / Farsight Controller — download and run the installer once. The old apps can be uninstalled.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v2.0.0
What's changed
- release: unify into one Farsight app (v2.0) — org.farsight.app, latest channel, host retired (af19c8b)
- test(controller): probe proves the unified app registers as a host + the toggle gates it (a6cce1d)
- docs: record the unified-app control posture (SECURITY.md R-9) + vision log (377eda3)
- fix(controller): control-OFF ends active hosted session; add manual Disconnect (c0d3d3e)
- feat(controller): inbound remote-control — consent, capture, host peer, keypair auth gate (084ec37)
- feat(controller): shell registers as a host; Home shows credentials + the control toggle (60ded5a)
- feat(controller): persist an Allow-control setting (default on), receiver-side gate (e6b8bad)
- feat(controller): port host peer (answering side) + auto-registering signaling client (00fa5d0)
- feat(controller): tray + hide-to-tray lifecycle (unified app must stay reachable as a host) (6313c59)
- feat(controller): port consent session machine, timeouts, panic hotkey, attention (f591a5d)
- feat(controller): port native input injection + screen capture (main-process) (c81ea07)
- fix(controller): make session reconnect/connect failures visible + retryable (c7b7f4a)
- fix(controller): session window tears down the prior peer/signal when switching targets (37bc15f)
- test(controller): probe proves the session window renderer runs on openSession (b156e30)
- feat(controller): shell launches the session window and reflects its status; sheds session markup (5ad4666)
- feat(controller): main wires the session window; shell preload gains openSession/focusSession (f4d7ad2)
- feat(controller): move the session subsystem into the session window (verbatim + 3 seams) (cade324)
- feat(controller): session-window HTML shell, preload bridge, CSP importmap guard (71b791c)
- feat(controller): session-window main-process factory (visible peer window) (a48ea35)
- test(controller): headless-Electron probe proves the shell renderer runs to completion (c3a62da)
- feat(controller): persistent status bar absorbs the update banner and version tag (38a66ad)
- fix(controller): rail keeps focus across transfer events; pageEls uses SHELL_PAGES (8a5ffa6)
- feat(controller): rail-navigated shell replaces the cog menu; retire both CSP unsafe-inline escapes (7fe12c1)
- fix(controller): credit only the selector head in theme-css.test.js (a5cf275)
- fix(controller): theme-css test used substring checks — vacuous for .shell/.card etc (70a1676)
- feat(shared): Aurora shell primitives — rail, status bar, pages, row/utility classes (44e38a5)
- feat(shared): pure status-bar segment model — session, transfers, update, version (ece3640)
- feat(shared): pure shell-nav model — rail items, page ids, active-transfer count (e9f90ec)
Full changelog: v1.14.6...v2.0.0
Download
- Farsight — one app that controls other machines, lets you host (be controlled), and transfers files. Install it on every machine.
Upgrading from v1? v2 is a fresh install with a new identity, so it will not auto-update from the old Farsight Host / Farsight Controller — download and run the installer once. The old apps can be uninstalled.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v1.14.6
What's changed
- fix(host): zero nut.js keyboard auto-delay — 300ms stall before every key op (89bfa74)
- docs: record the 2026-07-17 field findings in CLAUDE.md (abc6195)
Full changelog: v1.14.5...v1.14.6
Downloads
- Farsight Host — the machine to be controlled.
- Farsight Controller — where you sit to control it.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").
Farsight v1.14.5
What's changed
- fix(controller): closing the window quits every process (f438cea)
Full changelog: v1.14.4...v1.14.5
Downloads
- Farsight Host — the machine to be controlled.
- Farsight Controller — where you sit to control it.
Unsigned build: on first run Windows SmartScreen may warn ("More info" → "Run anyway").