Commit Graph

51 Commits

Author SHA1 Message Date
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
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
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
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
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
Cody Seibert
dd610b7ed9 fixing button in button issue 2025-12-19 21:45:07 -05:00
Cody Seibert
56ab21558d Merge remote-tracking branch 'origin/main' into worktree-select 2025-12-19 21:34:59 -05:00
Cody Seibert
a84f2e5942 Merge remote-tracking branch 'origin/main' into terminals-mpve 2025-12-19 21:30:44 -05:00
Web Dev Cody
6cb085f192 Merge pull request #173 from AutoMaker-Org/pull-request
pull-request
2025-12-19 21:28:43 -05:00
Cody Seibert
3842eb1328 cleaning up code 2025-12-19 20:55:43 -05:00
Cody Seibert
bb5f68c2f0 refactor: improve PR display and interaction in worktree components
- Updated WorktreeActionsDropdown to use DropdownMenuItem for better interaction with PR links.
- Enhanced WorktreeTab to include hover and active states for buttons, and improved accessibility with updated titles and aria-labels.
- Ensured PR URLs are safely opened only if they exist, enhancing user experience and preventing errors.
2025-12-19 20:46:23 -05:00
Cody Seibert
ec7c2892c2 fix: address PR #173 security and code quality feedback
Security fixes:
- Enhanced branch name sanitization for cross-platform filesystem safety
  (handles Windows-invalid chars, reserved names, path length limits)
- Added branch name validation in pr-info.ts to prevent command injection
- Sanitized prUrl in kanban-card to only allow http/https URLs

Code quality improvements:
- Fixed placeholder issue where {owner}/{repo} was passed literally to gh api
- Replaced async forEach with Promise.all for proper async handling
- Display PR number extracted from URL in kanban cards

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-19 20:39:38 -05:00
Cody Seibert
6c25680115 Changes from pull-request 2025-12-19 20:07:50 -05:00
Kacper
3ca1daf44c feat: clear default AI profile when removing selected profile
- Added logic to clear the default AI profile ID if the selected profile is being removed from the AI profiles list. This ensures that the application maintains a valid state when profiles are deleted.
2025-12-20 01:59:11 +01:00
Kacper
80cf932ea4 feat: add default AI profile selection to settings view
- Introduced default AI profile management in the settings view, allowing users to select a default profile for new features.
- Updated the Add Feature dialog to utilize the selected AI profile, setting default model and thinking level based on the chosen profile.
- Enhanced the Feature Defaults section to display and manage the default AI profile, including a dropdown for selection and relevant information display.
2025-12-20 01:51:46 +01:00
Cody Seibert
d4365de4b9 feat: enhance PR handling and UI integration for worktrees
- Added a new route for fetching PR info, allowing users to retrieve details about existing pull requests associated with worktrees.
- Updated the create PR handler to store metadata for existing PRs and handle cases where a PR already exists.
- Enhanced the UI components to display PR information, including a new button to address PR comments directly from the worktree panel.
- Improved the overall user experience by integrating PR state indicators and ensuring seamless interaction with the GitHub CLI for PR management.
2025-12-19 19:48:14 -05:00
Cody Seibert
9bfcb91774 Merge branch 'main' into pull-request 2025-12-19 16:53:00 -05:00
Cody Seibert
a26ef4347a refactor: remove CoursePromoBadge component and related settings
- Deleted the CoursePromoBadge component from the sidebar and its associated logic.
- Removed references to the hideMarketingContent setting from the settings view and appearance section.
- Cleaned up related tests for marketing content visibility as they are no longer applicable.
2025-12-19 16:22:03 -05:00
Cody Seibert
1ad3b1739b Merge branch 'main' into refactor/frontend 2025-12-19 14:42:31 -05:00
trueheads
17a2053e79 e2e fixes 2025-12-18 21:01:14 -06: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
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
trueheads
a14ef30c69 feat: In the Agent Runner tab, in an Agent Conversation, when s... 2025-12-18 18:33:56 -06:00
trueheads
3e015591d3 feat: I need you to review all styling for button, menu, log vi... 2025-12-18 18:23:50 -06: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
Kacper
1656b4fb7a Merge remote-tracking branch 'origin/main' into refactor/frontend 2025-12-18 21:03:23 +01:00
Kacper
e508f9c1d1 Merge remote-tracking branch 'origin/main' into refactor/frontend 2025-12-18 20:16:47 +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
a860b3cf45 Merge main into refactor/frontend
Merge latest features from main including:
- PR #161 (worktree-confusion): Clarified branch handling in dialogs
- PR #160 (speckits-rebase): Planning mode functionality

Resolved conflicts:
- add-feature-dialog.tsx: Combined TanStack Router navigation with branch selection state
- worktree-integration.spec.ts: Updated tests for new worktree behavior (created at execution time)
- package-lock.json: Regenerated after merge

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 12:00:45 +01:00
Kacper
e1c3b7528f feat: enhance root layout with navigation and theme handling
- Added useNavigate hook to facilitate programmatic navigation.
- Implemented a useEffect to redirect to the board view if a project was previously open and the root path is accessed.
- Updated theme class application to ensure proper filtering of theme options.

This improves user experience by ensuring the correct view is displayed upon navigation and enhances theme management.
2025-12-18 01:37:33 +01:00
Kacper
e78bfc80ec feat: refactor spec-view to folder pattern and add feature count selector
Closes #151

- Refactor spec-view.tsx from 1,230 lines to ~170 lines following folder-pattern.md
- Create unified CreateSpecDialog with all features from both dialogs:
  - featureCount selector (20/50/100) - was missing in spec-view
  - analyzeProject checkbox - was missing in sidebar
- Extract components: spec-header, spec-editor, spec-empty-state
- Extract hooks: use-spec-loading, use-spec-save, use-spec-generation
- Extract dialogs: create-spec-dialog, regenerate-spec-dialog
- Update sidebar to use new CreateSpecDialog with analyzeProject state
- Delete deprecated project-setup-dialog.tsx

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-18 00:14:44 +01:00
Kacper
bfc8f9bc26 fix: use browser history in web mode for proper URL routing
The router was using memory history with initial entry "/" which caused
all routes to render the index component regardless of the browser URL.

Changes:
- Use browser history when not in Electron (for e2e tests and dev)
- Use memory history only in Electron environment
- Update test utilities to use persist version 2 to match app store

This fixes e2e tests that navigate directly to /board, /context, /spec

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 22:37:58 +01:00
Kacper
784188cf52 fix: improve theme handling to support all themes
- index.html: Apply actual theme class instead of only 'dark'
- __root.tsx: Use themeOptions to dynamically generate theme classes
  - Fixes missing themes: cream, sunset, gray

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 21:18:54 +01:00
Kacper
1d945f4f75 fix: update API key test to use backend endpoint
- Use /api/setup/verify-claude-auth instead of removed Next.js route
- Add placeholder for Gemini test (needs backend endpoint)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 21:14:03 +01:00
Kacper
ad4da23743 Merge main into refactor/frontend
- Resolved conflicts from apps/app to apps/ui migration
- Moved worktree-panel component to apps/ui
- Moved dependency-resolver.ts to apps/ui
- Removed worktree-selector.tsx (replaced by worktree-panel)
- Merged theme updates, file browser improvements, and Gemini fixes
- Merged server dependency resolver and auto-mode-service updates

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-17 20:14:19 +01:00