-
Notifications
You must be signed in to change notification settings - Fork 13
feat: Project Milestones – CLI CRUD #18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
raegislabs
wants to merge
10
commits into
dorkitude:master
Choose a base branch
from
raegislabs:pr/project-milestones-crud
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
feat: Project Milestones – CLI CRUD #18
raegislabs
wants to merge
10
commits into
dorkitude:master
from
raegislabs:pr/project-milestones-crud
Conversation
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
Add --project flag to issue create and update commands to enable project assignment/removal from the CLI without switching to Linear UI. Features: - Add --project flag accepting project UUID or 'unassigned' - UUID format validation before API calls - Improved error messages for invalid projects - Project display in all output formats (table, plaintext, JSON) Technical changes: - cmd/issue.go: Flag registration, input building, error handling - pkg/api/queries.go: GraphQL mutations include project field - cmd/*_test.go: Unit tests for flag parsing and validation All acceptance criteria tested and passing. Story: 1.1 - Issue-Project Assignment Status: review → in-progress (addressing review feedback)
Story completed for personal use and testing. Will consider contributing upstream PR after thorough testing period.
- Add CreateProject() and ArchiveProject() API methods - Implement project create command with validation - Implement project archive command with name output - Add comprehensive tests for API and CLI - Enhanced GetTeam to support key lookup with ID fallback - All acceptance criteria met (AC #1-dorkitude#7) Closes Story 1.2 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
…t & Creation/Archival
This commit implements comprehensive project update functionality and enhances display of project information in list and detail views. ## What's New **Project Update Command:** - Added `linctl project update PROJECT-UUID` command - Multi-field update support: name, description, state, priority - Partial update pattern using cmd.Flags().Changed() - Comprehensive validation for state and priority values - Clear error messages when no fields provided or invalid values **Enhanced Display:** - project list: Added State and Priority columns - project get: Shows state, priority, initiatives, labels, description - All output formats supported: table, JSON, plaintext **API Client:** - Added UpdateProject() method with GraphQL mutation - Enhanced GetProject query to include initiatives, labels - Enhanced GetProjects query to include priority field - Fixed initiatives field structure (connection type, not singular) ## Technical Details **Validation:** - State: planned, started, paused, completed, canceled - Priority: 0-4 (None, Urgent, High, Normal, Low) **Architecture:** - Dependency injection pattern maintained (projectAPI interface) - Flag change detection for partial updates - Mock updated for testing ## Test Results ✅ 10/11 acceptance criteria passing ❌ AC 3.2 (shortSummary update) - Linear API limitation **Tested:** - Single/multi-field updates - Input validation (state, priority) - Error handling - Enhanced display in all formats - Unit tests pass ## Known Limitations Linear's ProjectUpdateInput does NOT support shortSummary field. This is an API limitation, not an implementation issue. ## Files Modified - pkg/api/queries.go: UpdateProject method, enhanced queries, Initiatives type - cmd/project.go: projectUpdateCmd, enhanced display, updated interface - cmd/project_cmd_test.go: Mock UpdateProject method - docs-bmad/*: Story completion and status tracking 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
…mands) and reset docs-bmad to upstream baseline
memyselfandm
pushed a commit
to memyselfandm/linctl
that referenced
this pull request
Dec 7, 2025
|
would love to see this hit main |
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.
Dependencies
Summary
Adds first‑class Project Milestones management to linctl with complete CLI coverage:
milestone create/list/get/update/deleteMotivation
Project managers need to plan and track delivery against milestones from the terminal. Prior PRs enabled project creation, updates, and richer display, but there was no way to manage project‑scoped milestones via CLI.
Changes
New Features
linctl milestone create --project <id> --name <name> [--target-date YYYY-MM-DD] [--description <text>]linctl milestone list <project-id> [--include-archived]linctl milestone get <milestone-id>linctl milestone update <milestone-id> [--name <name>] [--target-date <date>] [--description <text>]linctl milestone delete <milestone-id>Implementation Details
pkg/api/queries.goProjectMilestoneandProjectMilestonestypesListProjectMilestones,GetProjectMilestone,CreateProjectMilestone,UpdateProjectMilestone,DeleteProjectMilestonecmd/milestone.gocmd/milestone_test.goUsage Examples
Validation
YYYY‑MM‑DD(explicit error if invalid)--projectand--name--name,--description,--target-dateTesting
Unit Tests
Smoke/Build
go test ./...passesmake fmtappliedBreaking Changes
None – all changes are additive.
Architecture Notes
milestoneAPIinterface)cmd.Flags().Changed()for partial updates (send only changed fields)Checklist
Contributor Checklist (Contributing.md)
make depsas neededmake fmtappliedmake testpasses (read‑only smoke tests)