6 Commits

Author SHA1 Message Date
Claude bcf511a905 Fix all linting errors and warnings to achieve zero lint issues
Fixed 48 linting errors and 10 warnings across the codebase:

- Added .eslintignore to exclude CommonJS config files (jest.config.js,
  mock-backend.js, show-interactive-direct.js)
- Updated eslint.config.mjs with proper ignores and relaxed rules for test files
- Fixed all TypeScript 'any' types in lib/api.ts by adding proper interfaces:
  CommandResponse, ContainerActionResponse
- Added Window interface extensions for _debugTerminal and __ENV__ properties
- Removed unused imports (React, waitFor)
- Removed unused variables in test files
- Fixed unused error parameters in authSlice.ts catch blocks
- Converted app/layout.tsx to use next/font/google for JetBrains Mono
  (proper Next.js App Router font optimization)

Verified:
- npm run lint: 0 errors, 0 warnings ✓
- npm test: 282/282 unit tests passing ✓
- npm run test:e2e: 11/11 e2e tests passing ✓

https://claude.ai/code/session_7d4f1b7d-7a0d-44db-b437-c76b6b61dfb2
2026-02-01 21:03:14 +00:00
Claude 8e3c052409 Add comprehensive component and integration tests
- Added ContainerCard component tests (14 tests)
- Added TerminalModal component tests (12 tests)
- Added useDashboard hook tests (17 tests)
- Added ContainerActions, DeleteConfirmDialog, DashboardHeader tests
- All 162 frontend tests now passing
- Frontend coverage: 57.63% overall, 62.46% hooks
- Backend coverage: 100% maintained (116 tests)

https://claude.ai/code/session_mmQs0
2026-02-01 15:01:25 +00:00
Claude 1cbf7966c5 Add tooltips for container name, image, and ID with ellipsis
Added Tooltip components to ContainerHeader and ContainerInfo to show
full text on hover when truncated. Container ID now has ellipsis styling
to handle long IDs gracefully.

https://claude.ai/code/session_011PzvkCnVrsatoxbY3HbGXz
2026-02-01 03:41:41 +00:00
Claude 42c1d4737f Add comprehensive unit testing infrastructure
Install testing dependencies:
- Jest and jest-environment-jsdom for test runner
- React Testing Library for component testing
- @testing-library/user-event for user interaction simulation
- @types/jest for TypeScript support

Configure Jest:
- Next.js Jest configuration with jsdom environment
- Mock window.matchMedia, localStorage, and fetch
- Setup test paths and coverage collection

Add test coverage:
- Utility functions (terminal formatPrompt and highlightCommand)
- Redux store (authSlice async thunks and reducers)
- Custom hooks (useLoginForm, useAuthRedirect, useTerminalModal)
- React components (LoginForm, TerminalHeader, ContainerHeader, ContainerInfo, EmptyState)

Test results: 59 tests passing across 10 test suites

https://claude.ai/code/session_G4kZm
2026-01-30 23:28:09 +00:00
Claude e97b50a916 Organize interfaces and utilities into centralized folders
Move all TypeScript interfaces from component files to /lib/interfaces folder
Move terminal utility functions to /lib/utils folder
Update all component imports to use centralized interfaces and utilities
Fix JSX.Element type to React.ReactElement in terminal utils

This improves code organization and reduces duplication across components

https://claude.ai/code/session_G4kZm
2026-01-30 23:16:45 +00:00
Claude 70d32f13b2 Break down large components under 150 LOC
ContainerCard: 354 -> 91 LOC
- Extract useContainerActions custom hook (88 LOC)
- Split into sub-components:
  - ContainerHeader (77 LOC)
  - ContainerInfo (54 LOC)
  - ContainerActions (125 LOC)
  - DeleteConfirmDialog (41 LOC)

Dashboard: 249 -> 89 LOC
- Extract useContainerList hook (39 LOC)
- Extract useTerminalModal hook (24 LOC)
- Split into sub-components:
  - DashboardHeader (118 LOC)
  - EmptyState (44 LOC)

All React components now under 150 LOC for better maintainability

https://claude.ai/code/session_01U3wVqokhrL3dTeq2dTq73n
2026-01-30 23:00:37 +00:00