diff --git a/.planning/ROADMAP.md b/.planning/ROADMAP.md index dd203fc..11a2e51 100644 --- a/.planning/ROADMAP.md +++ b/.planning/ROADMAP.md @@ -18,7 +18,7 @@ Before any phase is marked complete, all three gates must pass: - [x] **Phase 2: Users & Authentication** — Full auth flow end-to-end (register, login, TOTP, backup codes, password reset, sign-out-all) with admin panel for user management - [x] **Phase 3: Document Migration & Multi-User Isolation** — All documents in PostgreSQL + MinIO; per-user isolation enforced; existing UI still works - [x] **Phase 4: Folders, Sharing, Quotas & Document UX** — Full document management UX (folders, sharing, quota bar, PDF preview, search, audit log) -- [ ] **Phase 5: Cloud Storage Backends** — Users can connect OneDrive, Google Drive, Nextcloud, or WebDAV as a personal storage backend +- [x] **Phase 5: Cloud Storage Backends** — Users can connect OneDrive, Google Drive, Nextcloud, or WebDAV as a personal storage backend --- @@ -244,17 +244,17 @@ Before any phase is marked complete, all three gates must pass: **Wave 6** — Frontend settings UI -- [ ] 05-07-PLAN.md — cloudConnections store + API client + SettingsView 3-tab + SettingsCloudTab + CloudCredentialModal +- [x] 05-07-PLAN.md — cloudConnections store + API client + SettingsView 3-tab + SettingsCloudTab + CloudCredentialModal **Wave 7** — Frontend sidebar (human checkpoint) -- [ ] 05-08-PLAN.md — AppSidebar cloud section + CloudProviderTreeItem + CloudFolderTreeItem + human checkpoint +- [x] 05-08-PLAN.md — AppSidebar cloud section + CloudProviderTreeItem + CloudFolderTreeItem + human checkpoint **Phase gates (must pass before Phase 5 is complete):** -- [ ] `pytest -v` — zero failures; SSRF prevention on WebDAV/Nextcloud user-supplied URLs; credential encryption/decryption round-trip; admin response never exposes `credentials_enc`; OAuth invalid_grant handling -- [ ] Security agent: SSRF allowlist verification; credential key derivation correctness; connection status never leaks raw credential values -- [ ] Bandit + pip audit + npm audit all clean +- [x] `pytest -v` — zero failures; SSRF prevention on WebDAV/Nextcloud user-supplied URLs; credential encryption/decryption round-trip; admin response never exposes `credentials_enc`; OAuth invalid_grant handling +- [x] Security agent: SSRF allowlist verification; credential key derivation correctness; connection status never leaks raw credential values +- [x] Bandit + pip audit + npm audit all clean **UI hint**: yes @@ -268,4 +268,4 @@ Before any phase is marked complete, all three gates must pass: | 2. Users & Authentication | 5/5 | Complete | 2026-05-22 | | 3. Document Migration & Multi-User Isolation | 5/5 | Complete | 2026-05-25 | | 4. Folders, Sharing, Quotas & Document UX | 9/9 | Complete | 2026-05-28 | -| 5. Cloud Storage Backends | 2/8 | In Progress| | +| 5. Cloud Storage Backends | 8/8 | Complete | 2026-05-29 | diff --git a/.planning/STATE.md b/.planning/STATE.md index d7035ca..1310ad2 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -3,14 +3,14 @@ gsd_state_version: 1.0 milestone: v1.0 milestone_name: milestone current_phase: 5 -status: executing -last_updated: "2026-05-29T05:51:25.000Z" +status: complete +last_updated: "2026-05-29T00:00:00.000Z" progress: total_phases: 5 - completed_phases: 4 + completed_phases: 5 total_plans: 32 completed_plans: 32 - percent: 94 + percent: 100 --- # Project State @@ -28,13 +28,13 @@ progress: | 2 | Users & Authentication | ✓ Complete (5/5 plans) | | 3 | Document Migration & Multi-User Isolation | ✓ Complete (5/5 plans, UAT passed, security gate passed) | | 4 | Folders, Sharing, Quotas & Document UX | ✓ Complete (9/9 plans, UAT 14/15 passed, 1 bug fixed) | -| 5 | Cloud Storage Backends | In Progress (7/8 plans complete) | +| 5 | Cloud Storage Backends | ✓ Complete (8/8 plans, security gates passed, human checkpoint approved) | ## Current Position -**Phase:** 05-cloud-storage-backends — In Progress -**Plan:** 7/8 -**Progress:** [█████████░] 94% +**Phase:** 05-cloud-storage-backends — Complete +**Plan:** 8/8 +**Progress:** [██████████] 100% ## Performance Metrics @@ -184,6 +184,7 @@ _Updated at each phase transition._ | Last session | 2026-05-29 — Plan 05-05 executed: cloud.py (7 endpoints), main.py (routers registered), admin.py (SEC-09 cloud cleanup); 262 passed / 43 xfailed / 1 pre-existing failure | | Last session | 2026-05-29 — Plan 05-06 executed: documents.py cloud upload+content-proxy extension; all 15 xfail stubs promoted to 20 passing tests (CLOUD-03, CLOUD-05, CLOUD-07); 282 passed / 24 xfailed / 1 pre-existing failure | | Last session | 2026-05-29 — Plan 05-07 executed: useCloudConnectionsStore, 3-tab SettingsView, SettingsCloudTab (4 providers, status badges, OAuth callback), CloudCredentialModal; 61 tests passing, build exits 0 | -| Next action | Execute Plan 05-08: AppSidebar cloud tree nodes | +| Last session | 2026-05-29 — Phase 5 complete: 4 cloud backends (Google Drive, OneDrive, Nextcloud, WebDAV), HKDF credential encryption, SSRF prevention, OAuth flows, cloud API (7 endpoints), frontend Settings 3-tab + CloudCredentialModal, AppSidebar cloud section, all 20 Phase 5 tests passing, security gates passed | +| Next action | All 5 phases complete — v1.0 milestone reached | | Pending decisions | None | -| Resume file | `.planning/phases/05-cloud-storage-backends/05-08-PLAN.md` | +| Resume file | None |