* docs: add git hash display and configurable dev server port
## CHANGES
- Add `VITE_PORT` env variable to configure dev server port
- Display git commit hash in About modal next to version
- Add `__GIT_HASH__` build-time constant to both Vite configs
- Document running multiple Maestro instances with git worktrees
- Update CONTRIBUTING.md with parallel development instructions
* feat: add configurable ports for dev servers
- Allow VITE_PORT to configure main dev server port
- Update main window to load from configurable port
- Enable VITE_WEB_PORT for web interface dev server
- Add note in CONTRIBUTING.md about port configuration
- Log port usage in development mode
* docs: update CONTRIBUTING.md section and fix React DevTools script initialization
## CHANGES
- Rename "Linting" section to "Linting & Pre-commit Hooks" in table of contents
- Move script variable declaration outside conditional block
- Fix React DevTools script initialization order in index.html
* chore: update `.vscode/settings.json` with new markdownlint config
* fix: disable biome linting. Project uses ESLint
* chore: Update baseline-browser-mapping (>2 months old, warning message on "npm run build:web")
* chore: add .vscode/ to gitignore
* chore: fix gitignore to ignore .cscode/* files properly
* fix
* chore: stop tracking .vscode/ files, respect gitignore
Co-Authored-By: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.5 (1M context) <noreply@anthropic.com>
- Fix AI input lag by using local state for typing, syncing to session
state only on blur/submit instead of every keystroke
- Add esbuild.drop to strip console.* and debugger in production builds
- Memoize handleInputFocus and handleSessionClick callbacks in MainPanel
- Simplify textarea auto-grow by removing unnecessary RAF scheduling
- Fix AgentSessionsBrowser by changing button to div (nested button issue)
- Restore legacy history filter fallback for entries without sessionId
Claude ID: 33f0f964-5b7f-4240-9e40-8eddcecafe8e
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
- Create manifest.json with app metadata, icons, and shortcuts
- Add PWA icon generation script (scripts/generate-pwa-icons.mjs)
- Configure Vite public directory for static PWA assets
- Add apple-touch-icon links for iOS home screen
- Add favicon links for browser tabs
- Include npm script for regenerating PWA icons
Updated vite.config.web.mts to use dynamic chunk naming and manual
chunking function for better code splitting:
- Mobile and desktop apps now build into separate named chunks
- React dependencies are isolated in their own chunk for caching
- Dynamic chunkFileNames function preserves mobile/desktop naming
- Added webpackChunkName magic comments in main.tsx for clarity
Build output now shows distinct bundles: mobile-*.js, desktop-*.js,
main-*.js, and react-*.js for optimal lazy loading.
- Add vite.config.web.mts with dedicated web interface configuration
- Configure build output to dist/web/ directory
- Set up code splitting with React in separate chunk
- Enable source maps for development debugging
- Add dev server proxy for API and WebSocket connections
- Create index.html entry point with mobile-optimized meta tags
- Create main.tsx with device detection for mobile/desktop routing
- Add index.css with Tailwind, CSS custom properties, and animations
- Create placeholder mobile/desktop App components for Phase 1/2
- Update tailwind.config.mjs to include src/web files