Skip to content

Conversation

@sriramveeraghanta
Copy link
Member

@sriramveeraghanta sriramveeraghanta commented Jan 22, 2026

Description

plane/models/milestones.py

  • Changed name → title
  • Removed description field from all models
  • Removed non-existent fields: start_date, status, lead, members, view_props, sort_order, logo_props, archived_at, issue counts
  • Simplified MilestoneWorkItem model

plane/api/milestones.py

  • Added from future import annotations to fix type hint issue
  • Removed trailing slashes from endpoints (base_resource adds them)
  • Removed list_archived, archive, unarchive methods
  • Changed remove_work_item → remove_work_items for bulk operations

tests/unit/test_milestones.py & tests/scripts/test_milestones.py

  • Updated to use title instead of name
  • Removed description from test data
  • Removed archive/unarchive tests
  • Added EOF handling for non-interactive runs

Type of Change

  • Feature (non-breaking change which adds functionality)

Summary by CodeRabbit

  • New Features

    • Added Milestones API support to the SDK, enabling users to create, retrieve, update, and delete milestones within projects.
    • Users can now manage work items associated with milestones, including adding and removing items.
  • Tests

    • Added comprehensive test coverage for milestone functionality.

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 22, 2026

📝 Walkthrough

Walkthrough

This change introduces a new Milestones API module for the Plane SDK, including a dedicated API client class with full CRUD operations, seven Pydantic data models for request/response serialization, integration into the main PlaneClient, and comprehensive test coverage through both unit tests and an end-to-end test script.

Changes

Cohort / File(s) Summary
Milestone API and Models
plane/api/milestones.py, plane/models/milestones.py
New Milestones API client extending BaseResource with create, retrieve, update, delete, list methods, and work item management (add/remove/list). Seven new Pydantic models defined: Milestone, MilestoneLite, CreateMilestone, UpdateMilestone, MilestoneWorkItem, PaginatedMilestoneResponse, PaginatedMilestoneWorkItemResponse.
Client Integration
plane/__init__.py, plane/client/plane_client.py
Milestones module imported and exposed in public API; PlaneClient initialized with self.milestones attribute.
Configuration
.gitignore
Adds test.py entry; adjusts newline formatting.
Test Coverage
tests/scripts/test_milestones.py, tests/unit/test_milestones.py
End-to-end test script covering project/work item/milestone creation, associations, listing, updates, and cleanup flow. Unit test module with smoke and CRUD validation for list, create, retrieve, update, and list work items operations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

🐰 A milestone feature hops into view,
With models, APIs, and tests shiny new,
CRUD operations dance through the code,
Mapping the path on the project road,
Full coverage ahead—let's celebrate! 🎯🌟

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: update milestone crud operations' accurately describes the main change: adding comprehensive CRUD operations for milestones across models, API client, and tests.
Docstring Coverage ✅ Passed Docstring coverage is 90.48% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

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.

2 participants