Sprint 2 — Timeline Search, Filtering & Empty States #10

Closed
opened 2026-05-19 05:04:49 +00:00 by foravo_admin · 0 comments
Owner

Imported from GitHub issue conorgregson/worldbuilding-codex#17.

Source: https://github.com/conorgregson/worldbuilding-codex/issues/17
Original author: @conorgregson
Original state: closed


Goal

Make the dedicated Timeline Explorer useful for larger fictional worlds by adding event search, lightweight filtering, URL query state, and clear empty/no-results states.

This sprint should help users quickly narrow a long list of timeline events without losing the chronological browsing experience created in Sprint 1.


Context

Sprint 1 creates the dedicated world timeline page and chronological event layout.

Sprint 2 builds on that foundation by adding controls that make timeline browsing more practical as worlds grow larger.

The control pattern should stay consistent with the v1.1 entity search/filtering work where appropriate, especially around clear controls, reset behavior, URL state, accessibility, and responsive layout.


Scope

Add a search input to the dedicated timeline page.

Search should check:

  • Event title
  • Event summary
  • Event description
  • Participant names, if available through the current data shape
  • Participant role labels, if available

Search behavior:

  • Case-insensitive
  • Trims extra whitespace
  • Clearing search restores full results
  • Search combines safely with filters

Add lightweight timeline filters

Recommended filters for v1.2:

Date/sort status:

  • All events
  • Dated/sorted events
  • Undated events

Participant status:

  • All events
  • Events with participants
  • Events without participants

Optional only if easy with existing data:

  • Participant/entity filter
  • Role label filter

Preserve timeline browsing state in URL query parameters

Use timeline-specific query parameters so timeline controls do not conflict with v1.1 entity browsing controls.

Suggested query parameters:

timelineSearch
timelineDateStatus
timelineParticipantStatus

Optional future parameter:

timelineParticipant

Add empty and no-results states

Required states:

  • No timeline events exist yet.
  • Events exist, but no results match the current search/filter controls.

Filtered no-results state should include a clear reset action.

Improve control accessibility and responsive behavior

  • Label search and filter controls clearly.
  • Ensure controls are keyboard reachable.
  • Use visible focus states.
  • Use semantic buttons for reset actions.
  • Keep controls usable on mobile/narrow layouts.
  • Include result count/status text where helpful.

Acceptance Criteria

  • Users can search timeline events by title.
  • Users can search timeline events by summary.
  • Users can search timeline events by description.
  • Users can search timeline events by participant data where available.
  • Search is case-insensitive.
  • Search ignores extra leading/trailing whitespace.
  • Clearing search restores the full timeline list.
  • Users can filter timeline events by date/sort status.
  • Users can filter timeline events by participant status.
  • Search and filters combine correctly.
  • Chronological ordering remains stable after searching/filtering.
  • Timeline search/filter state is reflected in the URL.
  • Refreshing the page preserves active timeline controls.
  • Browser back/forward behavior remains predictable.
  • Timeline query parameters do not conflict with entity query parameters from v1.1.
  • Empty timeline state explains when no events exist yet.
  • Filtered no-results state explains when controls are hiding results.
  • Filtered no-results state includes a clear reset action.
  • Search, filter, and reset controls have accessible labels.
  • Controls are keyboard reachable.
  • Controls remain usable on desktop and mobile.

Final Verification Checklist

  • Open a world timeline with multiple events.
  • Search by event title.
  • Search by event summary.
  • Search by event description.
  • Search by participant name if participant data is available.
  • Confirm clearing search restores all events.
  • Apply date/sort status filter.
  • Apply participant status filter.
  • Combine search and filters.
  • Confirm chronological order remains stable after filtering.
  • Confirm timeline query parameters update in the URL.
  • Refresh with active search/filter state.
  • Confirm active search/filter state persists after refresh.
  • Use browser back/forward with timeline query state.
  • Use the reset action.
  • Confirm reset clears timeline controls and restores results.
  • Confirm no-results state appears when expected.
  • Confirm empty state appears for a world with no events.
  • Test keyboard navigation.
  • Confirm visible focus states.
  • Test mobile/narrow layout.
  • Confirm no major console errors appear.

Out of Scope

  • Full participant display polish.
  • Relationship graph work.
  • World import/export.
  • Public world sharing.
  • Advanced fuzzy timeline search.
  • Saved timeline views.
  • Fictional calendar systems.
  • Timeline eras.
  • Drag-and-drop ordering.
