Commit Graph

995 Commits

Author SHA1 Message Date
Kacper
9f97426859 docs(README): update setup instructions to include package build step
- Added a step to build local shared packages before running Automaker
- Updated the sequence of instructions for clarity
2025-12-21 15:24:23 +01:00
Kacper
6e341c1c15 feat(platform): add executable permission validation to node-finder
- Add isExecutable() helper to verify files have execute permission
- On Unix: uses fs.constants.X_OK to check execute permission
- On Windows: only checks file existence (X_OK not meaningful)
- Replace fs.existsSync with isExecutable for all node path checks
- Add JSDoc comment documenting version sorting limitations
- Add test to verify found node binary is executable

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 15:16:33 +01:00
Kacper
b00568176c refactor(platform): improve node-finder security and documentation
- Add null byte validation to shell command output (security hardening)
- Expand VERSION_DIR_PATTERN comment to explain intentional pre-release support

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 15:07:38 +01:00
Kacper
b18672f66d refactor(platform): address code review feedback for node-finder
- Extract VERSION_DIR_PATTERN regex to named constant
- Pass logger to findNodeViaShell for consistent debug logging
- Fix buildEnhancedPath to not add trailing delimiter for empty currentPath

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 15:01:32 +01:00
Kacper
887fb93b3b fix: address additional code review feedback
- Add path.normalize() for Windows mixed separator handling
- Add validation to check Node executable exists after finding it
- Improve error dialog with specific troubleshooting advice for Node.js
  related errors vs general errors
- Include source info in validation error message

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 14:54:26 +01:00
Kacper
d3005393df fix: address code review feedback for node-finder
- Fix PATH collision detection using proper path segment matching
  instead of substring includes() which could cause false positives
- Reorder fnm Windows paths to prioritize canonical installation path
  over shell shims (fnm_multishells)
- Make Windows path test platform-aware since path.dirname handles
  backslash paths differently on non-Windows systems

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 14:49:19 +01:00
Kacper
49f04cf403 chore: remove old file from apps/app 2025-12-21 14:12:32 +01:00
Kacper
ebaecca949 fix: add cross-platform Node.js executable finder for desktop launches
When the Electron app is launched from desktop environments (macOS Finder,
Windows Explorer, Linux desktop launchers), the PATH environment variable
is often limited and doesn't include Node.js installation paths.

This adds a new `findNodeExecutable()` utility to @automaker/platform that:
- Searches common installation paths (Homebrew, system, Program Files)
- Supports version managers: NVM, fnm, nvm-windows, Scoop, Chocolatey
- Falls back to shell resolution (which/where) when available
- Enhances PATH for child processes via `buildEnhancedPath()`
- Works cross-platform: macOS, Windows, and Linux

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 14:11:58 +01:00
Mohamad Yahia
13095a4445 Merge branch 'main' into feat/claude-usage-clean 2025-12-21 11:15:41 +04:00
Mohamad Yahia
b80773b90d fix: Enhance usage tracking visibility logic in BoardHeader and SettingsView components 2025-12-21 11:11:33 +04:00
Mohamad Yahia
7dff6ea0ed refactor: Simplify usage data extraction and update refresh interval handling in Claude components 2025-12-21 11:02:54 +04:00
Web Dev Cody
3b39df4b12 Merge pull request #206 from AutoMaker-Org/refactoring-themes
refactor: replace fs with secureFs for improved file handling
2025-12-21 01:41:33 -05:00
Test User
ab65d46d08 refactor: update unit tests to use secureFs for file existence checks
This commit modifies the unit tests in dev-server-service.test.ts to replace the usage of the native fs.existsSync method with secureFs.access for improved security and consistency in file handling. Key changes include:

- Updated all instances of existsSync to utilize secureFs.access, ensuring that file existence checks are performed using the secure file system operations.
- Adjusted mock implementations to reflect the new secureFs methods, enhancing the reliability of the tests.

These changes aim to align the testing strategy with the recent refactor for enhanced security in file operations.
2025-12-21 01:40:41 -05:00
Test User
077a63b03b refactor: replace fs with secureFs for improved file handling
This commit updates various modules to utilize the secure file system operations from the secureFs module instead of the native fs module. Key changes include:

- Replaced fs imports with secureFs in multiple route handlers and services to enhance security and consistency in file operations.
- Added centralized validation for working directories in the sdk-options module to ensure all AI model invocations are secure.

