1181 Commits

Author SHA1 Message Date
Ralph Khreish
07e3e666d3 fix: target task-master-ai package in changeset per review feedback 2026-01-26 17:09:01 +01:00
Ralph Khreish
c77e044b9f fix: resolve build issues and add missing tests
- Move validateMcpMetadata to @tm/mcp shared utils (TypeScript)
- Remove duplicate implementation from mcp-server/src/tools/utils.js
- Add comprehensive unit tests for validateMcpMetadata function
- Fix dependencies type in metadata-preservation test (number → string)
- Fix TypeScript union type handling in test assertions
2026-01-26 17:07:32 +01:00
Cedric Hurst
dada39128e fix: pass useResearch and metadata to API storage bridge
- Add useResearch and metadata to UpdateBridgeParams interface
- Pass both parameters through to tmCore.tasks.updateWithPrompt
- Update both update-task-by-id.js and update-subtask-by-id.js
- Improve error message in validateMcpMetadata to include parse error

Fixes CodeRabbit outside-diff concern about silently lost parameters.
Addresses CodeRabbit nitpick about error message detail.
2026-01-02 18:07:57 -06:00
Cedric Hurst
fdffb2b591 fix: add missing metadata destructuring and allow metadata-only updates
Critical fixes for update-subtask-by-id.js:
1. Added 'metadata' to context destructuring (was causing ReferenceError)
2. Updated prompt validation to allow metadata-only updates

Without these fixes, subtask metadata updates would fail at runtime.

Fixes Cursor Bugbot HIGH severity issues.
2026-01-02 17:58:45 -06:00
Cedric Hurst
978c89cd4c fix: merge subtask metadata instead of replacing in FileStorage
Changed from replacing metadata to merging it:
- Preserves existing metadata keys from original subtask
- Adds/overrides with new metadata keys from update
- Supports both AI updates (no metadata) and direct updates (with metadata)

Addresses CodeRabbit nitpick about metadata replacement.
2026-01-02 17:46:53 -06:00
Cedric Hurst
1dfc9859ba docs: add note about MCP test coverage approach
Clarifies that these tests focus on validation logic while end-to-end
behavior is covered by FileStorage and AI operation tests.

Addresses CodeRabbit nitpick about test structure.
2026-01-02 17:41:25 -06:00
Cedric Hurst
aedc3b9426 refactor: extract metadata validation to shared utility
- Add validateMcpMetadata() utility function in tools/utils.js
- Replace duplicated validation code in update-task.js and update-subtask.js
- Reduces code duplication and ensures consistent validation

Addresses CodeRabbit nitpick about duplicated metadata validation.
2026-01-02 17:40:42 -06:00
Cedric Hurst
6ff87cf4b9 fix: use type-coerced ID matching in FileStorage subtask metadata preservation
Use String(st.id) === String(updatedSubtask.id) instead of strict
equality to handle type mismatches (AI may return string IDs vs numeric).
Also add title-based fallback matching.

Addresses CodeRabbit duplicate comment about FileStorage ID matching.
2026-01-02 17:36:34 -06:00
Cedric Hurst
fd01e77065 fix: merge metadata in update-subtask when prompt also provided
When both prompt and metadata are provided to update-subtask, the
metadata was being ignored. Now metadata is merged after AI update,
similar to how update-task handles it.

Fixes Cursor Bugbot review comment about ignored metadata.
2026-01-02 17:34:20 -06:00
Cedric Hurst
d7df066734 style: format code after rebase 2026-01-02 17:26:29 -06:00
Cedric Hurst
eea6070355 feat: add user-defined metadata field to tasks
Add optional `metadata` field to tasks and subtasks for storing
arbitrary user-defined JSON data (external IDs, workflow data,
integration references, etc.).

Key features:
- AI-Safe: Metadata excluded from AI schemas, preserved through all operations
- MCP Support: update_task/update_subtask tools accept metadata parameter
- Safety Flag: MCP updates require TASK_MASTER_ALLOW_METADATA_UPDATES=true
- Metadata Merge: New metadata merges with existing, preserving unmodified fields

Closes #1555

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 17:26:04 -06:00
Cedric Hurst
7cba390245 fix: use type-coerced ID and title matching for subtask metadata
Replace risky position-based fallback with:
- Type-coerced ID comparison (handles string vs number)
- Title-based fallback (subtask titles are typically unique)

This prevents metadata from being assigned to wrong subtask if AI
reorders subtasks or returns IDs with type mismatches.
2026-01-02 17:25:33 -06:00
Cedric Hurst
a5f0a01b06 fix: preserve subtask metadata when AI returns modified subtasks
- Add subtask metadata preservation in FileStorage.updateTask
- Add subtask metadata preservation in legacy update-task-by-id.js
- Add test for subtask metadata preservation during AI updates

Fixes Cursor Bugbot review comment about subtask metadata loss
2026-01-02 17:25:33 -06:00
Cedric Hurst
bf19b0c2c3 style: format metadata test files and update-subtask script 2026-01-02 17:21:56 -06:00
Bryan Thompson
9a6fa1bd2a feat: Add tool annotations for improved LLM tool understanding (#1543)
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: triepod-ai <noreply@github.com>
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
Co-authored-by: triepod-ai <199543909+triepod-ai@users.noreply.github.com>
2026-01-02 12:45:28 +01:00
Ralph Khreish
1d8d72315f fix: validate AI task response before spreading object
Move validation check before object spread to properly catch null/malformed
task responses. Previously crashed with "Cannot read properties of null"
instead of the intended "Received invalid task object from AI" error.
2025-12-30 12:04:55 +01:00
Ralph Khreish
2f101cae4a chore: fix CI 2025-12-30 12:04:55 +01:00
claude[bot]
226678b93a fix: remove .default() from Zod schemas for OpenAI strict JSON schema validation
Fixes #1552

OpenAI's structured outputs API requires all properties to be in the
'required' array of JSON Schema. Zod's .default() makes fields optional,
causing codex-cli provider to fail with 'Missing dependencies' error.

Changes:
- Removed .default() from SubtaskSchema, BaseTaskSchema, UpdatedTaskSchema
- Added application-level default handling in expand-task, update-task-by-id,
  update-tasks, and parse-prd-streaming
- Ensures all schema properties are marked as required for OpenAI compatibility
- Maintains backward compatibility by applying defaults when AI doesn't provide values

Co-authored-by: Ralph Khreish <Crunchyman-ralph@users.noreply.github.com>
2025-12-30 12:04:55 +01:00
github-actions[bot]
0729635fe4 Version Packages (#1551)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
2025-12-30 12:04:55 +01:00
Ralph Khreish
98087acae9 feat: improve CLI update check with caching (#1549) 2025-12-26 22:31:17 +01:00
Ralph Khreish
6c03e694c6 Merge pull request #1547 from eyaltoledano/ralph/chore/update.from.main.dec.24 2025-12-24 13:33:02 +01:00
github-actions[bot]
db8165cb65 Merge pull request #1540 from eyaltoledano/changeset-release/main 2025-12-24 13:30:59 +01:00
Ralph Khreish
a0007a3575 feat(project-root): enhance project root detection with boundary markers (#1545) 2025-12-24 13:26:48 +01:00
Ralph Khreish
3f489d8116 chore: fix claude codes updater workflow (#1544) 2025-12-22 18:02:26 +01:00
Crunchyman-ralph
feba156067 chore: rc version bump [skip ci] 2025-12-22 09:46:30 +00:00
Momchil Dimitrov Georgevski
b817d6f9f2 Fix/vertex auth service account (#1542) 2025-12-22 10:29:49 +01:00
Ralph Khreish
fc1a79f256 fix: Add .strict() to all Zod schemas for OpenAI structured outputs compatibility (#1523)
Co-authored-by: Ralph Khreish <Crunchyman-ralph@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Fixes #1522
Fixes #1541
2025-12-22 10:19:19 +01:00
Ralph Khreish
74f9c2e27b chore: exit rc mode 2025-12-18 21:30:06 +01:00
Crunchyman-ralph
8b98472f26 chore: rc version bump [skip ci] 2025-12-18 20:19:11 +00:00
github-actions[bot]
0e6e412ed0 docs: Auto-update and format models.md 2025-12-18 20:17:27 +00:00
Ralph Khreish
a2d563991d feat(models): add Gemini 3 Flash Preview and improve model search (#1538) 2025-12-18 21:17:16 +01:00
Ralph Khreish
7340c9563e Merge pull request #1537 from eyaltoledano/ralph/chore/update.from.main.dec.18.p2 2025-12-18 21:11:55 +01:00
Ralph Khreish
68be386172 Merge remote-tracking branch 'origin/main' into ralph/chore/update.from.main.dec.18.p2 2025-12-18 20:38:07 +01:00
Eyal Toledano
38c2c08af1 feat(cli): add --watch flag to list command for real-time updates (#1526)
Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
Fixes #1526 PR review comments from CodeRabbit and changeset-bot
2025-12-18 20:11:40 +01:00
Ralph Khreish
4d1ed20345 Ralph/feat/add.auto.rules.add (#1535) 2025-12-18 20:03:40 +01:00
Ralph Khreish
73e3fe8dd3 feat(core): improve project root detection with boundary markers (#1531) 2025-12-18 18:06:39 +01:00
github-actions[bot]
f978cb8096 Merge pull request #1529 from eyaltoledano/changeset-release/main task-master-ai@0.39.0 2025-12-17 11:49:48 +01:00
Ralph Khreish
897764a518 Merge pull request #1527 from eyaltoledano/next 2025-12-17 00:20:51 +01:00
Ralph Khreish
416ebc4ea0 chore: apply coderabbit requested changes pre-0.39.0 (#1528) 2025-12-17 00:13:08 +01:00
Ralph Khreish
5c572f0298 chore: exit pre-release mode 2025-12-17 00:06:13 +01:00
Ralph Khreish
2cbdf11d32 chore: apply coderabbit requested changes pre-0.39.0 2025-12-17 00:05:49 +01:00
Crunchyman-ralph
a1170c5173 chore: rc version bump [skip ci] 2025-12-16 22:25:53 +00:00
Ralph Khreish
1c2228dbb6 feat(profiles): auto-enable deferred MCP loading for Claude Code (#1525) 2025-12-16 23:12:24 +01:00
github-actions[bot]
e7b9f82f21 docs: Auto-update and format models.md 2025-12-16 15:14:35 +00:00
Ralph Khreish
4b6570e300 fix: support Azure provider with reasoning models (#1310)
Co-authored-by: Ralph Khreish <Crunchyman-ralph@users.noreply.github.com>
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Fixes #638
2025-12-16 16:14:24 +01:00
Ralph Khreish
353e3bffd6 feat(core,cli): surface rich AI implementation metadata for remote tasks (#1521) 2025-12-16 13:00:22 +01:00
Ralph Khreish
8cd9dc09d5 Merge pull request #1520 from eyaltoledano/ralph/chore/update.main.dec.15 2025-12-15 13:45:03 +01:00
github-actions[bot]
1c5a6c3400 Merge pull request #1516 from eyaltoledano/changeset-release/main task-master-ai@0.38.0 2025-12-14 14:51:07 +01:00
Ralph Khreish
4de44bccb5 Merge pull request #1512 from eyaltoledano/next (Release 0.38.0) 2025-12-14 12:42:14 +01:00
Ralph Khreish
ce784cddd6 chore: exit pre-release mode and prepare for release 2025-12-14 01:58:04 +01:00