Commit Graph

105 Commits

Author SHA1 Message Date
Kacper
20cf120b8a Merge remote-tracking branch 'origin/main' into refactor/folder-pattern-compliance 2025-12-21 22:06:43 +01:00
Kacper
9ea80123fd update: enhance WikiView component with improved type definitions and documentation
- Updated type imports for `icon` and `content` in the `WikiSection` interface to use `ElementType` and `ReactNode` for better clarity and type safety.
- Expanded the content description in the WikiView to include shared libraries and updated technology stack details.
- Revised the directory structure representation for clarity and completeness, reflecting the current organization of the codebase.
- Adjusted file paths in the feature list for better accuracy and organization.

These changes aim to improve the documentation and type safety within the WikiView component, enhancing developer experience and understanding of the project structure.
2025-12-21 21:44:02 +01:00
Kacper
a40bb6df24 ♻️ refactor: streamline sidebar component structure and enhance functionality
- Extracted new components: ProjectSelectorWithOptions, SidebarFooter, TrashDialog, and OnboardingDialog to improve code organization and reusability.
- Introduced new hooks: useProjectCreation, useSetupDialog, and useTrashDialog for better state management and modularity.
- Updated sidebar.tsx to utilize the new components and hooks, reducing complexity and improving maintainability.
- Enhanced project creation and setup processes with dedicated dialogs and streamlined user interactions.

This refactor aims to enhance the user experience and maintainability of the sidebar by modularizing functionality and improving the overall structure.
2025-12-21 21:23:04 +01:00
Kacper
aafd0b3991 ♻️ refactor: extract UI components from sidebar for better maintainability
Extract logo, header, actions, and navigation into separate components:
- AutomakerLogo: SVG logo with collapsed/expanded states
- SidebarHeader: Logo section with bug report button
- ProjectActions: New/Open/Trash action buttons
- SidebarNavigation: Navigation items with active states

Reduces sidebar.tsx from 1551 to 1442 lines (-109 lines)
Improves code organization and component reusability

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 20:29:16 +01:00
Kacper
b641884c37 refactor: enhance sidebar functionality with new hooks and components
- Introduced new hooks: useRunningAgents, useTrashOperations, useProjectPicker, useSpecRegeneration, and useNavigation for improved state management and functionality.
- Created CollapseToggleButton component for sidebar collapse functionality, enhancing UI responsiveness.
- Refactored sidebar.tsx to utilize the new hooks and components, improving code organization and maintainability.
- Updated sidebar structure to streamline project selection and navigation processes.

This refactor aims to enhance user experience and maintainability by modularizing functionality and improving the sidebar's responsiveness.
2025-12-21 20:20:50 +01:00
Kacper
7fac115a36 ♻️ refactor: extract Phase 1 hooks from sidebar (2187→2099 lines)
Extract 3 simple hooks with no UI dependencies:
- use-theme-preview.ts: Debounced theme preview on hover
- use-sidebar-auto-collapse.ts: Auto-collapse on small screens
- use-drag-and-drop.ts: Project reordering drag-and-drop

Benefits:
- Reduced sidebar.tsx by 88 lines (-4%)
- Improved testability (hooks can be tested in isolation)
- Removed unused imports (DragEndEvent, PointerSensor, useSensor, useSensors)
- Created hooks/ barrel export pattern

Next steps: Extract 10+ remaining hooks and 10+ UI sections to reach
target of 200-300 lines (current: 2099 lines, need to reduce ~1800 more)

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 20:01:26 +01:00
Kacper
7e8995df24 ♻️ refactor: implement Phase 3 sidebar refactoring (partial)
Extract inline components and organize sidebar structure:
- Create sidebar/ subfolder structure (components/, hooks/, dialogs/)
- Extract types.ts: NavSection, NavItem, component prop interfaces
- Extract constants.ts: theme options, feature flags
- Extract 3 inline components into separate files:
  - sortable-project-item.tsx (drag-and-drop project item)
  - theme-menu-item.tsx (memoized theme selector)
  - bug-report-button.tsx (reusable bug report button)
- Update sidebar.tsx to import from extracted modules
- Reduce sidebar.tsx from 2323 to 2187 lines (-136 lines)

This is Phase 3 (partial) of folder-pattern.md compliance: breaking down
the monolithic sidebar.tsx into maintainable, reusable components.

Further refactoring (hooks extraction, dialog extraction) can be done
incrementally to avoid disrupting functionality.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 19:51:04 +01:00
Kacper
e47b34288b 🗂️ refactor: implement Phase 2 folder-pattern compliance
- Move dialogs to src/components/dialogs/ folder:
  - delete-session-dialog.tsx
  - delete-all-archived-sessions-dialog.tsx
  - new-project-modal.tsx
  - workspace-picker-modal.tsx
- Update all imports to reference new dialog locations
- Create barrel export (index.ts) for board-view/components/kanban-card/
- Create barrel exports (index.ts) for all 11 settings-view subfolders:
  - api-keys/, api-keys/hooks/, appearance/, audio/, cli-status/
  - components/, config/, danger-zone/, feature-defaults/
  - keyboard-shortcuts/, shared/

This is Phase 2 of folder-pattern.md compliance: organizing dialogs
and establishing consistent barrel export patterns across all view subfolders.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 19:43:17 +01:00
Kacper
6365cc137c ♻️ refactor: implement Phase 1 folder-pattern compliance
- Rename App.tsx to app.tsx (kebab-case naming convention)
- Add barrel exports (index.ts) for src/hooks/
- Add barrel exports (index.ts) for src/components/dialogs/
- Add barrel exports (index.ts) for src/components/layout/
- Update renderer.tsx import to use lowercase app.tsx

This is Phase 1 of folder-pattern.md compliance: establishing proper
file naming conventions and barrel export patterns.

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-21 19:38:26 +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
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
3a2d8d118d Merge branch 'AutoMaker-Org:main' into feat/claude-usage-clean 2025-12-21 09:18:13 +04:00
Test User
1209e923fc Merge branch 'main' into feature/shared-packages 2025-12-20 23:55:03 -05:00
Mohamad Yahia
ab0487664a feat: integrate ClaudeUsageService and update API routes for usage tracking 2025-12-21 08:46:11 +04: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
Mohamad Yahia
7416c8b428 style: removed tiny clock 2025-12-21 08:23:56 +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
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
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
9b798732b2 fix: Update dependency-resolver import to use shared package
Fixed outdated import in card-badges.tsx that was causing electron build
to fail in CI. Updated to use @automaker/dependency-resolver instead of
the old @/lib/dependency-resolver path.

Resolves electron build failure: "Could not load dependency-resolver"

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

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-20 23:08:29 +01:00
Kacper
7ab65b22ec chore: Update package.json files across multiple modules
- Added author information as "AutoMaker Team" to all package.json files.
- Set license to "SEE LICENSE IN LICENSE" for consistency across the project.
2025-12-20 22:37:53 +01:00
Kacper
32e2315697 Merge origin/main into feature/shared-packages
Resolved conflicts:
- list.ts: Keep @automaker/git-utils import, add worktree-metadata import
- feature-loader.ts: Use Feature type from @automaker/types
- automaker-paths.test.ts: Import from @automaker/platform
- kanban-card.tsx: Accept deletion (split into components/)
- subprocess.test.ts: Keep libs/platform location

Added missing exports to @automaker/platform:
- getGlobalSettingsPath, getCredentialsPath, getProjectSettingsPath, ensureDataDir

Added title and titleGenerating fields to @automaker/types Feature interface.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 22:20:17 +01:00
Test User
3a0a2e3019 refactor: remove WORKSPACE_DIR, use only ALLOWED_ROOT_DIRECTORY
Removed all references to WORKSPACE_DIR environment variable to simplify
configuration. The system now uses exclusively ALLOWED_ROOT_DIRECTORY
for controlling the root directory where projects can be accessed.

Changes:
- Removed WORKSPACE_DIR from security.ts initialization
- Updated workspace/routes/directories.ts to require ALLOWED_ROOT_DIRECTORY
- Updated workspace/routes/config.ts to require ALLOWED_ROOT_DIRECTORY
- Updated apps/ui/src/main.ts to use ALLOWED_ROOT_DIRECTORY instead of WORKSPACE_DIR
- Updated .env file to reference ALLOWED_ROOT_DIRECTORY
- Removed WORKSPACE_DIR test from security.test.ts

Backend test results: 653/653 passing 

