- Add named route 'cloud-file-detail' at /cloud/:connectionId/item/:itemId(.*)
to frontend/src/router/index.js; placed before cloud-folder to prevent wildcard
capture; itemId is opaque (T-14.1-08)
- Add getCloudItemDetail(connectionId, itemId) to frontend/src/api/cloud.js
calling GET /api/cloud/connections/{id}/items/{encodeURIComponent(itemId)}/detail
(T-14.1-03/T-14.1-06: zero bytes, credential-free schema)
- Create frontend/src/views/CloudDetailView.vue as thin data-provider feeding
DocumentDetailSurface with CloudItem detail data + event handlers
- Wire force=true for re-analyze confirmation (D-11, Copywriting Contract modal)
- Unsupported preview shows reason + keeps Download active, no auto-download (D-14)
- Add fetchCloudItemDetail action + force param to enqueueAnalysis in store
(cloudConnections.js imports cloud.js barrel for getCloudItemDetail)
- translateAnalysisStatus remains single source; CloudDetailView calls store
translator, never defines its own
- All 8 CloudDetailParity.test.js tests now pass (route, params, Re-classify gone)