Compare commits
46 Commits
docs/auto-
...
docs/auto-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a41b5ef37 | ||
|
|
20004a39ea | ||
|
|
f1393f47b1 | ||
|
|
738ec51c04 | ||
|
|
c7418c4594 | ||
|
|
0747f1c772 | ||
|
|
ffe24a2e35 | ||
|
|
604b94baa9 | ||
|
|
2ea4bb6a81 | ||
|
|
3e96387715 | ||
|
|
100c3dc47d | ||
|
|
986ac117ae | ||
|
|
18aa416035 | ||
|
|
3b3dbabed1 | ||
|
|
af53525cbc | ||
|
|
0079b7defd | ||
|
|
0b2c6967c4 | ||
|
|
c0682ac795 | ||
|
|
01a7faea8f | ||
|
|
b7f32eac5a | ||
|
|
044a7bfc98 | ||
|
|
814265cd33 | ||
|
|
9b7b2ca7b2 | ||
|
|
949f091179 | ||
|
|
51a351760c | ||
|
|
732b2c61ad | ||
|
|
32c2b03c23 | ||
|
|
3bfd999d81 | ||
|
|
9fa79eb026 | ||
|
|
875134247a | ||
|
|
4c2801d5eb | ||
|
|
c911608f60 | ||
|
|
8f1497407f | ||
|
|
10b64ec6f5 | ||
|
|
1a1879483b | ||
|
|
d691cbb7ae | ||
|
|
1b7c9637a5 | ||
|
|
9ff5f158d5 | ||
|
|
b2ff06e8c5 | ||
|
|
c2fc61ddb3 | ||
|
|
6438f6c7c8 | ||
|
|
6bbd777552 | ||
|
|
100482722f | ||
|
|
7ff882bf23 | ||
|
|
6ab768f6ec | ||
|
|
f487736670 |
@@ -11,9 +11,6 @@
|
|||||||
"access": "public",
|
"access": "public",
|
||||||
"baseBranch": "main",
|
"baseBranch": "main",
|
||||||
"ignore": [
|
"ignore": [
|
||||||
"docs",
|
"docs"
|
||||||
"@tm/cli",
|
|
||||||
"@tm/core",
|
|
||||||
"@tm/build-config"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
7
.changeset/cursor-slash-commands.md
Normal file
7
.changeset/cursor-slash-commands.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Add Cursor IDE custom slash command support
|
||||||
|
|
||||||
|
Expose Task Master commands as Cursor slash commands by copying assets/claude/commands to .cursor/commands on profile add and cleaning up on remove.
|
||||||
5
.changeset/curvy-weeks-flow.md
Normal file
5
.changeset/curvy-weeks-flow.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Change parent task back to "pending" when all subtasks are in "pending" state
|
||||||
5
.changeset/flat-cities-say.md
Normal file
5
.changeset/flat-cities-say.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Added api keys page on docs website: docs.task-master.dev/getting-started/api-keys
|
||||||
10
.changeset/forty-tables-invite.md
Normal file
10
.changeset/forty-tables-invite.md
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Move to AI SDK v5:
|
||||||
|
|
||||||
|
- Works better with claude-code and gemini-cli as ai providers
|
||||||
|
- Improved openai model family compatibility
|
||||||
|
- Migrate ollama provider to v2
|
||||||
|
- Closes #1223, #1013, #1161, #1174
|
||||||
30
.changeset/gentle-cats-dance.md
Normal file
30
.changeset/gentle-cats-dance.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Migrate AI services to use generateObject for structured data generation
|
||||||
|
|
||||||
|
This update migrates all AI service calls from generateText to generateObject, ensuring more reliable and structured responses across all commands.
|
||||||
|
|
||||||
|
### Key Changes:
|
||||||
|
|
||||||
|
- **Unified AI Service**: Replaced separate generateText implementations with a single generateObjectService that handles structured data generation
|
||||||
|
- **JSON Mode Support**: Added proper JSON mode configuration for providers that support it (OpenAI, Anthropic, Google, Groq)
|
||||||
|
- **Schema Validation**: Integrated Zod schemas for all AI-generated content with automatic validation
|
||||||
|
- **Provider Compatibility**: Maintained compatibility with all existing providers while leveraging their native structured output capabilities
|
||||||
|
- **Improved Reliability**: Structured output generation reduces parsing errors and ensures consistent data formats
|
||||||
|
|
||||||
|
### Technical Improvements:
|
||||||
|
|
||||||
|
- Centralized provider configuration in `ai-providers-unified.js`
|
||||||
|
- Added `generateObject` support detection for each provider
|
||||||
|
- Implemented proper error handling for schema validation failures
|
||||||
|
- Maintained backward compatibility with existing prompt structures
|
||||||
|
|
||||||
|
### Bug Fixes:
|
||||||
|
|
||||||
|
- Fixed subtask ID numbering issue where AI was generating inconsistent IDs (101-105, 601-603) instead of sequential numbering (1, 2, 3...)
|
||||||
|
- Enhanced prompt instructions to enforce proper ID generation patterns
|
||||||
|
- Ensured subtasks display correctly as X.1, X.2, X.3 format
|
||||||
|
|
||||||
|
This migration improves the reliability and consistency of AI-generated content throughout the Task Master application.
|
||||||
5
.changeset/sweet-maps-rule.md
Normal file
5
.changeset/sweet-maps-rule.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Upgrade grok-cli ai provider to ai sdk v5
|
||||||
8
.changeset/whole-pigs-say.md
Normal file
8
.changeset/whole-pigs-say.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
"task-master-ai": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix complexity score not showing for `task-master show` and `task-master list`
|
||||||
|
|
||||||
|
- Added complexity score on "next task" when running `task-master list`
|
||||||
|
- Added colors to complexity to reflect complexity (easy, medium, hard)
|
||||||
3
.github/workflows/ci.yml
vendored
3
.github/workflows/ci.yml
vendored
@@ -6,9 +6,6 @@ on:
|
|||||||
- main
|
- main
|
||||||
- next
|
- next
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- next
|
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
|
|||||||
5
.github/workflows/extension-ci.yml
vendored
5
.github/workflows/extension-ci.yml
vendored
@@ -41,8 +41,7 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- name: Install Extension Dependencies
|
- name: Install Monorepo Dependencies
|
||||||
working-directory: apps/extension
|
|
||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
|
||||||
@@ -68,7 +67,6 @@ jobs:
|
|||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- name: Install if cache miss
|
- name: Install if cache miss
|
||||||
working-directory: apps/extension
|
|
||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 3
|
timeout-minutes: 3
|
||||||
|
|
||||||
@@ -100,7 +98,6 @@ jobs:
|
|||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- name: Install if cache miss
|
- name: Install if cache miss
|
||||||
working-directory: apps/extension
|
|
||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 3
|
timeout-minutes: 3
|
||||||
|
|
||||||
|
|||||||
3
.github/workflows/extension-release.yml
vendored
3
.github/workflows/extension-release.yml
vendored
@@ -31,8 +31,7 @@ jobs:
|
|||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-node-
|
${{ runner.os }}-node-
|
||||||
|
|
||||||
- name: Install Extension Dependencies
|
- name: Install Monorepo Dependencies
|
||||||
working-directory: apps/extension
|
|
||||||
run: npm ci
|
run: npm ci
|
||||||
timeout-minutes: 5
|
timeout-minutes: 5
|
||||||
|
|
||||||
|
|||||||
6
.manypkg.json
Normal file
6
.manypkg.json
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://unpkg.com/@manypkg/get-packages@1.1.3/schema.json",
|
||||||
|
"defaultBranch": "main",
|
||||||
|
"ignoredRules": ["ROOT_HAS_DEPENDENCIES", "INTERNAL_MISMATCH"],
|
||||||
|
"ignoredPackages": ["@tm/core", "@tm/cli", "@tm/build-config"]
|
||||||
|
}
|
||||||
36
CHANGELOG.md
36
CHANGELOG.md
@@ -1,5 +1,41 @@
|
|||||||
# task-master-ai
|
# task-master-ai
|
||||||
|
|
||||||
|
## 0.27.3
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1254](https://github.com/eyaltoledano/claude-task-master/pull/1254) [`af53525`](https://github.com/eyaltoledano/claude-task-master/commit/af53525cbc660a595b67d4bb90d906911c71f45d) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fixed issue where `tm show` command could not find subtasks using dotted notation IDs (e.g., '8.1').
|
||||||
|
- The command now properly searches within parent task subtasks and returns the correct subtask information.
|
||||||
|
|
||||||
|
## 0.27.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1248](https://github.com/eyaltoledano/claude-task-master/pull/1248) [`044a7bf`](https://github.com/eyaltoledano/claude-task-master/commit/044a7bfc98049298177bc655cf341d7a8b6a0011) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix set-status for subtasks:
|
||||||
|
- Parent tasks are now set as `done` when subtasks are all `done`
|
||||||
|
- Parent tasks are now set as `in-progress` when at least one subtask is `in-progress` or `done`
|
||||||
|
|
||||||
|
## 0.27.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1232](https://github.com/eyaltoledano/claude-task-master/pull/1232) [`f487736`](https://github.com/eyaltoledano/claude-task-master/commit/f487736670ef8c484059f676293777eabb249c9e) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix module not found for new 0.27.0 release
|
||||||
|
|
||||||
|
- [#1233](https://github.com/eyaltoledano/claude-task-master/pull/1233) [`c911608`](https://github.com/eyaltoledano/claude-task-master/commit/c911608f60454253f4e024b57ca84e5a5a53f65c) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix Zed MCP configuration by adding required "source" property
|
||||||
|
- Add "source": "custom" property to task-master-ai server in Zed settings.json
|
||||||
|
|
||||||
|
## 0.27.1-rc.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1233](https://github.com/eyaltoledano/claude-task-master/pull/1233) [`1a18794`](https://github.com/eyaltoledano/claude-task-master/commit/1a1879483b86c118a4e46c02cbf4acebfcf6bcf9) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - One last testing final final
|
||||||
|
|
||||||
|
## 0.27.1-rc.0
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- [#1232](https://github.com/eyaltoledano/claude-task-master/pull/1232) [`f487736`](https://github.com/eyaltoledano/claude-task-master/commit/f487736670ef8c484059f676293777eabb249c9e) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix module not found for new 0.27.0 release
|
||||||
|
|
||||||
## 0.27.0
|
## 0.27.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|||||||
@@ -105,10 +105,11 @@ MCP (Model Control Protocol) lets you run Task Master directly from your editor.
|
|||||||
| | Project | `<project_folder>/.cursor/mcp.json` | `<project_folder>\.cursor\mcp.json` | `mcpServers` |
|
| | Project | `<project_folder>/.cursor/mcp.json` | `<project_folder>\.cursor\mcp.json` | `mcpServers` |
|
||||||
| **Windsurf** | Global | `~/.codeium/windsurf/mcp_config.json` | `%USERPROFILE%\.codeium\windsurf\mcp_config.json` | `mcpServers` |
|
| **Windsurf** | Global | `~/.codeium/windsurf/mcp_config.json` | `%USERPROFILE%\.codeium\windsurf\mcp_config.json` | `mcpServers` |
|
||||||
| **VS Code** | Project | `<project_folder>/.vscode/mcp.json` | `<project_folder>\.vscode\mcp.json` | `servers` |
|
| **VS Code** | Project | `<project_folder>/.vscode/mcp.json` | `<project_folder>\.vscode\mcp.json` | `servers` |
|
||||||
|
| **Q CLI** | Global | `~/.aws/amazonq/mcp.json` | | `mcpServers` |
|
||||||
|
|
||||||
##### Manual Configuration
|
##### Manual Configuration
|
||||||
|
|
||||||
###### Cursor & Windsurf (`mcpServers`)
|
###### Cursor & Windsurf & Q Developer CLI (`mcpServers`)
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,12 @@
|
|||||||
# @tm/cli
|
# @tm/cli
|
||||||
|
|
||||||
|
## null
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies []:
|
||||||
|
- @tm/core@null
|
||||||
|
|
||||||
## 0.27.0
|
## 0.27.0
|
||||||
|
|
||||||
### Patch Changes
|
### Patch Changes
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "@tm/cli",
|
"name": "@tm/cli",
|
||||||
"version": "0.27.0",
|
|
||||||
"description": "Task Master CLI - Command line interface for task management",
|
"description": "Task Master CLI - Command line interface for task management",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"private": true,
|
"private": true,
|
||||||
@@ -24,19 +23,19 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tm/core": "*",
|
"@tm/core": "*",
|
||||||
"boxen": "^7.1.1",
|
"boxen": "^8.0.1",
|
||||||
"chalk": "5.6.2",
|
"chalk": "5.6.2",
|
||||||
"cli-table3": "^0.6.5",
|
"cli-table3": "^0.6.5",
|
||||||
"commander": "^12.1.0",
|
"commander": "^12.1.0",
|
||||||
"inquirer": "^9.2.10",
|
"inquirer": "^12.5.0",
|
||||||
"ora": "^8.1.0"
|
"ora": "^8.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@biomejs/biome": "^1.9.4",
|
"@biomejs/biome": "^1.9.4",
|
||||||
"@types/inquirer": "^9.0.3",
|
"@types/inquirer": "^9.0.3",
|
||||||
"@types/node": "^22.10.5",
|
"@types/node": "^22.10.5",
|
||||||
"tsx": "^4.20.4",
|
"tsx": "^4.20.4",
|
||||||
"typescript": "^5.7.3",
|
"typescript": "^5.9.2",
|
||||||
"vitest": "^2.1.8"
|
"vitest": "^2.1.8"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -281,9 +281,14 @@ export class ListTasksCommand extends Command {
|
|||||||
const priorityBreakdown = getPriorityBreakdown(tasks);
|
const priorityBreakdown = getPriorityBreakdown(tasks);
|
||||||
|
|
||||||
// Find next task following the same logic as findNextTask
|
// Find next task following the same logic as findNextTask
|
||||||
const nextTask = this.findNextTask(tasks);
|
const nextTaskInfo = this.findNextTask(tasks);
|
||||||
|
|
||||||
// Display dashboard boxes
|
// Get the full task object with complexity data already included
|
||||||
|
const nextTask = nextTaskInfo
|
||||||
|
? tasks.find((t) => String(t.id) === String(nextTaskInfo.id))
|
||||||
|
: undefined;
|
||||||
|
|
||||||
|
// Display dashboard boxes (nextTask already has complexity from storage enrichment)
|
||||||
displayDashboards(
|
displayDashboards(
|
||||||
taskStats,
|
taskStats,
|
||||||
subtaskStats,
|
subtaskStats,
|
||||||
@@ -303,14 +308,16 @@ export class ListTasksCommand extends Command {
|
|||||||
|
|
||||||
// Display recommended next task section immediately after table
|
// Display recommended next task section immediately after table
|
||||||
if (nextTask) {
|
if (nextTask) {
|
||||||
// Find the full task object to get description
|
const description = getTaskDescription(nextTask);
|
||||||
const fullTask = tasks.find((t) => String(t.id) === String(nextTask.id));
|
|
||||||
const description = fullTask ? getTaskDescription(fullTask) : undefined;
|
|
||||||
|
|
||||||
displayRecommendedNextTask({
|
displayRecommendedNextTask({
|
||||||
...nextTask,
|
id: nextTask.id,
|
||||||
status: 'pending', // Next task is typically pending
|
title: nextTask.title,
|
||||||
description
|
priority: nextTask.priority,
|
||||||
|
status: nextTask.status,
|
||||||
|
dependencies: nextTask.dependencies,
|
||||||
|
description,
|
||||||
|
complexity: nextTask.complexity as number | undefined
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
displayRecommendedNextTask(undefined);
|
displayRecommendedNextTask(undefined);
|
||||||
|
|||||||
@@ -18,7 +18,8 @@ export * as ui from './utils/ui.js';
|
|||||||
export {
|
export {
|
||||||
checkForUpdate,
|
checkForUpdate,
|
||||||
performAutoUpdate,
|
performAutoUpdate,
|
||||||
displayUpgradeNotification
|
displayUpgradeNotification,
|
||||||
|
compareVersions
|
||||||
} from './utils/auto-update.js';
|
} from './utils/auto-update.js';
|
||||||
|
|
||||||
// Re-export commonly used types from tm-core
|
// Re-export commonly used types from tm-core
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import boxen from 'boxen';
|
import boxen from 'boxen';
|
||||||
import type { Task, TaskPriority } from '@tm/core/types';
|
import type { Task, TaskPriority } from '@tm/core/types';
|
||||||
|
import { getComplexityWithColor } from '../../utils/ui.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Statistics for task collection
|
* Statistics for task collection
|
||||||
@@ -479,7 +480,7 @@ export function displayDependencyDashboard(
|
|||||||
? chalk.cyan(nextTask.dependencies.join(', '))
|
? chalk.cyan(nextTask.dependencies.join(', '))
|
||||||
: chalk.gray('None')
|
: chalk.gray('None')
|
||||||
}\n` +
|
}\n` +
|
||||||
`Complexity: ${nextTask?.complexity || chalk.gray('N/A')}`;
|
`Complexity: ${nextTask?.complexity !== undefined ? getComplexityWithColor(nextTask.complexity) : chalk.gray('N/A')}`;
|
||||||
|
|
||||||
return content;
|
return content;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import boxen from 'boxen';
|
import boxen from 'boxen';
|
||||||
import type { Task } from '@tm/core/types';
|
import type { Task } from '@tm/core/types';
|
||||||
|
import { getComplexityWithColor } from '../../utils/ui.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Next task display options
|
* Next task display options
|
||||||
@@ -17,6 +18,7 @@ export interface NextTaskDisplayOptions {
|
|||||||
status?: string;
|
status?: string;
|
||||||
dependencies?: (string | number)[];
|
dependencies?: (string | number)[];
|
||||||
description?: string;
|
description?: string;
|
||||||
|
complexity?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -82,6 +84,11 @@ export function displayRecommendedNextTask(
|
|||||||
: chalk.cyan(task.dependencies.join(', '));
|
: chalk.cyan(task.dependencies.join(', '));
|
||||||
content.push(`Dependencies: ${depsDisplay}`);
|
content.push(`Dependencies: ${depsDisplay}`);
|
||||||
|
|
||||||
|
// Complexity with color and label
|
||||||
|
if (typeof task.complexity === 'number') {
|
||||||
|
content.push(`Complexity: ${getComplexityWithColor(task.complexity)}`);
|
||||||
|
}
|
||||||
|
|
||||||
// Description if available
|
// Description if available
|
||||||
if (task.description) {
|
if (task.description) {
|
||||||
content.push('');
|
content.push('');
|
||||||
|
|||||||
@@ -9,7 +9,11 @@ import Table from 'cli-table3';
|
|||||||
import { marked, MarkedExtension } from 'marked';
|
import { marked, MarkedExtension } from 'marked';
|
||||||
import { markedTerminal } from 'marked-terminal';
|
import { markedTerminal } from 'marked-terminal';
|
||||||
import type { Task } from '@tm/core/types';
|
import type { Task } from '@tm/core/types';
|
||||||
import { getStatusWithColor, getPriorityWithColor } from '../../utils/ui.js';
|
import {
|
||||||
|
getStatusWithColor,
|
||||||
|
getPriorityWithColor,
|
||||||
|
getComplexityWithColor
|
||||||
|
} from '../../utils/ui.js';
|
||||||
|
|
||||||
// Configure marked to use terminal renderer with subtle colors
|
// Configure marked to use terminal renderer with subtle colors
|
||||||
marked.use(
|
marked.use(
|
||||||
@@ -108,7 +112,9 @@ export function displayTaskProperties(task: Task): void {
|
|||||||
getStatusWithColor(task.status),
|
getStatusWithColor(task.status),
|
||||||
getPriorityWithColor(task.priority),
|
getPriorityWithColor(task.priority),
|
||||||
deps,
|
deps,
|
||||||
'N/A',
|
typeof task.complexity === 'number'
|
||||||
|
? getComplexityWithColor(task.complexity)
|
||||||
|
: chalk.gray('N/A'),
|
||||||
task.description || ''
|
task.description || ''
|
||||||
].join('\n');
|
].join('\n');
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import https from 'https';
|
|||||||
import chalk from 'chalk';
|
import chalk from 'chalk';
|
||||||
import ora from 'ora';
|
import ora from 'ora';
|
||||||
import boxen from 'boxen';
|
import boxen from 'boxen';
|
||||||
import packageJson from '../../../../package.json' with { type: 'json' };
|
|
||||||
|
|
||||||
export interface UpdateInfo {
|
export interface UpdateInfo {
|
||||||
currentVersion: string;
|
currentVersion: string;
|
||||||
@@ -16,15 +15,18 @@ export interface UpdateInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get current version from package.json
|
* Get current version from build-time injected environment variable
|
||||||
*/
|
*/
|
||||||
function getCurrentVersion(): string {
|
function getCurrentVersion(): string {
|
||||||
try {
|
// Version is injected at build time via TM_PUBLIC_VERSION
|
||||||
return packageJson.version;
|
const version = process.env.TM_PUBLIC_VERSION;
|
||||||
} catch (error) {
|
if (version && version !== 'unknown') {
|
||||||
console.warn('Could not read package.json for version info');
|
return version;
|
||||||
return '0.0.0';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Fallback for development or if injection failed
|
||||||
|
console.warn('Could not read version from TM_PUBLIC_VERSION, using fallback');
|
||||||
|
return '0.0.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -33,7 +35,7 @@ function getCurrentVersion(): string {
|
|||||||
* @param v2 - Second version
|
* @param v2 - Second version
|
||||||
* @returns -1 if v1 < v2, 0 if v1 = v2, 1 if v1 > v2
|
* @returns -1 if v1 < v2, 0 if v1 = v2, 1 if v1 > v2
|
||||||
*/
|
*/
|
||||||
function compareVersions(v1: string, v2: string): number {
|
export function compareVersions(v1: string, v2: string): number {
|
||||||
const toParts = (v: string) => {
|
const toParts = (v: string) => {
|
||||||
const [core, pre = ''] = v.split('-', 2);
|
const [core, pre = ''] = v.split('-', 2);
|
||||||
const nums = core.split('.').map((n) => Number.parseInt(n, 10) || 0);
|
const nums = core.split('.').map((n) => Number.parseInt(n, 10) || 0);
|
||||||
@@ -156,10 +158,18 @@ export function displayUpgradeNotification(
|
|||||||
export async function performAutoUpdate(
|
export async function performAutoUpdate(
|
||||||
latestVersion: string
|
latestVersion: string
|
||||||
): Promise<boolean> {
|
): Promise<boolean> {
|
||||||
if (process.env.TASKMASTER_SKIP_AUTO_UPDATE === '1' || process.env.CI) {
|
if (
|
||||||
console.log(
|
process.env.TASKMASTER_SKIP_AUTO_UPDATE === '1' ||
|
||||||
chalk.dim('Skipping auto-update (TASKMASTER_SKIP_AUTO_UPDATE/CI).')
|
process.env.CI ||
|
||||||
);
|
process.env.NODE_ENV === 'test'
|
||||||
|
) {
|
||||||
|
const reason =
|
||||||
|
process.env.TASKMASTER_SKIP_AUTO_UPDATE === '1'
|
||||||
|
? 'TASKMASTER_SKIP_AUTO_UPDATE=1'
|
||||||
|
: process.env.CI
|
||||||
|
? 'CI environment'
|
||||||
|
: 'NODE_ENV=test';
|
||||||
|
console.log(chalk.dim(`Skipping auto-update (${reason})`));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
const spinner = ora({
|
const spinner = ora({
|
||||||
|
|||||||
@@ -84,7 +84,23 @@ export function getPriorityWithColor(priority: TaskPriority): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get colored complexity display
|
* Get complexity color and label based on score thresholds
|
||||||
|
*/
|
||||||
|
function getComplexityLevel(score: number): {
|
||||||
|
color: (text: string) => string;
|
||||||
|
label: string;
|
||||||
|
} {
|
||||||
|
if (score >= 7) {
|
||||||
|
return { color: chalk.hex('#CC0000'), label: 'High' };
|
||||||
|
} else if (score >= 4) {
|
||||||
|
return { color: chalk.hex('#FF8800'), label: 'Medium' };
|
||||||
|
} else {
|
||||||
|
return { color: chalk.green, label: 'Low' };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get colored complexity display with dot indicator (simple format)
|
||||||
*/
|
*/
|
||||||
export function getComplexityWithColor(complexity: number | string): string {
|
export function getComplexityWithColor(complexity: number | string): string {
|
||||||
const score =
|
const score =
|
||||||
@@ -94,13 +110,20 @@ export function getComplexityWithColor(complexity: number | string): string {
|
|||||||
return chalk.gray('N/A');
|
return chalk.gray('N/A');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (score >= 8) {
|
const { color } = getComplexityLevel(score);
|
||||||
return chalk.red.bold(`${score} (High)`);
|
return color(`● ${score}`);
|
||||||
} else if (score >= 5) {
|
}
|
||||||
return chalk.yellow(`${score} (Medium)`);
|
|
||||||
} else {
|
/**
|
||||||
return chalk.green(`${score} (Low)`);
|
* Get colored complexity display with /10 format (for dashboards)
|
||||||
|
*/
|
||||||
|
export function getComplexityWithScore(complexity: number | undefined): string {
|
||||||
|
if (typeof complexity !== 'number') {
|
||||||
|
return chalk.gray('N/A');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const { color, label } = getComplexityLevel(complexity);
|
||||||
|
return color(`${complexity}/10 (${label})`);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -323,8 +346,12 @@ export function createTaskTable(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (showComplexity) {
|
if (showComplexity) {
|
||||||
// Show N/A if no complexity score
|
// Show complexity score from report if available
|
||||||
row.push(chalk.gray('N/A'));
|
if (typeof task.complexity === 'number') {
|
||||||
|
row.push(getComplexityWithColor(task.complexity));
|
||||||
|
} else {
|
||||||
|
row.push(chalk.gray('N/A'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
table.push(row);
|
table.push(row);
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# docs
|
# docs
|
||||||
|
|
||||||
|
## 0.0.4
|
||||||
|
|
||||||
## 0.0.3
|
## 0.0.3
|
||||||
|
|
||||||
## 0.0.2
|
## 0.0.2
|
||||||
|
|||||||
@@ -1,22 +1,24 @@
|
|||||||
# Task Master Documentation
|
# Task Master Documentation
|
||||||
|
|
||||||
Welcome to the Task Master documentation. Use the links below to navigate to the information you need:
|
Welcome to the Task Master documentation. This documentation site provides comprehensive guides for getting started with Task Master.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
- [Configuration Guide](archive/configuration.md) - Set up environment variables and customize Task Master
|
- [Quick Start Guide](/getting-started/quick-start) - Complete setup and first-time usage guide
|
||||||
- [Tutorial](archive/ctutorial.md) - Step-by-step guide to getting started with Task Master
|
- [Requirements](/getting-started/quick-start/requirements) - What you need to get started
|
||||||
|
- [Installation](/getting-started/quick-start/installation) - How to install Task Master
|
||||||
|
|
||||||
## Reference
|
## Core Capabilities
|
||||||
|
|
||||||
- [Command Reference](archive/ccommand-reference.md) - Complete list of all available commands
|
- [MCP Tools](/capabilities/mcp) - Model Control Protocol integration
|
||||||
- [Task Structure](archive/ctask-structure.md) - Understanding the task format and features
|
- [CLI Commands](/capabilities/cli-root-commands) - Command line interface reference
|
||||||
|
- [Task Structure](/capabilities/task-structure) - Understanding tasks and subtasks
|
||||||
|
|
||||||
## Examples & Licensing
|
## Best Practices
|
||||||
|
|
||||||
- [Example Interactions](archive/cexamples.md) - Common Cursor AI interaction examples
|
- [Advanced Configuration](/best-practices/configuration-advanced) - Detailed configuration options
|
||||||
- [Licensing Information](archive/clicensing.md) - Detailed information about the license
|
- [Advanced Tasks](/best-practices/advanced-tasks) - Working with complex task structures
|
||||||
|
|
||||||
## Need More Help?
|
## Need More Help?
|
||||||
|
|
||||||
If you can't find what you're looking for in these docs, please check the [main README](../README.md) or visit our [GitHub repository](https://github.com/eyaltoledano/claude-task-master).
|
If you can't find what you're looking for in these docs, please check the root README.md or visit our [GitHub repository](https://github.com/eyaltoledano/claude-task-master).
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ sidebarTitle: "CLI Commands"
|
|||||||
# List tasks with a specific status and include subtasks
|
# List tasks with a specific status and include subtasks
|
||||||
task-master list --status=<status> --with-subtasks
|
task-master list --status=<status> --with-subtasks
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Complexity Display**: If you've run `analyze-complexity`, task complexity scores will be displayed with color-coded indicators:
|
||||||
|
- 🟢 **Easy** (1-3): Green
|
||||||
|
- 🟡 **Medium** (4-6): Yellow
|
||||||
|
- 🔴 **Hard** (7-10): Red
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
<Accordion title="Show Next Task">
|
<Accordion title="Show Next Task">
|
||||||
@@ -36,6 +41,8 @@ sidebarTitle: "CLI Commands"
|
|||||||
# Show the next task to work on based on dependencies and status
|
# Show the next task to work on based on dependencies and status
|
||||||
task-master next
|
task-master next
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Complexity Display**: If complexity analysis has been performed, the next task will display its complexity score with a color-coded indicator.
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
<Accordion title="Show Specific Task">
|
<Accordion title="Show Specific Task">
|
||||||
@@ -48,6 +55,8 @@ sidebarTitle: "CLI Commands"
|
|||||||
# View a specific subtask (e.g., subtask 2 of task 1)
|
# View a specific subtask (e.g., subtask 2 of task 1)
|
||||||
task-master show 1.2
|
task-master show 1.2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Complexity Display**: If complexity analysis has been performed, the task details will include the complexity score with a color-coded indicator and the recommended number of subtasks.
|
||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
<Accordion title="Update Tasks">
|
<Accordion title="Update Tasks">
|
||||||
|
|||||||
@@ -32,6 +32,7 @@
|
|||||||
"getting-started/quick-start/execute-quick"
|
"getting-started/quick-start/execute-quick"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"getting-started/api-keys",
|
||||||
"getting-started/faq",
|
"getting-started/faq",
|
||||||
"getting-started/contribute"
|
"getting-started/contribute"
|
||||||
]
|
]
|
||||||
|
|||||||
267
apps/docs/getting-started/api-keys.mdx
Normal file
267
apps/docs/getting-started/api-keys.mdx
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
# API Keys Configuration
|
||||||
|
|
||||||
|
Task Master supports multiple AI providers through environment variables. This page lists all available API keys and their configuration requirements.
|
||||||
|
|
||||||
|
## Required API Keys
|
||||||
|
|
||||||
|
> **Note**: At least one required API key must be configured for Task Master to function.
|
||||||
|
>
|
||||||
|
> "Required: Yes" below means "required to use that specific provider," not "required globally." You only need at least one provider configured.
|
||||||
|
|
||||||
|
### ANTHROPIC_API_KEY (Recommended)
|
||||||
|
- **Provider**: Anthropic Claude models
|
||||||
|
- **Format**: `sk-ant-api03-...`
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Claude 3.5 Sonnet, Claude 3 Haiku, Claude 3 Opus
|
||||||
|
- **Get Key**: [Anthropic Console](https://console.anthropic.com/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
ANTHROPIC_API_KEY="sk-ant-api03-your-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### PERPLEXITY_API_KEY (Highly Recommended for Research)
|
||||||
|
- **Provider**: Perplexity AI (Research features)
|
||||||
|
- **Format**: `pplx-...`
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Purpose**: Enables research-backed task expansions and updates
|
||||||
|
- **Models**: Perplexity Sonar models
|
||||||
|
- **Get Key**: [Perplexity API](https://www.perplexity.ai/settings/api)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
PERPLEXITY_API_KEY="pplx-your-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### OPENAI_API_KEY
|
||||||
|
- **Provider**: OpenAI GPT models
|
||||||
|
- **Format**: `sk-proj-...` or `sk-...`
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: GPT-4, GPT-4 Turbo, GPT-3.5 Turbo, O1 models
|
||||||
|
- **Get Key**: [OpenAI Platform](https://platform.openai.com/api-keys)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
OPENAI_API_KEY="sk-proj-your-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GOOGLE_API_KEY
|
||||||
|
- **Provider**: Google Gemini models
|
||||||
|
- **Format**: Various formats
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Gemini Pro, Gemini Flash, Gemini Ultra
|
||||||
|
- **Get Key**: [Google AI Studio](https://aistudio.google.com/app/apikey)
|
||||||
|
- **Alternative**: Use `GOOGLE_APPLICATION_CREDENTIALS` for service account (Google Vertex)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GOOGLE_API_KEY="your-google-api-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GROQ_API_KEY
|
||||||
|
- **Provider**: Groq (High-performance inference)
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Llama models, Mixtral models (via Groq)
|
||||||
|
- **Get Key**: [Groq Console](https://console.groq.com/keys)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GROQ_API_KEY="your-groq-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### OPENROUTER_API_KEY
|
||||||
|
- **Provider**: OpenRouter (Multiple model access)
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Access to various models through single API
|
||||||
|
- **Get Key**: [OpenRouter](https://openrouter.ai/keys)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
OPENROUTER_API_KEY="your-openrouter-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### AZURE_OPENAI_API_KEY
|
||||||
|
- **Provider**: Azure OpenAI Service
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Requirements**: Also requires `AZURE_OPENAI_ENDPOINT` configuration
|
||||||
|
- **Models**: GPT models via Azure
|
||||||
|
- **Get Key**: [Azure Portal](https://portal.azure.com/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
AZURE_OPENAI_API_KEY="your-azure-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### XAI_API_KEY
|
||||||
|
- **Provider**: xAI (Grok) models
|
||||||
|
- **Required**: ✅ **Yes**
|
||||||
|
- **Models**: Grok models
|
||||||
|
- **Get Key**: [xAI Console](https://console.x.ai/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
XAI_API_KEY="your-xai-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Optional API Keys
|
||||||
|
|
||||||
|
> **Note**: These API keys are optional - providers will work without them or use alternative authentication methods.
|
||||||
|
|
||||||
|
### AWS_ACCESS_KEY_ID (Bedrock)
|
||||||
|
- **Provider**: AWS Bedrock
|
||||||
|
- **Required**: ❌ **No** (uses AWS credential chain)
|
||||||
|
- **Models**: Claude models via AWS Bedrock
|
||||||
|
- **Authentication**: Uses AWS credential chain (profiles, IAM roles, etc.)
|
||||||
|
- **Get Key**: [AWS Console](https://console.aws.amazon.com/iam/)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Optional - AWS credential chain is preferred
|
||||||
|
AWS_ACCESS_KEY_ID="your-aws-access-key"
|
||||||
|
AWS_SECRET_ACCESS_KEY="your-aws-secret-key"
|
||||||
|
```
|
||||||
|
|
||||||
|
### CLAUDE_CODE_API_KEY
|
||||||
|
- **Provider**: Claude Code CLI
|
||||||
|
- **Required**: ❌ **No** (uses OAuth tokens)
|
||||||
|
- **Purpose**: Integration with local Claude Code CLI
|
||||||
|
- **Authentication**: Uses OAuth tokens, no API key needed
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Not typically needed
|
||||||
|
CLAUDE_CODE_API_KEY="not-usually-required"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GEMINI_API_KEY
|
||||||
|
- **Provider**: Gemini CLI
|
||||||
|
- **Required**: ❌ **No** (uses OAuth authentication)
|
||||||
|
- **Purpose**: Integration with Gemini CLI
|
||||||
|
- **Authentication**: Primarily uses OAuth via CLI, API key is optional
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Optional - OAuth via CLI is preferred
|
||||||
|
GEMINI_API_KEY="your-gemini-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GROK_CLI_API_KEY
|
||||||
|
- **Provider**: Grok CLI
|
||||||
|
- **Required**: ❌ **No** (can use CLI config)
|
||||||
|
- **Purpose**: Integration with Grok CLI
|
||||||
|
- **Authentication**: Can use Grok CLI's own config file
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Optional - CLI config is preferred
|
||||||
|
GROK_CLI_API_KEY="your-grok-cli-key"
|
||||||
|
```
|
||||||
|
|
||||||
|
### OLLAMA_API_KEY
|
||||||
|
- **Provider**: Ollama (Local/Remote)
|
||||||
|
- **Required**: ❌ **No** (local installation doesn't need key)
|
||||||
|
- **Purpose**: For remote Ollama servers that require authentication
|
||||||
|
- **Requirements**: Only needed for remote servers with authentication
|
||||||
|
- **Note**: Not needed for local Ollama installations
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Only needed for remote Ollama servers
|
||||||
|
OLLAMA_API_KEY="your-ollama-api-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
### GITHUB_API_KEY
|
||||||
|
- **Provider**: GitHub (Import/Export features)
|
||||||
|
- **Format**: `ghp_...` or `github_pat_...`
|
||||||
|
- **Required**: ❌ **No** (for GitHub features only)
|
||||||
|
- **Purpose**: GitHub import/export features
|
||||||
|
- **Get Key**: [GitHub Settings](https://github.com/settings/tokens)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
GITHUB_API_KEY="ghp-your-github-key-here"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration Methods
|
||||||
|
|
||||||
|
### Method 1: Environment File (.env)
|
||||||
|
Create a `.env` file in your project root:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Copy from .env.example
|
||||||
|
cp .env.example .env
|
||||||
|
|
||||||
|
# Edit with your keys
|
||||||
|
vim .env
|
||||||
|
```
|
||||||
|
|
||||||
|
### Method 2: System Environment Variables
|
||||||
|
```bash
|
||||||
|
export ANTHROPIC_API_KEY="your-key-here"
|
||||||
|
export PERPLEXITY_API_KEY="your-key-here"
|
||||||
|
# ... other keys
|
||||||
|
```
|
||||||
|
|
||||||
|
### Method 3: MCP Server Configuration
|
||||||
|
For Claude Code integration, configure keys in `.mcp.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"mcpServers": {
|
||||||
|
"task-master-ai": {
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "task-master-ai"],
|
||||||
|
"env": {
|
||||||
|
"ANTHROPIC_API_KEY": "your-key-here",
|
||||||
|
"PERPLEXITY_API_KEY": "your-key-here",
|
||||||
|
"OPENAI_API_KEY": "your-key-here"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Key Requirements
|
||||||
|
|
||||||
|
### Minimum Requirements
|
||||||
|
- **At least one** AI provider key is required
|
||||||
|
- **ANTHROPIC_API_KEY** is recommended as the primary provider
|
||||||
|
- **PERPLEXITY_API_KEY** is highly recommended for research features
|
||||||
|
|
||||||
|
### Provider-Specific Requirements
|
||||||
|
- **Azure OpenAI**: Requires both `AZURE_OPENAI_API_KEY` and `AZURE_OPENAI_ENDPOINT` configuration
|
||||||
|
- **Google Vertex**: Requires `VERTEX_PROJECT_ID` and `VERTEX_LOCATION` environment variables
|
||||||
|
- **AWS Bedrock**: Uses AWS credential chain (profiles, IAM roles, etc.) instead of API keys
|
||||||
|
- **Ollama**: Only needs API key for remote servers with authentication
|
||||||
|
- **CLI Providers**: Gemini CLI, Grok CLI, and Claude Code use OAuth/CLI config instead of API keys
|
||||||
|
|
||||||
|
## Model Configuration
|
||||||
|
|
||||||
|
After setting up API keys, configure which models to use:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Interactive model setup
|
||||||
|
task-master models --setup
|
||||||
|
|
||||||
|
# Set specific models
|
||||||
|
task-master models --set-main claude-3-5-sonnet-20241022
|
||||||
|
task-master models --set-research perplexity-llama-3.1-sonar-large-128k-online
|
||||||
|
task-master models --set-fallback gpt-4o-mini
|
||||||
|
```
|
||||||
|
|
||||||
|
## Security Best Practices
|
||||||
|
|
||||||
|
1. **Never commit API keys** to version control
|
||||||
|
2. **Use .env files** and add them to `.gitignore`
|
||||||
|
3. **Rotate keys regularly** especially if compromised
|
||||||
|
4. **Use minimal permissions** for service accounts
|
||||||
|
5. **Monitor usage** to detect unauthorized access
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Key Validation
|
||||||
|
```bash
|
||||||
|
# Check if keys are properly configured
|
||||||
|
task-master models
|
||||||
|
|
||||||
|
# Test specific provider
|
||||||
|
task-master add-task --prompt="test task" --model=claude-3-5-sonnet-20241022
|
||||||
|
```
|
||||||
|
|
||||||
|
### Common Issues
|
||||||
|
- **Invalid key format**: Check the expected format for each provider
|
||||||
|
- **Insufficient permissions**: Ensure keys have necessary API access
|
||||||
|
- **Rate limits**: Some providers have usage limits
|
||||||
|
- **Regional restrictions**: Some models may not be available in all regions
|
||||||
|
|
||||||
|
### Getting Help
|
||||||
|
If you encounter issues with API key configuration:
|
||||||
|
- Check the [FAQ](/getting-started/faq) for common solutions
|
||||||
|
- Join our [Discord community](https://discord.gg/fWJkU7rf) for support
|
||||||
|
- Report issues on [GitHub](https://github.com/eyaltoledano/claude-task-master/issues)
|
||||||
@@ -108,5 +108,5 @@ You don’t need to configure everything up front. Most settings can be left as
|
|||||||
</Accordion>
|
</Accordion>
|
||||||
|
|
||||||
<Note>
|
<Note>
|
||||||
For advanced configuration options and detailed customization, see our [Advanced Configuration Guide](/docs/best-practices/configuration-advanced) page.
|
For advanced configuration options and detailed customization, see our [Advanced Configuration Guide](/best-practices/configuration-advanced) page.
|
||||||
</Note>
|
</Note>
|
||||||
@@ -56,4 +56,4 @@ If you ran into problems and had to debug errors you can create new rules as you
|
|||||||
|
|
||||||
By now you have all you need to get started executing code faster and smarter with Task Master.
|
By now you have all you need to get started executing code faster and smarter with Task Master.
|
||||||
|
|
||||||
If you have any questions please check out [Frequently Asked Questions](/docs/getting-started/faq)
|
If you have any questions please check out [Frequently Asked Questions](/getting-started/faq)
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ sidebarTitle: "Quick Start"
|
|||||||
This guide is for new users who want to start using Task Master with minimal setup time.
|
This guide is for new users who want to start using Task Master with minimal setup time.
|
||||||
|
|
||||||
It covers:
|
It covers:
|
||||||
- [Requirements](/docs/getting-started/quick-start/requirements): You will need Node.js and an AI model API Key.
|
- [Requirements](/getting-started/quick-start/requirements): You will need Node.js and an AI model API Key.
|
||||||
- [Installation](/docs/getting-started/quick-start/installation): How to Install Task Master.
|
- [Installation](/getting-started/quick-start/installation): How to Install Task Master.
|
||||||
- [Configuration](/docs/getting-started/quick-start/configuration-quick): Setting up your API Key, MCP, and more.
|
- [Configuration](/getting-started/quick-start/configuration-quick): Setting up your API Key, MCP, and more.
|
||||||
- [PRD](/docs/getting-started/quick-start/prd-quick): Writing and parsing your first PRD.
|
- [PRD](/getting-started/quick-start/prd-quick): Writing and parsing your first PRD.
|
||||||
- [Task Setup](/docs/getting-started/quick-start/tasks-quick): Preparing your tasks for execution.
|
- [Task Setup](/getting-started/quick-start/tasks-quick): Preparing your tasks for execution.
|
||||||
- [Executing Tasks](/docs/getting-started/quick-start/execute-quick): Using Task Master to execute tasks.
|
- [Executing Tasks](/getting-started/quick-start/execute-quick): Using Task Master to execute tasks.
|
||||||
- [Rules & Context](/docs/getting-started/quick-start/rules-quick): Learn how and why to build context in your project over time.
|
- [Rules & Context](/getting-started/quick-start/rules-quick): Learn how and why to build context in your project over time.
|
||||||
|
|
||||||
<Tip>
|
<Tip>
|
||||||
By the end of this guide, you'll have everything you need to begin working productively with Task Master.
|
By the end of this guide, you'll have everything you need to begin working productively with Task Master.
|
||||||
|
|||||||
@@ -80,6 +80,6 @@ You can view the report in a friendly table using:
|
|||||||
Can you show me the complexity report in a more readable format?
|
Can you show me the complexity report in a more readable format?
|
||||||
```
|
```
|
||||||
|
|
||||||
For more detailed CLI options, see the [Analyze Task Complexity](/docs/capabilities/cli-root-commands#analyze-task-complexity) section.
|
For more detailed CLI options, see the [Analyze Task Complexity](/capabilities/cli-root-commands#analyze-task-complexity) section.
|
||||||
|
|
||||||
<Check>Now you are ready to begin [executing tasks](/docs/getting-started/quick-start/execute-quick)</Check>
|
<Check>Now you are ready to begin [executing tasks](/getting-started/quick-start/execute-quick)</Check>
|
||||||
@@ -4,7 +4,7 @@ Welcome to v1 of the Task Master Docs. Expect weekly updates as we expand and re
|
|||||||
|
|
||||||
We've organized the docs into three sections depending on your experience level and goals:
|
We've organized the docs into three sections depending on your experience level and goals:
|
||||||
|
|
||||||
### Getting Started - Jump in to [Quick Start](/docs/getting-started/quick-start)
|
### Getting Started - Jump in to [Quick Start](/getting-started/quick-start)
|
||||||
Designed for first-time users. Get set up, create your first PRD, and run your first task.
|
Designed for first-time users. Get set up, create your first PRD, and run your first task.
|
||||||
|
|
||||||
### Best Practices
|
### Best Practices
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "docs",
|
"name": "docs",
|
||||||
"version": "0.0.3",
|
"version": "0.0.4",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Task Master documentation powered by Mintlify",
|
"description": "Task Master documentation powered by Mintlify",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -1,5 +1,40 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## 0.25.4
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`af53525`](https://github.com/eyaltoledano/claude-task-master/commit/af53525cbc660a595b67d4bb90d906911c71f45d)]:
|
||||||
|
- task-master-ai@0.27.3
|
||||||
|
|
||||||
|
## 0.25.3
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`044a7bf`](https://github.com/eyaltoledano/claude-task-master/commit/044a7bfc98049298177bc655cf341d7a8b6a0011)]:
|
||||||
|
- task-master-ai@0.27.2
|
||||||
|
|
||||||
|
## 0.25.2
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`f487736`](https://github.com/eyaltoledano/claude-task-master/commit/f487736670ef8c484059f676293777eabb249c9e), [`c911608`](https://github.com/eyaltoledano/claude-task-master/commit/c911608f60454253f4e024b57ca84e5a5a53f65c), [`1a18794`](https://github.com/eyaltoledano/claude-task-master/commit/1a1879483b86c118a4e46c02cbf4acebfcf6bcf9)]:
|
||||||
|
- task-master-ai@0.27.1
|
||||||
|
|
||||||
|
## 0.25.2-rc.1
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`1a18794`](https://github.com/eyaltoledano/claude-task-master/commit/1a1879483b86c118a4e46c02cbf4acebfcf6bcf9)]:
|
||||||
|
- task-master-ai@0.27.1-rc.1
|
||||||
|
|
||||||
|
## 0.25.2-rc.0
|
||||||
|
|
||||||
|
### Patch Changes
|
||||||
|
|
||||||
|
- Updated dependencies [[`f487736`](https://github.com/eyaltoledano/claude-task-master/commit/f487736670ef8c484059f676293777eabb249c9e)]:
|
||||||
|
- task-master-ai@0.27.1-rc.0
|
||||||
|
|
||||||
## 0.25.0
|
## 0.25.0
|
||||||
|
|
||||||
### Minor Changes
|
### Minor Changes
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
"private": true,
|
"private": true,
|
||||||
"displayName": "TaskMaster",
|
"displayName": "TaskMaster",
|
||||||
"description": "A visual Kanban board interface for TaskMaster projects in VS Code",
|
"description": "A visual Kanban board interface for TaskMaster projects in VS Code",
|
||||||
"version": "0.25.0",
|
"version": "0.25.4",
|
||||||
"publisher": "Hamster",
|
"publisher": "Hamster",
|
||||||
"icon": "assets/icon.png",
|
"icon": "assets/icon.png",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -254,8 +254,9 @@
|
|||||||
"@radix-ui/react-separator": "^1.1.7",
|
"@radix-ui/react-separator": "^1.1.7",
|
||||||
"@radix-ui/react-slot": "^1.2.3",
|
"@radix-ui/react-slot": "^1.2.3",
|
||||||
"@tailwindcss/postcss": "^4.1.11",
|
"@tailwindcss/postcss": "^4.1.11",
|
||||||
|
"@tanstack/react-query": "^5.83.0",
|
||||||
"@types/mocha": "^10.0.10",
|
"@types/mocha": "^10.0.10",
|
||||||
"@types/node": "20.x",
|
"@types/node": "^22.10.5",
|
||||||
"@types/react": "19.1.8",
|
"@types/react": "19.1.8",
|
||||||
"@types/react-dom": "19.1.6",
|
"@types/react-dom": "19.1.6",
|
||||||
"@types/vscode": "^1.101.0",
|
"@types/vscode": "^1.101.0",
|
||||||
@@ -271,12 +272,12 @@
|
|||||||
"lucide-react": "^0.525.0",
|
"lucide-react": "^0.525.0",
|
||||||
"npm-run-all": "^4.1.5",
|
"npm-run-all": "^4.1.5",
|
||||||
"postcss": "8.5.6",
|
"postcss": "8.5.6",
|
||||||
|
"react": "^19.0.0",
|
||||||
|
"react-dom": "^19.0.0",
|
||||||
"tailwind-merge": "^3.3.1",
|
"tailwind-merge": "^3.3.1",
|
||||||
"tailwindcss": "4.1.11",
|
"tailwindcss": "4.1.11",
|
||||||
"typescript": "^5.8.3",
|
"typescript": "^5.9.2",
|
||||||
"@tanstack/react-query": "^5.83.0",
|
"@tm/core": "*"
|
||||||
"react": "^19.0.0",
|
|
||||||
"react-dom": "^19.0.0"
|
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"glob@<8": "^10.4.5",
|
"glob@<8": "^10.4.5",
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "task-master-hamster",
|
"name": "task-master-hamster",
|
||||||
"displayName": "Taskmaster AI",
|
"displayName": "Taskmaster AI",
|
||||||
"description": "A visual Kanban board interface for Taskmaster projects in VS Code",
|
"description": "A visual Kanban board interface for Taskmaster projects in VS Code",
|
||||||
"version": "0.23.1",
|
"version": "0.25.3",
|
||||||
"publisher": "Hamster",
|
"publisher": "Hamster",
|
||||||
"icon": "assets/icon.png",
|
"icon": "assets/icon.png",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
"outDir": "out",
|
"outDir": "out",
|
||||||
"lib": ["ES2022", "DOM"],
|
"lib": ["ES2022", "DOM"],
|
||||||
"sourceMap": true,
|
"sourceMap": true,
|
||||||
"rootDir": "src",
|
|
||||||
"strict": true /* enable all strict type-checking options */,
|
"strict": true /* enable all strict type-checking options */,
|
||||||
"moduleResolution": "Node",
|
"moduleResolution": "Node",
|
||||||
"esModuleInterop": true,
|
"esModuleInterop": true,
|
||||||
@@ -21,8 +20,10 @@
|
|||||||
"@/*": ["./src/*"],
|
"@/*": ["./src/*"],
|
||||||
"@/components/*": ["./src/components/*"],
|
"@/components/*": ["./src/components/*"],
|
||||||
"@/lib/*": ["./src/lib/*"],
|
"@/lib/*": ["./src/lib/*"],
|
||||||
"@tm/core": ["../core/src"]
|
"@tm/core": ["../../packages/tm-core/src/index.ts"],
|
||||||
|
"@tm/core/*": ["../../packages/tm-core/src/*"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"include": ["src/**/*"],
|
||||||
"exclude": ["node_modules", ".vscode-test", "out", "dist"]
|
"exclude": ["node_modules", ".vscode-test", "out", "dist"]
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user