The web app’s events screen provides two complementary tools for narrowing down a long list of events: a live search box that filters by title and a row of category tabs that restrict events to a specific type. Both controls work together — only events that satisfy both the active category tab and the current search query are shown at the same time.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/PunctuOwlity/llms.txt
Use this file to discover all available pages before exploring further.
Live Search
A search input sits at the top of the events screen, above the category tabs. As you type, the grid updates immediately on every keystroke — there is no submit button to press.- Element ID:
#eventSearch(an<input type="search">) - Trigger: the native
inputevent, fired on every character change - Match logic: the query is trimmed and lowercased, then checked against the lowercased event title using
String.includes() - Scope: title only — date, time, and category are not searched
Category Tabs
Below the search input, four tab buttons let you filter events by their assigned category. Clicking a tab highlights it as active and re-renders the grid.| Tab label | data-category value | Shows |
|---|---|---|
| All Events | all | Every event regardless of category |
| Birthdays | birthday | Events categorised as birthday |
| Appointments | appointment | Events categorised as appointment |
| Trips | trip | Events categorised as trip |
active. Switching tabs resets only the category filter — any text typed into the search box remains in place and continues to apply.
Combined Filtering
The category tab and the search query are evaluated together with a logical AND: an event must match both conditions to appear in the grid. For example, if the Appointments tab is active and you type"den", the grid shows only appointment-category events whose titles contain the substring "den" (such as "Dentist" or "Dental Checkup"). Events in other categories are excluded even if their titles also contain "den".
Empty State
When no events match the combined filter, the events grid displays a plain paragraph instead of cards:Auto-Category Detection Reference
Categories are assigned automatically when an event is saved, based on keywords in the title. Understanding these rules helps you predict which tab an event will appear under.| Title pattern (case-insensitive) | Category assigned |
|---|---|
Contains birthday | birthday |
Matches /(appointment|dentist|dental|doctor)/ | appointment |
Matches /(trip|travel|vacation)/ | trip |
| No match | general |
general appear only under the All Events tab, since there is no dedicated General tab. To ensure an event surfaces under a specific tab, include one of the recognised keywords in its title, or rely on the category field if you are importing data directly.
The Android version of PunctuOwlity does not include search or category-filter functionality in the current source.
MainActivity calls db.getAllEvents() and renders every event unconditionally — no search input or tab navigation is present in the Android UI.