🔍 feat(maniphest): Enhance task search with free-text and flexible filtering#109
Merged
🔍 feat(maniphest): Enhance task search with free-text and flexible filtering#109
Conversation
…ltering - Add support for free-text search in task titles and descriptions - Make project/tag filtering optional and more flexible - Require at least one search filter to prevent overly broad searches - Update CLI usage, help text, and documentation - Add validation to prevent empty searches - Improve error messaging for search scenarios
e705b1c to
c41e854
Compare
Implement comprehensive test cases for task_search method: - Add mocking for Phabricator API interactions - Cover scenarios with text query, tag filtering - Test date-based filtering - Validate wildcard and complex tag logic - Remove placeholder tests with actual implementation Improves test reliability and ensures correct search behavior across different input combinations.
914381f to
a56f1ac
Compare
holmboe
reviewed
Nov 21, 2025
Refactor error handling in maniphest search to raise a PhabfiveConfigException instead of logging errors. Add more descriptive docstrings to exceptions. Remove redundant comments and simplify code logic.
92732cb to
cb3ae67
Compare
holmboe
approved these changes
Nov 21, 2025
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.
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