🔍 feat(maniphest): Enhance task search with free-text and flexible filtering #109
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.
Fixes #107
This PR introduces breaking changes to the
phabfive maniphest searchcommand syntax to enable free-text search functionality.Migration Guide
OLD SYNTAX (before this change):
NEW SYNTAX (current):
Quick Migration:
phabfive maniphest search "ProjectName"phabfive maniphest search --tag "ProjectName"--tagChanges
Core Functionality
Free-Text Search
descriptions - Primary positional argument:
[<text_query>]is nowoptional and used for free-text search - API integration: Uses
Phabricator's
queryconstraint for searching - Case-insensitive:Tag-Based Project Filtering
--tagoption: Project/workboard filtering moved to explicitflag - Backward compatible patterns: All wildcard (
*,prefix*,*suffix) and AND/OR logic (ProjectA+ProjectB,ProjectA,ProjectB) patterns preservedprojectparameter renamed totagValidation
query, --tag, date filters, column filters, priority filters, or status filters)
Command-Line Interface
tag-based search - Comprehensive documentation: 70+ lines of
examples and usage patterns - Clear migration path: Examples section
Examples
Basic Usage
Advanced Filtering
Validation Examples
Technical Details
API Changes
maniphest.py:
task_search()signature:project→text_query+tagqueryconstraint for free-text searchtagparametercli.py:
<text_query>--tag=PATTERNoptionBackward Compatibility
phabfive maniphest search "Project"nolonger works - Preserved: All wildcard patterns and AND/OR logic
work identically with
--tag- Migration required: Scripts mustPerformance Considerations
prevents expensive queries - Efficient API usage: Text search uses
Phabricator's built-in indexing - Combined filters: Multiple
Documentation Updates
Comprehensive Documentation
docs/maniphest-cli.md:
README.md:
CHANGELOG.md:
Test Coverage
Benefits
feature (issue Support text query for maniphest search #107) 2. More Natural Search: Primary use case is now
searching by content, not just projects 3. Flexible Filtering:
Combine text search with project tags and other filters 4. Prevents
Accidents: Validation ensures users don't accidentally query all tasks
Rationale
This breaking change enables a highly-requested feature (free-text
search in task titles/descriptions) while maintaining all existing
project filtering capabilities. The positional argument is better suited
for the more common use case (searching by text) rather than the less
common case (filtering by project). Project filtering is now more
explicit with the
--tagflag.Sample Output
Free-Text Search
Tag-Based Search
Combined Search