Imported from GitHub issue `conorgregson/worldbuilding-codex#17`. Source: https://github.com/conorgregson/worldbuilding-codex/issues/17 Original author: @conorgregson Original state: closed <!-- foravo:github-issue:conorgregson/worldbuilding-codex#17 --> --- ## Goal Make the dedicated Timeline Explorer useful for larger fictional worlds by adding event search, lightweight filtering, URL query state, and clear empty/no-results states. This sprint should help users quickly narrow a long list of timeline events without losing the chronological browsing experience created in Sprint 1. --- ## Context Sprint 1 creates the dedicated world timeline page and chronological event layout. Sprint 2 builds on that foundation by adding controls that make timeline browsing more practical as worlds grow larger. The control pattern should stay consistent with the v1.1 entity search/filtering work where appropriate, especially around clear controls, reset behavior, URL state, accessibility, and responsive layout. --- ## Scope ### Add timeline event search Add a search input to the dedicated timeline page. Search should check: - Event title - Event summary - Event description - Participant names, if available through the current data shape - Participant role labels, if available Search behavior: - Case-insensitive - Trims extra whitespace - Clearing search restores full results - Search combines safely with filters ### Add lightweight timeline filters Recommended filters for v1.2: Date/sort status: - All events - Dated/sorted events - Undated events Participant status: - All events - Events with participants - Events without participants Optional only if easy with existing data: - Participant/entity filter - Role label filter ### Preserve timeline browsing state in URL query parameters Use timeline-specific query parameters so timeline controls do not conflict with v1.1 entity browsing controls. Suggested query parameters: ```txt timelineSearch timelineDateStatus timelineParticipantStatus ``` Optional future parameter: ```txt timelineParticipant ``` ### Add empty and no-results states Required states: - No timeline events exist yet. - Events exist, but no results match the current search/filter controls. Filtered no-results state should include a clear reset action. ### Improve control accessibility and responsive behavior - Label search and filter controls clearly. - Ensure controls are keyboard reachable. - Use visible focus states. - Use semantic buttons for reset actions. - Keep controls usable on mobile/narrow layouts. - Include result count/status text where helpful. --- ## Acceptance Criteria - [x] Users can search timeline events by title. - [x] Users can search timeline events by summary. - [x] Users can search timeline events by description. - [x] Users can search timeline events by participant data where available. - [x] Search is case-insensitive. - [x] Search ignores extra leading/trailing whitespace. - [x] Clearing search restores the full timeline list. - [x] Users can filter timeline events by date/sort status. - [x] Users can filter timeline events by participant status. - [x] Search and filters combine correctly. - [x] Chronological ordering remains stable after searching/filtering. - [x] Timeline search/filter state is reflected in the URL. - [x] Refreshing the page preserves active timeline controls. - [x] Browser back/forward behavior remains predictable. - [x] Timeline query parameters do not conflict with entity query parameters from v1.1. - [x] Empty timeline state explains when no events exist yet. - [x] Filtered no-results state explains when controls are hiding results. - [x] Filtered no-results state includes a clear reset action. - [x] Search, filter, and reset controls have accessible labels. - [x] Controls are keyboard reachable. - [x] Controls remain usable on desktop and mobile. --- ## Final Verification Checklist - [x] Open a world timeline with multiple events. - [x] Search by event title. - [x] Search by event summary. - [x] Search by event description. - [x] Search by participant name if participant data is available. - [x] Confirm clearing search restores all events. - [x] Apply date/sort status filter. - [x] Apply participant status filter. - [x] Combine search and filters. - [x] Confirm chronological order remains stable after filtering. - [x] Confirm timeline query parameters update in the URL. - [x] Refresh with active search/filter state. - [x] Confirm active search/filter state persists after refresh. - [x] Use browser back/forward with timeline query state. - [x] Use the reset action. - [x] Confirm reset clears timeline controls and restores results. - [x] Confirm no-results state appears when expected. - [x] Confirm empty state appears for a world with no events. - [x] Test keyboard navigation. - [x] Confirm visible focus states. - [x] Test mobile/narrow layout. - [x] Confirm no major console errors appear. --- Out of Scope - Full participant display polish. - Relationship graph work. - World import/export. - Public world sharing. - Advanced fuzzy timeline search. - Saved timeline views. - Fictional calendar systems. - Timeline eras. - Drag-and-drop ordering.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
foravo/milestone-proof-2-20260519050439#10
No description provided.