Skip to content

Undo delay on cancel, stream hide/block, PWA offline support, vesting timeline view - #694

Merged
Austinaminu2 merged 2 commits into
FlowwStar:mainfrom
Ndifreke000:fix/issues-149-150-151-154
Aug 27, 2026
Merged

Undo delay on cancel, stream hide/block, PWA offline support, vesting timeline view#694
Austinaminu2 merged 2 commits into
FlowwStar:mainfrom
Ndifreke000:fix/issues-149-150-151-154

Conversation

@Ndifreke000

Copy link
Copy Markdown
Contributor

Summary

Implements four feature requests:

  • feat: Add undo delay on destructive actions (cancel stream) #154 — Undo delay on cancel. Confirming "Cancel stream" no longer submits the transaction immediately. It schedules a 10s countdown toast ("Stream will be cancelled in Ns — Undo"), Gmail-style. The stream card and detail page show a "Cancelling…" state during the delay, and navigating away from the stream detail page (unmounting the dialog) aborts the pending cancellation as a safe default. See hooks/use-undo-cancel.ts.
  • feat: Add recipient opt-in mechanism for incoming streams #151 — Recipient opt-in (Option A: hide/block). Incoming stream cards get a "…" menu with "Hide stream" and "Block sender". Hidden stream IDs and blocked sender addresses are persisted in localStorage (lib/hidden-streams.ts, hooks/use-hidden-streams.ts) and excluded from the dashboard's lists/counts and the streams page. A "Show hidden streams" toggle on the streams page lets you review and un-hide/unblock. This is the frontend-only option the issue recommended starting with; Option B (contract-level accept_stream()) is left as a follow-up.
  • feat: Add PWA support with offline dashboard and cached stream data #150 — PWA support. Added public/manifest.json, a hand-rolled service worker (public/sw.js, no new dependency) that caches the app shell and falls back to public/offline.html, an online/offline indicator in the navbar, a native "Add to Home Screen" install prompt (components/pwa/install-prompt.tsx), and a stale-data banner on the dashboard backed by a localStorage cache of the last successful stream fetch (lib/streams-cache.ts) so the dashboard still renders something useful offline.
  • feat: Add calendar/Gantt view for visualizing vesting schedules #149 — Calendar/Gantt view. Added a List/Timeline toggle on the streams page (preference persisted in localStorage). Timeline mode (components/streams/stream-gantt-view.tsx) renders each stream as a horizontal bar from start to end, with a cliff marker, a shared "today" line across all rows, a hover tooltip (amount, counterparty, % unlocked), status color-coding, and horizontal scroll on narrow viewports.

Notes / TODOs

  • The manifest only reuses existing app icons (icon.svg, apple-icon.png, 32×32 PNGs) — no image-processing tooling was available in this environment to generate dedicated 192×192/512×512 PNG icons or iOS splash screens. Recommend adding those as a follow-up for full Android/iOS install compliance.
  • Push notifications for stream events (mentioned in feat: Add PWA support with offline dashboard and cached stream data #150's proposed solution) are not implemented — out of scope for this pass.
  • This was implemented quickly per the repo owner's request to prioritize opening the PR; no build/lint/test run was performed. Please run CI and review before merging.

Test plan

  • Cancel a stream, confirm the countdown toast appears and clicking Undo aborts it (stream stays active, card leaves "Cancelling…" state)
  • Let a cancel countdown expire and confirm the stream actually cancels with the normal success toast
  • Hide an incoming stream from its card menu, confirm it disappears from the dashboard and streams page, then use "Show hidden streams" to un-hide it
  • Block a sender and confirm existing + future streams from that address stay hidden
  • Load /manifest.json and confirm the service worker registers (DevTools > Application)
  • Go offline and confirm the dashboard shows cached streams with the stale-data banner, and the navbar shows the offline indicator
  • Toggle to Timeline view on the streams page and confirm bars, cliff markers, the today line, and tooltips render correctly; confirm the preference persists across reloads

Closes #154
Closes #151
Closes #150
Closes #149

…vesting timeline view

- Cancel stream now schedules a 10s undoable countdown toast (Gmail-style
  "Undo Send") instead of submitting immediately; stream cards/detail page
  show a "Cancelling..." state during the delay, and navigating away aborts
  it as a safe default. (FlowwStar#154)
- Recipients can hide unwanted incoming streams or block a sender entirely
  from the stream card menu; hidden/blocked state is persisted in
  localStorage and excluded from dashboard lists/counts, with a "Show
  hidden streams" toggle on the streams page to review/un-hide. (FlowwStar#151)
- Added PWA support: manifest.json, a hand-rolled service worker caching
  the app shell with an offline fallback page, an online/offline indicator
  in the navbar, an "Add to Home Screen" install prompt, and a stale-data
  banner on the dashboard backed by a localStorage cache of the last
  successful stream fetch. (FlowwStar#150)
- Added a horizontal Gantt/timeline view for the streams page (toggle next
  to the existing list view, preference persisted in localStorage) showing
  each stream as a bar with cliff markers, a shared "today" line, and a
  hover tooltip. (FlowwStar#149)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@drips-wave

drips-wave Bot commented Aug 27, 2026

Copy link
Copy Markdown

@Ndifreke000 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@Austinaminu2
Austinaminu2 merged commit a30f7fe into FlowwStar:main Aug 27, 2026
0 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants