Gap
Plane exposes start_date/target_date on work items, but the CLI has no flags for them. Setting a date today means dropping to raw API calls: resolve the work item UUID, PATCH the REST endpoint by hand, and quote the API key yourself — a five-step shell dance for a field the SDK models already carry.
Silent-failure trap
The API silently ignores mis-spelled or unsupported fields with a 200 OK. Asking for due_date (a plausible guess) is accepted and dropped — the response echoes the record unchanged. So a naive implementation can report success while never writing anything.
Proposal
wi create --start-date YYYY-MM-DD --target-date YYYY-MM-DD
wi update <issue> --start-date ... --target-date ...
- Validate the format client-side (reject
2026-9-5, tomorrow, etc. with exit code 5 before any network call).
- After
wi update, compare the echoed start_date/target_date against what was requested and raise APIError when the server did not apply it (same verify-the-write pattern already used elsewhere per ADR-0007).
Happy to open a PR.
Gap
Plane exposes
start_date/target_dateon work items, but the CLI has no flags for them. Setting a date today means dropping to raw API calls: resolve the work item UUID, PATCH the REST endpoint by hand, and quote the API key yourself — a five-step shell dance for a field the SDK models already carry.Silent-failure trap
The API silently ignores mis-spelled or unsupported fields with a
200 OK. Asking fordue_date(a plausible guess) is accepted and dropped — the response echoes the record unchanged. So a naive implementation can report success while never writing anything.Proposal
wi create --start-date YYYY-MM-DD --target-date YYYY-MM-DDwi update <issue> --start-date ... --target-date ...2026-9-5,tomorrow, etc. with exit code 5 before any network call).wi update, compare the echoedstart_date/target_dateagainst what was requested and raiseAPIErrorwhen the server did not apply it (same verify-the-write pattern already used elsewhere per ADR-0007).Happy to open a PR.