Files
CaprikaandGitHub 3682118b45 fix(share): protect staging and restore client continuations (#8675)
* fix share staging and client continuations

* docs: clarify share batch verification baseline

* fix(web): notify when sending to a deleted project or conversation
2026-10-12 17:52:32 +08:00
..

Share client batch 1 — review evidence

Scope: Plane OPEND-3745, OPEND-3691, OPEND-3722. OPEND-3663 is withdrawn and is not implemented by this patch. This is review evidence, not a completed Featuretest acceptance report.

Share entry point

These two screenshots show the same fixed build during an earlier real login attempt, not a buggy-versus-fixed comparison:

  • Before login: file toolbar → Share → Sign in to share.
  • After login: the same file's Share panel returns with Generate and copy link.

The top 40 pixels were cropped from both screenshots to exclude account status. Remaining pixels are unchanged; image metadata is omitted. The screenshots prove the visible entry point/panel only. The attempt's authoritative share-state request returned 503, so they do not prove successful publishing or guest access. A subsequent fresh-login attempt is blocked by browser connectivity.

Reproducible red/green tests

The current regression tests were copied into a detached worktree of the pinned feat/share-comment-p0 base a8dfb3a48cf49cb7ad658218b7caefbc9f739daa, without any production fixes. The assertions reproduce:

Test Base Fixed branch
OPEND-3745 never uploads a case-collapsed file/directory staging tree Two failures: expected 502, received 200 on a case-insensitive temporary volume Both pass; refuse before the resource-push call
OPEND-3691 keeps the sign-in share panel across pending workspace authority without publishing Share action missing after authority resolves Pass
OPEND-3691 restores only the UI continuation after the whole authenticated viewer remounts Continuation callback missing Pass
OPEND-3691 keeps the exact panel continuation above the project authorization remount Expected index.html, received none Pass
OPEND-3722 settles a deleted Team route instead of restarting absence resolution on its own list read No alert; Loading workspace remains Pass; finite retry budget and terminal feedback

The base reproduction has seven failing targeted assertions overall (two daemon, five web, including the parent-cancelled continuation case). This is a pinned-feature-base comparison, not a claim that the latest target head or main was tested. The PR targets feat/share-comment-p0, like the preceding share fixes; main does not yet contain this share implementation.

Fixed-branch commands:

pnpm guard
pnpm typecheck
pnpm --filter @open-design/daemon exec vitest run tests/collab-sync-routes.test.ts
pnpm --filter @open-design/web exec vitest run tests/components/App.project-create-race.test.tsx tests/components/FileViewer.share-update.test.tsx

Results: guard/typecheck pass; daemon 137 tests, web 108 tests pass. Focused package suites, not the full repository test suite or CI.

Real-environment evidence and remaining gate

  • 3745: Actual case-sensitive APFS source files, actual production deploy planner, and actual production staging were exercised for file aliases, directory aliases, and an ordinary control. The case-sensitive destination preserved exact bytes; the ordinary temporary destination refused both alias plans. This is real filesystem evidence, not HTTP/Cloud/guest acceptance. The private test volume was detached afterwards.
  • 3691: Normal cancellation settled to signed_out/loginInFlight=false. A fresh Featuretest login started with HTTP 202 but its real activation page failed ERR_CONNECTION_CLOSED. The attempt was cancelled normally. Earlier successful UI restoration does not substitute for complete current Cloud/guest acceptance.
  • 3722: Actual dedicated Team project registration and deletion returned 200; subsequent GET returned 404. Independent normal run submission for the deleted conversation returned 404 CONVERSATION_NOT_FOUND, queued=false, with zero project runs. The old comment handoff disappeared. The attempted old-reference click was invalid after network-listener setup and deletion, so no actual stale-button click is established. The latest live route showed conversation-load failure/residual chrome rather than the expected explicit deleted-project terminal. The complete original UI sequence remains unverified.

Before marking ready: restore actual browser connectivity and repeat each full Cloud scenario. For 3722, enable network collection before locating controls, use a stable semantic/CSS locator, record whether the actual click occurred or the control was legitimately removed, and retain the resulting failure/terminal feedback and absence of message/Run/queue side effects. Never manufacture permissions, responses, DOM state, or database state to make acceptance pass.

No full acceptance, successful public-link receipt, CI pass, merge, deployment, or Plane status transition is claimed here.