🤖 Generated with Claude Code

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-20 16:09:33 -05:00
Test User
8ff4b5912a refactor: implement ALLOWED_ROOT_DIRECTORY security and fix path validation
This commit consolidates directory security from two environment variables
(WORKSPACE_DIR, ALLOWED_PROJECT_DIRS) into a single ALLOWED_ROOT_DIRECTORY variable
while maintaining backward compatibility.

Changes:
- Re-enabled path validation in security.ts (was previously disabled)
- Implemented isPathAllowed() to check ALLOWED_ROOT_DIRECTORY with DATA_DIR exception
- Added backward compatibility for legacy ALLOWED_PROJECT_DIRS and WORKSPACE_DIR
- Implemented path traversal protection via isPathWithinDirectory() helper
- Added PathNotAllowedError custom exception for security violations
- Updated all FS route endpoints to validate paths and return 403 on violation
- Updated template clone endpoint to validate project paths
- Updated workspace config endpoints to use ALLOWED_ROOT_DIRECTORY
- Fixed stat() response property access bug in project-init.ts
- Updated security tests to expect actual validation behavior

Security improvements:
- Path validation now enforced at all layers (routes, project init, agent services)
- appData directory (DATA_DIR) always allowed for settings/credentials
- Backward compatible with existing ALLOWED_PROJECT_DIRS/WORKSPACE_DIR configurations
- Protection against path traversal attacks

Backend test results: 654/654 passing 

🤖 Generated with Claude Code

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-20 15:59:32 -05:00
Web Dev Cody
7d0656bb14 Merge pull request #179 from illia1f/feature/isolated-docker-compose
feat: Add Docker containerization for secure, isolated execution
2025-12-20 15:06:09 -05:00
Test User
92e7945329 refactor: Update Worktree Integration Tests to reflect button changes
- Renamed the Commit button to Mark as Verified in the test cases to align with recent UI changes.
- Updated feature descriptions in the tests to match the new functionality.
- Adjusted visibility checks for the Mark as Verified button to ensure accurate testing of the updated UI behavior.
2025-12-20 13:12:56 -05:00
Test User
723274523d refactor: Remove commit actions and update badge logic in Kanban components
- Removed the onCommit action from KanbanBoard and related components to streamline functionality.
- Updated CardActions to replace the Commit button with a Mark as Verified button, enhancing clarity in user interactions.
- Introduced a new CardBadge component for consistent styling of badges across KanbanCard, improving code reusability and maintainability.
- Refactored badge rendering logic to include a Just Finished badge, ensuring accurate representation of feature status.
2025-12-20 12:45:51 -05:00
Test User
01d78be748 refactor: Restructure KanbanCard component for improved organization and functionality
- Moved KanbanCard logic into separate files for better modularity, including card actions, badges, content sections, and agent info panel.
- Updated import paths to reflect new file structure.
- Enhanced readability and maintainability of the KanbanCard component by breaking it down into smaller, focused components.
- Removed the old KanbanCard implementation and replaced it with a new, organized structure that supports better code management.
2025-12-20 12:28:54 -05:00
Test User
c9e7e4f1e0 refactor: Improve layout and organization of KanbanCard component
- Adjusted spacing and alignment in the KanbanCard component for better visual consistency.
- Refactored badge rendering logic to use a more compact layout, enhancing readability.
- Cleaned up code formatting for improved maintainability and clarity.
- Updated Card component styles to ensure consistent padding and margins.
2025-12-20 11:57:50 -05:00
Test User
532d03c231 refactor: Introduce useBoardBackgroundSettings hook for managing board background settings with persistence
- Refactored BoardBackgroundModal to utilize the new useBoardBackgroundSettings hook, improving code organization and reusability.
- Updated methods for setting board background, card opacity, column opacity, and other settings to include server persistence.
- Enhanced error handling and user feedback with toast notifications for successful and failed operations.
- Added keyboard shortcut support for selecting folders in FileBrowserDialog, improving user experience.
- Improved KanbanCard component layout and added dropdown menu for editing and viewing model information.
2025-12-20 11:27:39 -05:00
Test User
e29880254e docs: Add comprehensive JSDoc docstrings to settings module (80% coverage)
This commit addresses CodeRabbit feedback from PR #186 by adding detailed
documentation to all public APIs in the settings module:

**Server-side documentation:**
- SettingsService class: 12 public methods with parameter and return types
- Settings types (settings.ts): All type aliases, interfaces, and constants
  documented with usage context
