Skip to content

QA: cross-surface verification (session sync, storage reconnect, workflow publish, blog/comments, loading feedback) #100

Description

@zo-sol

Context

Over the last two days we shipped features and fixes that all touch the same flows across three surfaces (VSCode webview, mobile/Android, CLI). Before calling them done, we need one coordinated end-to-end pass on every surface, and critically, confirmation that none of the fixes added extra API/RPC/storage traffic.

Relevant recent work:

Surfaces to cover

  • VSCode webview (core chat/ui/webview.ts via extension host)
  • Mobile / Android (React surfaces/webview via the localhost server)
  • CLI (Ink app)

1. Session-list sync between devices

Sign at least two devices/surfaces into the same wallet + same Google Drive and confirm the session list converges.

  • Device A creates a new session -> it appears on Device B after a refresh
  • Cold start on each surface loads the cloud + local union (not a local-only stale list)
  • Deleting a session on one device removes it on the other
  • Confirm the "mobile shows a 2-day-old list" report cannot recur (root cause was an expired PC refresh token that silently killed uploads)

Pass: both surfaces show the same set within one refresh; backfill has pushed the backlog.

2. Storage disconnect / reconnect smoothness

A tester reported disconnect/reconnect felt clumsy; the phantom-connected state was fixed (a53b336). Verify the full cycle is smooth on each surface.

  • Disconnect -> pill immediately shows "no cloud / connect" (no "undefined", no ghost "disconnect" button)
  • Reconnect -> one-tap re-auth, then uploads resume
  • On a dead token (invalid_grant), the UI surfaces a clear "reconnect" affordance instead of failing silently
  • Reconnect triggers backfill exactly once (not on every passive boot, not on a timer)

Pass: no confusing states, no dead-ends, clear status at each step.

3. Workflow publishing (manual UI + agent-driven)

  • Publish a workflow by hand in the UI (skill/workflow toggle -> owned-skill checklist -> mint & publish)
  • Ask an agent to publish a workflow and confirm it produces the same on-chain result
  • Behavior with the 2 default (bundled) skills: are they shown/selectable in the builder? Default skills have no on-chain mint and cannot be required skills (would fail NotInOfficialCollection). Confirm they are either correctly excluded or handled with a clear message, not a raw chain error.
  • Both paths land a valid type: workflow NFT with a non-empty base58 requiredSkills in the official workflows collection

Pass: both manual and agent publish succeed; the default-skill edge case is handled gracefully.

4. Blog posting + commenting on another agent

Pass: no unknown-key failures; posts/comments appear.

5. Loading / completion feedback

While doing 1-4, watch for missing "loading..." or "done" signals that leave the user unsure.

  • Every long action (list load, publish, buy, post, comment, backfill, reconnect) shows a loading state
  • Every success shows a clear completion signal (e.g. the COMPLETE overlay) and every failure shows an error
  • Flag any surface where feedback is missing or inconsistent (VSCode has skeletons + LED overlay; confirm CLI and mobile have equivalents)

6. Desktop approval popup on Linux / Windows

The OS approval popup that fires when the VSCode window is unfocused (user is looking at another app) was built for all three OSes but only macOS was live-tested. Verify it actually shows and behaves on Linux and Windows machines.

  • Linux (zenity, with kdialog fallback): with VSCode unfocused, trigger an approval -> a native popup appears; Approve / Always / Deny work; Deny opens a reason input; session title shows in the dialog
  • Windows (PowerShell WinForms): same checks - popup appears while VSCode is in the background, Approve is the default (Enter) button, reason-with-back works
  • Both: answering the popup resolves the in-app approval card (no double-prompt); returning to VSCode without answering dismisses the popup and hands off to the webview card
  • Both: popup fires only when unfocused, not when VSCode is in the foreground

Pass: on Linux and Windows, an unfocused approval reliably raises an OS popup and resolves cleanly, matching macOS behavior.


Deliverable

File a separate, focused issue for each concrete gap found (per surface), linking back here.

Constraint - do NOT add API / RPC / storage traffic

Any fix that comes out of this pass must not increase call volume or introduce loops:

  • No polling, no per-render network calls. Drive list stays a single call per sync, not per item.
  • Backfill stays one-shot on explicit (re)connect - never on passive boot, never on a timer.
  • No recursive or retry storms. Transient retries must be bounded with backoff (already the case in mirror.ts); invalid_grant must fail fast, not retry.
  • Reuse already-fetched data (ownedSkills, mints, on-chain groups) instead of refetching.
  • When in doubt, measure: log call counts before/after and confirm parity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    deployment prepRelease and distribution readiness tasks

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions