Skip to content

Conversation

@raegislabs
Copy link

Story 1.3: Project Updates & Enhanced Display

This PR implements comprehensive project update functionality and enhances display of project information in list and detail views.

What's New

Project Update Command:

  • linctl project update PROJECT-UUID with multi-field support
  • ✅ Partial updates: name, description, state, priority
  • ✅ Comprehensive validation (state values, priority 0-4 range)
  • ✅ Flag change detection using cmd.Flags().Changed() pattern

Enhanced Display:

  • ✅ project list: State and Priority columns added
  • ✅ project get: Shows state, priority, initiatives, labels, description
  • ✅ All output formats: table, JSON, plaintext

API Improvements:

  • ✅ Added UpdateProject() method with GraphQL mutation
  • ✅ Enhanced GetProject query (initiatives, labels, priority)
  • ✅ Enhanced GetProjects query (priority field)
  • ✅ Fixed initiatives field structure (connection type)

Test Results

Acceptance Criteria: 10/11 passing

✅ AC #1: Single field updates (name, state, priority, description)
✅ AC #2: State validation
✅ AC #3: Multi-field updates
✅ AC #3.1: Description updates
❌ AC #3.2: shortSummary updates - Linear API limitation
✅ AC #4: Error handling (no fields provided)
✅ AC #5: Invalid state validation
✅ AC #6: Invalid priority validation
✅ AC #7: Enhanced project get display
✅ AC #8: Enhanced project list display
✅ AC #9: All output formats work

Unit Tests:

go test ./...
✓ All packages pass

Manual Testing:
Tested against live Linear API with comprehensive scenarios.

Known Limitations

shortSummary field: Linear's ProjectUpdateInput does NOT support this field. This is a Linear API limitation, not an implementation issue.

Files Modified

  • pkg/api/queries.go: UpdateProject method, enhanced queries, Initiatives type
  • cmd/project.go: projectUpdateCmd, enhanced display, interface updates
  • cmd/project_cmd_test.go: Mock implementation
  • docs-bmad/*: Story completion tracking

Breaking Changes

None - all changes are additive.

Migration Notes

Projects now display State and Priority columns in list view. This may affect scripts parsing table output.

🤖 Generated with Claude Code

raegislabs and others added 5 commits November 6, 2025 13:04
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>
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>
@raegislabs raegislabs closed this Nov 6, 2025
@raegislabs raegislabs deleted the feature/project-updates-display branch November 6, 2025 07:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant