Skip to content

release: 1.2.0#4

Merged
backslash-ux merged 7 commits intomainfrom
feat/issue-enhancements
Apr 2, 2026
Merged

release: 1.2.0#4
backslash-ux merged 7 commits intomainfrom
feat/issue-enhancements

Conversation

@backslash-ux
Copy link
Copy Markdown
Owner

@backslash-ux backslash-ux commented Apr 2, 2026

Summary

Release Plane CLI 1.2.0 with new analytics and reporting commands, richer issue field support, expanded filtering and lifecycle operations, and improved usability for both humans and automation workflows.

User-facing outcomes include a new plane stats command, more complete issue data in CLI/API output, new issue and cycle management flags, archived projects excluded by default in most flows, and updated documentation for both standard CLI and AI-agent usage.

Related Issue

No public tracking item was provided for this release summary.
This PR bundles a coordinated release update across commands, output formats, filtering behavior, and documentation.

Changes

  • Added plane stats for client-side issue aggregation by state group, priority, assignee, and period, with support for date windows, cycle/module/assignee filters, workspace-wide aggregation, and human-readable/JSON/XML output.
  • Expanded issue output for plane issue get and plane issues list --json to include start_date, target_date, completed_at, created_at, updated_at, estimate_point, and full label objects, with richer API expansion for state and labels.
  • Added new issue create/update flags: --start-date, --target-date, --due-date, --estimate, --cycle, --module, and repeated --label.
  • Added new issue list filters including --no-assignee, --stale <days>, and --cycle <name|UUID>.
  • Added cycle lifecycle commands: plane cycles create, plane cycles update, and plane cycles delete, plus stats and computed status in plane cycles list.
  • Changed project discovery and selection behavior to exclude archived projects by default, with --include-archived available to opt in.
  • Updated README.md and SKILL.md to document new commands, flags, output modes, and command-ordering behavior.
  • Refactored issue link, comments, and worklogs subcommands into a separate file to keep issue.ts maintainable.
  • Bumped package version to 1.2.0.

Validation

  • bun run typecheck
  • relevant bun test coverage for the touched area
  • bun run check:all if shared command behavior, schemas, or output changed

Docs

  • README.md updated if CLI usage changed
  • SKILL.md updated if AI-agent usage changed
  • CHANGELOG.md updated if there is a notable user-facing change

Risks Or Follow-Ups

  • Default exclusion of archived projects may change existing scripts or user expectations unless --include-archived is added explicitly where needed.
  • New JSON/XML output fields may affect downstream parsers that assume older response shapes.
  • Workspace stats intentionally skip inaccessible projects, so users may need clearer messaging or follow-up docs around partial aggregation behavior.
  • Consider adding a dedicated release note or changelog entry if this version is intended as a notable user-facing milestone.

Summary by CodeRabbit

  • New Features

    • Added plane stats command for issue analytics with date filtering, cycle/module scoping, and workspace aggregation.
    • Enhanced cycle management with create, update, and delete operations.
    • Added issue links, comments, and worklog management subcommands.
    • Expanded issue filtering with --no-assignee, --stale, and --cycle options.
    • Extended issue create/update with date fields, estimates, and cycle/module assignment.
  • Changed

    • Archived projects now excluded by default; use --include-archived to include them.
    • Issue field visibility expanded to include labels, timestamps, and estimates.

@backslash-ux backslash-ux merged commit f0abdf9 into main Apr 2, 2026
3 checks passed
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 2, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 1ab66cb2-1b26-45b6-9259-9dd677a8c701

📥 Commits

Reviewing files that changed from the base of the PR and between 3f7d3b2 and 3bfd093.

📒 Files selected for processing (26)
  • CHANGELOG.md
  • README.md
  • SKILL.md
  • package.json
  • src/api.ts
  • src/app.ts
  • src/commands/cycles.ts
  • src/commands/init.ts
  • src/commands/issue-sub.ts
  • src/commands/issue.ts
  • src/commands/issues.ts
  • src/commands/projects.ts
  • src/commands/stats.ts
  • src/config.ts
  • src/format.ts
  • src/issue-support.ts
  • src/resolve.ts
  • tests/cycles-extended.test.ts
  • tests/issue-commands.test.ts
  • tests/json-output.test.ts
  • tests/project-features.test.ts
  • tests/projects.test.ts
  • tests/resolve.test.ts
  • tests/schemas.test.ts
  • tests/stats.test.ts
  • tests/xml-output.test.ts

📝 Walkthrough

Walkthrough

Version 1.2.0 release introducing new plane stats analytics command with workspace aggregation, expanded plane cycles subcommands (create/update/delete), extracted issue subcommands (links/comments/worklogs), enhanced issue create/update with dates/estimates/cycle-module assignment and multi-label support, new issue filters (--no-assignee/--stale/--cycle), project archival with --include-archived flag, and API label expansion.

Changes

