Skip to content

feat: ✨ Implement azdo boards work-item list command - #197

Merged
tmeckel merged 20 commits into
masterfrom
tmeckel/issue136
Jun 3, 2026
Merged

feat: ✨ Implement azdo boards work-item list command#197
tmeckel merged 20 commits into
masterfrom
tmeckel/issue136

Conversation

@tmeckel

@tmeckel tmeckel commented Jun 3, 2026

Copy link
Copy Markdown
Owner

Closes: #136

tmeckel added 20 commits January 6, 2026 10:12
Add a new `workitem list` subcommand to the boards command group for querying and displaying work items with extensive filtering capabilities.

The command supports filtering by:
- Status (open, closed, resolved, all)
- Work item types
- Assigned to (including @me alias)
- Severity classification
- Priority
- Area and iteration paths (with subtree support)
- Result limiting
Add  documentation for the new `azdo boards work-item` command and its `list` subcommand. Includes command reference, examples, and integration with the main boards documentation and help reference.
…ation

The standard library's slices.CompactFunc was removed in favor of a custom uniqueByEq function because CompactFunc only removes consecutive matching elements

This change:

- Removes the import of "slices" package
- Implements a manual deduplication algorithm that preserves order
- Maintains the same public API for Unique, UniqueComparable, and UniqueFunc
- Adds comprehensive test coverage for all unique functionality

The new implementation handles empty and nil slices consistently and provides the same functionality without external dependencies.
Extract validation and rendering helpers and simplify state and identity resolution to reduce duplication and unnecessary client creation. Use a map-based approach for requested state categories and append-only helpers for collecting state names. Defer creating Extensions/Identity clients until an identity lookup is required. Use types.Unique for de-duplication and ensure WIQL Top is only set when a positive --limit is provided.

BREAKING CHANGE: default value for --limit changed from 50 to 0 (no
limit). WIQL Top is only applied when --limit > 0.
Add comprehensive debug logging to the git-credential helper using zap to aid troubleshooting of authentication flows. Generate an artificial username when the parsed input does not provide one, and output it instead of the previously hardcoded 'azdo' value.
* Add pre-configured StringBuilder variables for common generation patterns: StringBuilderString, StringBuilderPassword, and StringBuilderNumberedString.
* Introduce MustGenerate as a convenience wrapper that panics on error for cases where generation failure indicates a programming error.
Extend the work item list command with advanced query capabilities:
- Filter by exact workflow state (--state)
- Filter by creator identity (--created-by, --authored-by alias)
- Filter by tags (--tag)
- Filter by changed and created dates (--changed-after, --created-after)
- Custom sorting (--sort, --order)

Update WIQL query builder to combine state categories with exact states, apply date bounds, tag predicates, and creator filters.
Add test coverage for work item list filtering and sorting, including sort resolution, date bound parsing, tag and state predicates, created-by identity resolution, and new flag shortcuts.
Modernize the codebase by replacing interface{} with the any alias across variable groups, PR, project, repo, security, and service endpoint packages. Also fixes import ordering and indentation in service endpoint and utility files where encountered.
Add .mise.toml to pin development tool versions and source environment variables from .env. Remove goconst and commented gocyclo from enabled linters in .golangci.yml.
* Replace the separate --sort and --order flags with a unified --sort flag that accepts field:direction syntax. This enables per-field sort direction control instead of a single global direction.
* Change the default limit from 0 to 50 and set ChangedDate DESC as the implicit sort order when no sorting is specified.
@tmeckel tmeckel added the enhancement New feature or request label Jun 3, 2026
@tmeckel tmeckel self-assigned this Jun 3, 2026
@tmeckel
tmeckel merged commit 5405029 into master Jun 3, 2026
1 check passed
@tmeckel
tmeckel deleted the tmeckel/issue136 branch June 3, 2026 20:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: Implement azdo boards work-item list command

1 participant