fix(desktop): remove dead tunnel-unavailable gate and native driver (VAPP-87) #97

Merged
longjacksonle merged 1 commit from fix/VAPP-87-remove-dead-tunnel-gate-and-native-driver into main 2026-07-18 05:55:48 +02:00

What

Removes the entire dead-premise layer around desktop tunnel panes (VAPP-86 gate + PR #96 native driver), after live testing showed the premise was wrong.

Why

The "desktop" app runs the wasm web client inside a webview (embedded server + webview, main.rs), not native dioxus-desktop rendering. The wasm client can't be built with feature = "desktop" (it pulls wry, a native-only dep), so cfg!(feature = "desktop") is always false in the rendering client. Therefore:

  • The VAPP-86 TunnelUnsupported gate is dead code in the client - it never fires. The panes already run the same wasm drivers as the browser, and they work (verified: terminal opens a live shell, pwd / ls / produce output).
  • PR #96's native document::eval + tokio-tungstenite terminal driver never executes - dead code.
  • The one place the feature-keyed gate did fire is the desktop binary's embedded SSR server (built with feature = "desktop"): it rendered TunnelUnsupported into the HTML, which the wasm client then hydrated away with the real pane - an SSR/hydration mismatch. Removing the gate makes SSR and client agree.

Changes

  • Remove the cfg!(feature = "desktop") gate from Files and Remote-desktop panes (Terminal's was already removed in #96).
  • Remove the TunnelUnsupported component and the tunnel_gate_guard regression test (it pinned the now-removed gate).
  • Remove PR #96's native terminal driver (imp_native), the shared native_relay transport module, and the desktop-only toolbar-button hiding.

Net runtime effect in the webview is unchanged (the gate never fired there); the panes keep running their wasm drivers. 414 lines of dead code removed, no dependencies added.

Verification

  • cargo check --no-default-features --features desktop: clean.
  • Containerized CI gate (just pre-commit): fmt, clippy --features server -D warnings, server check, wasm check, all 100 tests pass.
  • Live: Terminal, and (by the same wasm-in-webview path) Files, work in the desktop webview.
  • Reverts the mis-scoped work in #95 (VAPP-86) and #96 (VAPP-87).
  • VAPP-88 (tunnel panes churn ~18s) was a dx serve hot-reload artifact during editing, not a real bug - closing separately.

🤖 Generated with Claude Code

## What Removes the entire dead-premise layer around desktop tunnel panes (VAPP-86 gate + PR #96 native driver), after live testing showed the premise was wrong. ## Why The "desktop" app runs the **wasm web client inside a webview** (embedded server + webview, main.rs), not native dioxus-desktop rendering. The wasm client can't be built with `feature = "desktop"` (it pulls `wry`, a native-only dep), so **`cfg!(feature = "desktop")` is always false in the rendering client**. Therefore: - The VAPP-86 `TunnelUnsupported` gate is dead code in the client - it never fires. The panes already run the same wasm drivers as the browser, and they work (verified: terminal opens a live shell, `pwd` / `ls /` produce output). - PR #96's native `document::eval` + `tokio-tungstenite` terminal driver never executes - dead code. - The one place the feature-keyed gate *did* fire is the desktop binary's embedded SSR server (built with `feature = "desktop"`): it rendered `TunnelUnsupported` into the HTML, which the wasm client then hydrated away with the real pane - an SSR/hydration mismatch. Removing the gate makes SSR and client agree. ## Changes - Remove the `cfg!(feature = "desktop")` gate from Files and Remote-desktop panes (Terminal's was already removed in #96). - Remove the `TunnelUnsupported` component and the `tunnel_gate_guard` regression test (it pinned the now-removed gate). - Remove PR #96's native terminal driver (`imp_native`), the shared `native_relay` transport module, and the desktop-only toolbar-button hiding. Net runtime effect in the webview is **unchanged** (the gate never fired there); the panes keep running their wasm drivers. 414 lines of dead code removed, no dependencies added. ## Verification - `cargo check --no-default-features --features desktop`: clean. - Containerized CI gate (`just pre-commit`): fmt, `clippy --features server -D warnings`, server check, wasm check, all 100 tests pass. - Live: Terminal, and (by the same wasm-in-webview path) Files, work in the desktop webview. ## Related - Reverts the mis-scoped work in #95 (VAPP-86) and #96 (VAPP-87). - VAPP-88 (tunnel panes churn ~18s) was a `dx serve` hot-reload artifact during editing, not a real bug - closing separately. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(desktop): remove dead tunnel-unavailable gate and native driver (VAPP-87, reverts VAPP-86)
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 1m1s
Create release / Create release from merged PR (pull_request) Has been skipped
a856969fcc
The desktop app runs the wasm web client inside a webview (embedded server + webview), not native dioxus-desktop rendering. The wasm client cannot be built with `feature = "desktop"` (it pulls `wry`, which is not a wasm dependency), so `cfg!(feature = "desktop")` is always false in the rendering client. That makes the VAPP-86 "not available in the desktop app" gate dead code in the client, and PR #96's native `document::eval` + tokio-tungstenite terminal driver dead code that never runs. The tunnel panes already work on desktop because they run the same wasm drivers as the browser (verified live: terminal opens a shell, `pwd`/`ls` work).

Worse, the gate keyed on the feature did have one effect: the desktop binary's embedded SSR server is built with `feature = "desktop"`, so it rendered `TunnelUnsupported` into the HTML, which the wasm client then hydrated away with the real pane - an SSR/hydration mismatch. Removing the gate makes SSR and client agree.

This removes the whole dead-premise layer:
- the `cfg!(feature = "desktop")` gate from the Terminal (already gone via #96), Files and Remote-desktop panes,
- the `TunnelUnsupported` component,
- the `tunnel_gate_guard` regression test (it pinned a now-removed gate),
- PR #96's native terminal driver (`imp_native`), the shared `native_relay` transport module, and the desktop-only toolbar-button hiding.

Net effect in the webview is unchanged (the gate never fired there); the panes keep running their wasm drivers. No new dependencies remain from #96.

Verified: desktop-feature `cargo check` clean, and the containerized CI gate (fmt, clippy --features server -D warnings, server check, wasm check, tests) all pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BUfsRDQa56XWH2QKPaeRim
longjacksonle deleted branch fix/VAPP-87-remove-dead-tunnel-gate-and-native-driver 2026-07-18 05:55:48 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/vervain-apps!97
No description provided.