Skip to content

chore(ui): polish batch — downloads icon, button alignment, progress spacing, Indelible spinner#101

Open
Nic-dorman wants to merge 1 commit into
mainfrom
chore/ui-polish-batch
Open

chore(ui): polish batch — downloads icon, button alignment, progress spacing, Indelible spinner#101
Nic-dorman wants to merge 1 commit into
mainfrom
chore/ui-polish-batch

Conversation

@Nic-dorman
Copy link
Copy Markdown
Contributor

Summary

Four small UI fixes batched into one PR. No functional changes.

Fix File(s)
Downloads empty-state icon (mirror of uploads) `pages/files.vue`
Earnings "Use {address}" button right-aligned `pages/wallet.vue`
Progress bar breathing room under filename `pages/files.vue` + `components/ProgressLine.vue`
Indelible upload indeterminate spinner (no per-chunk events) `pages/files.vue` + `components/ProgressLine.vue`

Indelible spinner — detail

The Indelible upload path (`stores/files.ts::startIndelibleUpload`) flips the row to `status: 'uploading'` and waits for the HTTP response. There are no `upload-progress` events from this backend, so the segmented quote/pay/store bar stayed visually frozen on three empty segments for the whole transfer.

New `indeterminate` prop on `ProgressLine` renders the same pulsing single-bar that downloads-without-total already use. `isIndeterminateUpload(file)` in `pages/files.vue` picks this branch when:

```ts
file.kind === 'upload'
&& file.status === 'uploading'
&& settingsStore.indelibleConnected
&& !settingsStore.devnetActive
```

Same conditions that route through `startIndelibleUpload` in the store, so the rendering match is exact — no false positives from devnet mode or non-Indelible uploads.

Deliberately out of scope

V2-264 (double scrollbar). Needs interactive devtools inspection to identify the offending portal/iframe root (most likely `@reown/appkit` or wagmi connector); guessing at fixes risks regressing legitimate scrolling. Will revisit in a separate PR when I can actually inspect the running app.

Test plan

  • CI vitest + typecheck (no JS logic touched in the changed components beyond a pure boolean helper)
  • Files page: empty downloads list shows the down-arrow icon
  • Files page: in-flight upload row shows breathing room between filename and progress bar
  • Wallet page with WalletConnect connected + earnings address different: suggestion banner has the button flush right (try at 1200px and 800px window widths)
  • Indelible mode: upload a file. Row's progress cell shows pulsing single bar throughout, not three empty segments. Direct ant-core path still shows the segmented bar.

🤖 Generated with Claude Code

…spacing, Indelible spinner

Four small fixes batched into one PR. No functional changes.

* **Downloads empty-state icon.** Mirror the uploads empty state — a
  down-arrow svg next to "No downloads yet". Files page Downloads section
  no longer renders text-only.

* **Earnings "Use {address}" button alignment.** Wallet page suggestion
  banner was flex-row with gap-3 only — text and button sat side by side,
  no right-edge anchoring. Add `justify-between` and `shrink-0` on the
  button so the button hugs the right edge of the banner across all
  widths and address lengths.

* **Progress bar spacing on Files page.** ProgressLine carried a `mt-1`
  internally which rendered flush against the filename. Move the gap
  control to the parent (`flex flex-col gap-1.5` wrapping filename +
  bar) and drop the internal margin so future callers can choose their
  own spacing.

* **Indelible upload progress.** The Indelible backend ships no
  per-chunk progress events, so the segmented quote/pay/store bar sat
  on three empty segments for the whole transfer. New
  `indeterminate` prop on ProgressLine renders the same pulsing
  single-bar as downloads-without-total. `isIndeterminateUpload(file)`
  in files.vue picks this branch when `settingsStore.indelibleConnected
  && !settingsStore.devnetActive` — the conditions that route through
  startIndelibleUpload.

V2-264 (double scrollbar) deliberately deferred — it needs interactive
devtools inspection to identify the offending portal/iframe root, and
guessing at fixes risks regressing legitimate scrolling.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant