Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/commands/diff.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export const diffCommand = (taskId: string, filePath?: string, options: { onlyFi
const worktreePath = join(taskPath, 'workspace');
if (!existsSync(worktreePath)) {
console.log(colors.red(`✗ No workspace found for task '${taskId}'`));
console.log(colors.gray(' Run ') + colors.cyan(`rover tasks start ${taskId}`) + colors.gray(' first'));
console.log(colors.gray(' Run ') + colors.cyan(`rover task ${taskId}`) + colors.gray(' first'));
return;
}

Expand Down Expand Up @@ -166,8 +166,8 @@ export const diffCommand = (taskId: string, filePath?: string, options: { onlyFi

// Show additional context if not showing only files
if (!options.onlyFiles && !filePath) {
console.log(colors.gray('\nTip: Use ') + colors.cyan(`rover tasks diff ${taskId} --only-files`) + colors.gray(' to see only changed filenames'));
console.log(colors.gray(' Use ') + colors.cyan(`rover tasks diff ${taskId} <file>`) + colors.gray(' to see diff for a specific file'));
console.log(colors.gray('\nTip: Use ') + colors.cyan(`rover diff ${taskId} --only-files`) + colors.gray(' to see only changed filenames'));
console.log(colors.gray(' Use ') + colors.cyan(`rover diff ${taskId} <file>`) + colors.gray(' to see diff for a specific file'));
}

} catch (error) {
Expand Down
2 changes: 1 addition & 1 deletion src/commands/iterate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ export const iterateCommand = async (taskId: string, refinements: string, option
// Ensure workspace exists
if (!existsSync(worktreePath)) {
console.log(colors.red('✗ No workspace found for this task'));
console.log(colors.gray(' Run ') + colors.cyan(`rover tasks start ${taskId}`) + colors.gray(' first'));
console.log(colors.gray(' Run ') + colors.cyan(`rover task ${taskId}`) + colors.gray(' first'));
return;
}

Expand Down
6 changes: 3 additions & 3 deletions src/commands/list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,9 @@ export const listCommand = async (options: { watch?: boolean; verbose?: boolean
// Show tips
console.log('');
console.log(colors.gray('Tips:'));
console.log(colors.gray(' Use ') + colors.cyan('rover ps --verbose') + colors.gray(' to see error details'));
console.log(colors.gray(' Use ') + colors.cyan('rover tasks start <id> --follow') + colors.gray(' to follow logs'));
console.log(colors.gray(' Use ') + colors.cyan('rover tasks diff <id>') + colors.gray(' to see changes'));
console.log(colors.gray(' Use ') + colors.cyan('rover list --verbose') + colors.gray(' to see error details'));
console.log(colors.gray(' Use ') + colors.cyan('rover task <id> --follow') + colors.gray(' to follow logs'));
console.log(colors.gray(' Use ') + colors.cyan('rover diff <id>') + colors.gray(' to see changes'));

// Watch mode (simple refresh every 5 seconds)
if (options.watch) {
Expand Down
12 changes: 6 additions & 6 deletions src/commands/logs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export const logsCommand = (taskId: string, iterationNumber?: string, options: {

if (availableIterations.length === 0) {
console.log(colors.yellow(`⚠ No iterations found for task '${taskId}'`));
console.log(colors.gray(' Run ') + colors.cyan(`rover tasks start ${taskId}`) + colors.gray(' to start the task'));
console.log(colors.gray(' Run ') + colors.cyan(`rover task ${taskId}`) + colors.gray(' to start the task'));
return;
}

Expand All @@ -103,7 +103,7 @@ export const logsCommand = (taskId: string, iterationNumber?: string, options: {
if (!containerId) {
console.log(colors.yellow(`⚠ No container found for task '${taskId}'`));
console.log(colors.gray(' Logs are only available for recently executed tasks'));
console.log(colors.gray(' Run ') + colors.cyan(`rover tasks start ${taskId}`) + colors.gray(' to start the task'));
console.log(colors.gray(' Run ') + colors.cyan(`rover task ${taskId}`) + colors.gray(' to start the task'));
return;
}

Expand Down Expand Up @@ -215,13 +215,13 @@ export const logsCommand = (taskId: string, iterationNumber?: string, options: {
const otherIterations = availableIterations.filter(i => i !== actualIteration);
if (otherIterations.length > 0) {
console.log(colors.gray('💡 Tips:'));
console.log(colors.gray(' Use ') + colors.cyan(`rover tasks logs ${taskId} <iteration>`) + colors.gray(' to view specific iteration (if container exists)'));
console.log(colors.gray(' Use ') + colors.cyan(`rover logs ${taskId} <iteration>`) + colors.gray(' to view specific iteration (if container exists)'));
console.log(colors.gray(' Available: ') + colors.cyan(otherIterations.join(', ')));
}
}
console.log(colors.gray(' Use ') + colors.cyan(`rover tasks logs ${taskId} --follow`) + colors.gray(' to follow logs in real-time'));
console.log(colors.gray(' Use ') + colors.cyan(`rover tasks diff ${taskId}`) + colors.gray(' to see code changes'));
console.log(colors.gray(' Use ') + colors.cyan(`rover tasks start ${taskId} --follow`) + colors.gray(' to follow live logs during execution'));
console.log(colors.gray(' Use ') + colors.cyan(`rover logs ${taskId} --follow`) + colors.gray(' to follow logs in real-time'));
console.log(colors.gray(' Use ') + colors.cyan(`rover diff ${taskId}`) + colors.gray(' to see code changes'));
console.log(colors.gray(' Use ') + colors.cyan(`rover task ${taskId} --follow`) + colors.gray(' to follow live logs during execution'));
console.log(colors.gray(' Note: Logs are only available while containers exist (recent executions)'));
}

Expand Down
4 changes: 2 additions & 2 deletions src/commands/merge.ts
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@ export const mergeCommand = async (taskId: string, options: { force?: boolean }
if (!worktreePath || !existsSync(worktreePath)) {
console.log('');
console.log(colors.red('✗ No worktree found for this task'));
console.log(colors.gray(' Run ') + colors.cyan(`rover tasks start ${taskId}`) + colors.gray(' first'));
console.log(colors.gray(' Run ') + colors.cyan(`rover task ${taskId}`) + colors.gray(' first'));
return;
}

Expand Down Expand Up @@ -657,7 +657,7 @@ export const mergeCommand = async (taskId: string, options: { force?: boolean }
console.log(colors.cyan(' 1. Fix conflicts in the listed files'));
console.log(colors.cyan(' 2. Run: git add <resolved-files>'));
console.log(colors.cyan(' 3. Run: git commit'));
console.log(colors.cyan(` 4. Run: rover tasks merge ${taskId} to complete the process`));
console.log(colors.cyan(` 4. Run: rover merge ${taskId} to complete the process`));
try {
execSync('git merge --abort', { stdio: 'pipe' });
} catch (abortError) {
Expand Down
5 changes: 2 additions & 3 deletions src/commands/shell.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ export const shellCommand = async (taskId: string) => {
const worktreePath = join(taskPath, 'workspace');
if (!existsSync(worktreePath)) {
console.log(colors.red('\n✗ No worktree found for this task'));
console.log(colors.gray(' Run ') + colors.cyan(`rover tasks start ${taskId}`) + colors.gray(' first to create a workspace'));
return;
}

Expand Down Expand Up @@ -126,8 +125,8 @@ export const shellCommand = async (taskId: string) => {
}
console.log('');
console.log(colors.cyan('💡 Your worktree is preserved at: ') + colors.white(worktreePath));
console.log(colors.gray(' Use ') + colors.cyan(`rover tasks diff ${taskId}`) + colors.gray(' to see any changes you made'));
console.log(colors.gray(' Use ') + colors.cyan(`rover tasks merge ${taskId}`) + colors.gray(' to merge when ready'));
console.log(colors.gray(' Use ') + colors.cyan(`rover diff ${taskId}`) + colors.gray(' to see any changes you made'));
console.log(colors.gray(' Use ') + colors.cyan(`rover merge ${taskId}`) + colors.gray(' to merge when ready'));
});

dockerProcess.on('error', (error) => {
Expand Down
6 changes: 3 additions & 3 deletions src/commands/task.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,9 @@ export const startDockerExecution = async (taskId: string, taskData: any, worktr

spinner.success('Container started in background');
console.log(colors.cyan(`🐳 Task is running in background (Container ID: ${containerId.substring(0, 12)})`));
console.log(colors.gray(` Use `) + colors.cyan(`rover ps`) + colors.gray(` to monitor progress`));
console.log(colors.gray(` Use `) + colors.cyan(`rover tasks logs ${taskId}`) + colors.gray(` to view logs`));
console.log(colors.gray(` Use `) + colors.cyan(`rover tasks start ${taskId} --follow`) + colors.gray(` to follow the logs`));
console.log(colors.gray(` Use `) + colors.cyan(`rover list`) + colors.gray(` to monitor progress`));
console.log(colors.gray(` Use `) + colors.cyan(`rover logs ${taskId}`) + colors.gray(` to view logs`));
console.log(colors.gray(` Use `) + colors.cyan(`rover task ${taskId} --follow`) + colors.gray(` to follow the logs`));

// Update task metadata with container ID
updateTaskMetadata(taskId, {
Expand Down