Skip to content

Commit 897764a

Browse files
Merge pull request #1527 from eyaltoledano/next
2 parents 1c5a6c3 + 416ebc4 commit 897764a

40 files changed

+8962
-6159
lines changed

.changeset/clever-moments-find.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
"task-master-ai": minor
3+
---
4+
5+
Enhanced task metadata display for remote/team mode tasks
6+
7+
- Tasks now display rich implementation guidance in team mode including:
8+
- **Relevant Files**: Files to create, modify, or reference with descriptions
9+
- **Codebase Patterns**: Coding patterns and conventions to follow
10+
- **Existing Infrastructure**: Code and utilities to leverage
11+
- **Scope Boundaries**: What's in and out of scope for the task
12+
- **Implementation Approach**: Step-by-step guidance
13+
- **Technical Constraints**: Requirements and limitations
14+
- **Acceptance Criteria**: Definition of done checklist
15+
- **Skills & Category**: Task classification and required expertise
16+
- How to see the new task details:
17+
1. Create a brief on tryhamster.com
18+
2. Generate the plan of the brief
19+
3. View subtasks

.changeset/light-trees-deny.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"task-master-ai": patch
3+
---
4+
5+
Fix Azure OpenAI provider to use correct deployment-based URL format
6+
7+
- Add Azure OpenAI documentation page <https://docs.task-master.dev/providers/azure>

.changeset/pre.json

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"mode": "exit",
3+
"tag": "rc",
4+
"initialVersions": {
5+
"task-master-ai": "0.38.0",
6+
"@tm/cli": "",
7+
"docs": "0.0.14",
8+
"extension": "0.26.0",
9+
"@tm/mcp": "",
10+
"@tm/ai-sdk-provider-grok-cli": "",
11+
"@tm/build-config": "",
12+
"@tm/claude-code-plugin": "0.0.8",
13+
"@tm/bridge": "",
14+
"@tm/core": "",
15+
"@tm/profiles": ""
16+
},
17+
"changesets": [
18+
"clever-moments-find",
19+
"light-trees-deny",
20+
"yummy-nights-repeat"
21+
]
22+
}

.changeset/yummy-nights-repeat.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"task-master-ai": minor
3+
---
4+
5+
Add tool search tool for Claude Code MCP server and enable deferred MCP loading
6+
7+
- Added new tool search tool capabilities for the Taskmaster MCP in Claude Code
8+
- Running `task-master rules add claude` now automatically configures your shell (`~/.zshrc`, `~/.bashrc`, or PowerShell profile) with `ENABLE_EXPERIMENTAL_MCP_CLI=true` to enable deferred MCP loading
9+
- **Context savings**: Deferred loading saves ~16% of Claude Code's 200k context window (~33k tokens for Task Master alone). Savings apply to all MCP servers, so total savings may be higher depending on your setup.

.mcp.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@
33
"task-master-ai": {
44
"type": "stdio",
55
"command": "npx",
6-
"args": ["-y", "task-master-ai"]
6+
"args": ["-y", "task-master-ai"],
7+
"env": {
8+
"TASK_MASTER_TOOLS": "all"
9+
}
710
}
811
}
912
}

CHANGELOG.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
# task-master-ai
22

3+
## 0.39.0-rc.0
4+
5+
### Minor Changes
6+
7+
- [#1521](https://github.com/eyaltoledano/claude-task-master/pull/1521) [`353e3bf`](https://github.com/eyaltoledano/claude-task-master/commit/353e3bffd6df528dc19f7c5790564d0dead14c6d) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Enhanced task metadata display for remote/team mode tasks
8+
- Tasks now display rich implementation guidance in team mode including:
9+
- **Relevant Files**: Files to create, modify, or reference with descriptions
10+
- **Codebase Patterns**: Coding patterns and conventions to follow
11+
- **Existing Infrastructure**: Code and utilities to leverage
12+
- **Scope Boundaries**: What's in and out of scope for the task
13+
- **Implementation Approach**: Step-by-step guidance
14+
- **Technical Constraints**: Requirements and limitations
15+
- **Acceptance Criteria**: Definition of done checklist
16+
- **Skills & Category**: Task classification and required expertise
17+
- How to see the new task details:
18+
1. Create a brief on tryhamster.com
19+
2. Generate the plan of the brief
20+
3. View subtasks
21+
22+
- [#1525](https://github.com/eyaltoledano/claude-task-master/pull/1525) [`1c2228d`](https://github.com/eyaltoledano/claude-task-master/commit/1c2228dbb618e522798c4484b74c1508f13d61d6) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Add tool search tool for Claude Code MCP server and enable deferred MCP loading
23+
- Added new tool search tool capabilities for the Taskmaster MCP in Claude Code
24+
- Running `task-master rules add claude` now automatically configures your shell (`~/.zshrc`, `~/.bashrc`, or PowerShell profile) with `ENABLE_EXPERIMENTAL_MCP_CLI=true` to enable deferred MCP loading
25+
- **Context savings**: Deferred loading saves ~16% of Claude Code's 200k context window (~33k tokens for Task Master alone). Savings apply to all MCP servers, so total savings may be higher depending on your setup.
26+
27+
### Patch Changes
28+
29+
- [#1310](https://github.com/eyaltoledano/claude-task-master/pull/1310) [`4b6570e`](https://github.com/eyaltoledano/claude-task-master/commit/4b6570e300eedb265af215c0ca6baeb772d42e4a) Thanks [@Crunchyman-ralph](https://github.com/Crunchyman-ralph)! - Fix Azure OpenAI provider to use correct deployment-based URL format
30+
- Add Azure OpenAI documentation page <https://docs.task-master.dev/providers/azure>
31+
332
## 0.38.0
433

534
### Minor Changes

apps/cli/src/commands/models/custom-providers.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import { CUSTOM_PROVIDERS } from '@tm/core';
66
import chalk from 'chalk';
77
import inquirer from 'inquirer';
8+
import { getAzureBaseURL } from '../../lib/model-management.js';
89
import { validateOllamaModel, validateOpenRouterModel } from './fetchers.js';
910
import { CUSTOM_PROVIDER_IDS } from './types.js';
1011
import type {
@@ -86,18 +87,16 @@ export const customProviderConfigs: Record<
8687
},
8788
AZURE: {
8889
id: '__CUSTOM_AZURE__',
89-
name: '* Custom Azure model',
90+
name: '* Custom Azure OpenAI model',
9091
provider: CUSTOM_PROVIDERS.AZURE,
92+
requiresBaseURL: true,
9193
promptMessage: (role) =>
92-
`Enter the custom Azure OpenAI Model ID for the ${role} role (e.g., gpt-4o):`,
94+
`Enter the Azure deployment name for the ${role} role (e.g., gpt-4o):`,
9395
checkEnvVars: () => {
94-
if (
95-
!process.env.AZURE_OPENAI_API_KEY ||
96-
!process.env.AZURE_OPENAI_ENDPOINT
97-
) {
96+
if (!process.env.AZURE_OPENAI_API_KEY) {
9897
console.error(
9998
chalk.red(
100-
'Error: AZURE_OPENAI_API_KEY and/or AZURE_OPENAI_ENDPOINT environment variables are missing. Please set them before using custom Azure models.'
99+
'Error: AZURE_OPENAI_API_KEY environment variable is missing. Please set it before using Azure models.'
101100
)
102101
);
103102
return false;
@@ -171,7 +170,8 @@ export async function handleCustomProvider(
171170
modelId?: string | null;
172171
provider?: string | null;
173172
baseURL?: string | null;
174-
} | null = null
173+
} | null = null,
174+
projectRoot?: string
175175
): Promise<{
176176
modelId: string | null;
177177
provider: string | null;
@@ -203,6 +203,9 @@ export async function handleCustomProvider(
203203
if (currentModel?.provider === config.provider && currentModel?.baseURL) {
204204
// Already using this provider - preserve existing baseURL
205205
defaultBaseURL = currentModel.baseURL;
206+
} else if (config.provider === CUSTOM_PROVIDERS.AZURE && projectRoot) {
207+
// For Azure, try to use the global azureBaseURL from config
208+
defaultBaseURL = getAzureBaseURL(projectRoot) || '';
206209
} else {
207210
// Switching providers or no existing baseURL - use fallback default
208211
defaultBaseURL = config.defaultBaseURL || '';

apps/cli/src/commands/models/setup.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ async function handleSetModel(
6969
const result = await handleCustomProvider(
7070
selectedValue,
7171
role,
72-
currentModel
72+
currentModel,
73+
projectRoot
7374
);
7475
if (!result.success) {
7576
return { success: false, modified: false };

apps/cli/src/lib/model-management.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,11 @@ export function writeConfig(config: any, projectRoot: string): boolean {
160160
export function getAvailableModels(): ModelData[] {
161161
return configManagerJs.getAvailableModels() as ModelData[];
162162
}
163+
164+
/**
165+
* Get Azure base URL from config
166+
*/
167+
export function getAzureBaseURL(projectRoot?: string | null): string {
168+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
169+
return (configManagerJs.getAzureBaseURL(projectRoot as any) as string) ?? '';
170+
}

apps/cli/src/ui/components/next-task.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
import type { Task } from '@tm/core';
77
import boxen from 'boxen';
88
import chalk from 'chalk';
9+
import { renderContent } from '../../utils/content-renderer.js';
910
import { getBoxWidth, getComplexityWithColor } from '../../utils/ui.js';
10-
import { renderContent } from './task-detail.component.js';
1111

1212
/**
1313
* Next task display options

0 commit comments

Comments
 (0)