Simplified the Task Master CLI by organizing code into modules within the directory. **Why:** - **Better Organization:** Code is now grouped by function (AI, commands, dependencies, tasks, UI, utilities). - **Easier to Maintain:** Smaller modules are simpler to update and fix. - **Scalable:** New features can be added more easily in a structured way. **What Changed:** - Moved code from single _____ _ __ __ _ |_ _|_ _ ___| | __ | \/ | __ _ ___| |_ ___ _ __ | |/ _` / __| |/ / | |\/| |/ _` / __| __/ _ \ '__| | | (_| \__ \ < | | | | (_| \__ \ || __/ | |_|\__,_|___/_|\_\ |_| |_|\__,_|___/\__\___|_| by https://x.com/eyaltoledano ╭────────────────────────────────────────────╮ │ │ │ Version: 0.9.16 Project: Task Master │ │ │ ╰────────────────────────────────────────────╯ ╭─────────────────────╮ │ │ │ Task Master CLI │ │ │ ╰─────────────────────╯ ╭───────────────────╮ │ Task Generation │ ╰───────────────────╯ parse-prd --input=<file.txt> [--tasks=10] Generate tasks from a PRD document generate Create individual task files from tasks… ╭───────────────────╮ │ Task Management │ ╰───────────────────╯ list [--status=<status>] [--with-subtas… List all tasks with their status set-status --id=<id> --status=<status> Update task status (done, pending, etc.) update --from=<id> --prompt="<context>" Update tasks based on new requirements add-task --prompt="<text>" [--dependencies=… Add a new task using AI add-dependency --id=<id> --depends-on=<id> Add a dependency to a task remove-dependency --id=<id> --depends-on=<id> Remove a dependency from a task ╭──────────────────────────╮ │ Task Analysis & Detail │ ╰──────────────────────────╯ analyze-complexity [--research] [--threshold=5] Analyze tasks and generate expansion re… complexity-report [--file=<path>] Display the complexity analysis report expand --id=<id> [--num=5] [--research] [… Break down tasks into detailed subtasks expand --all [--force] [--research] Expand all pending tasks with subtasks clear-subtasks --id=<id> Remove subtasks from specified tasks ╭─────────────────────────────╮ │ Task Navigation & Viewing │ ╰─────────────────────────────╯ next Show the next task to work on based on … show <id> Display detailed information about a sp… ╭─────────────────────────╮ │ Dependency Management │ ╰─────────────────────────╯ validate-dependenci… Identify invalid dependencies without f… fix-dependencies Fix invalid dependencies automatically ╭─────────────────────────╮ │ Environment Variables │ ╰─────────────────────────╯ ANTHROPIC_API_KEY Your Anthropic API key Required MODEL Claude model to use Default: claude-3-7-sonn… MAX_TOKENS Maximum tokens for responses Default: 4000 TEMPERATURE Temperature for model responses Default: 0.7 PERPLEXITY_API_KEY Perplexity API key for research Optional PERPLEXITY_MODEL Perplexity model to use Default: sonar-small-onl… DEBUG Enable debug logging Default: false LOG_LEVEL Console output level (debug,info,warn,error) Default: info DEFAULT_SUBTASKS Default number of subtasks to generate Default: 3 DEFAULT_PRIORITY Default task priority Default: medium PROJECT_NAME Project name displayed in UI Default: Task Master file into these new modules: - : AI interactions (Claude, Perplexity) - : CLI command definitions (Commander.js) - : Task dependency handling - : Core task operations (create, list, update, etc.) - : User interface elements (display, formatting) - : Utility functions and configuration - : Exports all modules - Replaced direct use of _____ _ __ __ _ |_ _|_ _ ___| | __ | \/ | __ _ ___| |_ ___ _ __ | |/ _` / __| |/ / | |\/| |/ _` / __| __/ _ \ '__| | | (_| \__ \ < | | | | (_| \__ \ || __/ | |_|\__,_|___/_|\_\ |_| |_|\__,_|___/\__\___|_| by https://x.com/eyaltoledano ╭────────────────────────────────────────────╮ │ │ │ Version: 0.9.16 Project: Task Master │ │ │ ╰────────────────────────────────────────────╯ ╭─────────────────────╮ │ │ │ Task Master CLI │ │ │ ╰─────────────────────╯ ╭───────────────────╮ │ Task Generation │ ╰───────────────────╯ parse-prd --input=<file.txt> [--tasks=10] Generate tasks from a PRD document generate Create individual task files from tasks… ╭───────────────────╮ │ Task Management │ ╰───────────────────╯ list [--status=<status>] [--with-subtas… List all tasks with their status set-status --id=<id> --status=<status> Update task status (done, pending, etc.) update --from=<id> --prompt="<context>" Update tasks based on new requirements add-task --prompt="<text>" [--dependencies=… Add a new task using AI add-dependency --id=<id> --depends-on=<id> Add a dependency to a task remove-dependency --id=<id> --depends-on=<id> Remove a dependency from a task ╭──────────────────────────╮ │ Task Analysis & Detail │ ╰──────────────────────────╯ analyze-complexity [--research] [--threshold=5] Analyze tasks and generate expansion re… complexity-report [--file=<path>] Display the complexity analysis report expand --id=<id> [--num=5] [--research] [… Break down tasks into detailed subtasks expand --all [--force] [--research] Expand all pending tasks with subtasks clear-subtasks --id=<id> Remove subtasks from specified tasks ╭─────────────────────────────╮ │ Task Navigation & Viewing │ ╰─────────────────────────────╯ next Show the next task to work on based on … show <id> Display detailed information about a sp… ╭─────────────────────────╮ │ Dependency Management │ ╰─────────────────────────╯ validate-dependenci… Identify invalid dependencies without f… fix-dependencies Fix invalid dependencies automatically ╭─────────────────────────╮ │ Environment Variables │ ╰─────────────────────────╯ ANTHROPIC_API_KEY Your Anthropic API key Required MODEL Claude model to use Default: claude-3-7-sonn… MAX_TOKENS Maximum tokens for responses Default: 4000 TEMPERATURE Temperature for model responses Default: 0.7 PERPLEXITY_API_KEY Perplexity API key for research Optional PERPLEXITY_MODEL Perplexity model to use Default: sonar-small-onl… DEBUG Enable debug logging Default: false LOG_LEVEL Console output level (debug,info,warn,error) Default: info DEFAULT_SUBTASKS Default number of subtasks to generate Default: 3 DEFAULT_PRIORITY Default task priority Default: medium PROJECT_NAME Project name displayed in UI Default: Task Master with the global command (see ). - Updated documentation () to reflect the new command. **Benefits:** Code is now cleaner, easier to work with, and ready for future growth. Use the command (or ) to run the CLI. See for command details.
153 lines
4.3 KiB
Plaintext
153 lines
4.3 KiB
Plaintext
---
|
|
description: Guidelines for implementing and maintaining user interface components
|
|
globs: scripts/modules/ui.js
|
|
alwaysApply: false
|
|
---
|
|
|
|
# User Interface Implementation Guidelines
|
|
|
|
## Core UI Component Principles
|
|
|
|
- **Function Scope Separation**:
|
|
- ✅ DO: Keep display logic separate from business logic
|
|
- ✅ DO: Import data processing functions from other modules
|
|
- ❌ DON'T: Include task manipulations within UI functions
|
|
- ❌ DON'T: Create circular dependencies with other modules
|
|
|
|
- **Standard Display Pattern**:
|
|
```javascript
|
|
// ✅ DO: Follow this pattern for display functions
|
|
/**
|
|
* Display information about a task
|
|
* @param {Object} task - The task to display
|
|
*/
|
|
function displayTaskInfo(task) {
|
|
console.log(boxen(
|
|
chalk.white.bold(`Task: #${task.id} - ${task.title}`),
|
|
{ padding: 1, borderColor: 'blue', borderStyle: 'round' }
|
|
));
|
|
}
|
|
```
|
|
|
|
## Visual Styling Standards
|
|
|
|
- **Color Scheme**:
|
|
- Use `chalk.blue` for informational messages
|
|
- Use `chalk.green` for success messages
|
|
- Use `chalk.yellow` for warnings
|
|
- Use `chalk.red` for errors
|
|
- Use `chalk.cyan` for prompts and highlights
|
|
- Use `chalk.magenta` for subtask-related information
|
|
|
|
- **Box Styling**:
|
|
```javascript
|
|
// ✅ DO: Use consistent box styles by content type
|
|
// For success messages:
|
|
boxen(content, {
|
|
padding: 1,
|
|
borderColor: 'green',
|
|
borderStyle: 'round',
|
|
margin: { top: 1 }
|
|
})
|
|
|
|
// For errors:
|
|
boxen(content, {
|
|
padding: 1,
|
|
borderColor: 'red',
|
|
borderStyle: 'round'
|
|
})
|
|
|
|
// For information:
|
|
boxen(content, {
|
|
padding: 1,
|
|
borderColor: 'blue',
|
|
borderStyle: 'round',
|
|
margin: { top: 1, bottom: 1 }
|
|
})
|
|
```
|
|
|
|
## Table Display Guidelines
|
|
|
|
- **Table Structure**:
|
|
- Use [`cli-table3`](mdc:node_modules/cli-table3/README.md) for consistent table rendering
|
|
- Include colored headers with bold formatting
|
|
- Use appropriate column widths for readability
|
|
|
|
```javascript
|
|
// ✅ DO: Create well-structured tables
|
|
const table = new Table({
|
|
head: [
|
|
chalk.cyan.bold('ID'),
|
|
chalk.cyan.bold('Title'),
|
|
chalk.cyan.bold('Status'),
|
|
chalk.cyan.bold('Priority'),
|
|
chalk.cyan.bold('Dependencies')
|
|
],
|
|
colWidths: [5, 40, 15, 10, 20]
|
|
});
|
|
|
|
// Add content rows
|
|
table.push([
|
|
task.id,
|
|
truncate(task.title, 37),
|
|
getStatusWithColor(task.status),
|
|
chalk.white(task.priority || 'medium'),
|
|
formatDependenciesWithStatus(task.dependencies, allTasks, true)
|
|
]);
|
|
|
|
console.log(table.toString());
|
|
```
|
|
|
|
## Loading Indicators
|
|
|
|
- **Animation Standards**:
|
|
- Use [`ora`](mdc:node_modules/ora/readme.md) for spinner animations
|
|
- Create and stop loading indicators correctly
|
|
|
|
```javascript
|
|
// ✅ DO: Properly manage loading state
|
|
const loadingIndicator = startLoadingIndicator('Processing task data...');
|
|
try {
|
|
// Do async work...
|
|
stopLoadingIndicator(loadingIndicator);
|
|
// Show success message
|
|
} catch (error) {
|
|
stopLoadingIndicator(loadingIndicator);
|
|
// Show error message
|
|
}
|
|
```
|
|
|
|
## Helper Functions
|
|
|
|
- **Status Formatting**:
|
|
- Use `getStatusWithColor` for consistent status display
|
|
- Use `formatDependenciesWithStatus` for dependency lists
|
|
- Use `truncate` to handle text that may overflow display
|
|
|
|
- **Progress Reporting**:
|
|
- Use visual indicators for progress (bars, percentages)
|
|
- Include both numeric and visual representations
|
|
|
|
```javascript
|
|
// ✅ DO: Show clear progress indicators
|
|
console.log(`${chalk.cyan('Tasks:')} ${completedTasks}/${totalTasks} (${completionPercentage.toFixed(1)}%)`);
|
|
console.log(`${chalk.cyan('Progress:')} ${createProgressBar(completionPercentage)}`);
|
|
```
|
|
|
|
## Command Suggestions
|
|
|
|
- **Action Recommendations**:
|
|
- Provide next step suggestions after command completion
|
|
- Use a consistent format for suggested commands
|
|
|
|
```javascript
|
|
// ✅ DO: Show suggested next actions
|
|
console.log(boxen(
|
|
chalk.white.bold('Next Steps:') + '\n\n' +
|
|
`${chalk.cyan('1.')} Run ${chalk.yellow('task-master list')} to view all tasks\n` +
|
|
`${chalk.cyan('2.')} Run ${chalk.yellow('task-master show --id=' + newTaskId)} to view details`,
|
|
{ padding: 1, borderColor: 'cyan', borderStyle: 'round', margin: { top: 1 } }
|
|
));
|
|
```
|
|
|
|
Refer to [`ui.js`](mdc:scripts/modules/ui.js) for implementation examples and [`new_features.mdc`](mdc:.cursor/rules/new_features.mdc) for integration guidelines. |