Use ./src and ./public so Vite resolves /src/main.ts correctly instead of
nesting files under web/web/src.
Co-authored-by: Cursor <cursoragent@cursor.com>
ARG before FROM is not visible in RUN; set APK_MIRROR default inside the
runtime stage so sed does not produce broken https:///alpine URLs in CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep a minimal dist/index.html in version control so go:embed succeeds
when CI checks out without a frontend build; ignore other dist artifacts.
Co-authored-by: Cursor <cursoragent@cursor.com>
Support ingress-facing model aliases with upstream rewrite, category-aware health checks, provider name validation, modal click-outside guard, and dropdown-based routing rule targets.
Co-authored-by: Cursor <cursoragent@cursor.com>
Return empty arrays from GetModels and normalize null API responses so the admin UI never reads length on null.
Co-authored-by: Cursor <cursoragent@cursor.com>
Category-scoped protocol types, manual model add/delete, and safer sync behavior so egress configuration and model tables stay consistent.
Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce ComfyUI workflow models with Replicate-style predictions API, complete embedding and Cohere-compatible rerank proxying, and rebuild images for linux/amd64 via docker.1panel.live.
Co-authored-by: Cursor <cursoragent@cursor.com>
Refactor theme and pages to match UI-DESIGN-SYSTEM.md, add zh/en i18n with Element Plus locale sync, and expose 24h request trend data for ECharts on the dashboard.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add font-size scale, harmonize Element Plus form and table text, fix settings label wrapping, and align body colors with the spec.
Co-authored-by: Cursor <cursoragent@cursor.com>
Centralize spacing in theme.css, adopt card-toolbar/card-pager utilities, and remove per-page inline margins across all views.
Co-authored-by: Cursor <cursoragent@cursor.com>
Treat provider rate limits as retryable, rotate to other keys when possible, and pass through the upstream status code to clients.
Co-authored-by: Cursor <cursoragent@cursor.com>
Auto-repair encryption_key from legacy config or env on startup and surface decrypt failures instead of a generic no-keys error.
Co-authored-by: Cursor <cursoragent@cursor.com>
Ignore the removed config file path so git-pulled binaries still start under legacy image entrypoints; delegate container startup to the repo entrypoint when available.
Co-authored-by: Cursor <cursoragent@cursor.com>
Remove config-file validation that blocked startup; settings are stored in SQLite and editable from the system settings page, with optional legacy yaml import on first boot.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extract error details from provider response bodies for chat completions and streams, and record gateway pre-check and failover failures so the request logs page shows actionable messages.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fail fast on missing config and reject default encryption keys; use SHA-256 ingress key lookup, trusted-proxy-aware client IP, sentinel gateway errors with correct HTTP status codes, daily provider key counter reset, Anthropic multimodal forwarding, and cache Get methods that return copies.
Co-authored-by: Cursor <cursoragent@cursor.com>
Record success and failure login events alongside API usage logs, with username-only request bodies and UI filters for admin_login entries.
Co-authored-by: Cursor <cursoragent@cursor.com>
Manage ip_rules table manually before AutoMigrate to convert c_id_r to cidr and avoid GORM rebuilding the table with missing NOT NULL columns.
Co-authored-by: Cursor <cursoragent@cursor.com>
Request logs now retain 500 records with pagination, filters, ingress names, and request/response bodies. IP rules default to proxy scope with loopback equivalence and schema migration to prevent admin lockout. Add luminary-recover CLI and script for password reset, IP rule cleanup, and login cooldown recovery without rebuilding the image.
Co-authored-by: Cursor <cursoragent@cursor.com>
Lock admin login by IP after repeated failures with configurable lockout, and document /v1 endpoints with correct default port.
Co-authored-by: Cursor <cursoragent@cursor.com>
List models on providers API, expand rows in egress management, and replace JSON text inputs with provider/model pickers where empty means allow all.
Co-authored-by: Cursor <cursoragent@cursor.com>