Repository navigation
fix: rework connection tests, context capacity, system prompts, Cindy and UI foundation - #206
Merged
Merged
Conversation
Migration 260 re-platforms Cindy accounts and groups to openai, rewrites account model_mapping to the public free baseline, turns the managed Cindy Catalog channel into an ordinary priced channel, drops the Cindy identity columns, tables, projection/guard triggers and functions, the cindy_provider_config setting and per-user cindy quotas. The ent schema loses wire_platform/provider_profile and the cindy_* account fields. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… verbatim
Connection tests (single, batch and scheduled) report the upstream's own error
text exactly as upstream v0.2.8 does ("API returned <status>: <body>",
"Request failed: <err>", stream error/response.failed messages). The fixed
catalogue layer (transport/HTTP failure types, endpoint labels,
AccountTestSafeFailureMessage, sendAccountTest* helpers) is removed. The strict
completion check stays: a failed terminal carries the upstream terminal content
and wraps the sentinel classes, and the service log line matches the event.
The job-based batch test (plans, stamps, execution snapshots, account-tools
planning, 202 jobs, test_* catalogue entries) is replaced by a port of upstream
PR Wei-Shaw#6522: POST /admin/accounts/batch-test streams per-account SSE results from
RunTestBackgroundDetailed (first-content latency, upstream model, recovery
after success). Additions: at most 10 accounts at once and 3 per upstream host,
a 90 s bound per account, SSE keep-alives, and a server-side automatic model
(PickConnectionTestModel) that the single-test picker also uses as default.
The account-job framework keeps its concurrent executor for Codex ticket and
extension-operation jobs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tState A successful single, batch or scheduled connection test recovers the account through upstream's RateLimitService.RecoverAccountState again: an error status is cleared and recoverable runtime limits are reset, while manually disabled accounts and the schedulable flag are never touched. The fork's atomic repository recovery (account_test_recovery.go) had no other caller and is removed with its integration test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebuild the theme foundation on the platform-console language instead of the marketing-site palette: - styles/theme.css: upstream-equivalent role tokens (canvas, surface, subtle, sunk, line/line-strong/line-focus, ink/muted/faint, primary, semantic families, radii, popover/overlay shadows, scrim, fonts) plus the Tailwind shadow scale defaults. - styles/flat-theme.css: console values for light and dark (neutral canvas #fafafa/#0f0f0f, white/#1a1a1a surfaces, hairlines, ink primary actions, green only for success), neutral/dark/primary ramps and the five semantic ramps, 4/6/8/12px radii, shadows only for lg/xl/2xl, no blur or hover scaling, Geist @font-face. - tailwind.config.js: every palette, radius, shadow, gradient, blur and motion value resolves through a variable with the upstream value as fallback (the flat_theme_enabled switch off = upstream look); neutral families resolve per role (fill/line/text); red/rose, amber/yellow/ orange, blue/sky/indigo/cyan, green/emerald/teal/lime and purple/ violet/fuchsia/pink fold into danger/warning/info/success/purple; solid primary fills export --theme-on-fill so text-white follows the near-white dark-mode fill. - Fonts: Geist and Geist Mono 1.7.2 (npm geist, OFL 1.1) as Latin-subset variable woff2 (67 KB total); CJK uses system fonts. MiSans (~19.9 MB) and its notice are removed; THIRD_PARTY_NOTICES updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Port upstream PR Wei-Shaw#6522's BatchAccountTestModal.vue, batchTestAccounts SSE client, bulk-bar "test-connection" entry and batchTest locale block. The modal defaults to the server-side automatic model per account (an explicit model still filters to the accounts that list it), loads account catalogs at most 8 at a time, shows each upstream error in full, and adds Stop (closing the stream stops the run) and Retry failed (re-submits the failed accounts). The job-based BatchTestAccountModal, its specs and CI entries, the batch-test job API, the batch branches of AccountOperationProgress and the account_batch_test task kind are removed. The single-test output-limit note moves to admin.accounts.testOutputLimited. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ing batch tests Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n console Cindy is an ordinary OpenAI API-key upstream (platform openai, base_url https://api.laxarouter.ai kept per account), so every Cindy-specific screen and branch goes away: - delete the Cindy page, balance-probe, duplicate-inventory and group audit/split features, the cleanup dialog, the provider settings panel, the Cindy APIs, utils/cindyOpenAIDefaults and the Cindy feature locales; /admin/cindy-accounts now redirects to the accounts page filtered by the existing "cindy" management folder - drop the cindy platform from constants, colors, icon, badge, types, key group providers, channel/composite platform lists and quotas - accounts list: no Cindy views/counts/column/cleanup/recover action or scope prop; details drawer, action menu, status badge and import modal lose their Cindy branches (import target group was Cindy-only) - create/edit: remove the provider-create/provider-edit machinery (managed catalog, device ID, edit context, basic-only save, per-platform drafts) and restore the upstream platform switch and submit paths; ordinary OpenAI edits keep writing only explicitly changed protocol modes - groups page: remove Cindy audit/split and the Cindy accounts jump; settings: remove the risk-page Cindy card and the Cindy image bridge switch (Image Studio switch only) - reasoning policy applies to platform openai only (wire_platform gone) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
OpenAI -> API Key now offers a small "Cindy (Laxa)" preset next to the base URL. It only pre-fills the visible fields: base_url https://api.laxarouter.ai, Responses mode force_responses, compact mode force_off and WS v2 off, and clears the default OpenAI whitelist so the ordinary model area is filled with the native "sync upstream models" action. The account is created as a plain platform=openai/type=apikey account. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pick each account's automatic model only after it holds its upstream-host and global slots, so a large selection does not evaluate every account's model support at once, and disable proxy buffering for the batch SSE stream like the single-account test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- style.css: upstream recipes restored verbatim; a console block keyed on :where(.flat-theme) restates buttons (32/28px, 6px, ink primary), inputs, cards (hairline, 8px), KPI tiles (mono labels, tabular 18px values), tables, badges (soft semantic pills), popovers/menus (popover shadow), dialogs (12px, overlay shadow, scrim), sidebar (canvas, 32px items, mono section titles), segmented tabs (ink active), progress/switch/code; dark twins only where upstream dark: variants would win. `ui-decor` hides decorative orbs/grids/tints. - Shared components and layout are de-swept back to their upstream classes, then restyled on purpose: DataTable/TablePageLayout density (8/10px cells, 12px uppercase headers, surface header), Select trigger = input geometry, Toggle knob hairline, AppHeader 56px with 16px title, AuthLayout/AppLayout upstream decorations behind ui-decor. - Identity hues: platformColors, PlatformTypeBadge and GroupBadge render neutral chips while the console theme is on (flatThemeActive), so a platform never reads as a status colour; the upstream hues stay for the switch-off look. - Charts: usePresentationColors exposes a 12-colour series palette (--theme-chart-series-*); distribution charts and the token trend use it, upstream colours remain the fallback. - tailwind: bg-white follows --theme-on-fill too (switch knobs on near-white dark-mode fills). - DataTable.spec: inactive sort arrows are text-gray-400 (faint) again instead of the fork's text-muted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Apply artifacts/tmp/admin-rework/ui/desweep/desweep.py (idempotent, re-runnable after the other areas merge). A class segment takes its baseline text only when both are identical after removing pure-style tokens (radius, shadow, blur, gradient stops, neutral/semantic colour tokens, hover motion, dark primary text), aligned per file: 1. upstream files -> fd80b08 (1,023 segment replacements incl. a few <style> colour/radius lines); 2. fork additions and fork-only files -> the pre-restyle fork 54d3675 where a sweep token (rounded-none, shadow-outline, text-muted, ...) remains; 3. rounded-none left in functionally edited strings -> radius of the closest baseline segment. Central files restyled on purpose are excluded (desweep-exclude.txt); files other areas delete or rewrite (Cindy, batch-test modal, prompt UI) are skipped. ImageStudioPage and the KeysView provider tile had no baseline and get their radii by hand. Result: upstream .vue files carrying fork changes 203 -> 80, vue delta vs upstream +12718/-3603 -> +11690/-2571, rounded-none/shadow-outline 651 -> 29 (mostly in skipped files). Appearance now comes from the central token/recipe layer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
System prompts are now one settings row (system_prompts): a small library of named prompts (position prepend|append, role auto|system|developer), one global switch and one site default used by every account in inherit mode. Accounts bind inherit/off/custom in extra.system_prompt. Requests read an in-memory snapshot and the scheduled account, so sending never queries the database for prompts. Each final protocol has one insertion point: Responses instructions or a developer input item, one leading Chat message, the Anthropic top-level system (before Claude OAuth mimicry relocates it), Gemini systemInstruction. Compaction and Codex Responses Lite requests are never injected, failures forward the request unchanged, prompt_cache_key is not rewritten, and the echoed instructions are restored to the client's own value. Claude OAuth mimicry reads the upstream settings again (upstream code restored, 409 guard removed). Templates, versions, rules, the Skill registry, frozen public files, retired routes and the promptskills package are removed. Migration 259 imports inline rule text as library prompts with the switch off and no default, returns a differing enabled Claude rule to the upstream settings, and drops the 12 prompt tables. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The promptskills package, its seed tree and the fixed prompt capture are gone, so the bundle validator, the Remote Skill race and closure steps, the release-time prompt SHA check and its release-note lines, the seed sync script and the matching .gitattributes rules are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Extensions -> System Prompts now shows one switch, the site default, the account usage (inherit/off/custom) and the prompt library (name, position, role, text). Accounts bind inherit/off/custom from the edit form, the row menu and the bulk bar (up to 1000 accounts); the details drawer entry is gone. The Settings page gets the upstream Claude OAuth block editor back. The rule manager, draft/merge composable, history, old APIs, specs and locale keys are removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Replace the rule/template/Skill description with the current model: one switch, one site default, a small library, account inherit/off/custom, one insertion point per final protocol, upstream Claude OAuth settings and migration 259. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…apshot - Every host resolves a model's context capacity as custom override > this account's upstream declaration > reference catalog > models.dev registry > unknown. The official-host split, protected accounts and the source-identity hash are gone. - Reference catalog GPT values are the Codex subscription values (gpt-5.5 272K/272K, gpt-5.4 272K/1M, gpt-5.4-mini and gpt-5.2 272K, gpt-6-* and gpt-5.6-* 272K/872K), looked up through vendor-neutral model keys. - extra.upstream_model_context_capacities is folded into extra.upstream_model_metadata with per-model source and observed_at (migration 258). The parser also reads OpenRouter top_provider limits. - A group's capacity is the minimum over its active accounts that can serve the model. Unknown capacity is omitted from /v1/models instead of a fabricated 200K window; media models never get text capacity. - Model sync follows Anthropic and Gemini pagination. Active API-key accounts are re-synced every 24h (staggered, with backoff) and right after they are created or their credentials change; OAuth accounts record the capacities of the Codex manifests that pass through. - Groups of non-Claude platforms list their own default models. The Cindy model-list and Codex manifest branches are removed. - The Codex context contract self-test reports version 3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rebuilding input/messages through json.Marshal HTML-escaped the customer's items, so a retry or reasoning recovery comparing the sent body by bytes could see a different request. Existing elements are now copied verbatim. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Chart series 1 is neutral 600 (light) / 400 (dark) instead of ink, so a dominant slice no longer paints a solid black donut; the neutral helper colours move to series 7/9/12. - Dark-mode placeholder text uses the faint token (upstream's dark:placeholder variant otherwise wins over the recipe). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The prompt template, Skill registry and rule policy tables they described are dropped by migration 259; the migration files themselves stay unchanged and checksum-protected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… the loader The loader rejects names and bodies that are blank under Unicode whitespace; the migration now skips or renames the same cases instead of producing a configuration the application would refuse to load. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The admin page returns a stored value that no longer validates so it can be corrected and saved; only valid configurations reach requests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The key modal fetched the Codex manifest with a pinned client_version of 0.147.0, so passed-through ChatGPT manifests dropped every model that needs a newer client (GPT-6). It now uses /backend-api/codex/models, which the gateway requests with its configured current Codex version. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Capacity sources are custom, upstream, reference catalog and models.dev; unknown capacity shows no value. OAuth rows are editable like every other account, and a create-time sync's upstream declaration outranks the reference catalog in the unsaved preview. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # frontend/src/api/admin/index.ts # frontend/src/components/admin/account/AccountDetailsDrawer.vue
…y parser extractUpstreamModelCatalog keeps upstream's signature and capability parsing; the strict per-field capacity parser now replaces every synced model's capacity in one place, which the OAuth manifest recorder shares. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # backend/cmd/server/wire_gen.go # backend/internal/handler/admin/account_handler.go
…h in migration 260 Migrated Cindy accounts get extra.codex_image_generation_bridge=false (the Laxa endpoint rejects the injected image_generation tool that the Cindy identity used to suppress), and the stored image_tools_config setting loses its responses_image_enabled key so only studio_enabled remains. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…AI API key Cindy (Laxa) is now an ordinary OpenAI API-key upstream. Delete the Cindy provider subsystems and every Cindy branch in the shared backend: - catalog module, free-pool gating, the gpt-5.4-mini alias, health state machine, balance probe jobs, duplicate inventory/review/merge jobs, group split/audit, confirmed/banned cleanup, alpha search via Cindy, opaque continuation binding, the HTTP to WSv2 bridge, Cindy image models and the Responses image bridge, text billing snapshots, provider create/edit contracts and the platform identity (wire_platform/provider_profile); - 22 admin routes plus the Cindy-only edit-context, duplicate review/merge and /v1/models/capabilities endpoints; - the Cindy provider settings, the responses_image_enabled image switch and the GATEWAY_CINDY_IMAGE_STUDIO_ENABLED fallback. Generic replacements: - budget_exceeded (HTTP 429, or a response.failed/error terminal event) on an OpenAI-compatible account sets the account error with the upstream message, with no timed recovery; - extra.openai_prompt_cache_key_mode=sha256_64 hashes prompt_cache_key values longer than 64 characters at every Responses send point; - a structured model_not_supported 400 fails over and cools the account and model pair on every OpenAI-compatible HTTP path. Image Studio keeps its studio_enabled switch but has no model source left. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The generic prompt_cache_key option accepts exactly passthrough and sha256_64 (absent or null keeps the default) on create, update and bulk update, and a whole-object edit that omits it keeps the stored value. Its tests now cover the generic option instead of the removed Cindy normalizer. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Migration 260 turns the Cindy group into an OpenAI group. Bumping the auth snapshot version makes every node reload cached snapshots that still carry the old platform. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… rules Tests of deleted Cindy subsystems (catalog, identity, device fence, edit fence, balance/health probes, WSv2 bridge, image bridge, alpha search fallback, Laxa compatibility aliases, strict continuation) are removed. Tests of shared code keep only their generic cases, and tests whose contract changed now assert the new behaviour: - budget_exceeded (HTTP 429 and terminal stream events) puts an OpenAI-compatible account into the error state with the upstream message; - model_not_supported failover and cooldown apply to every OpenAI-compatible account; - Image Studio lists no eligible key until a generic image model source exists; - account import planning keeps only identity matching; - repository fixtures and sqlmock rows follow the dropped columns. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The backend no longer reads GATEWAY_CINDY_* variables or gateway.openai_ws.cindy_http_to_wsv2_enabled, so the Compose files, .env.example, config example, the rollout-defaults shell test and its CI step, and the removed cindyprovider package in the native domain script go away. GATEWAY_IMAGE_STUDIO_ENABLED stays as the deploy-time Image Studio default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Image Studio eligibility checks the key and its image-generation group again and is gated by an explicit, currently empty image model source, instead of a function that always fails. - The WS ingress no longer tracks function_call_output for the removed strict continuation block; upstream helpers that only served it stay with nolint markers for upstream parity, as does the upstream service-tier cost helper. - Fork helpers and test fixtures used only by the removed Cindy code go away. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts in functional frontend files (AccountsView, CreateAccountModal, EditAccountModal, ModelWhitelistSelector, ImportDataModal, GroupsView, SettingsView) take the integration side; the de-sweep is re-run in the next commit. .downstream/native-domains.md keeps both edits. Cindy removals in PlatformTypeBadge/PlatformIcon/platformColors merged cleanly with the neutral identity classes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The seven files resolved to the integration side (CreateAccountModal, EditAccountModal, ModelWhitelistSelector, ImportDataModal, AccountsView, GroupsView, SettingsView) get their upstream class strings back: artifacts/tmp/admin-rework/ui/desweep/desweep.py --apply, 301 segment replacements; a second run changes nothing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Resolve the integration of batch-test, cindy-frontend, prompts and capacity with the Cindy removal: the other areas keep their files and designs, Cindy leftovers are dropped, the openai_prompt_cache_key_mode option moves into finalizeResponsesForSend, lockAndMergeAccountProbeExtra keeps upstream's two return values, wire_gen.go is regenerated, and downstream-verify no longer names deleted Cindy tests or frontend specs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # .downstream/native-domains.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The API keeps upstream's sanitized sync message; the server log now carries the underlying error so a failed sync can be diagnosed from the ops logs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n override Migration 260 must not drop enqueue_group_api_key_auth_cache_invalidations, enqueue_channel_group_scheduler_invalidation or enqueue_channel_group_cache_invalidations: the managed model route trigger from 240 still calls them. The ops error classification override only served the removed capabilities route, so the ops logger returns to upstream. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
259 now sets the same lock/statement timeouts as 258/260. 260 drops a non-boolean openai_long_context_billing_enabled from Cindy rows before re-platforming them (the 175 trigger would abort the migration), clears the cindy key from the auth_source_default_*_platform_quotas settings as well, and documents why the shared invalidation helpers stay. Rehearsed on a production-shaped database: all three migrations apply, 55/55 trigger exercises pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HTExplicit
pushed a commit
that referenced
this pull request
Oct 4, 2026
Owner decision of 2026-10-04, like the reasoning fidelity diagnostic this branch already deletes. The diagnostic was the fork side of one sealed study (run responses-continuation-repair-20260909, in two rounds): two test files of internal/handler under the continuation_repair_live build tag, namely the live test with its three offline tests and the support file with the fixture that built the OpenAI gateway handler with its gateway and Ops services over in-memory stores from a frozen snapshot. No CI step ever built with that tag. Nothing outside the two files used what they declared, every production function they called has other callers, and no file carries the build tag now, so no production code changes. The live test was also the last code that named an environment switch of the dated studies: besides its own, it refused to start while the switch of the fidelity study or of the namespace round-trip study was set. The fork side of that study had left the tree with #206. .downstream/upstream-review-v0.2.13.md: the fidelity entry no longer says that the continuation-repair live test keeps its refusal, a new entry says what this change deletes and what stays (the Ops continuation diagnostic and the ordinary unit tests), and the note on the pinned upstream-risk.json counts the two paths. The history documents of earlier versions and upstream-risk.json still list them. Checked: go build -p 2 ./..., go vet -p 2 -tags unit ./internal/handler, test_upstream_automation_contract.py (16 tests), git diff --check, and a search of the tree for the build tag, the deleted names and the environment switches. No test was run: the two files were the only ones compiled under the tag. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HTExplicit
added a commit
that referenced
this pull request
Oct 4, 2026
…ored prompts (#244) 259 kept the legacy default rule as a library prompt together with a block that tells the model to fetch files under /skills/security-research/current/ first. That public route went away with the remote Skill registry (#206) and now falls through to the front end, so a client that follows the instruction reads an HTML page and reports that it cannot read the rules. Migration 269 removes only that block, recognised by shape: the fenced paragraph naming the route, the paragraphs after it that still mention REMOTE_ROOT, and the short fetch instruction directly before it. A prompt whose route reference sits elsewhere, or that would be empty without the block, is left as stored and reported with a notice. No other setting or paragraph is touched and the file can run again. Co-authored-by: Codex <codex@example.com> Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
HTExplicit
added a commit
that referenced
this pull request
Oct 7, 2026
) The first-party plugin system is gone, but code shaped by it still ran. This removes it. Backend - internal/nativeapi and internal/codexruntime are folded into service; the extensionv1 alias, the recovery carrier structs and the identity conversion layers are gone. Reasoning recovery keeps its decision order and reason strings. - Building an account's Codex User-Agent cannot fail: the error return and its propagation through the send paths are removed. - Account traffic telemetry is deleted: the Begin/Finish call sites, the observer and its Redis cache, GET /admin/accounts/:id/traffic-telemetry, the settings switch and gateway.account_traffic_telemetry_disabled. Migration 273 removes telemetry_enabled from settings.admin_observability_config. - Fields nobody reads or writes are removed: account_view_facts, the job item action, wire_platform and schema_version on the account test plan, the job list's kind and created_by filters. Frontend - The account-view skeleton is deleted; three dialogs keep discarding late answers through a local guard. The account drawer keys its usage cache and usage cell by account id. - The prompt audit page is upstream's. - /admin/tasks and /admin/cindy-accounts are removed, and the duplicate-account review entry whose backend was deleted in #206. - The settings panel that holds the theme switch is titled Appearance. A page opened before the deploy needs one refresh: until then the account test dialog lists no models and saving the Appearance panel fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HTExplicit
pushed a commit
that referenced
this pull request
Oct 7, 2026
…pped THIRD_PARTY_NOTICES.md opened with the notice and MIT licence for the gpt-5.6-instruct v45 prompt body, which was imported as an inactive template. The imported file left the tree with the prompt library rework (#206). Checked by hash and by line, without reading the text: the file at the import commit has the SHA-256 the notice records; no tracked file has that hash and none contains any of its lines, also not in SQL or JSON escaping. The image copies this file to /app/THIRD_PARTY_NOTICES.md. The Geist and Lucide notices, for fonts and icons the frontend still bundles, are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Root-cause rework of five admin areas that the v0.2.8-codexrip.8 delivery left wrong or bloated. Each area replaces the
faulty logic instead of patching it; fork deltas against upstream v0.2.8 (
fd80b08c9) shrink wherever upstream already hasthe capability. Net: 1,510 files, +11k / −298k lines.
1. Connection tests: verbatim upstream errors, streaming batch test
API returned <status>: <body>,Request failed: …, streamerror/response.failedcontent). The fixed-text layer from Simplify prompt management and fix proxy input and batch connection tests #205 and the job framework'scatalog messages are removed; the service log carries the same text.
POST /admin/accounts/batch-test, SSE per-account results,BatchAccountTestModal.vue), plus bounded concurrency (10 total, 3 per upstream host), 90 s per account, SSE keep-alive andserver-side auto model choice (
PickConnectionTestModel). The job-based batch test (plans, stamps, snapshots, account-toolsplanning) is deleted; success recovery uses upstream
RecoverAccountState.2. Model context capacity
schedulablefilter; OAuth accountsparticipate). Unknown capacity is no longer fabricated as 200K; image/video/audio models carry no text capacity.
upstream_model_metadata, migration 258 foldsupstream_model_context_capacitiesin); paginatedAnthropic/Gemini sync; vendor-neutral ID normalisation; API-key accounts refresh every 24 h and after credential changes.
client version (GPT-6 entries were filtered by the hard-coded 0.147.0). Self-test contract bumped to
version=3.3. System prompts: small library instead of rules/templates/Skills
inherit/off/custom (
accounts.extra.system_prompt). Stored in one settings row, read from memory (no per-request DBqueries), fail-open, no
prompt_cache_keyrewrite, Codex Lite/compact/count_tokens never injected, echo restored.template/version/rule/Skill tables;
promptskills(459 embedded seed files), 24 retired routes and/skills/...are removed.4. Cindy becomes an ordinary OpenAI API-key upstream
openai/apikey(base_urlhttps://api.laxarouter.aikept), baseline mapping of thepublic free models, group 12 →
openai, channel 1 becomes an ordinary priced channel, Cindy tables/columns/triggers dropped.budget_exceeded(HTTP 429 or SSE/WS terminal) puts the account into error with the original upstreammessage;
openai_prompt_cache_key_mode(passthrough|sha256_64) is a real account option.split audit, cleanup jobs, alpha search via Cindy, continuation binding, WSv2 bridge, image bridge, 22 routes,
GATEWAY_CINDY_*, the Cindy page (old path redirects to the "cindy" folder); a "Cindy (Laxa)" preset is added underOpenAI → API Key.
5. UI foundation (platform-console language)
primary actions, green only for success, 5 semantic colour families, radii 4/6/8, shadows and scrim only for popovers and
dialogs, Geist + Geist Mono (OFL, 67 KB) with system CJK fallback; MiSans (19.9 MB) removed.
flat_theme_enabledoffstill renders the upstream look.
.vuefiles (fork-styled upstream files 202 → 78).Data migrations
accounts.extra.upstream_model_context_capacitiesintoupstream_model_metadata.settings.system_prompts(switch off, no default),prompt_skills→system_prompt(off only), drops 12 prompt tables.user_platform_quotascindy rows deleted, Cindy schema objects dropped,API-key auth snapshot version 27.
These are forward-only; rolling back to an earlier image does not restore dropped tables.
Verification
go build ./...,go vet -tags=unit ./...,go vet -tags=integration ./...,golangci-lint 2.13
./...→ 0 issues;vue-tsc --noEmit; focused unit tests and specs per area (see branch commits).🤖 Generated with Claude Code