Agent mode requires git for mirror cloning and rg for code search.
Both were missing from oven/bun:1-slim causing command failures (exit code -1).
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Remove all isDev logic from review controller and config manager.
The isDev check treated missing NODE_ENV as development, causing
production to use a hardcoded fake commit SHA and skip real reviews.
Config validation now always fails fast on invalid configuration.
- Add Qdrant vector database service with persistent storage
- Add health check and depends_on for service ordering
- Expose ports 6333 (HTTP) and 6334 (gRPC)
- Rewrite release.yml: semantic-release for auto-versioning + Docker
image build and push to GitHub Container Registry (ghcr.io)
- Rewrite ci.yml: remove continue-on-error on lint
- Add .releaserc.json with changelog and git plugins
- Add semantic-release dependencies to package.json
- Fix Dockerfile: remove --frozen-lockfile from production install
- Update .dockerignore with comprehensive exclusions
- Update docker-compose.yml to pull from GHCR by default
- Remove obsolete pnpm packageManager field
- Remove obsolete kubernetes.yaml from .gitignore
- Add @biomejs/biome as dev dependency
- Remove deprecated tslint dependency
- Add biome.json with project-specific rules
- Update lint script to use Biome
- Apply Biome auto-fixes across codebase
- Create English README.md as primary documentation
- Create Chinese docs/README.zh-CN.md with language link
- Focus on core functionality: features, quick start, configuration, deployment
- Remove CI badge, GitHub Actions, Contributing, Acknowledgments sections
- Remove verbose API Reference and Development sections
- Condense configuration examples for clarity
- Delete obsolete docs/ADMIN_UI_DESIGN.md
- Add config-overrides.json to .gitignore (user-specific runtime config)
- Add config-overrides.json to .dockerignore (not needed in image)
- Mount config-overrides.json as volume in docker-compose.yml
This enables persistent configuration overrides in containerized
deployments without rebuilding the image.
- Add concurrently package for parallel process execution
- Split dev script into dev:backend and dev:frontend
- Use concurrently to run both with colored, labeled output
This enables single-command development with 'bun run dev' that starts
both the backend server (with hot reload) and frontend dev server.
Migrate to react-router-dom for SPA routing:
- Add BrowserRouter with nested routes
- Implement AuthGuard component for protected routes
- Add collapsible sidebar navigation
- Support /repos and /config routes
Changes:
- App.tsx: Route definitions with AuthGuard wrapper
- main.tsx: Force dark mode, improved retry logic
- DashboardPage.tsx: New layout with sidebar + Outlet
- vite.config.ts: Expose dev server on 0.0.0.0
Dependencies added:
- react-router-dom
- @radix-ui/react-select, switch, separator, tabs
Add comprehensive configuration management UI:
- ConfigManager: Main page with grouped config display
- ConfigGroupCard: Expandable cards for each config group
- ConfigFieldInput: Smart input based on field type
- Text, URL, password (masked), number, boolean, enum, textarea
UI Components added:
- Select, Switch, Tabs, Textarea, Separator from shadcn/ui
Features:
- Real-time field validation
- Source indicator (default/env/override)
- Save/reset functionality with toast notifications
- Responsive layout with collapsible groups
Add /admin/api/config routes for runtime configuration:
- GET /: Retrieve all config groups with field metadata and values
- PUT /: Validate and persist configuration overrides
- POST /reset: Reset specified keys to defaults (remove overrides)
Features:
- Sensitive field masking (passwords, secrets, API keys)
- Field validation (URL, enum, number range, boolean)
- Readonly field protection
- Grouped field organization with metadata