Commit Graph

117 Commits

Author SHA1 Message Date
m4 84e4d298b3 feat(webui): support latex \(...\) and \[...\] math delimiters in markdown 2026-08-11 15:07:53 +08:00
m4 ab3789603f feat(webui): image model connection test 2026-08-11 15:07:53 +08:00
m4 eab9178743 feat(webui): registry editor context-window/output/temperature fields + advanced section 2026-08-11 15:07:53 +08:00
m4 94e64cc0c2 feat(webui): context-usage indicator fed by custom stream events 2026-08-11 15:07:53 +08:00
m4 1351da2ee0 feat(webui): clear-all usage records endpoint + dialog action 2026-08-11 15:07:23 +08:00
m4 a7f7adc56b feat(webui): install skills from arbitrary source, uninstall, marketplace categories 2026-08-11 15:07:23 +08:00
m4 79cfeae8d8 fix(webui): harden branding path validation, auth-on warning, scheduler retry
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 12:33:58 +08:00
m4 7353afbec9 feat(webui): security + data backup tabs in system config dialog
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 11:55:07 +08:00
m4 0e83ab73af fix(webui): keep unsaved system config edits across branding uploads
Uploading or restoring a logo/favicon revalidated /api/system/config,
which re-ran the dialog's sync effect and replaced the whole draft,
silently wiping unsaved wordmark/login-terms edits. Now only the
draft's file field is updated from the response and only the public
config key is revalidated. Also fix the favicon fallback preview src
from the nonexistent /favicon.ico to /icon.png.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 11:47:46 +08:00
m4 5634abdbd5 feat(webui): system config dialog shell with general + login terms tabs 2026-08-11 11:32:28 +08:00
m4 17271d6ebd style(webui): show title only in thread list rows 2026-08-10 22:44:55 +08:00
m4 39e126beab style(webui): gradient brand mark and larger welcome title 2026-08-10 22:35:23 +08:00
m4 62005109a4 style(webui): pastel-tinted stat cards on welcome screen
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-10 22:32:34 +08:00
m4 e0d38afa0c fix(webui): composer shadow and single cyan focus ring 2026-08-10 21:34:29 +08:00
m4 11aa88d4f9 style(webui): cyan active states in sidebar, premium login card 2026-08-10 20:02:13 +08:00
m4 7b6bac0c53 style(webui): polish composer, user bubble, and tool-call box 2026-08-10 19:58:47 +08:00
m4 9984c6bdc4 feat(webui): checkbox multi-select download in workspace tree 2026-08-10 12:14:46 +08:00
m4 0e34383aed fix(webui): maximize the DialogContent itself; fixed children are trapped by its translate 2026-08-08 22:53:45 +08:00
m4 cd87138a82 fix(webui): maximize preview to browser window instead of OS fullscreen 2026-08-08 22:48:58 +08:00
m4 bbea13b68a feat(webui): fullscreen toggle for html preview panel 2026-08-08 22:37:24 +08:00
m4 0e9334d4cd fix(webui): use Code icon for Source toggle to distinguish from Edit
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-08 12:00:57 +08:00
m4 9a4141b05e feat(webui): preview/source toggle for html files in workspace dialog
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-08 11:46:15 +08:00
m4 666a82ebb0 feat(webui): image zoom/pan and prev-next navigation in file dialog
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-08 11:44:15 +08:00
m4 4a652fd67f feat(webui): redirect to /login on any API 401 response
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-08 09:17:06 +08:00
m4 47420514bd feat(webui): error-log bell with unread badge and clear-all
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-31 19:32:57 +08:00
m4 dd4b63a0ee feat(webui): report user-visible errors to the per-user error log
Add errorReporter (errorToast = toast.error + fire-and-forget POST to
/api/error-logs) and wire it into the operational error toasts across
chat, threads, tasks, agents, models, files and clipboard. Pure form
validation hints stay on toast.error.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-31 10:46:07 +08:00
m4 a4e47e1b5d style(webui): render the idle status dot as a hollow ring
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-31 10:43:40 +08:00
m4 cbc343963c feat(webui): show a running indicator on busy threads in the list
Three mechanisms, merged in ThreadList: a 10s heartbeat polling the new
?status=busy filter (out-of-band runs: scheduled tasks, other clients),
a module-level running store fed by useChat's own run lifecycle (zero
latency for this client's runs), and a spinner replacing the status dot
while either source marks the thread busy. The BFF list route now
validates and forwards the status filter, which also unbreaks the
previously ignored status dropdown.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-31 09:57:08 +08:00
m4 7c121ce019 feat(webui): thinking timer at the bottom of the message area while a run is active
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-30 11:21:58 +08:00
m4 cfaf704652 feat(webui): segmented default/temperature/top_p sampling picker in the chat bar
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-30 10:41:32 +08:00
m4 f83cd431c7 feat(webui): exact-value keyboard input on generation sliders
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-29 08:44:21 +08:00
m4 7b14ab5251 fix(webui): correct reset-affordance tooltip copy
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-29 08:17:23 +08:00
m4 8f1ba6ad6f feat(webui): inline temperature/top_p sliders in the chat bar
Adds a GenerationParamSlider next to the reasoning-effort slider so a
per-thread temperature/top_p override can be set from the chat bar.
Unset sliders rest at the registry-catalog default in a muted style;
dragging commits an override, and clicking the value resets to the
default. Hidden below the sm breakpoint, and disabled while the
thread inherits the registry model.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-29 08:03:10 +08:00
m4 4cd3d2e9a4 feat: add image models config dialog 2026-07-24 09:54:08 +08:00
m4 222cb0b84e feat: drop auxiliary model from thread selection and registry defaults
ThreadModelSelection is now "inherit" or { primary, reasoning_effort };
the BFF validator tolerates and drops legacy auxiliary keys, the runs
route no longer snapshots an auxiliary ref, and the Registry Editor's
default-auxiliary field is removed, matching the backend's single-role
snapshot resolution.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-23 10:19:03 +08:00
m4 7a61ac11cb feat: keep the model registry dialog open on overlay click and Escape
Editing a large registry draft is easy to lose to a stray click; the
dialog now only closes via the X or Close button.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-22 11:03:24 +08:00
m4 18107d99e9 feat: collapsible model parameter sections in the Registry Editor
Saved models start collapsed to a compact status row (key, availability,
enabled, Test); new unsaved models start expanded for editing. Test
outcomes stay visible regardless of collapse state.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-22 11:01:18 +08:00
m4 340136ebc1 feat: save changed models as disabled instead of auto-testing
Saving no longer runs live provider tests: changed enabled models are
saved as disabled (defaults repointed when needed) and the user
re-verifies manually with the per-model Test button, then re-enables and
saves again. A successful test now refreshes the local availability so
re-enabling is a plain save.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-22 10:11:04 +08:00
m4 1ff30b677a feat: wrap enabled-model edits in a save & re-verify flow
Editing an enabled model invalidated its verification record, so the
backend rejected the save with MODEL_NOT_AVAILABLE. The editor now
detects changed enabled models (mirroring configuration_hash inputs plus
credential rotation) and runs the documented disable & save -> test ->
enable & save sequence as one click, temporarily repointing defaults
when the edited model is the default primary.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-22 08:35:46 +08:00
m4 cec1fa04d7 feat: left-right layout for the Registry Editor
With multiple providers configured, the vertical stack required long
scrolling. The left pane now lists providers with enabled markers and
per-model availability dots plus the template picker; the right pane
shows the selected provider's editor, auto-selecting newly added
providers and clamping selection on remove.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-21 22:59:11 +08:00
m4 2bf1127af2 feat: new-provider templates in Registry Editor (design doc 7.1)
Add the six phase-1 templates (智谱 GLM, OpenAI, Anthropic,
OpenAI-compatible, Anthropic-compatible, Ollama) that prefill adapter,
Base URL, auth mode, and suggested models; saved providers remain
ordinary profiles. Verified in browser against the live dev server.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-21 21:14:51 +08:00
m4 9f702e230d feat: adapter-spec-driven Registry Editor replaces legacy provider editors
- New RegistryEditor renders providers, models, runtime parameters and
  capabilities from the backend's AdapterParameterSpec contract, with
  ModelAvailability badges, write-once credential staging, provider tests
  showing effective_request_options, revision CAS on save, and 422 detail
  paths surfaced verbatim (design doc sections 9, 11.8)
