Commit Graph

659 Commits

Author SHA1 Message Date
Kacper
3a69f973d0 refactor: extract event, spec, and enhancement types to shared package
- Extract EventType and EventCallback to @automaker/types
- Extract SpecOutput and specOutputSchema to @automaker/types
- Extract EnhancementMode and EnhancementExample to @automaker/types
- Update server files to import from shared types
- Reduces server code duplication by ~123 lines

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 00:29:24 +01:00
Kacper
108d52ce9f refactor: consolidate git utilities and model constants
COMPLETED MIGRATIONS:
- Migrate git utilities from routes/common.ts (383 lines → 39 lines)
  - Replace duplicated code with imports from @automaker/git-utils
  - Keep only route-specific utilities (getErrorMessage, createLogError)
  - All git operations now use shared package consistently

- Remove duplicate model constants in UI
  - Update model-config.ts to import from @automaker/types
  - Update agent-context-parser.ts to use DEFAULT_MODELS.claude
  - Removed 40+ lines of duplicated code

DEFERRED (Server-Specific):
- enhancement-prompts.ts (456 lines) - Server-only, no UI usage
- app-spec-format.ts (318 lines) - Server-only, no UI usage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 00:20:11 +01:00
Kacper
dd58b70730 fix: resolve critical package issues and update imports
CRITICAL FIXES:
- Fix dependency-resolver ES module failure by reverting to CommonJS
  - Removed "type": "module" from package.json
  - Changed tsconfig.json module from "ESNext" to "commonjs"
  - Added exports field for better module resolution
  - Package now works correctly at runtime

- Fix Feature type incompatibility between server and UI
  - Added FeatureImagePath interface to @automaker/types
  - Made imagePaths property accept multiple formats
  - Added index signature for backward compatibility

HIGH PRIORITY FIXES:
- Remove duplicate model-resolver.ts from apps/server/src/lib/
  - Update sdk-options.ts to import from @automaker/model-resolver
  - Use @automaker/types for CLAUDE_MODEL_MAP and DEFAULT_MODELS

- Remove duplicate session types from apps/ui/src/types/
  - Deleted identical session.ts file
  - Use @automaker/types for session type definitions

- Update source file Feature imports
  - Fix create.ts and update.ts to import Feature from @automaker/types
  - Separate Feature type import from FeatureLoader class import

MEDIUM PRIORITY FIXES:
- Remove unused imports
  - Remove unused AbortError from agent-service.ts
  - Remove unused MessageSquare icon from kanban-card.tsx
  - Consolidate duplicate React imports in hotkey-button.tsx