Cohort / File(s) Summary
Documentation & Metadata
CHANGELOG.md, README.md, SKILL.md, package.json
Updated version to 1.2.0, documented new stats command, cycles subcommands, issue filters, date/estimate fields, multi-label support, archived project handling, and workspace aggregation behavior.
API & Query Expansion
src/api.ts
Extended issue list/get requests to append expand=state,labels instead of just expand=state for broader field visibility.
Core Command Registration
src/app.ts
Registered new stats command, updated help text for issue listing filters, cycles subcommands, and archived project default behavior; bumped version to 1.2.0.
Schema & Config Extensions
src/config.ts, src/issue-support.ts
Added IssueLabelSchema, PaginatedIssuesResponseSchema, and statistics interfaces (StatsPeriod, StatsResult, WorkspaceStatsResult). Extended IssueSchema with date/timestamp and labels fields. Extended CycleSchema with issue counts. Added archived_at to ProjectSchema and isProjectArchived helper. Updated IssueUpdatePayload/IssueCreatePayload to use labels array instead of label_ids.
Project & Resolution Utilities
src/resolve.ts, src/projects.ts
Refactored project caching to support includeArchived filtering, added listProjects and resolveCycle functions. Updated projects list to exclude archived projects by default with --include-archived flag; marked archived projects in output.
Initialization
src/init.ts
Added --include-archived option to filter archived projects in project selection, marked archived projects in interactive lists, improved estimate fetching robustness with Effect.either.
Cycle Management
src/commands/cycles.ts
Added create, update, delete subcommands with YYYY-MM-DD date validation. Extended list to compute cycle status from dates and display issue progress ([completed/total]).
Issue Subcommands
src/commands/issue-sub.ts
New module extracting issue link, comment, and worklog subcommands with JSON/XML output support and HTML sanitization for comments.
Issue Operations
src/commands/issue.ts
Refactored subcommands to use issue-sub module. Extended create/update to accept repeatable --label, --start-date, --target-date, --estimate, --cycle, --module; added cycle/module assignment POSTs with feature gating.
Issue Listing Filters
src/commands/issues.ts
Added --no-assignee, --stale N, and --cycle filters with corresponding client-side filtering logic.
New Stats Command
src/commands/stats.ts
Implemented comprehensive plane stats command supporting project and workspace aggregation, date ranges (--since/--until), cycle/module/assignee filtering, issue counting by state/priority/dates, and JSON/XML output.
Output Formatting
src/format.ts
Added formatStats for rendering project and workspace statistics with period, counts, priority breakdown, and skipped projects reporting.
Test Coverage
tests/*
Added/extended tests for cycles (create/update/delete), issue subcommands, stats command (aggregation, workspace, filtering, output modes), project archival, initialization, and resolved cycle lookup.

Sequence Diagram(s)

sequenceDiagram
    actor User
    participant CLI as plane stats<br/>(workspace)
    participant StatsHandler as statsHandler
    participant Resolve as resolve.ts<br/>(listProjects)
    participant API as Plane API
    participant Aggregate as aggregateStats
    participant Format as formatStats
    participant Output as console.log

    User->>CLI: plane stats workspace [--since] [--until] [--include-archived]
    CLI->>StatsHandler: statsHandler() with options
    StatsHandler->>Resolve: listProjects({includeArchived})
    Resolve->>API: GET /projects/
    API-->>Resolve: projects list
    Resolve-->>StatsHandler: ReadonlyArray<Project>
    
    loop for each project
        StatsHandler->>API: GET /issues/ [filtered]
        API-->>StatsHandler: paginated issues
        StatsHandler->>Aggregate: aggregateStats(issues, period)
        Aggregate-->>StatsHandler: StatsResult
    end
    
    note over StatsHandler: Skip projects with 403
    StatsHandler->>Format: formatStats(WorkspaceStatsResult)
    Format-->>StatsHandler: formatted text
    StatsHandler->>Output: console.log(formatted)
    Output-->>User: stats table with<br/>totals, priorities,<br/>state groups,<br/>skipped projects
Loading
sequenceDiagram
    actor User
    participant CLI as plane cycles
    participant Handler as cyclesCreateHandler/<br/>cyclesUpdateHandler
    participant Validate as validateDate
    participant Resolve as resolveCycle
    participant API as Plane API
    participant Schema as CycleSchema
    participant Output as console.log

    User->>CLI: plane cycles create [--start-date] [--end-date]
    CLI->>Handler: cyclesCreateHandler({...options})
    
    alt start/end dates provided
        Handler->>Validate: validateDate(YYYY-MM-DD)
        alt invalid format or calendar
            Validate-->>Handler: Error
            Handler-->>Output: command fails
        else valid
            Validate-->>Handler: Date string
        end
    end
    
    Handler->>API: POST /cycles/ with name, dates
    API-->>Schema: cycle response
    Schema-->>Handler: Cycle object
    Handler->>Output: console.log("Created cycle: ...")
    Output-->>User: cycle details

    User->>CLI: plane cycles update <name-or-id> [--start-date]
    CLI->>Handler: cyclesUpdateHandler({nameOrId, ...options})
    Handler->>Resolve: resolveCycle(projectId, nameOrId)
    Resolve->>API: GET /cycles/
    API-->>Resolve: cycles list
    Resolve-->>Handler: cycle id (matched by id or name)
    
    alt has updates
        Handler->>API: PATCH /cycles/{id}/ with body
        API-->>Handler: updated cycle
        Handler->>Output: console.log("Updated cycle: ...")
    else no updates
        Handler->>Output: console.log("Nothing to update")
    end
    Output-->>User: result
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

🐰 A version bump and features bloom,
Stats command lights the data room,
Cycles craft with dates so neat,
Labels multiples, a feature sweet—
Archived whispers, filtered right,
Plane CLI takes fuller flight!

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/issue-enhancements

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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