-
Notifications
You must be signed in to change notification settings - Fork 577
Kanban scaling #211
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Kanban scaling #211
Changes from all commits
9beefd1
042fc61
fd39f96
0cd3275
73cab38
fc75923
4e876de
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| { | ||
| "name": "@automaker/server-bundle", | ||
| "version": "0.1.0", | ||
| "type": "module", | ||
| "main": "dist/index.js", | ||
| "dependencies": { | ||
| "@anthropic-ai/claude-agent-sdk": "^0.1.61", | ||
| "cors": "^2.8.5", | ||
| "dotenv": "^17.2.3", | ||
| "express": "^5.1.0", | ||
| "morgan": "^1.10.1", | ||
| "node-pty": "1.1.0-beta41", | ||
| "ws": "^8.18.0" | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -307,10 +307,10 @@ describe('claude-provider.ts', () => { | |
| expect(sonnet35).toBeDefined(); | ||
| }); | ||
|
|
||
| it('should include Claude 3.5 Haiku', () => { | ||
| it('should include Claude Haiku 4.5', () => { | ||
| const models = provider.getAvailableModels(); | ||
|
|
||
| const haiku = models.find((m) => m.id === 'claude-3-5-haiku-20241022'); | ||
| const haiku = models.find((m) => m.id === 'claude-haiku-4-5-20251001'); | ||
| expect(haiku).toBeDefined(); | ||
| }); | ||
|
Comment on lines
+310
to
315
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Search for CLAUDE_MODEL_MAP definition and usage
echo "=== Searching for CLAUDE_MODEL_MAP definition ==="
rg "CLAUDE_MODEL_MAP" --type ts -B 2 -A 5
echo -e "\n=== Checking for model-resolver.test.ts ==="
find . -name "model-resolver.test.ts" -type f
echo -e "\n=== Checking for claude-provider.test.ts ==="
find . -name "claude-provider.test.ts" -type fRepository: AutoMaker-Org/automaker Length of output: 24947 🏁 Script executed: #!/bin/bash
echo "=== Checking claude-provider.test.ts around lines 310-315 ==="
sed -n '305,320p' apps/server/tests/unit/providers/claude-provider.test.ts
echo -e "\n=== Searching for hardcoded Claude model strings in claude-provider.test.ts ==="
rg "claude-(opus|sonnet|haiku)" apps/server/tests/unit/providers/claude-provider.test.ts -n
echo -e "\n=== Checking for CLAUDE_MODEL_MAP import in claude-provider.test.ts ==="
head -20 apps/server/tests/unit/providers/claude-provider.test.tsRepository: AutoMaker-Org/automaker Length of output: 1881 Use CLAUDE_MODEL_MAP for consistency across Claude provider tests. This test hardcodes Refactor lines 59, 71, 289, 298, 313, and 320 to import and use +import { CLAUDE_MODEL_MAP } from '@automaker/types';Then replace hardcoded strings with:
🤖 Prompt for AI Agents |
||
|
|
||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -32,4 +32,17 @@ export function useSidebarAutoCollapse({ | |
| mediaQuery.addEventListener('change', handleResize); | ||
| return () => mediaQuery.removeEventListener('change', handleResize); | ||
| }, [sidebarOpen, toggleSidebar]); | ||
|
|
||
| // Update Electron window minWidth when sidebar state changes | ||
| // This ensures the window can't be resized smaller than what the kanban board needs | ||
| useEffect(() => { | ||
| const electronAPI = ( | ||
| window as unknown as { | ||
| electronAPI?: { updateMinWidth?: (expanded: boolean) => Promise<void> }; | ||
| } | ||
| ).electronAPI; | ||
| if (electronAPI?.updateMinWidth) { | ||
| electronAPI.updateMinWidth(sidebarOpen); | ||
| } | ||
| }, [sidebarOpen]); | ||
|
Comment on lines
+36
to
+47
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add error handling for the async Electron API call. The Consider adding a 🔎 Proposed fix with error handling // Update Electron window minWidth when sidebar state changes
// This ensures the window can't be resized smaller than what the kanban board needs
useEffect(() => {
const electronAPI = (
window as unknown as {
electronAPI?: { updateMinWidth?: (expanded: boolean) => Promise<void> };
}
).electronAPI;
if (electronAPI?.updateMinWidth) {
- electronAPI.updateMinWidth(sidebarOpen);
+ electronAPI.updateMinWidth(sidebarOpen).catch((error) => {
+ console.error('[useSidebarAutoCollapse] Failed to update window minWidth:', error);
+ });
}
}, [sidebarOpen]);🤖 Prompt for AI Agents |
||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1000,6 +1000,33 @@ export function ContextView() { | |
| id="markdown-content" | ||
| value={newMarkdownContent} | ||
| onChange={(e) => setNewMarkdownContent(e.target.value)} | ||
| onDrop={async (e) => { | ||
| e.preventDefault(); | ||
| e.stopPropagation(); | ||
|
|
||
| // Try files first, then items for better compatibility | ||
| let files = Array.from(e.dataTransfer.files); | ||
| if (files.length === 0 && e.dataTransfer.items) { | ||
| const items = Array.from(e.dataTransfer.items); | ||
| files = items | ||
| .filter((item) => item.kind === 'file') | ||
| .map((item) => item.getAsFile()) | ||
| .filter((f): f is globalThis.File => f !== null); | ||
| } | ||
|
|
||
| const mdFile = files.find((f) => isMarkdownFile(f.name)); | ||
| if (mdFile) { | ||
| const content = await mdFile.text(); | ||
| setNewMarkdownContent(content); | ||
| if (!newMarkdownName.trim()) { | ||
| setNewMarkdownName(mdFile.name); | ||
| } | ||
| } | ||
| }} | ||
|
Comment on lines
+1003
to
+1025
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Add error handling for file reading. The async 🔎 Proposed fix with error handling const mdFile = files.find((f) => isMarkdownFile(f.name));
if (mdFile) {
- const content = await mdFile.text();
- setNewMarkdownContent(content);
- if (!newMarkdownName.trim()) {
- setNewMarkdownName(mdFile.name);
+ try {
+ const content = await mdFile.text();
+ setNewMarkdownContent(content);
+ if (!newMarkdownName.trim()) {
+ setNewMarkdownName(mdFile.name);
+ }
+ } catch (error) {
+ console.error('Failed to read dropped file:', error);
+ toast.error('Failed to read file', {
+ description: 'The dropped file could not be read.',
+ });
}
}
🤖 Prompt for AI Agents |
||
| onDragOver={(e) => { | ||
| e.preventDefault(); | ||
| e.stopPropagation(); | ||
| }} | ||
| placeholder="Enter your markdown content here..." | ||
| className="w-full h-60 p-3 font-mono text-sm bg-background border border-border rounded-lg resize-none focus:outline-none focus:ring-2 focus:ring-ring focus:border-transparent" | ||
| spellCheck={false} | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.