Fix "Failed to load on projects" error by including credentials in all
fetch calls to /api/* endpoints. The session cookie must be sent with
requests for requireAuth middleware to authenticate users.
Changes:
- projects.js: Add credentials: 'include' to all 6 API fetch calls
(loadProjects, saveProject, deleteProject, loadDeletedProjects,
restoreProject, permanentDeleteProject)
- sessions-landing.js: Add credentials to 3 API fetch calls
(loadSessionsAndProjects, moveSessionToProject, context menu
suggestions)
Resolves issue where projects page showed "Failed to load projects"
error on https://www.rommark.dev/claude
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add GET /projects route in server.js with authentication check
- Serve projects.html when authenticated, redirect to login otherwise
- Add navigation header to both landing page and projects page
- Include Sessions, Projects navigation links with active state styling
- Add logout button to navigation header
- Style navigation with dark theme matching existing design
- Make navigation responsive for mobile devices
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implemented smart suggestions UI with visual indicators for moving sessions between projects.
Features:
- Right-click context menu on session rows
- Fetches smart project suggestions from API
- Displays top 3 suggestions with match scores and reasons
- Visual indicators: 🎯 (90+), 📂 (50-89), 💡 (10-49)
- "Open in IDE" option for quick navigation
- "Show All Projects" modal for full project list
- "Move to Unassigned" to remove project association
- Smooth animations and hover effects
- Click outside to close menu
- Responsive design for mobile devices
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add loadSessionsAndProjects() to fetch sessions and projects in parallel
- Store projects in window.projectsMap for quick lookup
- Group sessions by projectId, separating assigned and unassigned
- Render collapsible project sections with icon, name, and session count
- Add toggleProjectSection() to collapse/expand sections (▼/▶)
- Display project badges on sessions when assigned to a project
- Unassigned sessions shown in separate section at bottom
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implement complete JavaScript functionality for the projects management page:
- State management for projects array and current editing project
- loadProjects() - Fetch projects from /api/projects
- renderProjects(filter) - Render project cards with search/filter support
- setupEventListeners() - Wire up all interactive elements
- openProject(projectId) - Navigate to sessions page for selected project
- openProjectModal(project) - Open modal for create/edit operations
- closeProjectModal() - Close modal and reset form
- handleProjectSubmit(e) - Validate and save project data
- showProjectMenu(projectId, event) - Display context menu
- deleteProject(projectId) - Soft delete with confirmation
- openRecycleBinModal() - Display deleted projects
- restoreProject(projectId) - Restore from recycle bin
- permanentDeleteProject(projectId) - Delete forever with confirmation
- escapeHtml(text) - XSS prevention for user-generated content
- formatDate(dateString) - Human-readable relative timestamps
- showToast(message, type) - Toast notifications with animations
Features:
- Async/await for all API calls
- Comprehensive error handling
- Real-time search filtering
- Context menu for project actions
- Responsive modal system
- Toast notifications for user feedback
- Keyboard shortcuts (Escape to close)
- Click outside to close menus/modals
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add comprehensive CSS styles for the projects management page including:
- Page layout with responsive header
- Projects grid with auto-fill layout (300px min cards)
- Project cards with hover effects and stats
- Modal styles for create/edit and recycle bin
- Form elements with proper styling
- Button styles (primary/secondary)
- Context menu for card actions
- Recycle bin items with restore/delete actions
- Empty state styling
- Responsive design for mobile devices
- Scrollbar styling
Uses CSS variables from existing style.css for consistency.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Full IDE with terminal integration using xterm.js
- Session management with local and web sessions
- HTML preview functionality
- Multi-terminal support with session picker
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>