@evolve.labs/devflow 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/.claude/commands/agents/architect.md +1162 -0
  2. package/.claude/commands/agents/architect.meta.yaml +124 -0
  3. package/.claude/commands/agents/builder.md +1432 -0
  4. package/.claude/commands/agents/builder.meta.yaml +117 -0
  5. package/.claude/commands/agents/chronicler.md +633 -0
  6. package/.claude/commands/agents/chronicler.meta.yaml +217 -0
  7. package/.claude/commands/agents/guardian.md +456 -0
  8. package/.claude/commands/agents/guardian.meta.yaml +127 -0
  9. package/.claude/commands/agents/strategist.md +483 -0
  10. package/.claude/commands/agents/strategist.meta.yaml +158 -0
  11. package/.claude/commands/agents/system-designer.md +1137 -0
  12. package/.claude/commands/agents/system-designer.meta.yaml +156 -0
  13. package/.claude/commands/devflow-help.md +93 -0
  14. package/.claude/commands/devflow-status.md +60 -0
  15. package/.claude/commands/quick/create-adr.md +82 -0
  16. package/.claude/commands/quick/new-feature.md +57 -0
  17. package/.claude/commands/quick/security-check.md +54 -0
  18. package/.claude/commands/quick/system-design.md +58 -0
  19. package/.claude_project +52 -0
  20. package/.devflow/agents/architect.meta.yaml +122 -0
  21. package/.devflow/agents/builder.meta.yaml +116 -0
  22. package/.devflow/agents/chronicler.meta.yaml +222 -0
  23. package/.devflow/agents/guardian.meta.yaml +127 -0
  24. package/.devflow/agents/strategist.meta.yaml +158 -0
  25. package/.devflow/agents/system-designer.meta.yaml +265 -0
  26. package/.devflow/project.yaml +242 -0
  27. package/.gitignore-template +84 -0
  28. package/LICENSE +21 -0
  29. package/README.md +249 -0
  30. package/bin/devflow.js +54 -0
  31. package/lib/autopilot.js +235 -0
  32. package/lib/autopilotConstants.js +213 -0
  33. package/lib/constants.js +95 -0
  34. package/lib/init.js +200 -0
  35. package/lib/update.js +181 -0
  36. package/lib/utils.js +157 -0
  37. package/lib/web.js +119 -0
  38. package/package.json +57 -0
  39. package/web/CHANGELOG.md +192 -0
  40. package/web/README.md +156 -0
  41. package/web/app/api/autopilot/execute/route.ts +102 -0
  42. package/web/app/api/autopilot/terminal-execute/route.ts +124 -0
  43. package/web/app/api/files/route.ts +280 -0
  44. package/web/app/api/files/tree/route.ts +160 -0
  45. package/web/app/api/git/route.ts +201 -0
  46. package/web/app/api/health/route.ts +94 -0
  47. package/web/app/api/project/open/route.ts +134 -0
  48. package/web/app/api/search/route.ts +247 -0
  49. package/web/app/api/specs/route.ts +405 -0
  50. package/web/app/api/terminal/route.ts +222 -0
  51. package/web/app/globals.css +160 -0
  52. package/web/app/ide/layout.tsx +43 -0
  53. package/web/app/ide/page.tsx +216 -0
  54. package/web/app/layout.tsx +34 -0
  55. package/web/app/page.tsx +303 -0
  56. package/web/components/agents/AgentIcons.tsx +281 -0
  57. package/web/components/autopilot/AutopilotConfigModal.tsx +245 -0
  58. package/web/components/autopilot/AutopilotPanel.tsx +299 -0
  59. package/web/components/dashboard/DashboardPanel.tsx +393 -0
  60. package/web/components/editor/Breadcrumbs.tsx +134 -0
  61. package/web/components/editor/EditorPanel.tsx +120 -0
  62. package/web/components/editor/EditorTabs.tsx +229 -0
  63. package/web/components/editor/MarkdownPreview.tsx +154 -0
  64. package/web/components/editor/MermaidDiagram.tsx +113 -0
  65. package/web/components/editor/MonacoEditor.tsx +177 -0
  66. package/web/components/editor/TabContextMenu.tsx +207 -0
  67. package/web/components/git/GitPanel.tsx +534 -0
  68. package/web/components/layout/Shell.tsx +15 -0
  69. package/web/components/layout/StatusBar.tsx +100 -0
  70. package/web/components/modals/CommandPalette.tsx +393 -0
  71. package/web/components/modals/GlobalSearch.tsx +348 -0
  72. package/web/components/modals/QuickOpen.tsx +241 -0
  73. package/web/components/modals/RecentFiles.tsx +208 -0
  74. package/web/components/projects/ProjectSelector.tsx +147 -0
  75. package/web/components/settings/SettingItem.tsx +150 -0
  76. package/web/components/settings/SettingsPanel.tsx +323 -0
  77. package/web/components/specs/SpecsPanel.tsx +1091 -0
  78. package/web/components/terminal/TerminalPanel.tsx +683 -0
  79. package/web/components/ui/ContextMenu.tsx +182 -0
  80. package/web/components/ui/LoadingSpinner.tsx +66 -0
  81. package/web/components/ui/ResizeHandle.tsx +110 -0
  82. package/web/components/ui/Skeleton.tsx +108 -0
  83. package/web/components/ui/SkipLinks.tsx +37 -0
  84. package/web/components/ui/Toaster.tsx +57 -0
  85. package/web/hooks/useFocusTrap.ts +141 -0
  86. package/web/hooks/useKeyboardShortcuts.ts +169 -0
  87. package/web/hooks/useListNavigation.ts +237 -0
  88. package/web/lib/autopilotConstants.ts +213 -0
  89. package/web/lib/constants/agents.ts +67 -0
  90. package/web/lib/git.ts +339 -0
  91. package/web/lib/ptyManager.ts +191 -0
  92. package/web/lib/specsParser.ts +299 -0
  93. package/web/lib/stores/autopilotStore.ts +288 -0
  94. package/web/lib/stores/fileStore.ts +550 -0
  95. package/web/lib/stores/gitStore.ts +386 -0
  96. package/web/lib/stores/projectStore.ts +196 -0
  97. package/web/lib/stores/settingsStore.ts +126 -0
  98. package/web/lib/stores/specsStore.ts +297 -0
  99. package/web/lib/stores/uiStore.ts +175 -0
  100. package/web/lib/types/index.ts +177 -0
  101. package/web/lib/utils.ts +98 -0
  102. package/web/next.config.js +50 -0
  103. package/web/package.json +54 -0
  104. package/web/postcss.config.js +6 -0
  105. package/web/tailwind.config.ts +68 -0
  106. package/web/tsconfig.json +41 -0
