Skip to content

v0.2.1 — Fix filter 400 errors and state name resolution

Choose a tag to compare

@6missedcalls 6missedcalls released this 27 Feb 07:19
· 9 commits to main since this release

Bug Fixes

  • Fix HTTP 400 on all filtered queries — Linear's API uses eqIgnoreCase, not eqCaseInsensitive. All 7 occurrences across issue and project filters corrected.
  • Fix --me / --assignee @me — Now uses Linear's built-in isMe comparator instead of resolving viewer ID to a display name. --assignee @me and --me are now equivalent.
  • Fix issues move/update/create/bulk --state "In Progress" — State names are now resolved to UUIDs via the team's workflow states. Previously, passing a human-readable name like "In Progress" caused an API validation error.

New

  • resolve_state_id() in teams_api — Accepts a state name or UUID, resolves names case-insensitively against the team's workflow states. Returns UUID as-is if already a UUID.

Tests

  • 8 new filter builder tests verifying exact JSON structure for all filter types (eqIgnoreCase, isMe, labels, project, creator, project status, project lead).
  • 216/218 tests passing (2 pre-existing CLI help text failures).

Files Changed

File Change
src/core/filter.cpp eqCaseInsensitive → eqIgnoreCase, @me detection
src/modules/issues/commands.cpp Normalize @me, resolve state names in create/update/move/bulk
src/modules/teams/api.h Add resolve_state_id() declaration
src/modules/teams/api.cpp Add resolve_state_id() implementation
tests/test_filter_builder.cpp 8 new tests
CMakeLists.txt Version bump to 0.2.1

Full Changelog: v0.2.0...v0.2.1