Drift GH

DriftGH 0.6.1.0

Published: 2026-10-05 (KST).

The connected repository path in the Git menu now stays black, including while hovering or clicking, and still opens the repository when clicked. Rename Publish as new to Push as new to distinguish the first push to a new file destination from Push in an existing live session; the operation is unchanged. The dialogs are now titled Pull from GitHub and Push as new, with shorter Repo owner name and Repo name labels. The new-destination dialog also labels the file input as a path, since an existing repository can receive a new file in a different folder without creating another repository.

Fix creation and paste Undo records disappearing during live collaboration. Grasshopper can finish a solution before laying out newly placed objects. The receiving client mistook the later layout of pivots, widget bounds and component ports for a user edit and sent it back, invalidating the creator's Undo history.

Complete native layout before capturing a local component or accepting an incoming comparison baseline. Passive recipients no longer echo these display changes. Actual remote edits still invalidate conflicting Undo records. Protocol 5 and the complete-component conflict policy are unchanged; no relay update is needed.

The Undo fix was validated in two Rhino processes with repeated native pastes, rapid Undo/Redo, deletion Undo and genuine remote conflicts. All 20 native protocol-5 regression scenarios passed before the subsequent menu/dialog changes, including script wires, slow-solve races and recovery replay. UI changes passed both Windows builds and an isolated WPF dialog construction check; the final Rhino menu appearance remains to be checked. The 46 core checks also passed.

DriftGH 0.5.3

Rapid native Undo could remove a locally created object before the next capture tick sent its deletion. A late modification acknowledgement or remote modification then tried to materialize the missing object and disconnected the session.

Local removal intent is now recorded immediately from Grasshopper document events. Earlier committed modifications still advance canonical state, while their canvas application waits for the already requested deletion. Undo/Redo restorations cancel unsent removal intent or wait for the pending deletion acknowledgement as needed. Unexplained missing objects still trigger recovery rather than being ignored.

All 33 native synchronization regressions passed, including late local/remote modifications after Undo, rapid Undo of 20 unacknowledged creations, restoration cancellation and existing Undo history tests. Protocol 4 is unchanged. This does not change the server's separate 200 MiB upload limit.

DriftGH 0.5.2

Large object creations could disconnect a live session with WebSocket error 1009. After uploading the payload in chunks, the plugin also included the entire payload in the final operation message, exceeding the relay's 4 MiB message limit.

Chunked operations now send only the upload reference in their final message. The complete payload remains in the local pending-operation cache for acknowledgement processing. Protocol 4 and the server's size limit are unchanged; no server update is required. This fixes duplicate transmission, not the separate missing-object error during simultaneous editing.

Validation: all 17 transport regression checks passed, including two clients concurrently uploading 6 MiB payloads under the production 4 MiB message limit, local acknowledgements, subsequent inline edits and reconnect replay. Release builds passed for net7.0-windows and net48.

Server security update — 2026-09-22

Live documents and participant information are sent only after an active DriftGH account and GitHub repository write permission have been verified. Pull, live edits, checkpoints, reconnects and automatic Push are bound to the selected repository and file. Repository permissions are refreshed during a session; expired or revoked access stops document delivery. Upload buffers have size, count and lifetime limits.

The relay and website bind to loopback behind HTTPS/WSS. Website cookies use Secure, HttpOnly and SameSite=Lax; account and administrator mutations require a trusted request origin. Logout uses POST.

This is a server-only update compatible with the 0.5.1 plugin and protocol 4.

DriftGH 0.5.1

The plugin's GitHub sign-in completion page now uses the same background color as driftgh.com. The homepage and README guide start with website signup, use updated screenshots, and list the revised requirements. The extra title at the top left of the homepage has been removed.

Protocol 4 and the existing signup continuation behavior are unchanged.

DriftGH 0.5.0

First-time website signup now resumes the pending Pull or Publish as new automatically. After plugin GitHub authorization, Rhino keeps the connection and project details while the website opens. Signup must use the same GitHub account within five minutes; cancelling or disconnecting cancels the wait. Suspended accounts stay blocked.

Members protects every administrator account from deletion, including direct requests and self-deletion. Delete buttons use white text. Status lists show active, suspended and deleted; deleted is display-only and records user self-deletion while retaining account data. Administrator Delete remains permanent, including for users who have previously deleted/reactivated their own account.

The automatic signup continuation requires the updated relay and 0.5.0 client. Protocol 4 is unchanged; older clients retain the previous manual signup/retry flow.

Validation: 40 account/website/relay tests passed on Windows and the AWS Python environment, plus 14 real-WebSocket client tests. Both Release framework targets build successfully with existing warnings. External GitHub OAuth is mocked in automated tests; a new account's real browser signup remains a manual smoke test.

DriftGH 0.4.20