These changes aim to improve the security and maintainability of file handling across the application.
2025-12-21 01:32:26 -05:00
Mohamad Yahia
5be85a45b1 fix: Update error handling in ClaudeUsagePopover and improve type safety in app-store 2025-12-21 10:30:06 +04:00
Mohamad Yahia
6028889909 Merge branch 'AutoMaker-Org:main' into feat/claude-usage-clean 2025-12-21 10:09:37 +04:00
Web Dev Cody
2b5479ae0d Merge pull request #205 from AutoMaker-Org/add-prettier
feat: Add Prettier configuration and format check workflow
2025-12-21 00:31:33 -05:00
Test User
6a13c8e16e fix: Update node-gyp repository URL in package-lock.json
- Changed the resolved URL for the @electron/node-gyp module from SSH to HTTPS for improved accessibility and compatibility.

This update ensures that the package can be fetched using a more universally supported URL format.
2025-12-21 00:23:43 -05:00
Test User
89acada310 feat: Add Prettier configuration and format check workflow
- Introduced .prettierrc for consistent code formatting with specified rules.
- Added .prettierignore to exclude unnecessary files from formatting.
- Updated package.json to include Prettier and lint-staged as devDependencies.
- Implemented GitHub Actions workflow for format checking on pull requests and pushes.
- Created a Husky pre-commit hook to run lint-staged for automatic formatting.

These changes enhance code quality and maintainability by enforcing consistent formatting across the codebase.
2025-12-21 00:20:18 -05:00
Mohamad Yahia
3a2d8d118d Merge branch 'AutoMaker-Org:main' into feat/claude-usage-clean 2025-12-21 09:18:13 +04:00
Web Dev Cody
1b8d23688e Merge pull request #178 from AutoMaker-Org/feature/shared-packages
Feature/shared packages
2025-12-21 00:13:02 -05:00
Test User
1209e923fc Merge branch 'main' into feature/shared-packages 2025-12-20 23:55:03 -05:00
SuperComboGamer
012d1c452b refactor: optimize button animations and interval checks for performance
This commit introduces several performance improvements across the UI components:

- Updated the Button component to enhance hover animations by grouping styles for better GPU efficiency.
- Adjusted the interval timing in the BoardView and WorktreePanel components from 1 second to 3 and 5 seconds respectively, reducing CPU/GPU usage.
- Replaced the continuous gradient rotation animation with a subtle pulse effect in global CSS to further optimize rendering performance.

These changes aim to improve the overall responsiveness and efficiency of the UI components.
2025-12-20 23:46:24 -05:00
Mohamad Yahia
ab0487664a feat: integrate ClaudeUsageService and update API routes for usage tracking 2025-12-21 08:46:11 +04:00
SuperComboGamer
f504a00ce6 feat: improve error handling in terminal settings retrieval and enhance path normalization
- Wrapped the terminal settings retrieval in a try-catch block to handle potential errors and respond with a 500 status and error details.
- Updated path normalization logic to skip resolution for WSL UNC paths, preventing potential issues with path handling in Windows Subsystem for Linux.
- Enhanced unit tests for session termination to include timer-based assertions for graceful session killing.
2025-12-20 23:35:03 -05:00
Mohamad Yahia
f2582c4453 fix: handle NaN percentage values and rename opus to sonnet
- Show 'N/A' and dim card when percentage is NaN/invalid
- Use gray progress bar for invalid values
- Rename opusWeekly* properties to sonnetWeekly* to match server types
2025-12-21 08:32:30 +04:00
SuperComboGamer
820f43078b feat: enhance terminal input validation and update keyboard shortcuts
- Added validation for terminal input to ensure it is a string and limited to 1MB to prevent memory issues.
- Implemented checks for terminal resize dimensions to ensure they are positive integers within specified bounds.
- Updated keyboard shortcuts for terminal actions to use Alt key combinations instead of Ctrl+Shift for better accessibility.
2025-12-20 23:26:28 -05:00
Mohamad Yahia
6533a15653 feat: add Windows support using node-pty while keeping expect for macOS
Platform-specific implementations:
- macOS: Uses 'expect' command (unchanged, working)
- Windows: Uses node-pty for PTY support

