diff --git a/docs/UPLOAD_PR_PLAN.md b/docs/UPLOAD_PR_PLAN.md deleted file mode 100644 index ef8680b..0000000 --- a/docs/UPLOAD_PR_PLAN.md +++ /dev/null @@ -1,28 +0,0 @@ -# Upload flow PR plan - -## Phase 1 — Configure UI (done) - -- [x] Split upload page: dropzone, queue, metadata inspector, configure modal -- [x] Batch settings form (ZK / hotlink, expiry, max views, ZK password) -- [x] Preset → API helpers (`resolveUploadBatchExpiresAt`, `resolveUploadBatchMaxViews`, ZK prepare options builder) -- [x] Modal validation on Upload; batch settings summary after confirm - -## Phase 2 — Upload execution + dual queue status (in progress) - -- [ ] **Separate upload state** from metadata (`UploadQueueEntry` per file key); metadata column unchanged in `UploadQueueList` -- [ ] Show upload column once a batch upload has started (pending / uploading / uploaded / failed / skipped) -- [ ] `onBatchUpload`: stripped blob → encrypt → `useUploadStore` POST (ZK + hotlink) -- [ ] Share URLs via `buildZkViewerPath` / `buildHotlinkImagePath` (+ optional absolute URL from `VITE_CLEARNET_DOMAIN`) -- [ ] Disable dropzone / configure while batch upload runs; clear upload state on new pick - -## Phase 3 — Hardening (follow-up or tail of PR) - -- [ ] ALTCHA: fetch challenge + solve, pass `x-altcha` on upload (frontend not wired yet; backend may allow when disabled) -- [ ] Copy-to-clipboard for share links; optional delete token display -- [ ] Modal Esc / backdrop close -- [ ] Single validation gate (modal vs builder) - -## Out of scope - -- Viewer / delete pages -- E2E tests against docker-compose diff --git a/frontend/src/assets/css/main.css b/frontend/src/assets/css/main.css index 683fd9a..f0d965b 100644 --- a/frontend/src/assets/css/main.css +++ b/frontend/src/assets/css/main.css @@ -20,6 +20,7 @@ --color-accent: var(--accent); --color-accent-foreground: var(--accent-foreground); --color-destructive: var(--destructive); + --color-success: var(--success); --color-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); @@ -40,6 +41,7 @@ --accent: oklch(0.94 0.02 260); --accent-foreground: oklch(0.28 0.03 260); --destructive: oklch(0.55 0.2 25); + --success: oklch(0.45 0.14 155); --border: oklch(0.9 0.01 260); --input: oklch(0.9 0.01 260); --ring: oklch(0.42 0.08 260); @@ -59,6 +61,7 @@ --accent: oklch(0.28 0.03 260); --accent-foreground: oklch(0.96 0.01 260); --destructive: oklch(0.62 0.2 25); + --success: oklch(0.68 0.14 155); --border: oklch(0.32 0.02 260); --input: oklch(0.32 0.02 260); --ring: oklch(0.72 0.1 260); diff --git a/frontend/src/components/upload/MetadataInspector.vue b/frontend/src/components/upload/MetadataInspector.vue index a1ff4a9..e66f9b5 100644 --- a/frontend/src/components/upload/MetadataInspector.vue +++ b/frontend/src/components/upload/MetadataInspector.vue @@ -8,9 +8,16 @@

Select an image to view its metadata.

-

- {{ entry.message }} -

+ diff --git a/frontend/src/components/upload/UploadQueueList.vue b/frontend/src/components/upload/UploadQueueList.vue index dfaa588..49e9a24 100644 --- a/frontend/src/components/upload/UploadQueueList.vue +++ b/frontend/src/components/upload/UploadQueueList.vue @@ -11,8 +11,11 @@ {{ prettyBytes(row.file.size, { maximumFractionDigits: 1 }) }} - - {{ row.preview.message }} + + {{ row.metadata.message }} + + + {{ row.upload.message }} @@ -21,15 +24,12 @@ diff --git a/frontend/src/views/UploadView.vue b/frontend/src/views/UploadView.vue index 3b54f0f..f61696e 100644 --- a/frontend/src/views/UploadView.vue +++ b/frontend/src/views/UploadView.vue @@ -11,9 +11,14 @@
- +