<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>crossedge - Changelog</title>
    <link>https://logg.sh/crossedge</link>
    <description>Changelog for crossedge</description>
    <language>en</language>
    <lastBuildDate>Tue, 18 Aug 2026 12:36:02 GMT</lastBuildDate>
    <generator>logg.sh</generator>
    <item>
      <title>v0.10.3</title>
      <link>https://logg.sh/crossedge/0.10.3</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.10.3</guid>
      <pubDate>Tue, 18 Aug 2026 12:36:02 GMT</pubDate>
      <description>Fixes Windows capture dropping input synthesized by other software</description>
      <content:encoded><![CDATA[## Fixes
- Stop discarding input events on Windows that were synthesized by other software

## Improvements
- Adjust macOS capture and inject handling to align with the updated input synthesis logic
- Extend the shared protocol types to support distinguishing synthesized input sources

## Other
- Bump internal crate dependency versions]]></content:encoded>
    </item>
    <item>
      <title>v0.10.2</title>
      <link>https://logg.sh/crossedge/0.10.2</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.10.2</guid>
      <pubDate>Tue, 18 Aug 2026 12:36:02 GMT</pubDate>
      <description>Fixes Linux touchpads not being detected during capture</description>
      <content:encoded><![CDATA[## Fixes
- Fixed Linux touchpads not being captured, which previously made them invisible to crossedge]]></content:encoded>
    </item>
    <item>
      <title>v0.10.1</title>
      <link>https://logg.sh/crossedge/0.10.1</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.10.1</guid>
      <pubDate>Tue, 18 Aug 2026 12:36:46 GMT</pubDate>
      <description>Adds edge pressure detection, reconnect visibility, and source-swap feedback</description>
      <content:encoded><![CDATA[## Features
- **Add edge pressure detection so holding the cursor against a screen edge can trigger crossing actions** — Introduces a new focus-tracking mechanism that recognizes sustained pressure at a screen edge, enabling more reliable edge-triggered behavior for users moving between machines.
- Show reconnect status in the web UI when a connection drops and comes back
- Add visual feedback in the UI when the active input source is swapped

## Other
- Document new protocol fields related to edge pressure and reconnect/source-swap events
- Trialed moving Linux CI jobs to a self-hosted Oracle runner, then reverted the change]]></content:encoded>
    </item>
    <item>
      <title>v0.10.0</title>
      <link>https://logg.sh/crossedge/0.10.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.10.0</guid>
      <pubDate>Tue, 18 Aug 2026 12:36:46 GMT</pubDate>
      <description>Added a single command to swap which machine&apos;s keyboard/mouse leads the desk</description>
      <content:encoded><![CDATA[## Features
- Add a one-command switch to change which machine's keyboard and mouse control the shared desk — users can now hand off control between connected machines with a single command instead of manual reconfiguration, available via CLI and the web UI.

## Improvements
- Extend the protocol to support desk-lead switching messages
- Add driver support for handling desk-lead swap requests
- Add a control in the web UI to trigger the keyboard/mouse swap
- Add a CLI command to trigger the desk-lead swap

## Other
- Add test coverage for the new desk swap behavior over QUIC
- Update protocol documentation to reflect the new swap command
- Bump dependency versions in Cargo.toml/Cargo.lock]]></content:encoded>
    </item>
    <item>
      <title>v0.9.0</title>
      <link>https://logg.sh/crossedge/0.9.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.9.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>crossedge v0.9.0 adds multi-path peer connections with automatic failover</description>
      <content:encoded><![CDATA[## Features
- **Added multi-path peer connectivity with automatic failover between network addresses** — The desk can now maintain connectivity across multiple network paths (e.g. when a VPN interface appears or disappears) by tracking multiple candidate addresses per peer and failing over automatically, reducing dropped connections.

## Improvements
- Extended the wire protocol to carry multiple addresses per peer for failover support
- Updated the address store and endpoint logic to select and switch between known peer addresses
- Added CLI and driver support for configuring multi-path address handling
- Expanded QUIC desk integration tests to cover multi-path failover scenarios
- Documented the multi-address protocol changes

## Fixes
- Cleaned up formatting of the stop message text wrap]]></content:encoded>
    </item>
    <item>
      <title>v0.8.5</title>
      <link>https://logg.sh/crossedge/0.8.5</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.8.5</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Adds crossedged stop/start commands and fixes installer certificate detection</description>
      <content:encoded><![CDATA[## Features
- Added `crossedged stop` and `crossedged start` CLI commands to control the service

## Fixes
- Fixed the installer failing to detect self-signed code-signing identities by removing the `-v` flag from `find-identity`]]></content:encoded>
    </item>
    <item>
      <title>v0.8.4</title>
      <link>https://logg.sh/crossedge/0.8.4</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.8.4</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Fixed macOS permissions being reset after app updates via local signing identity</description>
      <content:encoded><![CDATA[## Fixes
- Fixed macOS app permissions being reset after updates by using a stable local signing identity — previously, updating the app could cause macOS to treat it as new, forcing users to re-grant permissions like accessibility or file access.

## Other
- Updated the install script to support the new local signing identity setup on macOS
- Bumped project version and dependency lockfile]]></content:encoded>
    </item>
    <item>
      <title>v0.8.3</title>
      <link>https://logg.sh/crossedge/0.8.3</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.8.3</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Clarifies macOS warning message for stale permission grants</description>
      <content:encoded><![CDATA[## Fixes
- Improved the macOS warning message to explicitly name the stale-grant trap it refers to, making the issue easier to diagnose.]]></content:encoded>
    </item>
    <item>
      <title>v0.8.2</title>
      <link>https://logg.sh/crossedge/0.8.2</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.8.2</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>macOS permissions now self-heal automatically</description>
      <content:encoded><![CDATA[## Features
- Added self-healing permission handling for macOS, automatically detecting and repairing revoked capture and input permissions.

## Improvements
- Updated the macOS driver and service layer to monitor and recover permission state.
- Surfaced permission status information in the web UI.]]></content:encoded>
    </item>
    <item>
      <title>v0.8.1</title>
      <link>https://logg.sh/crossedge/0.8.1</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.8.1</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Panel now shows ghost cards for unseen machines; camera/mic sharing design documented.</description>
      <content:encoded><![CDATA[## Fixes
- Fixed the panel to show placeholder ghost cards for machines that have never been seen, instead of showing nothing at all.

## Other
- Added a design document outlining camera and microphone sharing plans.
- Bumped project dependency versions in Cargo.lock and Cargo.toml.]]></content:encoded>
    </item>
    <item>
      <title>v0.8.0</title>
      <link>https://logg.sh/crossedge/0.8.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.8.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Plugin API lands — events and messages across the mesh, plus docs and site updates.</description>
      <content:encoded><![CDATA[## Features
- **Introduce a plugin API for hooking into events and sending messages across the mesh.** Developers can now build plugins that react to CrossEdge events and exchange messages with other nodes on the mesh, opening the platform up to extensions.

## Other
- Add architecture documentation describing how the system's components fit together.
- Add plugin API documentation covering events and messaging.
- Rewrite README to catch up with the current state of the product.
- Expand protocol documentation to reflect new plugin-related messages.
- Add a real screenshot of the panel to the landing page.
- Update site copy to reflect already-shipped self-update and macOS tray features.
- Add integration tests covering the QUIC desk driver.
- Bump dependency versions and minor CI release workflow tweak.]]></content:encoded>
    </item>
    <item>
      <title>v0.7.0</title>
      <link>https://logg.sh/crossedge/0.7.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.7.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Add machine renaming, removal, and per-machine speed testing to CrossEdge desk</description>
      <content:encoded><![CDATA[## Features
- Add the ability to rename paired machines from the web UI
- Add the ability to remove paired machines
- **Add a per-machine speed test** to measure connection performance to each paired machine — check connection speed to individual paired machines directly from the desk UI to diagnose slow transfers

## Other
- Extend the pairing service and storage layer to support machine management operations
- Update dependency versions in Cargo manifests]]></content:encoded>
    </item>
    <item>
      <title>v0.6.1</title>
      <link>https://logg.sh/crossedge/0.6.1</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.6.1</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Adds a real health-check to the doctor command in crossedged</description>
      <content:encoded><![CDATA[## Features
- **Added a real health-check to the doctor diagnostic command** — The doctor command now performs an actual health-check of the desk/daemon instead of a stub, giving users meaningful diagnostic output.

## Other
- Bumped package version and updated dependency lockfile]]></content:encoded>
    </item>
    <item>
      <title>Version 0.6.0</title>
      <link>https://logg.sh/crossedge/0.6.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.6.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.6.0</description>
      <content:encoded><![CDATA[- feat(update,focus): one-click self-update + two-source crossing guard]]></content:encoded>
    </item>
    <item>
      <title>Version 0.5.2</title>
      <link>https://logg.sh/crossedge/0.5.2</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.5.2</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.5.2</description>
      <content:encoded><![CDATA[- refactor(webui): bundle panel feeds into one struct
- refactor(webui): PanelFeeds — the five read-only watches travel as one
- fix(clipboard): stop flashing the GNOME dock — no more per-poll wl-paste]]></content:encoded>
    </item>
    <item>
      <title>Version 0.5.1</title>
      <link>https://logg.sh/crossedge/0.5.1</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.5.1</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.5.1</description>
      <content:encoded><![CDATA[- feat(bench): crossedged bench — the 8 ms promise, measured]]></content:encoded>
    </item>
    <item>
      <title>Version 0.5.0</title>
      <link>https://logg.sh/crossedge/0.5.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.5.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.5.0</description>
      <content:encoded><![CDATA[- feat(macos): the Mac becomes a source — CGEventTap capture
- release: v0.5.0 — any machine can be the source]]></content:encoded>
    </item>
    <item>
      <title>Version 0.4.1</title>
      <link>https://logg.sh/crossedge/0.4.1</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.4.1</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.4.1</description>
      <content:encoded><![CDATA[- fix: abort the clipboard poller on soft-restart exits
- test: tolerate multicast-less CI sandboxes in the discovery test
- feat(macos,updates): menu-bar tray on the Mac + update notices everywhere
- fix: enable tokio process feature for the update check on all targets
- release: v0.4.1 — macOS tray + update notices]]></content:encoded>
    </item>
    <item>
      <title>Version 0.4.0</title>
      <link>https://logg.sh/crossedge/0.4.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.4.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.4.0</description>
      <content:encoded><![CDATA[- feat(clipboard): copy here, paste there]]></content:encoded>
    </item>
    <item>
      <title>Version 0.3.0</title>
      <link>https://logg.sh/crossedge/0.3.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.3.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.3.0</description>
      <content:encoded><![CDATA[- feat(any-host): Linux capture (evdev) + full Windows injection (SendInput)]]></content:encoded>
    </item>
    <item>
      <title>Version 0.2.2</title>
      <link>https://logg.sh/crossedge/0.2.2</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.2.2</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.2.2</description>
      <content:encoded><![CDATA[- feat(focus): click a machine on the canvas — your input jumps there]]></content:encoded>
    </item>
    <item>
      <title>Version 0.2.1</title>
      <link>https://logg.sh/crossedge/0.2.1</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.2.1</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.2.1</description>
      <content:encoded><![CDATA[- feat(mesh): pair once, meet everyone — desk roster gossip]]></content:encoded>
    </item>
    <item>
      <title>Version 0.2.0</title>
      <link>https://logg.sh/crossedge/0.2.0</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.2.0</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.2.0</description>
      <content:encoded><![CDATA[- feat(pairing): click a machine's name — no IPs, ever]]></content:encoded>
    </item>
    <item>
      <title>Version 0.1.2</title>
      <link>https://logg.sh/crossedge/0.1.2</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.1.2</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:46 GMT</pubDate>
      <description>Version 0.1.2</description>
      <content:encoded><![CDATA[- fix(boot): a bad saved arrangement can never kill the daemon]]></content:encoded>
    </item>
    <item>
      <title>Version 0.1.1</title>
      <link>https://logg.sh/crossedge/0.1.1</link>
      <guid isPermaLink="true">https://logg.sh/crossedge/0.1.1</guid>
      <pubDate>Tue, 18 Aug 2026 00:32:51 GMT</pubDate>
      <description>Version 0.1.1</description>
      <content:encoded><![CDATA[- fix(panel): dragging works — and CrossEdge now lives in the background]]></content:encoded>
    </item>
  </channel>
</rss>