- ConfigDialog now hosts the Registry Editor (admin-only; non-admins see a
  notice from the 403 path)
- AccountDialog shows the session role and embeds an admin user-management
  section (list/create/promote/demote/password reset/delete, last-admin
  guard enforced server-side)
- Deleted legacy ProviderProfiles/BuiltinProviders/RegistryBuiltinProviders
  editors, providerProfiles/legacyLlmConfig libs, the admin-token proxy and
  the /api/provider-profiles, /api/provider-actions, /api/default-model and
  /api/config BFF routes (design doc section 10 legacy removals)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-21 19:02:17 +08:00
m4 862cd4922e feat: unified model configuration — BFF auth, delegation JWT, thread model selection
- Multi-user auth (better-sqlite3 + scrypt) with admin/user roles and
  ES256 delegation JWT signing for EvoScientist Config API calls
- BFF config client sends Authorization: Bearer <service token> +
  X-Evo-Actor delegation JWT (design doc 7.3)
- Model registry admin API routes (GET/PUT registry, credential replace,
  provider test) proxying the backend with revision CAS
- ThreadModelSelection replaces model_override: PATCH CAS with
  expected_selection_revision, per-thread serialization, 409
  THREAD_MODEL_SELECTION_CONFLICT
- Run creation freezes a runtime snapshot per turn; command resumes reuse
  the turn's frozen snapshot from run metadata (design doc 7.2/8.2)
- Chat UI: ModelRef picker fed by GET /api/models selectable list; removed
  /model <name> command, localStorage preference, and set-default star
- Deleted lib/modelCommand.ts, lib/modelPreference.ts, lib/defaultModel.ts

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-21 18:50:17 +08:00
m4 940ec29398 chore: baseline WIP before unified model configuration implementation
Pre-existing uncommitted work (auth dialog, provider profiles editor, runs route) preserved as baseline.
2026-07-20 20:15:38 +08:00
m4 fe982f7f95 feat: add workspace isolation and administration UI
CI / macos-latest / Node 20 (push) Has been cancelled
CI / ubuntu-latest / Node 20 (push) Has been cancelled
CI / windows-latest / Node 20 (push) Has been cancelled
2026-07-19 12:17:18 +08:00
m4 d199f175aa feat: add authenticated password changes
CI / Format, lint & build (push) Has been cancelled
2026-07-10 17:22:13 +08:00
m4 14b246f4e7 fix: stabilize chat stream updates
CI / Format, lint & build (push) Has been cancelled
2026-07-10 16:26:46 +08:00
X-iZhang 363f15d850 feat: implement needsAttention logic for interrupt handling in ThreadList 2026-06-30 06:13:14 +01:00
jfilipiuk a954b6a314 fix: skip 'Requiring Attention' bucket for auto-approved threads (still pin on ask_user) (#24)
Co-authored-by: Xi Zhang <106144707+X-iZhang@users.noreply.github.com>
2026-06-30 05:05:42 +00:00
Xi Zhang 2255a10898 feat: simplify UI elements in MemoryPanel and update text in ScheduledTasksPanel for clarity 2026-06-28 12:55:42 +01:00