Plans 01–11, CONTEXT, PATTERNS, RESEARCH, REVIEW-FIX, and updated
SUMMARY and CONTEXT for the virtual-local-cloud-operations phase.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Test/Reconnect/Disconnect controls and broader Google Drive consent copy.
from
to
via
pattern
reconnect and credential-failure responses
browser-adjacent and Settings health state
cloudConnections store
health
Finish the frontend side of Phase 13 by wiring shared-browser folder mutations, actionable health UX, broader Drive consent copy, automatic post-failure health rechecks, and the explicit no-probe-on-navigation rule.
Purpose: Close the loop between the completed backend contracts and the two frontend surfaces users rely on.
Output: Passing health, rendered-flow, store, and mutation UX suites.
frontend/src/components/settings/__tests__/SettingsCloudTab.health.test.js — Settings control and copy assertions.
Task 1: Implement store-backed health and reconnect UX with explicit no-probe-on-navigation behavior
frontend/src/stores/cloudConnections.js, frontend/src/views/CloudFolderView.vue, frontend/src/components/settings/SettingsCloudTab.vue, frontend/src/components/cloud/CloudCredentialModal.vue, frontend/src/components/settings/__tests__/SettingsCloudTab.health.test.js, frontend/src/stores/__tests__/cloudConnections.test.js, frontend/src/views/__tests__/CloudFolderView.test.js
- frontend/src/stores/cloudConnections.js
- frontend/src/components/settings/SettingsCloudTab.vue
- frontend/src/components/cloud/CloudCredentialModal.vue
- frontend/src/stores/__tests__/cloudConnections.test.js
- .planning/phases/13-virtual-local-cloud-operations/13-CONTEXT.md
- Test 1: browser-adjacent and Settings health views derive from one store mapping
- Test 2: connect, reconnect, and credential-failure flows auto-test health, but ordinary folder navigation never triggers a probe
- Test 3: broader Google Drive access is explicit in consent or reconnect copy
Extend the cloud connection store and thin view handlers so server health states are mapped once and rendered in both the cloud browser context and Settings. Trigger automatic health re-evaluation after connect, reconnect, and credential-related failures, keep cached metadata visible while warning or reauth states are shown, and explicitly prevent ordinary folder navigation from performing a provider health probe. Update the credential and Settings surfaces so Google Drive’s broader Phase 13 access request is visible in user-facing copy rather than hidden in backend-only behavior.
- health and store suites pass with explicit no-probe-on-navigation coverage
- browser and Settings show actionable, consistent health state from the same store mapping
- broader Drive access copy is visible wherever users connect or reconnect that provider
cd frontend && npm run test -- --run src/components/settings/__tests__/SettingsCloudTab.health.test.js src/stores/__tests__/cloudConnections.test.js src/views/__tests__/CloudFolderView.test.js
Connection health, reconnect, and consent UX now follow one store-backed truth without background probe drift.
Task 2: Surface folder mutation results through the shared browser without forking layout
frontend/src/views/CloudFolderView.vue, frontend/src/components/storage/StorageBrowser.vue, frontend/src/views/__tests__/CloudFolderRenderedFlow.test.js
- frontend/src/components/storage/StorageBrowser.vue
- frontend/src/views/CloudFolderRenderedFlow.test.js
- .planning/phases/13-virtual-local-cloud-operations/13-CONTEXT.md
- Test 1: cloud create, rename, move, and delete reuse the shared browser surface and picker behavior
- Test 2: invalid destinations are disabled before submission and backend rejections are rendered clearly
- Test 3: trash-versus-permanent delete messaging and stale-refresh retry guidance are shown without duplicating layout
Wire the shared browser to consume the folder-mutation contract from the backend. Reuse the existing create, rename, drag-move, picker-move, and delete surfaces, but feed them cloud-specific capability, invalid-destination, stale-refresh, and trash-versus-permanent delete messages through props and emitted events only. Keep `CloudFolderView.vue` thin and avoid introducing a second folder picker, second drag state, or parallel mutation layout.
- rendered-flow suite passes with the real shared browser
- invalid destinations are prevented in the UI before submission and still handled cleanly after backend rejection
- cloud create/rename/move/delete behavior stays on the shared browser surface
cd frontend && npm run test -- --run src/views/__tests__/CloudFolderRenderedFlow.test.js
The frontend now presents full cloud mutation and health behavior through the shared browser and Settings surfaces only.
<threat_model>
Trust Boundaries
Boundary
Description
server health/mutation results → store/UI
The UI must present backend truth without inventing probe or mutation semantics.
shared browser interactions → destructive actions
Delete and move UX must stay explicit and capability-aware.
STRIDE Threat Register
Threat ID
Category
Component
Disposition
Mitigation Plan
T-13-30
T
health UX
mitigate
Store and Settings tests require auto-test on connect/reconnect/failure and forbid navigation-triggered probes.
Settings and credential-modal tests require explicit broader Google Drive access copy.
</threat_model>
- Pass the health, store, view, and rendered-flow frontend suites.
- Confirm the shared browser remains the only browser surface.
- Confirm no-probe-on-navigation is explicitly asserted and implemented.
<success_criteria>
Users can see, test, reconnect, and recover cloud connections through one consistent frontend state model.
Shared-browser folder mutations now satisfy the backend contracts for CLOUD-04 through CLOUD-07.
Phase 13 now concretely encodes broader Drive access and the D-13 health-testing invariant on the frontend.
</success_criteria>
Create `.planning/phases/13-virtual-local-cloud-operations/13-10-SUMMARY.md` when done