package/lib/utils.js ADDED
@@ -0,0 +1,157 @@
1
+ const { execSync } = require('node:child_process');
2
+ const fs = require('node:fs');
3
+ const path = require('node:path');
4
+ const readline = require('node:readline');
5
+
6
+ // ANSI color helpers (no chalk dependency)
7
+ const c = {
8
+ red: (s) => `\x1b[0;31m${s}\x1b[0m`,
9
+ green: (s) => `\x1b[0;32m${s}\x1b[0m`,
10
+ yellow: (s) => `\x1b[1;33m${s}\x1b[0m`,
11
+ blue: (s) => `\x1b[0;34m${s}\x1b[0m`,
12
+ };
13
+
14
+ function printHeader(version) {
15
+ const line = c.blue('\u2501'.repeat(55));
16
+ console.log(line);
17
+ console.log(c.blue(` DevFlow CLI v${version}`));
18
+ console.log(line);
19
+ console.log();
20
+ }
21
+
22
+ function success(msg) { console.log(`${c.green('\u2713')} ${msg}`); }
23
+ function error(msg) { console.log(`${c.red('\u2717')} ${msg}`); }
24
+ function warn(msg) { console.log(`${c.yellow('\u26A0')} ${msg}`); }
25
+ function info(msg) { console.log(`${c.blue('\u2139')} ${msg}`); }
26
+
27
+ function printSuccess(version) {
28
+ const line = c.green('\u2501'.repeat(55));
29
+ console.log();
30
+ console.log(line);
31
+ console.log(c.green(` \u2713 DevFlow v${version} installed successfully!`));
32
+ console.log(line);
33
+ console.log();
34
+ }
35
+
36
+ function printUpdateSuccess(version) {
37
+ const line = c.green('\u2501'.repeat(55));
38
+ console.log();
39
+ console.log(line);
40
+ console.log(c.green(` \u2713 DevFlow updated to v${version}!`));
41
+ console.log(line);
42
+ console.log();
43
+ }
44
+
45
+ // Interactive y/N confirmation
46
+ function confirm(question) {
47
+ return new Promise((resolve) => {
48
+ const rl = readline.createInterface({
49
+ input: process.stdin,
50
+ output: process.stdout,
51
+ });
52
+ rl.question(`${question} (y/N) `, (answer) => {
53
+ rl.close();
54
+ resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
55
+ });
56
+ });
57
+ }
58
+
59
+ // Check if a CLI command exists
60
+ function commandExists(cmd) {
61
+ try {
62
+ execSync(`command -v ${cmd}`, { stdio: 'ignore' });
63
+ return true;
64
+ } catch {
65
+ return false;
66
+ }
67
+ }
68
+
69
+ // Check required/recommended dependencies
70
+ function checkDependencies() {
71
+ const platform = process.platform === 'darwin' ? 'macOS'
72
+ : process.platform === 'win32' ? 'Windows'
73
+ : 'Linux';
74
+ info(`System: ${platform}`);
75
+ console.log();
76
+
77
+ if (commandExists('claude')) {
78
+ success('Claude Code: installed');
79
+ } else {
80
+ warn('Claude Code: not found');
81
+ console.log(' Install: npm install -g @anthropic-ai/claude-code');
82
+ }
83
+
84
+ if (commandExists('git')) {
85
+ success('Git: installed');
86
+ } else {
87
+ warn('Git: not found (recommended)');
88
+ }
89
+
90
+ console.log();
91
+ }
92
+
93
+ // Copy directory recursively using Node 18+ fs.cp
94
+ async function copyDir(src, dest) {
95
+ await fs.promises.mkdir(path.dirname(dest), { recursive: true });
96
+ await fs.promises.cp(src, dest, { recursive: true, force: true });
97
+ }
98
+
99
+ // Copy single file, creating parent dirs as needed
100
+ async function copyFile(src, dest) {
101
+ await fs.promises.mkdir(path.dirname(dest), { recursive: true });
102
+ await fs.promises.copyFile(src, dest);
103
+ }
104
+
105
+ // Create multiple directories
106
+ async function ensureDirs(root, dirs) {
107
+ for (const dir of dirs) {
108
+ await fs.promises.mkdir(path.join(root, dir), { recursive: true });
109
+ }
110
+ }
111
+
112
+ // Create .gitkeep in directories that should be tracked but are empty
113
+ async function createGitkeep(root, dirs) {
114
+ for (const dir of dirs) {
115
+ const gitkeepPath = path.join(root, dir, '.gitkeep');
116
+ try {
117
+ await fs.promises.access(gitkeepPath);
118
+ } catch {
119
+ await fs.promises.writeFile(gitkeepPath, '');
120
+ }
121
+ }
122
+ }
123
+
124
+ // Check if a path exists
125
+ async function pathExists(p) {
126
+ try {
127
+ await fs.promises.access(p);
128
+ return true;
129
+ } catch {
130
+ return false;
131
+ }
132
+ }
133
+
134
+ // Resolve target path relative to cwd
135
+ function resolveTarget(targetArg) {
136
+ return path.resolve(process.cwd(), targetArg);
137
+ }
138
+
139
+ module.exports = {
140
+ c,
141
+ printHeader,
142
+ success,
143
+ error,
144
+ warn,
145
+ info,
146
+ printSuccess,
147
+ printUpdateSuccess,
148
+ confirm,
149
+ commandExists,
150
+ checkDependencies,
151
+ copyDir,
152
+ copyFile,
153
+ ensureDirs,
154
+ createGitkeep,
155
+ pathExists,
156
+ resolveTarget,
157
+ };
package/lib/web.js ADDED
@@ -0,0 +1,119 @@
1
+ const { execSync, spawn } = require('node:child_process');
2
+ const path = require('node:path');
3
+ const fs = require('node:fs');
4
+ const { PACKAGE_ROOT } = require('./constants');
5
+
6
+ /**
7
+ * devflow web - Start the DevFlow Web Dashboard
8
+ */
9
+ async function webCommand(options) {
10
+ const port = options.port || '3000';
11
+ const webDir = path.join(PACKAGE_ROOT, 'web');
12
+
13
+ // 1. Verify web/ directory exists
14
+ if (!fs.existsSync(webDir)) {
15
+ console.error('Error: Web IDE files not found.');
16
+ console.error('Re-install devflow with: npm install -g devflow-agents');
17
+ process.exit(1);
18
+ }
19
+
20
+ // 2. Check if package.json exists
21
+ const pkgPath = path.join(webDir, 'package.json');
22
+ if (!fs.existsSync(pkgPath)) {
23
+ console.error('Error: web/package.json not found.');
24
+ process.exit(1);
25
+ }
26
+
27
+ // 3. Install dependencies if needed
28
+ const nodeModules = path.join(webDir, 'node_modules');
29
+ if (!fs.existsSync(nodeModules)) {
30
+ console.log('Installing web dependencies...');
31
+ try {
32
+ execSync('npm install --production', {
33
+ cwd: webDir,
34
+ stdio: 'inherit',
35
+ timeout: 120_000,
36
+ });
37
+ } catch {
38
+ console.error('Failed to install dependencies.');
39
+ process.exit(1);
40
+ }
41
+ }
42
+
43
+ // 4. Determine the project path to open
44
+ const projectPath = options.project || process.cwd();
45
+ const resolvedProject = path.resolve(projectPath);
46
+
47
+ if (!fs.existsSync(resolvedProject)) {
48
+ console.error(`Project path not found: ${resolvedProject}`);
49
+ process.exit(1);
50
+ }
51
+
52
+ // 5. Start the web server
53
+ const isDev = options.dev || false;
54
+ const cmd = isDev ? 'dev' : 'start';
55
+
56
+ // Build first if not dev mode and .next doesn't exist
57
+ if (!isDev) {
58
+ const nextDir = path.join(webDir, '.next');
59
+ if (!fs.existsSync(nextDir)) {
60
+ console.log('Building web dashboard...');
61
+ try {
62
+ execSync('npx next build', {
63
+ cwd: webDir,
64
+ stdio: 'inherit',
65
+ timeout: 300_000,
66
+ });
67
+ } catch {
68
+ console.error('Build failed. Try running with --dev flag for development mode.');
69
+ process.exit(1);
70
+ }
71
+ }
72
+ }
73
+
74
+ console.log(`\nStarting DevFlow Web Dashboard on port ${port}...`);
75
+ console.log(`Project: ${resolvedProject}\n`);
76
+
77
+ // Set environment variables
78
+ const env = {
79
+ ...process.env,
80
+ PORT: port,
81
+ DEVFLOW_PROJECT_PATH: resolvedProject,
82
+ };
83
+
84
+ // Start the server
85
+ const child = spawn('npx', ['next', cmd, '-p', port], {
86
+ cwd: webDir,
87
+ env,
88
+ stdio: 'inherit',
89
+ });
90
+
91
+ // Open browser after a short delay (unless --no-open)
92
+ if (options.open !== false) {
93
+ setTimeout(() => {
94
+ const url = `http://localhost:${port}`;
95
+ try {
96
+ const openCmd = process.platform === 'darwin' ? 'open'
97
+ : process.platform === 'win32' ? 'start'
98
+ : 'xdg-open';
99
+ execSync(`${openCmd} ${url}`, { stdio: 'ignore' });
100
+ } catch {
101
+ console.log(`Open your browser at: ${url}`);
102
+ }
103
+ }, 3000);
104
+ }
105
+
106
+ // Handle process signals
107
+ const cleanup = () => {
108
+ child.kill();
109
+ process.exit(0);
110
+ };
111
+ process.on('SIGINT', cleanup);
112
+ process.on('SIGTERM', cleanup);
113
+
114
+ child.on('exit', (code) => {
115
+ process.exit(code || 0);
116
+ });
117
+ }
118
+
119
+ module.exports = { webCommand };
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@evolve.labs/devflow",
3
+ "version": "0.8.0",
4
+ "description": "Multi-agent system for software development with Claude Code. 6 specialized agents (Strategist, Architect, System Designer, Builder, Guardian, Chronicler) as slash commands.",
5
+ "keywords": [
6
+ "claude-code",
7
+ "ai-agents",
8
+ "multi-agent",
9
+ "devflow",
10
+ "claude",
11
+ "anthropic",
12
+ "software-development"
13
+ ],
14
+ "author": "Evolve Labs",
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/evolve-labs-cloud/devflow.git"
19
+ },
20
+ "homepage": "https://github.com/evolve-labs-cloud/devflow",
21
+ "bin": {
22
+ "devflow": "bin/devflow.js"
23
+ },
24
+ "type": "commonjs",
25
+ "engines": {
26
+ "node": ">=18.0.0"
27
+ },
28
+ "files": [
29
+ "bin/",
30
+ "lib/",
31
+ ".claude/commands/",
32
+ ".claude_project",
33
+ ".devflow/agents/",
34
+ ".devflow/project.yaml",
35
+ ".gitignore-template",
36
+ "docs/decisions/000-template.md",
37
+ "web/app/",
38
+ "web/components/",
39
+ "web/hooks/",
40
+ "web/lib/",
41
+ "web/package.json",
42
+ "web/next.config.js",
43
+ "web/tsconfig.json",
44
+ "web/tailwind.config.ts",
45
+ "web/postcss.config.js",
46
+ "web/README.md",
47
+ "web/CHANGELOG.md",
48
+ "LICENSE",
49
+ "README.md"
50
+ ],
51
+ "dependencies": {
52
+ "commander": "^12.0.0"
53
+ },
54
+ "scripts": {
55
+ "prepublishOnly": "cp .gitignore .gitignore-template"
56
+ }
57
+ }
@@ -0,0 +1,192 @@
1
+ # Changelog
2
+
3
+ All notable changes to DevFlow IDE will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.7.0] - 2026-02-11
9
+
10
+ ### Added
11
+
12
+ - **System Designer Agent** - 6th agent for system design & infrastructure at scale
13
+ - System Design Documents (SDDs) with back-of-the-envelope calculations
14
+ - RFCs, capacity planning, trade-off analysis
15
+ - SLA/SLO/SLI definitions and reliability patterns
16
+ - Quick action button in terminal panel
17
+ - **SystemDesignerIcon** - Custom SVG icon (gear/infrastructure)
18
+ - **npm Package** - `devflow-agents` available on npm
19
+ - `npx devflow-agents init` for quick installation
20
+ - `devflow update` for updates
21
+ - Optional `--web` flag to include Web IDE
22
+
23
+ ### Changed
24
+
25
+ - Updated all agent panels to include system-designer (Autopilot, Terminal, Config Modal)
26
+ - AgentId type now includes 'system-designer'
27
+ - DEFAULT_PHASES includes System Design phase between Design and Implementation
28
+ - Agent regex in specsParser includes system-designer
29
+ - Version bumped from 0.6.0 to 0.7.0
30
+
31
+ ---
32
+
33
+ ## [0.5.0] - 2025-12-29
34
+
35
+ ### Major Change: Terminal as Primary Interface
36
+
37
+ O Chat customizado foi **removido** e substituído pelo **Terminal integrado** como interface principal para interação com Claude CLI.
38
+
39
+ **Motivação:**
40
+ - Performance nativa do Claude CLI (sem overhead de parsing)
41
+ - Todas as features funcionam: session resume, tools, MCP servers
42
+ - Output em tempo real sem processamento adicional
43
+ - Menos código para manter
44
+
45
+ ### Added
46
+
47
+ - **Terminal Quick Actions** - Barra de ações rápidas no terminal
48
+ - Comandos rápidos: Claude, New Feature, Security Check, Create ADR
49
+ - Botões de agentes: Strategist, Architect, Builder, Guardian, Chronicler
50
+ - Injeção de comandos direto no terminal PTY
51
+ - **Terminal Resize Handle** - Arraste para ajustar altura do terminal
52
+ - Limites: 150px (mín) a 600px (máx)
53
+ - Altura persiste no localStorage
54
+ - Feedback visual durante arraste
55
+ - **Toast Notifications** - Feedback em ações do terminal
56
+ - "Terminal ready" ao conectar (apenas uma vez)
57
+ - "Terminal disconnected" ao perder conexão
58
+ - Toast no reset de settings
59
+ - **AGENTS Constant** - Centralizado em `lib/constants/agents.ts`
60
+ - Helper functions: `getAgentById()`, `getAgentByName()`
61
+ - **Agent Task Updates** - Instruções nos agentes para atualizar tasks
62
+ - Builder agora marca checkboxes `[x]` ao completar tasks
63
+ - Guardian atualiza status de review nas stories
64
+ - Status muda para "completed" quando todas tasks concluídas
65
+
66
+ ### Changed
67
+
68
+ - **Terminal Interface** - Agora é a forma principal de interagir com Claude
69
+ - Performance nativa do Claude CLI
70
+ - Session resume funciona automaticamente
71
+ - Todas as tools e MCP servers disponíveis
72
+ - **Resize Debouncing** - Terminal resize com debounce de 150ms
73
+ - Evita chamadas excessivas de fit() e API
74
+ - Elimina "tremidas" durante resize
75
+ - **Toast Behavior** - Toast de conexão só aparece uma vez por sessão
76
+ - Corrigido closure issue no handler de erro
77
+
78
+ ### Removed
79
+
80
+ - **Chat Panel** - Completamente removido
81
+ - `components/chat/ChatPanel.tsx`
82
+ - `components/chat/ChatMessage.tsx`
83
+ - `components/chat/AgentSelector.tsx`
84
+ - `components/chat/ChatSettings.tsx`
85
+ - `lib/stores/chatStore.ts`
86
+ - `app/api/chat/route.ts`
87
+ - **Chat Commands** - Removidos do CommandPalette
88
+ - Agent selection, clear chat, toggle chat
89
+ - **Chat Status** - Removido indicador de streaming do StatusBar
90
+
91
+ ### Refactored
92
+
93
+ - `StatusBar.tsx` - Removido import e uso de chatStore
94
+ - `CommandPalette.tsx` - Removidos comandos de chat/agentes
95
+ - `SettingsPanel.tsx` - Import de AGENTS de constants
96
+ - `SpecsPanel.tsx` - Removida integração com chat
97
+ - `page.tsx` (IDE) - Removido painel de chat lateral
98
+
99
+ ---
100
+
101
+ ## [0.4.0] - 2025-12-26
102
+
103
+ ### Added
104
+
105
+ - **US-019: Melhorias de UX - Navegação Avançada**
106
+ - Breadcrumbs mostrando caminho do arquivo ativo
107
+ - Botões Back/Forward para histórico de navegação (Alt+Left/Right)
108
+ - Tab history com navegação entre arquivos abertos
109
+ - Recent Files modal (Ctrl+Tab) com últimos 20 arquivos
110
+ - Pinned tabs para fixar arquivos importantes
111
+ - Tab context menu (Close, Close Others, Close to Right, Pin/Unpin)
112
+ - **US-019: Melhorias de UX - Acessibilidade**
113
+ - Focus trap em todos os modais
114
+ - Keyboard navigation no FileExplorer (Up/Down/Left/Right/Enter)
115
+ - Keyboard navigation no SpecsPanel (Up/Down/Enter)
116
+ - ARIA labels em todos os elementos interativos
117
+ - Skip links para navegação rápida
118
+ - Tree navigation hook seguindo WAI-ARIA TreeView pattern
119
+ - **Progress por Spec** - Barra de progresso visual nos cards
120
+ - Mostra X/Y tasks completas com porcentagem
121
+ - Status dinâmico: not_started → in_progress → completed
122
+ - Cores adaptativas baseadas no progresso
123
+ - **Settings Panel** - Modal de configurações (Cmd+,)
124
+ - Editor: font size, tab size, word wrap, minimap, line numbers
125
+ - Terminal: font size
126
+ - AI: default model, default agent, permission mode
127
+ - General: auto-save toggle and delay
128
+ - Keyboard shortcuts reference
129
+ - **Image Analysis in Chat** - Suporte a análise de imagens
130
+ - Paste (Cmd+V), drag & drop, file picker
131
+ - Imagens enviadas ao Claude para análise
132
+
133
+ ### Changed
134
+
135
+ - Monaco Editor usa settings do settingsStore
136
+ - Terminal usa fontSize do settingsStore
137
+ - EditorTabs redesenhado com controles de navegação
138
+ - FileExplorer com navegação por teclado completa
139
+
140
+ ### New Files
141
+
142
+ - `components/editor/Breadcrumbs.tsx`
143
+ - `components/editor/TabContextMenu.tsx`
144
+ - `components/modals/RecentFiles.tsx`
145
+ - `components/ui/SkipLinks.tsx`
146
+ - `hooks/useFocusTrap.ts`
147
+ - `hooks/useListNavigation.ts`
148
+ - `hooks/useTreeNavigation.ts`
149
+
150
+ ---
151
+
152
+ ## [0.2.0] - 2025-12-22
153
+
154
+ ### Added
155
+
156
+ - Dashboard Panel with metrics and health check
157
+ - Mermaid diagrams in Markdown preview
158
+ - File Explorer context menu
159
+ - Quick Open (Cmd+P), Global Search (Cmd+Shift+F)
160
+ - Command Palette (Cmd+Shift+P)
161
+ - Modern dark theme with purple accents
162
+ - Toast notifications system (sonner)
163
+ - Skeleton loaders for loading states
164
+
165
+ ### Changed
166
+
167
+ - Unified data source for Kanban and SpecsPanel
168
+ - Health API now checks parent directory for .devflow
169
+ - Faster health check
170
+
171
+ ### Removed
172
+
173
+ - Knowledge Graph visualization
174
+ - Kanban Board view (replaced by SpecsPanel)
175
+
176
+ ---
177
+
178
+ ## [0.1.0] - 2025-12-19
179
+
180
+ ### Added
181
+
182
+ - Initial release
183
+ - Monaco Editor with syntax highlighting
184
+ - File Explorer with tree view
185
+ - Terminal with xterm.js + PTY
186
+ - Git Panel with status, commit, push/pull
187
+ - Specs/Tasks panel with workflow phases
188
+ - Resizable panels
189
+
190
+ ---
191
+
192
+ *Maintained by @chronicler*
package/web/README.md ADDED
@@ -0,0 +1,156 @@
1
+ # DevFlow IDE Web
2
+
3
+ Interface web para o DevFlow - Spec-driven development powered by AI agents.
4
+
5
+ **v0.7.0** - System Designer agent + npm package
6
+
7
+ ## Features
8
+
9
+ ### Core
10
+
11
+ - **Terminal Integrado** - Interface principal para Claude CLI
12
+ - Performance nativa (sem overhead de parsing)
13
+ - Todas as features do Claude: session resume, tools, MCP servers
14
+ - Quick Actions: botões para agentes e comandos frequentes
15
+ - Altura ajustável via drag
16
+ - **Monaco Editor** - Editor de código profissional
17
+ - Syntax highlighting para 50+ linguagens
18
+ - IntelliSense, Find & Replace, Multi-cursor
19
+ - Configurações persistentes
20
+ - **File Explorer** - Navegação completa
21
+ - Keyboard navigation (WAI-ARIA TreeView)
22
+ - Context menu para operações
23
+ - Busca de arquivos
24
+
25
+ ### Painéis
26
+
27
+ - **Specs Panel** - Visualize requirements, design e tasks
28
+ - Progress bars por spec
29
+ - Navegação por teclado
30
+ - **Dashboard** - Métricas e health check do projeto
31
+ - **Git Panel** - Status, commit, push/pull, branches
32
+ - **Settings** - Configurações do editor, terminal e AI
33
+
34
+ ### Produtividade
35
+
36
+ - **Quick Open** (Cmd+P) - Busca rápida de arquivos
37
+ - **Global Search** (Cmd+Shift+F) - Busca em todo o projeto
38
+ - **Command Palette** (Cmd+Shift+P) - Todos os comandos
39
+ - **Recent Files** (Ctrl+Tab) - Arquivos recentes
40
+ - **Tab History** (Alt+Left/Right) - Navegação back/forward
41
+
42
+ ## Requisitos
43
+
44
+ - Node.js 18+
45
+ - Claude Code CLI instalado e autenticado (`claude login`)
46
+ - Um projeto DevFlow existente
47
+
48
+ ## Instalação
49
+
50
+ ```bash
51
+ # Instalar dependências
52
+ npm install
53
+
54
+ # Iniciar em modo desenvolvimento
55
+ npm run dev
56
+ ```
57
+
58
+ Acesse http://localhost:3000
59
+
60
+ ## Uso
61
+
62
+ 1. Na página inicial, insira o caminho do seu projeto DevFlow
63
+ 2. O projeto será carregado com o file explorer à esquerda
64
+ 3. Clique em arquivos para editar no Monaco Editor
65
+ 4. Use o **Terminal** (Ctrl+`) para interagir com Claude CLI
66
+ 5. Use os **Quick Actions** do terminal para chamar agentes
67
+
68
+ ### Agentes DevFlow
69
+
70
+ Execute via terminal ou Quick Actions:
71
+
72
+ | Agente | Comando | Função |
73
+ |--------|---------|--------|
74
+ | Strategist | `claude /agents:strategist` | Planejamento e Produto |
75
+ | Architect | `claude /agents:architect` | Design e Arquitetura |
76
+ | System Designer | `claude /agents:system-designer` | System Design e Escala |
77
+ | Builder | `claude /agents:builder` | Implementação |
78
+ | Guardian | `claude /agents:guardian` | Qualidade e Testes |
79
+ | Chronicler | `claude /agents:chronicler` | Documentação |
80
+
81
+ ## Stack
82
+
83
+ - **Framework**: Next.js 15 (App Router)
84
+ - **Editor**: Monaco Editor
85
+ - **Terminal**: xterm.js + node-pty (PTY real)
86
+ - **State**: Zustand with persist
87
+ - **Styling**: Tailwind CSS
88
+ - **Icons**: Lucide React
89
+ - **Notifications**: Sonner
90
+
91
+ ## Estrutura
92
+
93
+ ```
94
+ web/
95
+ ├── app/ # Next.js App Router
96
+ │ ├── api/ # API Routes
97
+ │ │ ├── terminal/ # Terminal PTY (SSE)
98
+ │ │ ├── files/ # File operations
99
+ │ │ ├── git/ # Git operations
100
+ │ │ ├── specs/ # Specs loading
101
+ │ │ └── health/ # System health
102
+ │ ├── ide/ # IDE workspace
103
+ │ └── page.tsx # Home page
104
+ ├── components/ # React components
105
+ │ ├── terminal/ # Terminal + Quick Actions
106
+ │ ├── editor/ # Monaco, Tabs, Breadcrumbs
107
+ │ ├── explorer/ # File tree
108
+ │ ├── specs/ # Specs panel
109
+ │ ├── git/ # Git panel
110
+ │ ├── dashboard/ # Dashboard
111
+ │ ├── settings/ # Settings modal
112
+ │ ├── modals/ # QuickOpen, Search, etc.
113
+ │ └── layout/ # Sidebar, StatusBar
114
+ ├── hooks/ # Custom hooks
115
+ │ ├── useFocusTrap.ts
116
+ │ ├── useKeyboardShortcuts.ts
117
+ │ └── useTreeNavigation.ts
118
+ ├── lib/
119
+ │ ├── stores/ # Zustand stores
120
+ │ ├── constants/ # AGENTS, etc.
121
+ │ ├── types/ # TypeScript types
122
+ │ └── utils.ts # Utilities
123
+ └── README.md
124
+ ```
125
+
126
+ ## Scripts
127
+
128
+ ```bash
129
+ npm run dev # Desenvolvimento
130
+ npm run build # Build para produção
131
+ npm run start # Iniciar produção
132
+ npm run lint # Lint
133
+ ```
134
+
135
+ ## Keyboard Shortcuts
136
+
137
+ | Shortcut | Action |
138
+ |----------|--------|
139
+ | Cmd+S | Salvar arquivo |
140
+ | Cmd+P | Quick Open |
141
+ | Cmd+Shift+F | Global Search |
142
+ | Cmd+Shift+P | Command Palette |
143
+ | Cmd+, | Settings |
144
+ | Cmd+B | Toggle sidebar |
145
+ | Ctrl+` | Toggle terminal |
146
+ | Ctrl+Tab | Recent Files |
147
+ | Alt+Left/Right | Navegar histórico |
148
+ | Cmd+W | Fechar tab |
149
+
150
+ ## Changelog
151
+
152
+ Veja [CHANGELOG.md](./CHANGELOG.md) para histórico completo de mudanças.
153
+
154
+ ---
155
+
156
+ **Powered by Evolve Labs** | DevFlow v0.7.0