Skip to content

feat(web): date-range filter for the Tasks page - #88

Merged
ukanwat merged 1 commit into
mainfrom
tasks-date-range-filter
Jun 24, 2026
Merged

feat(web): date-range filter for the Tasks page#88
ukanwat merged 1 commit into
mainfrom
tasks-date-range-filter

Conversation

@sandydasari

Copy link
Copy Markdown
Owner

What

Adds a Dates popover to the Tasks page header that filters both the Board and List views by a timestamp range.

  • Field selector — Updated / Created / Closed / Due (default Updated). Updated keeps every Board column populated; Closed/Due intentionally drop tasks without that timestamp.
  • From / To native date inputs that bound each other (To >= From).
  • Presets — Today, 7d (rolling), 30d (rolling), Month (calendar month-to-date).
  • Active range shows as a chip on the trigger (e.g. Updated 06-18→06-24) and folds into the existing filter count + Clear affordance.

How

Filtering is a single read-time predicate (taskInDateRange) added to the existing visibleTasks memo, so every view that reads it narrows automatically — no per-view wiring. Tasks missing the chosen timestamp (e.g. an open task has no closed_at) fall out when a range is set, so "Closed in June" never lists unclosed work.

New component apps/web/app/tasks/date-filter.tsx follows the existing FilterCombobox popover + mono/faceplate vocabulary. Consistent with the sibling assignee/team filters, the range is session state (not persisted across reload; only the view mode persists).

Verification

  • pnpm check-types + pnpm lint clean.
  • Driven live against ~47 real tasks: Updated·7d → 9/47; Closed·7d → 3/47 with non-terminal Board columns correctly empty; List narrows identically; Clear restores all; no header overflow on tablet (712/712) or mobile (390/390).

🤖 Generated with Claude Code

Adds a "Dates" popover to the Tasks header that filters both Board and
List views by a timestamp range. The control carries a field selector
(Updated / Created / Closed / Due, default Updated), From/To native date
inputs that bound each other (To >= From), and quick presets (Today, 7d,
30d, Month). The active range surfaces as a chip on the trigger and folds
into the existing filter count + Clear affordance.

Filtering is a single read-time predicate added to visibleTasks, so every
view that reads it narrows automatically. Tasks missing the chosen
timestamp (e.g. an open task has no closed_at) fall out when a range is
set, so "Closed in June" never lists unclosed work.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying openacme-ai with  Cloudflare Pages  Cloudflare Pages

Latest commit: 9cbf7d2
Status: ✅  Deploy successful!
Preview URL: https://ddb8105a.openacme-ai.pages.dev
Branch Preview URL: https://tasks-date-range-filter.openacme-ai.pages.dev

View logs

@ukanwat
ukanwat merged commit 9b15371 into main Jun 24, 2026
2 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

Development

Successfully merging this pull request may close these issues.

2 participants