Also fixes 'which' vs 'where' for checking Claude CLI availability.
2025-12-21 08:26:18 +04:00
Mohamad Yahia
7416c8b428 style: removed tiny clock 2025-12-21 08:23:56 +04:00
SuperComboGamer
8f5e782583 refactor: update token generation method and improve maxSessions validation
- Changed the token generation method to use slice instead of substr for better readability.
- Enhanced maxSessions validation in the settings update handler to check for undefined values and ensure the input is a number before processing.
2025-12-20 23:20:31 -05:00
SuperComboGamer
39b21830dc feat: validate maxSessions input in settings update handler
- Added validation to ensure maxSessions is an integer before processing the request.
- Responds with a 400 status and an error message if the input is not a valid integer.
2025-12-20 23:18:13 -05:00
Mohamad Yahia
86cbb2f970 Revert "refactor: use node-pty instead of expect for cross-platform support"
This reverts commit 5e789c2817.
2025-12-21 08:17:51 +04:00
SuperComboGamer
0e944e274a feat: increase maximum terminal session limit and improve path handling
- Updated the maximum terminal session limit from 500 to 1000 to accommodate more concurrent sessions.
- Enhanced path handling in the editor and HTTP API client to normalize file paths for both Unix and Windows systems, ensuring consistent URL encoding.
2025-12-20 23:13:30 -05:00
Mohamad Yahia
5e789c2817 refactor: use node-pty instead of expect for cross-platform support
Replace Unix-only 'expect' command with node-pty library which works
on Windows, macOS, and Linux. Also fixes 'which' command to use 'where'
on Windows for checking if Claude CLI is available.
2025-12-21 08:12:34 +04:00
Mohamad Yahia
6150926a75 Update apps/ui/src/lib/electron.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-21 08:11:24 +04:00
Mohamad Yahia
0a2b4287ff Update apps/server/src/routes/claude/types.ts
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-12-21 08:11:16 +04:00
SuperComboGamer
18ccfa21e0 feat: enhance terminal service with path validation and session termination improvements
- Added path validation in resolveWorkingDirectory to reject paths with null bytes and normalize paths.
- Improved killSession method to attempt graceful termination with SIGTERM before falling back to SIGKILL after a delay.
- Enhanced logging for session termination to provide clearer feedback on the process.
2025-12-20 23:10:19 -05:00
Mohamad Yahia
ebc7c9a7a0 feat: hide usage tracking UI when API key is configured
Usage tracking via CLI only works for Claude Code subscription users.
Hide the Usage button and settings section when an Anthropic API key is set.
2025-12-21 08:09:00 +04:00
Mohamad Yahia
5bd2b705dc feat: add Claude usage tracking via CLI
Adds a Claude usage tracking feature that displays session, weekly, and Sonnet usage stats. Uses the Claude CLI's /usage command to fetch data (no API key required).

Features:
- Usage popover in board header showing session, weekly, and Sonnet limits
- Progress bars with color-coded status (green/orange/red)
- Auto-refresh with configurable interval
- Caching of usage data with stale indicator
- Settings section for refresh interval configuration

Server:
- ClaudeUsageService: Executes Claude CLI via PTY (expect) to fetch usage
- New /api/claude/usage endpoint

UI:
- ClaudeUsagePopover component with usage cards
- ClaudeUsageSection in settings for configuration
- Integration with app store for persistence
2025-12-21 08:03:43 +04:00
SuperComboGamer
2b1a7660b6 refactor: update terminal session limits and improve layout saving
- Refactored session limit checks in terminal settings to use constants for minimum and maximum session values.
- Enhanced terminal layout saving mechanism with debouncing to prevent excessive writes during rapid changes.
- Updated error messages to reflect new session limit constants.
2025-12-20 23:02:31 -05:00
SuperComboGamer
195b98e688 feat: enhance terminal functionality and settings
- Added new endpoints for terminal settings: GET and PUT /settings to retrieve and update terminal configurations.
- Implemented session limit checks during session creation, returning a 429 status when the limit is reached.
- Introduced a new TerminalSection in settings view for customizing terminal appearance and behavior, including font family, default font size, line height, and screen reader mode.
- Added support for new terminal features such as search functionality and improved error handling with a TerminalErrorBoundary component.
- Updated terminal layout persistence to include session IDs for reconnection and enhanced terminal state management.
- Introduced new keyboard shortcuts for terminal actions, including creating new terminal tabs.
- Enhanced UI with scrollbar theming for terminal components.
2025-12-20 22:56:25 -05:00
Web Dev Cody
5aedb4fadf Merge pull request #201 from AutoMaker-Org/improve-code-docker2
Improve code docker2
2025-12-20 22:41:56 -05:00
Test User
9cf12b9006 refactor: enhance security and streamline file handling
This commit introduces several improvements to the security and file handling mechanisms across the application. Key changes include:

- Updated the Dockerfile to pin the GitHub CLI version for reproducible builds.
- Refactored the secure file system operations to ensure consistent path validation and type handling.
- Removed legacy path management functions and streamlined the allowed paths logic in the security module.
- Enhanced route handlers to validate path parameters against the ALLOWED_ROOT_DIRECTORY, improving security against unauthorized access.
- Updated the settings service to focus solely on the Anthropic API key, removing references to Google and OpenAI keys.

These changes aim to enhance security, maintainability, and clarity in the codebase.

Tests: All unit tests passing.
2025-12-20 22:08:28 -05:00
Test User
86d92e610b refactor: streamline ALLOWED_ROOT_DIRECTORY handling and remove legacy support
This commit refactors the handling of ALLOWED_ROOT_DIRECTORY by removing legacy support for ALLOWED_PROJECT_DIRS and simplifying the security logic. Key changes include:

- Removed deprecated ALLOWED_PROJECT_DIRS references from .env.example and security.ts.
- Updated initAllowedPaths() to focus solely on ALLOWED_ROOT_DIRECTORY and DATA_DIR.
- Enhanced logging for ALLOWED_ROOT_DIRECTORY configuration status.
- Adjusted route handlers to utilize the new workspace directory logic.
- Introduced a centralized storage module for localStorage operations to improve consistency and error handling.

These changes aim to enhance security and maintainability by consolidating directory management into a single variable.

Tests: All unit tests passing.
2025-12-20 20:49:28 -05:00
Kacper
f2c40ab21a feat: Add package testing scripts and update CI workflow
Changes:
- Introduced new npm scripts for testing all packages and running tests across the server.
- Updated GitHub Actions workflow to include a step for running package tests.

Benefits:
 Enhanced testing capabilities for individual packages
 Improved CI process with comprehensive test coverage

All tests passing.
2025-12-21 02:25:01 +01:00
Kacper
0ce6b6d4b1 feat: Introduce @automaker/prompts package for AI prompt templates
Changes:
- Added a new package, @automaker/prompts, containing AI prompt templates for enhancing user-written task descriptions.
- Implemented four enhancement modes: improve, technical, simplify, and acceptance, each with corresponding system prompts and examples.
- Updated relevant packages to utilize the new prompts package, ensuring backward compatibility with existing imports.
- Enhanced documentation to include usage examples and integration details for the new prompts.

Benefits:
 Streamlined AI prompt management across the codebase
 Improved clarity and usability for AI-powered features
 Comprehensive documentation for developers

All tests passing.
2025-12-21 02:11:23 +01:00
Kacper
55c49516c8 refactor: Update .gitignore and enhance error handling in feature-loader
Changes:
- Removed specific compiled file patterns from .gitignore to simplify ignore rules.
- Modified error handling in feature-loader.ts to rethrow errors instead of keeping original paths, preventing potential broken references.
- Added ".js" extensions to import statements in types package for ESM compliance.

Benefits:
 Cleaner .gitignore for better maintainability
 Improved error handling logic in feature-loader
 Consistent import paths for ESM compatibility

All tests passing.
2025-12-21 01:23:39 +01:00
Test User
f3c9e828e2 refactor: integrate secure file system operations across services
This commit replaces direct file system operations with a secure file system adapter to enhance security by enforcing path validation. The changes include:

- Replaced `fs` imports with `secureFs` in various services and utilities.
- Updated file operations in `agent-service`, `auto-mode-service`, `feature-loader`, and `settings-service` to use the secure file system methods.
- Ensured that all file I/O operations are validated against the ALLOWED_ROOT_DIRECTORY.

This refactor aims to prevent unauthorized file access and improve overall security posture.

Tests: All unit tests passing.

🤖 Generated with Claude Code
2025-12-20 18:45:39 -05:00
Kacper
3928539ade refactor: Centralize ESM config in tsconfig.base.json
Move ESM module configuration from individual package tsconfigs to the
shared base configuration for better maintainability.

Changes:
- Updated libs/tsconfig.base.json:
  - Changed module: "commonjs" → "NodeNext"
  - Changed moduleResolution: "node" → "NodeNext"

- Cleaned up all lib package tsconfigs:
  - Removed duplicate module/moduleResolution settings
  - Now all packages inherit ESM config from base
  - Packages: dependency-resolver, git-utils, model-resolver, platform, utils

Benefits:
 Single source of truth for module configuration
 Less duplication, easier maintenance
 Consistent ESM behavior across all lib packages
 Simpler package-specific tsconfig files

All packages build successfully. All 632 tests passing.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 00:26:26 +01:00
Kacper
c1386caeb2 refactor: Migrate all lib packages to ESM
Convert all shared library packages from CommonJS to ESM for consistency
with apps/server and modern JavaScript standards.

Changes:
- Add "type": "module" to package.json for all libs
- Update tsconfig.json to use "NodeNext" module/moduleResolution
- Add .js extensions to all relative imports

Packages migrated:
- @automaker/dependency-resolver (already ESM, added .js extension)
- @automaker/git-utils (CommonJS → ESM)
- @automaker/model-resolver (CommonJS → ESM)
- @automaker/platform (CommonJS → ESM)
- @automaker/utils (CommonJS → ESM)

Benefits:
 Consistent module system across all packages
 Better tree-shaking and modern bundling support
 Native browser support (future-proof)
 Fixes E2E CI server startup issues

All tests passing: 632/632 server tests

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 00:23:13 +01:00