feat(frontend): add client-side text search for tasks#94
Open
prodriguezxyz wants to merge 4 commits intoDCsunset:masterfrom
Open
feat(frontend): add client-side text search for tasks#94prodriguezxyz wants to merge 4 commits intoDCsunset:masterfrom
prodriguezxyz wants to merge 4 commits intoDCsunset:masterfrom
Conversation
Adds a case-insensitive search input in the TaskList toolbar that filters the current status tab by matching against description, project, tags, and annotations. Clearing the field or switching status preserves the expected no-filter view. Selection is cleared when the search term changes to avoid acting on hidden rows. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Moves the search input from the data-table toolbar into the status tabs row, right-aligned via v-spacer. Uses outlined + dense style with a placeholder for clearer affordance, replacing the thin underline that blended into the surrounding whitespace. Groups search semantically with the status filter it operates on. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Replaces the always-visible search field with a magnifier icon that expands into the input when clicked, pressing '/' from anywhere on the page, or shrinks back when Escape is pressed or the input loses focus while empty. Matches the Todoist/Notion affordance and keeps the tabs row uncluttered when search is not in use. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Extends the global keydown handler so Ctrl+K (and Cmd+K on macOS) also expands the search input, matching the Todoist / Slack / Notion palette convention. The '/' shortcut keeps its input-aware skip, but Ctrl+K fires anywhere — even from inside text fields — since modifier combos don't collide with typing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Relates to #71.
This PR adds a lightweight text search field to the task list, covering the common "find tasks mentioning X" use case.
What's included
description,project,tags, andannotations./— focus search (ignored when typing in other inputs, so it doesn't interfere with the new-task dialog, etc.)Ctrl+K/Cmd+K— focus search from anywhere, including inside inputsEsc— close and clearpending,waiting,completed,deleted,recurring).What's deliberately out of scope
I wanted to keep this PR narrow and leave room for discussion on the shape of more advanced modes. Happy to follow up with any of these if you'd prefer them in this PR instead:
task /expression/syntax (the example in Search engine #71). Could be added behind a.*toggle inside the input to keep the default UX accessible to non-regex users.project:Home status:pending due.before:eow) passed through to the backend viatask <filter>. This would require a backend endpoint and moves search off the client.Notes on the approach
store.state.taskson navigation, so filtering happens against the in-memory array — instant response, works offline.Context on the issue
Issue #71 has been open since 2023-05-29 with no prior PR addressing it, which is why I'm opening this directly rather than starting a discussion on the issue first. If you'd prefer a different shape (regex by default, CLI passthrough, different UI placement), I'm happy to iterate — just let me know and I'll rework the branch.