Skip to content

Commit c27aec8

Browse files
authored
Merge pull request #213 from syncable-dev/develop
Develop
2 parents 4f80954 + 870287e commit c27aec8

3 files changed

Lines changed: 16 additions & 14 deletions

File tree

README.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,18 +85,20 @@ The Syncable Agent is like having a senior DevOps engineer available 24/7. It ca
8585
- Maps service dependencies and port configurations
8686
- Reads your existing configs and improves them
8787

88-
### Work With Your IDE
89-
The agent integrates with VS Code for a seamless experience:
88+
### 🔌 VS Code Integration (Recommended)
89+
90+
For the best experience, install the **Syncable IDE Companion** extension:
9091

9192
```bash
92-
# 1. Install the companion extension
9393
code --install-extension syncable.syncable-ide-companion
94+
```
9495

95-
# 2. Run from VS Code's terminal
96-
sync-ctl chat
96+
This enables:
97+
- **Native diff views** — Review file changes side-by-side in VS Code
98+
- **One-click accept/reject** — Accept with `Cmd+S` or reject changes easily
99+
- **Auto-detection** — Works automatically when running `sync-ctl chat` in VS Code's terminal
97100
98-
# 3. File changes open in VS Code's native diff view
99-
```
101+
> Without the extension, the agent still works but shows diffs in the terminal instead.
100102
101103
### Chat Commands
102104
| Command | Description |

ROADMAP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
### 🤖 AI Agent
3030
- [x] **Multi-Provider Support**:
31-
- [x] OpenAI (GPT-4, GPT-4o, GPT-3.5)
31+
- [x] OpenAI (GPT-5, GPT-4, GPT-4o, GPT-3.5)
3232
- [x] Anthropic (Claude Sonnet, Claude Opus)
3333
- [x] **Interactive Chat** — Natural language DevOps assistance
3434
- [x] **Project-Aware Context** — Analyzes codebase before generating

src/agent/ui/input.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -514,8 +514,8 @@ fn render(state: &mut InputState, prompt: &str, stdout: &mut io::Stdout) -> io::
514514
// Render suggestions below if active
515515
let mut lines_rendered = 0;
516516
if state.showing_suggestions && !state.suggestions.is_empty() {
517-
// Move to next line for suggestions
518-
println!();
517+
// Move to next line for suggestions (use \r\n in raw mode)
518+
print!("\r\n");
519519
lines_rendered += 1;
520520

521521
for (i, suggestion) in state.suggestions.iter().enumerate() {
@@ -524,18 +524,18 @@ fn render(state: &mut InputState, prompt: &str, stdout: &mut io::Stdout) -> io::
524524

525525
if is_selected {
526526
if suggestion.is_dir {
527-
println!(" {}{} {}{}", ansi::CYAN, prefix, suggestion.display, ansi::RESET);
527+
print!(" {}{} {}{}\r\n", ansi::CYAN, prefix, suggestion.display, ansi::RESET);
528528
} else {
529-
println!(" {}{} {}{}", ansi::WHITE, prefix, suggestion.display, ansi::RESET);
529+
print!(" {}{} {}{}\r\n", ansi::WHITE, prefix, suggestion.display, ansi::RESET);
530530
}
531531
} else {
532-
println!(" {}{} {}{}", ansi::DIM, prefix, suggestion.display, ansi::RESET);
532+
print!(" {}{} {}{}\r\n", ansi::DIM, prefix, suggestion.display, ansi::RESET);
533533
}
534534
lines_rendered += 1;
535535
}
536536

537537
// Print hint
538-
println!(" {}[↑↓ navigate, Enter select, Esc cancel]{}", ansi::DIM, ansi::RESET);
538+
print!(" {}[↑↓ navigate, Enter select, Esc cancel]{}\r\n", ansi::DIM, ansi::RESET);
539539
lines_rendered += 1;
540540
}
541541

0 commit comments

Comments
 (0)