Skip to content

fix: functionality gaps (#97, #96, #109, #103, #84)#117

Merged
neonwatty merged 12 commits intomainfrom
fix/functionality-gaps
Apr 18, 2026
Merged

fix: functionality gaps (#97, #96, #109, #103, #84)#117
neonwatty merged 12 commits intomainfrom
fix/functionality-gaps

Conversation

@neonwatty
Copy link
Copy Markdown
Collaborator

Summary

Fixes five UX gaps in the web dashboard and adds pull-to-refresh:

Changes

  • 16 files changed, ~900 insertions, ~50 deletions
  • New usePullToRefresh hook + PullToRefreshWrapper component
  • New refreshAction server action (clears all SQLite cache + revalidates)
  • New e2e test for draft assignment → cache invalidation flow
  • Review fixes: proper error logging across all catch blocks, stable touch handlers via ref pattern

Test plan

  • pnpm turbo typecheck passes (verified, 0 errors)
  • pnpm turbo build passes (verified, all routes build)
  • Create a draft → verify navigation lands on /?section=unassigned
  • Open draft → action sheet → "Assign to repo" → verify two-step select/confirm flow
  • After assigning draft to repo, verify new issue appears on index page
  • On mobile viewport with >15 items in a section, verify infinite scroll loads more on scroll
  • On settings page with >5 repos or worktrees, verify "show all N" collapse/expand
  • On mobile, pull down on index page → verify refresh indicator + data refresh
  • On mobile, pull down on settings page → verify same behavior
  • Run pnpm --filter @issuectl/web test:e2e — all tests pass including new assign test

Closes #97, #96, #109, #103, #84

Adds the draft assign test to action-sheets.spec.ts — exercises the
two-step assign flow (select repo → confirm) and verifies that after
assignment the new issue title appears on the index page, confirming
the issues cache is invalidated on assignment.
Use a ref to track pullDistance in handleTouchEnd so the callback
doesn't recreate on every pixel of movement. Also add
overscroll-behavior-y: contain to prevent native pull-to-refresh
from fighting with the custom implementation.
- Add console.warn to cache invalidation catch in assignDraftAction
- Check refreshAction result in PullToRefreshWrapper, warn on failure
- Add catch block in usePullToRefresh to prevent unhandled rejections
- Log error in CreateDraftSheet catch for debuggability
- Restore cacheStale signal from revalidateSafely in refreshAction
Keep our assign-draft test additions (constants, seed line, test
block) alongside the base file that was merged from the
fix/close-issue-navigate-home branch.
@neonwatty neonwatty added this pull request to the merge queue Apr 18, 2026
Merged via the queue into main with commit e5478b4 Apr 18, 2026
5 checks passed
@neonwatty neonwatty deleted the fix/functionality-gaps branch April 18, 2026 18:50
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.

When you return from creating an issue, especially if it's a draft, you should return to drafts on the index page.

1 participant