Undo could fail with "Object could not be found" after another participant deleted objects created locally. Remote edits now invalidate conflicting native Undo and Redo records before changing the canvas. Independent records and local-operation acknowledgements retain normal Undo/Redo behavior. Deleted component parameters, archived wire endpoints and cascaded group changes are included in conflict checks.

This is conservative, object-level history invalidation, not collaborative inverse operations: an old edit to an object changed by a peer is no longer undoable. A mixed gesture is removed as a whole if any action conflicts. Unknown/plugin-defined actions are invalidated on remote changes because their dependencies cannot be proven independent. Rhino's non-public native record/target lookup is isolated in CollaborationUndoHistory; unreadable records take the same conservative fallback.

Validation: 26 synchronization regressions passed in a separate Rhino 8 process, including 12 native Undo/Redo cases. Tests use detached documents and a synthetic local relay, not real accounts or the user's canvas. Both Release framework targets build successfully with existing dependency warnings. Protocol 4 is unchanged.

DriftGH 0.4.19

Display Color now opens Rhino's built-in color selection dialog. It starts with your current color and applies the new RGB color only after confirmation. Cancellation, participant-color checks and session-change protection are retained.

Uses the existing protocol 4 relay; no server update is required.

DriftGH 0.4.18

Display Color now opens the standard Windows color dialog instead of the fixed ten-color submenu. It starts with your current color and exposes the custom-color controls. OK applies the selected RGB color; Cancel leaves it unchanged. Colors already used by another participant remain unavailable.

Uses the existing protocol 4 relay; no server update is required. Both Release framework targets build successfully with the existing dependency warnings.

DriftGH 0.4.17

After everyone closed Rhino, choosing Pull could still restore abandoned server history instead of the Git file. An explicit Pull into an unoccupied document now starts from the latest Git commit. Previous server checkpoints and journals are backed up after authentication and Git download succeed. Unpushed edits stay in that backup and are not included in the newly opened Git document.

An active editor's document still takes precedence for incoming collaborators. Automatic reconnect also retains checkpoint/replay recovery. Simultaneous Pulls share one initialization; failed/cancelled initialization leaves the previous recovery data untouched. A separate journal generation keeps old operations from reappearing if the server restarts during replacement.

Requires protocol 4 on both client and relay: update every collaborating computer to 0.4.17 or newer. Same-computer concurrent OAuth remains unchanged.

Validation: both Release framework targets built successfully, with existing dependency/nullability warnings. All 25 relay tests passed on Windows/Linux and all 13 real-WebSocket transport/readiness tests passed. Git/network/account calls in the test fixtures are synthetic; two-computer browser/UI acceptance remains a user check. See realtime/SYNC_V4.md and tests/README.md.

DriftGH 0.4.16

Opening a shared document could repeatedly reload the canvas and reopen GitHub sign-in when its saved history referenced objects whose creation had never been sent. A failed checkpoint/replay application now stops automatic reconnect and shows a recovery message. Network interruptions still use normal reconnect.

New objects collected across separate Grasshopper events are queued together and retried when dependencies become available. Wires and group membership changes wait for their referenced objects/parameters to exist in the acknowledged model. Deferred changes remain eligible for capture even if another acknowledgement refreshes the object's XML baseline. Checkpoints wait for these deferred changes.

This release uses the existing protocol 3 relay. All collaborating computers should update. Already-invalid saved history requires a separate backed-up recovery; the client does not silently discard it. Same-computer concurrent OAuth is unchanged.

Validation: both Release framework targets built successfully (existing NU1701 dependency warnings remain). All 14 Rhino synchronization regressions and 11 real-WebSocket transport/readiness regressions passed. These include split paste events, dependency retries, deferred group deletion, replay failure classification, and manual reconnect after a failed replay. Two-machine user acceptance testing remains necessary; the tests do not automate the browser or the Rhino menu.

DriftGH 0.4.15

Moving existing components could diverge between collaborators when an author's acknowledged operations and a checkpoint's version no longer described the same document. Protocol 3 now orders acknowledgments and broadcasts consistently, waits for snapshot loading before applying later operations, and persists checkpoints with the exact operation boundary represented by their contents. A modification cannot create a missing object identity; divergence triggers full reconnect/replay. Deletes and pending undo also reconcile model and Grasshopper identities.

After an automatic reconnect, successful authentication and document restoration now restore the Connected menu and its actions. A socket connection alone no longer counts as a fully restored live session. Release builds record connection failures, server close codes, heartbeat progress and reconnect milestones in %APPDATA%/DriftGH/realtime-<PID>.log without logging message payloads.

This release also includes the existing bootstrap correction for Sketch/other opaque Grasshopper objects and durable logging for bootstrap errors.

Compatibility and known limitations

Validation

Test instructions are in tests/README.md.

Sign in / Sign up with GitHub