Commit Graph

223 Commits

Author SHA1 Message Date
m4 141e25c3b0 feat(webui): surface summarization budget events in compaction UI 2026-08-11 15:07:53 +08:00
m4 e32dd49095 feat(webui): inline workspace images/links in chat via thread-aware file urls 2026-08-11 15:07:53 +08:00
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 9e1e628ab7 feat(webui): next-intl scaffolding + en/zh catalog skeletons
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-08-11 14:52:56 +08:00
m4 65ad214fcd docs(webui): implementation plan for i18n (en + zh)
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-08-11 14:33:17 +08:00
m4 493b2bfc52 docs(webui): spec for bilingual i18n (next-intl URL locale segment, code-mapped errors) 2026-08-11 13:58:31 +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 6d0251a673 fix(webui): clean up eslint errors in branding route and backup scheduler test
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 12:21:42 +08:00
m4 ae32cc72df feat(webui): consume system branding in layout metadata and login page 2026-08-11 12:04:01 +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 7bd43a39a0 feat(webui): backup run/history/download/delete API routes 2026-08-11 11:20:39 +08:00
m4 c7d6c65130 feat(webui): scheduled backups via instrumentation-started interval
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 11:00:52 +08:00
m4 6b009e2c32 fix(webui): exclude *.tmp files from backup archives
Spec 2026-08-11-system-config-design section 6 requires the backup tar
to exclude both backups/ itself and *.tmp files; only the backups/
exclusion was implemented. Adds a <base>/*.tmp exclusion for the webui
data dir and the configured backend data dir, mirroring the existing
top-level exclusion style. Excludes are emitted before any -C operand
so bsdtar does not treat them as member operands.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 10:49:29 +08:00
m4 72dedba64e feat(webui): tar.gz backup archive module with prune and mutex 2026-08-11 10:40:10 +08:00
m4 1532a9de3e feat(webui): honor security overrides in auth, captcha, login, and proxy
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 10:08:45 +08:00
m4 74516fd7c8 feat(webui): branding upload + public asset routes 2026-08-11 09:23:28 +08:00
m4 e8f09f240e fix(webui): reject malformed JSON body in system config PUT
An unparseable request body was silently converted to null, merged over
defaults, and saved — wiping the admin's config while returning 200.
Throw SystemConfigError on JSON parse failure so the route returns 400
INVALID_REQUEST without touching the saved config file.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 09:06:11 +08:00
m4 3ddd953e1b feat(webui): admin + public system config API routes 2026-08-11 08:51:46 +08:00
m4 0a9148d178 feat(webui): system config override store with effective security derivation
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-11 08:35:52 +08:00
m4 7c9193df2e docs(webui): implementation plan for admin system config 2026-08-11 08:29:08 +08:00
m4 aa0f308208 docs(webui): spec for admin system config (branding, login terms, security, backup) 2026-08-11 07:51:14 +08:00
m4 b75de8b5e6 Revert "feat(webui): pin sidebar collapse button to the resize divider"
This reverts commit adc59ba. The divider-mounted tab broke the header's
visual consistency; the collapse toggle stays in the top header.
2026-08-11 07:22:20 +08:00
m4 adc59ba9a9 feat(webui): pin sidebar collapse button to the resize divider
The collapse control now hangs off the top of the ResizableHandle so it
tracks the divider as the sidebar is resized, instead of sitting in the
header far from the boundary it controls. The header toggle remains for
the collapsed and mobile-overlay states. ResizableHandle now renders
passed children (previously shadowed by the withHandle element).
2026-08-10 23:44: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 92acc7802e docs(webui): implementation plan for welcome screen polish 2026-08-10 22:26:11 +08:00
m4 37f9944ca1 docs(webui): spec for welcome screen gradient brand + pastel cards 2026-08-10 22:23:48 +08:00
m4 cc1218bdaf docs(webui): sync spec focus-ring and link color with cyan-700 code 2026-08-10 21:44:30 +08:00
m4 e0d38afa0c fix(webui): composer shadow and single cyan focus ring 2026-08-10 21:34:29 +08:00
m4 535d1b4955 fix(webui): deepen light brand to cyan-700 for WCAG AA contrast
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-10 21:00:37 +08:00
m4 c388fa4838 fix(webui): register layered shadows in theme, use ring-ring/20 for focus rings
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-10 21:00:22 +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 934e8de7c8 style(webui): restyle ui primitives (gradient primary, cyan focus, layered shadows) 2026-08-10 15:56:01 +08:00
m4 50e5871184 style(webui): bright zinc+cyan design tokens and Inter font 2026-08-10 14:13:12 +08:00
m4 d0ab5b6e7f docs(webui): implementation plan for UI polish 2026-08-10 14:06:13 +08:00
m4 a9ee44e7dd docs(webui): spec for bright/premium UI polish
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-10 13:33:19 +08:00
m4 10904c13fb fix(webui): prefix zip include paths with ./ to defeat option injection 2026-08-10 12:25:48 +08:00
m4 9984c6bdc4 feat(webui): checkbox multi-select download in workspace tree 2026-08-10 12:14:46 +08:00
m4 1d813c18d6 feat(webui): selective include/exclude download for workspace zips 2026-08-10 12:06:39 +08:00
m4 b7db9fa74f fix(webui): re-checking a partial folder clears its descendant exclusions 2026-08-10 11:56:29 +08:00
m4 9912c7d863 feat(webui): tri-state workspace selection state module 2026-08-10 11:53:32 +08:00