- Route handlers (8 endpoints): Complete endpoint documentation with request/response
  schemas
- Automaker paths utilities: All 13 path resolution functions fully documented

**Client-side documentation:**
- useSettingsMigration hook: Migration flow and state documented
- Sync functions: Three sync helpers (settings, credentials, project) with usage guidelines
- localStorage constants: Clear documentation of migration keys and cleanup strategy

All docstrings follow JSDoc format with:
- Purpose and behavior description
- Parameter documentation with types
- Return value documentation
- Usage examples where applicable
- Cross-references between related functions

This improves code maintainability, IDE autocomplete, and developer onboarding.

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-20 09:54:30 -05:00
Web Dev Cody
ba7904c189 Merge pull request #182 from AutoMaker-Org/worktree-select
worktree-select
2025-12-20 09:36:50 -05:00
Test User
46210c5a26 refactor spec editor persistence test for improved reliability
- Removed unnecessary wait times to streamline the test flow.
- Implemented a polling mechanism to verify content loading after page reload, enhancing test robustness.
- Updated the worktree integration test to skip unreliable scenarios related to component rendering.
2025-12-20 09:28:00 -05:00
Cody Seibert
f1eba5ea56 improve spec editor persistence and address flaky worktree test
- Increased wait times in spec editor persistence test to ensure content is fully loaded and saved.
- Added verification of content before saving in the spec editor test.
- Marked worktree panel visibility test as skipped due to flakiness caused by component rendering behavior.
2025-12-20 09:05:32 -05:00
Cody Seibert
ace736c7c2 Update README and enhance Electron app initialization
- Update the link in the README for the Agentic Jumpstart course to include a GitHub-specific query parameter.
- Ensure consistent userData path across development and production environments in the Electron app, with error handling for path setting.
- Improve the isElectron function to check for Electron context more robustly.
2025-12-20 02:08:13 -05:00
Cody Seibert
1a78304ca2 Refactor SetupView component for improved readability
- Consolidate destructuring of useSetupStore into a single line for cleaner code.
- Remove unnecessary blank line at the beginning of the file.
2025-12-20 01:52:49 -05:00
Cody Seibert
0c6447a6f5 Implement settings service and routes for file-based settings management
- Add SettingsService to handle reading/writing global and project settings.
- Introduce API routes for managing settings, including global settings, credentials, and project-specific settings.
- Implement migration functionality to transfer settings from localStorage to file-based storage.
- Create common utilities for settings routes and integrate logging for error handling.
- Update server entry point to include new settings routes.
2025-12-20 01:52:25 -05:00
Cody Seibert
fb87c8bbb9 enhance spec editor and worktree tests for improved reliability
- Updated spec editor persistence test to wait for loading state and content updates.
- Improved worktree integration test to ensure worktree button visibility and selected state after creation.
- Refactored getEditorContent function to ensure CodeMirror content is fully loaded before retrieval.
2025-12-20 00:26:45 -05:00
Cody Seibert
1a4e6ff17b add ability to collapse worktree panel 2025-12-20 00:05:48 -05:00
Cody Seibert
3e7695dd2d better labels 2025-12-19 23:53:22 -05:00
Cody Seibert
dcf19fbd45 refactor: clean up and improve readability in WorktreePanel component
- Simplified the formatting of dropdown open change handlers for better readability.
- Updated the label from "Branch:" to "Worktrees:" for clarity.
- Enhanced conditional checks for removed worktrees to improve code structure.
2025-12-19 23:45:54 -05:00
Cody Seibert
80ab5ddad2 fixing worktree style 2025-12-19 23:44:07 -05:00
Cody Seibert
fcb2e904eb feat: add auto-generated titles for features
- Add POST /features/generate-title endpoint using Claude Haiku
- Generate concise titles (5-10 words) from feature descriptions
- Display titles in kanban cards with loading state
- Add optional title field to add/edit feature dialogs
- Auto-generate titles when description provided but title empty
- Add 'Pull & Resolve Conflicts' action to worktree dropdown
- Show running agents count in board header (X / Y format)
- Update Feature interface to include title and titleGenerating fields
2025-12-19 23:36:29 -05:00
Cody Seibert
1b676717ea Merge remote-tracking branch 'origin/main' into category 2025-12-19 21:57:14 -05:00