- Update test file imports to use @automaker/* packages
  - Update 12 test files to import from @automaker/utils
  - Update 2 test files to import from @automaker/platform
  - Update 1 test file to import from @automaker/model-resolver
  - Update dependency-resolver.test.ts imports
  - Update providers/types imports to @automaker/types

VERIFICATION:
- Server builds successfully ✓
- All 6 shared packages build correctly ✓
- Test imports updated and verified ✓

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 00:16:00 +01:00
Kacper
7ad7b63da2 docs: add comprehensive documentation for shared packages
- Added README.md for all 6 shared packages:
  - @automaker/types: Type definitions and interfaces
  - @automaker/utils: Utility functions (logger, error handling, images)
  - @automaker/platform: Platform utilities (paths, subprocess, security)
  - @automaker/model-resolver: Claude model resolution
  - @automaker/dependency-resolver: Feature dependency ordering
  - @automaker/git-utils: Git operations and diff generation

- Removed MIT license from all package.json files (using custom dual license)

- Created comprehensive LLM guide (docs/llm-shared-packages.md):
  - When to use each package
  - Import patterns and examples
  - Common usage patterns
  - Migration checklist
  - Do's and don'ts for LLMs

Documentation helps developers and AI assistants understand package purpose,
usage, and best practices.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:52:42 +01:00
Kacper
060a789b45 refactor: update all imports to use shared packages
- Updated 150+ files to import from @automaker/* packages
- Server imports now use @automaker/utils, @automaker/platform, @automaker/types, @automaker/model-resolver, @automaker/dependency-resolver, @automaker/git-utils
- UI imports now use @automaker/dependency-resolver and @automaker/types
- Deleted duplicate dependency-resolver files (222 lines eliminated)
- Updated dependency-resolver to use ES modules for Vite compatibility
- Added type annotation fix in auto-mode-service.ts
- Updated feature-loader to re-export Feature type from @automaker/types
- Both server and UI builds successfully verified

Phase 1 of server refactoring complete.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:46:27 +01:00
Kacper
bafddd627a chore: update package-lock.json for new workspace packages
Update package-lock.json to recognize all 6 new workspace packages:
- @automaker/types
- @automaker/utils
- @automaker/platform
- @automaker/model-resolver
- @automaker/dependency-resolver
- @automaker/git-utils

All packages are now part of the npm workspace.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:31:13 +01:00
Kacper
6f4269aacd feat: add @automaker/git-utils package
ELIMINATES routes/common.ts: Extract all git operations (382 lines) into dedicated package.

- Extract git status parsing (parseGitStatus, isGitRepo)
- Extract diff generation (generateSyntheticDiffForNewFile, etc.)
- Extract repository analysis (getGitRepositoryDiffs)
- Handle both git repos and non-git directories
- Support binary file detection
- Generate synthetic diffs for untracked files

Split into logical modules:
- types.ts: Constants and interfaces
- status.ts: Git status operations
- diff.ts: Diff generation utilities

This package will replace:
- apps/server/src/routes/common.ts (to be deleted)

Dependencies: @automaker/types, @automaker/utils

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:31:08 +01:00
Kacper
8b31039557 feat: add @automaker/dependency-resolver package
ELIMINATES CODE DUPLICATION: This file was duplicated in both server and UI (222 lines each).

- Extract feature dependency resolution using topological sort
- Implement Kahn's algorithm with priority-aware ordering
- Detect circular dependencies using DFS
- Check for missing and blocking dependencies
- Provide helper functions (areDependenciesSatisfied, getBlockingDependencies)

This package will replace:
- apps/server/src/lib/dependency-resolver.ts (to be deleted)
- apps/ui/src/lib/dependency-resolver.ts (to be deleted)

Impact: Eliminates 222 lines of duplicated code.

Dependencies: @automaker/types

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:30:57 +01:00
Kacper
27b80b3e08 feat: add @automaker/model-resolver package
- Extract model string resolution logic
- Map model aliases to full model strings (haiku -> claude-haiku-4-5)
- Handle multiple model sources with priority
- Re-export model constants from @automaker/types

Provides centralized model resolution for Claude models.
Simplifies model handling across server and UI.

Dependencies: @automaker/types

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:30:46 +01:00
Kacper
bdb65f5729 feat: add @automaker/platform package
- Extract automaker path utilities (getFeatureDir, etc.)
- Extract subprocess management (spawnJSONLProcess, spawnProcess)
- Extract security/path validation utilities

Provides platform-specific utilities for:
- Managing .automaker directory structure
- Spawning and managing child processes
- Path validation and security

Dependencies: @automaker/types

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:30:35 +01:00
Kacper
f4b95ea5bf feat: add @automaker/utils package
- Extract error handling utilities (isAbortError, classifyError, etc.)
- Extract conversation utilities (formatHistoryAsText, etc.)
- Extract image handling utilities (readImageAsBase64, etc.)
- Extract prompt building utilities (buildPromptWithImages)
- Extract logger utilities (createLogger, setLogLevel)
- Extract file system utilities (mkdirSafe, existsSafe)

All utilities now use @automaker/types for type imports.
Provides shared utility functions for both server and UI.

Dependencies: @automaker/types

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:30:24 +01:00
Kacper
b149607747 feat: add @automaker/types package
- Extract shared type definitions from server and UI
- Add provider types (ProviderConfig, ExecuteOptions, etc.)
- Add feature types (Feature, FeatureStatus, PlanningMode)
- Add session types (AgentSession, CreateSessionParams)
- Add error types (ErrorType, ErrorInfo)
- Add image types (ImageData, ImageContentBlock)
- Add model constants (CLAUDE_MODEL_MAP, DEFAULT_MODELS)

This package provides centralized type definitions for both server and UI.
No dependencies - pure TypeScript interfaces.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-19 23:30:14 +01:00
Alec Koifman
9110693c75 Merge origin/main into refactor/frontend
Resolved conflict in apps/ui/tests/worktree-integration.spec.ts:
- Kept assertion verifying worktreePath is undefined (consistent with pattern)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 10:17:35 -05:00
trueheads
17a2053e79 e2e fixes 2025-12-18 21:01:14 -06:00
Web Dev Cody
46c3dd252f Merge pull request #168 from AutoMaker-Org/feature/cards-in-worktrees
feat: add branch card counts to UI components
v0.5.0
2025-12-18 21:43:45 -05:00
trueheads
96b0e74794 build error fix 2025-12-18 20:38:59 -06:00
Cody Seibert
18a2ed2a44 feat: implement initial commit creation for empty git repositories
- Added a function to ensure that a git repository has at least one commit before executing worktree commands. This function creates an empty initial commit with a predefined message if the repository is empty.
- Updated the create route handler to call this function, ensuring smooth operation when adding worktrees to repositories without existing commits.
- Introduced integration tests to verify the creation of the initial commit when no commits are present in the repository.
2025-12-18 21:36:50 -05:00
trueheads
7d6ed0cb37 Merge branch 'refactor/frontend' of https://github.com/AutoMaker-Org/automaker into refactor/frontend 2025-12-18 20:33:24 -06:00
trueheads
396100686c feat: When clicking on the spec editor tab, get this network er... 2025-12-18 20:25:45 -06:00
trueheads
35ecb0dd2d feat: I'm noticing that when the application is launched, it do... 2025-12-18 20:16:33 -06:00
trueheads
8d6dae7495 feat: Add a settings toggle to disable marketing content within... 2025-12-18 19:00:17 -06:00
Cody Seibert
340e76c3ed fix: handle null branch names in AutoModeService
- Updated branchName assignment to use nullish coalescing, ensuring that unassigned features are correctly set to null instead of an empty string. This change improves the handling of feature states during the update process.
2025-12-18 19:55:43 -05:00
Cody Seibert
275037c73d test: update worktree integration tests for feature branch handling
- Modified test descriptions to clarify when worktrees are created during feature addition and editing.
- Updated assertions to verify that worktrees and branches are created as expected when features are added or edited.
- Enhanced test logic to ensure accurate verification of worktree existence and branch creation, reflecting recent changes in worktree management.
2025-12-18 19:46:10 -05:00
trueheads
a14ef30c69 feat: In the Agent Runner tab, in an Agent Conversation, when s... 2025-12-18 18:33:56 -06:00
Cody Seibert
18fa0f3066 refactor: streamline session and board view components
- Consolidated imports in session-manager.tsx for cleaner code.
- Improved state initialization formatting for better readability.
- Updated board-view.tsx to enhance feature management, including the use of refs to track running tasks and prevent unnecessary effect re-runs.
- Added affectedFeatureCount prop to DeleteWorktreeDialog for better user feedback on feature assignments.
- Refactored useBoardActions to ensure worktrees are created when features are added or updated, improving overall workflow efficiency.
2025-12-18 19:24:19 -05:00
trueheads
3e015591d3 feat: I need you to review all styling for button, menu, log vi... 2025-12-18 18:23:50 -06:00
Cody Seibert
81d631ea72 fix: address PR review comments
- Fix branch fallback logic: use nullish coalescing (??) instead of || to handle empty strings correctly (empty string represents unassigned features, not main branch)
- Refactor branchCardCounts calculation: use reduce instead of forEach for better conciseness and readability
- Fix badge semantics in BranchAutocomplete: check branchCardCounts !== undefined first to ensure numeric badges (including 0) only appear when actual count data exists, while 'default' is reserved for when count data is unavailable
2025-12-18 17:53:37 -05:00
Kacper
2a1ab218ec Merge remote-tracking branch 'origin/main' into refactor/frontend
# Conflicts:
#	apps/ui/src/components/views/terminal-view/terminal-panel.tsx
2025-12-18 23:41:00 +01:00
Web Dev Cody
6c31f725ff Merge pull request #167 from AutoMaker-Org/add-copy-paste-terminals
feat: implement context menu for terminal actions
2025-12-18 17:35:33 -05:00
Cody Seibert
f0bea76141 feat: add branch card counts to UI components
- Introduced branchCardCounts prop to various components to display unarchived card counts per branch.
- Updated BranchAutocomplete, BoardView, AddFeatureDialog, EditFeatureDialog, BranchSelector, WorktreePanel, and WorktreeTab to utilize the new prop for enhanced branch management visibility.
- Enhanced user experience by showing card counts alongside branch names in relevant UI elements.
2025-12-18 17:34:37 -05:00
Alec Koifman
46933a2a81 refactor: synchronize focused menu index with refs for improved keyboard navigation
- Introduced a ref to keep the focused menu index in sync with state, enhancing keyboard navigation within the terminal context menu.
- Updated event handlers to utilize the ref for managing focus, ensuring consistent behavior during menu interactions.
- Simplified dependencies in the effect hook for better performance and clarity.
2025-12-18 17:12:49 -05:00
Alec Koifman
dccb5faa4b fix: improve terminal context menu positioning and platform detection
- Enhanced context menu positioning with boundary checks to prevent overflow on screen edges.
- Updated platform detection logic for Mac users to utilize modern userAgentData API with a fallback to deprecated navigator.platform.
- Ensured context menu opens correctly within viewport limits, improving user experience.
2025-12-18 17:02:57 -05:00
Alec Koifman
15ae1fe147 feat: enhance terminal context menu with keyboard navigation
- Improved context menu functionality by adding keyboard navigation support for actions (copy, paste, select all, clear).
- Utilized refs to manage focus on menu items and updated platform detection for Mac users.
- Ensured context menu closes on outside clicks and handles keyboard events effectively.
2025-12-18 16:54:19 -05:00
Alec Koifman
6f82f64195 feat: implement context menu for terminal actions
- Added context menu with options to copy, paste, select all, and clear terminal content.
- Integrated keyboard shortcuts for copy (Ctrl/Cmd+C), paste (Ctrl/Cmd+V), and select all (Ctrl/Cmd+A).
- Enhanced platform detection for Mac users to adjust key bindings accordingly.
- Implemented functionality to handle context menu actions and close the menu on outside clicks or key events.
2025-12-18 16:23:05 -05:00
Kacper
1656b4fb7a Merge remote-tracking branch 'origin/main' into refactor/frontend 2025-12-18 21:03:23 +01:00
Kacper
419e954230 feat: add setup-project action for common CI setup steps
Introduced a new GitHub Action to streamline project setup in CI workflows. This action handles Node.js setup, dependency installation, and native module rebuilding, replacing repetitive steps in multiple workflow files. Updated e2e-tests, pr-check, and test workflows to utilize the new action, enhancing maintainability and reducing duplication.
2025-12-18 20:59:33 +01:00
Kacper
1a83c9b256 chore: downgrade @types/node to match ci version 2025-12-18 20:56:21 +01:00
Web Dev Cody
a0efa5d351 Merge pull request #165 from AutoMaker-Org/fix-automode-button-ui
fix: update Switch component styles for improved UI consistency
2025-12-18 14:39:06 -05:00
Alec Koifman
afcda98dc4 fix: update Switch component styles for improved UI consistency
- Changed border color from transparent to border-border for better visibility.
- Updated thumb background color from bg-background to bg-foreground to enhance contrast.
2025-12-18 14:27:11 -05:00
Kacper
e508f9c1d1 Merge remote-tracking branch 'origin/main' into refactor/frontend 2025-12-18 20:16:47 +01:00
Kacper
8c2c54b0a4 feat: load context files as system prompt for higher priority
Context files from .automaker/context/ (CLAUDE.md, CODE_QUALITY.md, etc.)
are now passed as system prompt instead of prepending to user prompt.
This ensures the agent follows project-specific rules like package manager
preferences (pnpm vs npm) and coding conventions.

Changes:
- Add getContextDir() utility to automaker-paths.ts
- Add loadContextFiles() method to load .md/.txt files from context dir
- Pass context as systemPrompt in executeFeature() and followUpFeature()
- Add debug logging to confirm system prompt is provided

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 20:11:05 +01:00
Web Dev Cody
65edddbc36 Merge pull request #164 from AutoMaker-Org/another-template
feat: add Automaker Starter Kit template to starterTemplates
2025-12-18 12:19:10 -05:00
Cody Seibert
0dfe5a91e7 feat: add Automaker Starter Kit template to starterTemplates
Introduced a new starter template for the Automaker Starter Kit, which includes a comprehensive description, tech stack, features, and author information. This template aims to support aspiring full stack engineers in their learning journey.
2025-12-18 12:18:22 -05:00
Web Dev Cody
2f75c0bec5 Merge pull request #163 from AutoMaker-Org/fix/automode-infinite-loop
fix: prevent infinite loop when resuming feature with existing context
2025-12-18 11:15:12 -05:00
Kacper
516f26edae fix: prevent infinite loop when resuming feature with existing context
When executeFeatureWithContext calls executeFeature with a continuation
prompt, skip the context existence check to avoid the loop:
executeFeature -> resumeFeature -> executeFeatureWithContext -> executeFeature

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 16:22:20 +01:00
Kacper
dd8862ce21 fix: prevent infinite loop when resuming feature with existing context
When executeFeatureWithContext calls executeFeature with a continuation
prompt, skip the context existence check to avoid the loop:
executeFeature -> resumeFeature -> executeFeatureWithContext -> executeFeature

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 16:10:10 +01:00
Kacper
0c2192d039 chore: update dependencies 2025-12-18 16:06:17 +01:00
Kacper
a85390b289 feat: apply coderabbit suggestions 2025-12-18 15:49:49 +01:00
Kacper
c4a90d7f29 fix: update port configuration across application files
- Changed the static server port from 5173 to 3007 in init.mjs, playwright.config.ts, vite.config.mts, and main.ts to ensure consistency in server setup and availability.
- Updated logging messages to reflect the new port configuration.
2025-12-18 15:35:05 +01:00
Kacper
8794156f28 fix: web mode not loading from init.mjs file 2025-12-18 15:29:35 +01:00