倪程伟
2e4f88c612
fix(llm): switch slash-bearing modelId from path variable to query parameter ( #177 )
...
Closes #174
Model identifiers like 'Qwen/Qwen3-Embedding-8B' or
'Pro/deepseek-ai/DeepSeek-V3' carry forward slashes that Spring MVC
decodes from %2F before path matching, so even with the frontend's
encodeURIComponent the request never reaches the handler and 404s out.
The two affected endpoints take modelId as a request param instead:
DELETE /{providerId}/models/{modelId} -> DELETE /{providerId}/models?modelId=...
POST /{providerId}/models/{modelId}/test -> POST /{providerId}/models/test?modelId=...
modelApi.removeProviderModel / testModel in the UI follow suit, passing
the id via axios params so axios handles the URL encoding consistently.
providerId stays as a path variable — provider ids are kebab-case and
never contain slashes.
2026-05-20 10:22:44 +08:00
matevip
daeef4e3c2
feat(scheduler): unify cron jobs and triggers into a tabbed Scheduler page
2026-05-19 21:23:18 +08:00
matevip
92d35a3d3d
fix(workspace): keep workspace ids as strings so a switch survives reload
2026-05-19 20:06:56 +08:00
matevip
0383740fec
fix(ui): rename the wiki nav item to "Wiki" / "知识库"
2026-05-19 09:56:21 +08:00
matevip
99718d276e
feat(ui): frosted-glass tooltip and collapsed-rail alignment
2026-05-19 09:56:15 +08:00
matevip
2c1e673fba
feat(skill): SkillMarket lifecycle UI + curator control panel
2026-05-19 09:56:08 +08:00
matevip
cfb123dda2
fix(wiki): keep the raw-material filter across page-list refreshes ( #156 )
2026-05-18 23:28:56 +08:00
matevip
7949b6ff38
fix(chat): keep the runtime model indicator synced with the selector
2026-05-18 22:00:30 +08:00
matevip
33a40ad9d9
feat(wiki): support HTML, Excel, PowerPoint and CSV raw materials
2026-05-18 21:57:43 +08:00
matevip
4cf991851b
fix(workflow): keep the editor canvas and status correct after publish
2026-05-18 17:34:53 +08:00
matevip
8cfc78e7b4
fix(ui): keep model group-header chip and Fix button on one line
2026-05-18 16:27:34 +08:00
matevip
d53d66abe3
feat(chat): per-conversation model selection ( #150 )
2026-05-18 16:27:27 +08:00
matevip
8a0c0a76a8
refactor(memory-ui): extract shared icon, empty-state, skeleton and section components ( #148 )
2026-05-18 16:26:19 +08:00
matevip
7a650dc667
refactor(memory-ui): replace emoji icons with inline SVG line-art
2026-05-18 13:51:20 +08:00
matevip
3157dde1f4
fix(memory): route long-term memory edits to the file being edited ( #148 )
2026-05-18 11:28:01 +08:00
matevip
ea00b2aa25
feat(ui): add the xAI (Grok) provider brand icon
2026-05-18 10:01:05 +08:00
matevip
75107ac815
feat(llm): native Gemini chat builder, Nano Banana image gen, xAI/Grok provider
2026-05-18 10:00:55 +08:00
matevip
7b053052d7
fix(ui): pre-bundle echarts subpaths to stop dev-server 504 re-optimization
2026-05-17 21:15:15 +08:00
matevip
71aba2649e
fix(wiki): gate write controls behind the manage:wiki capability
2026-05-17 17:55:48 +08:00
matevip
c9f73bbbd5
fix(wiki): type kbId/pageId props as number|string to prevent ID precision loss
2026-05-17 17:55:42 +08:00
matevip
0d94cb1f93
fix(i18n): add missing wiki page type, settings and chat keys
2026-05-17 17:55:36 +08:00
matevip
85f1e326ed
feat(chat): color agent icons in the agent picker dialog
2026-05-17 12:00:47 +08:00
matevip
001cb1a2ed
refactor(chat): extract conversation sidebar and shared UI primitives
2026-05-17 11:49:44 +08:00
matevip
146be51442
fix(chat): guard activity poll against overlapping interval ticks
2026-05-17 09:58:55 +08:00
matevip
6d70834227
fix(i18n): add missing common.more key for the chat header menu
2026-05-17 09:58:49 +08:00
matevip
e3edc2b176
fix(i18n): add MCP tool scoping strings for the agent tool picker
2026-05-17 09:25:15 +08:00
matevip
ce33c1c652
feat(llm): add UI to configure embedding models from any provider ( #79 )
2026-05-17 09:25:09 +08:00
matevip
7fb47390af
feat(chat): pin, multi-select delete and agent filter for conversations ( #144 )
2026-05-17 09:25:02 +08:00
matevip
18df97a8e6
fix(agent): scope MCP tools to explicit per-agent selection ( #117 )
2026-05-17 09:24:56 +08:00
matevip
09eb28fb63
refactor(ui): unify employee selector into shared AgentPickerDialog
2026-05-16 22:17:58 +08:00
matevip
8edf71cd64
feat(ui): dashboard model-config card + onboarding provider enablement
2026-05-16 14:51:41 +08:00
matevip
373b462195
feat(ui): export and import buttons for agent memory snapshot
2026-05-16 14:51:31 +08:00
matevip
82594878a0
refactor(ui): fold the live runtime view into the Employees page
2026-05-16 14:50:58 +08:00
matevip
130dfd5278
fix(skill): synthesize SKILL.md for MCP-derived virtual skills ( #136 )
2026-05-16 14:50:46 +08:00
matevip
3b9b4d79d5
feat(skill): scope skill catalog and runtime by workspace ( #135 )
2026-05-15 20:01:25 +08:00
matevip
1f9adeb31d
refactor(ui): redesign Triggers list from 9-column table to rule cards
2026-05-15 17:33:38 +08:00
matevip
0800c03cd3
fix(ui): preserve snowflake ID precision through form round-trips ( #133 )
2026-05-15 15:51:33 +08:00
matevip
c20c066cbc
feat(ui): global Ctrl+K / Ctrl+N shortcuts with sidebar hint
2026-05-15 10:19:32 +08:00
matevip
e10dd9d0a0
refactor(ui): swap ElMessage for project-native mcToast, finish mcConfirm migration
2026-05-15 10:19:24 +08:00
matevip
15ee205ab9
refactor(ui): share drawer chrome via MateDrawer, migrate Doctor and skill drawers
2026-05-15 10:19:16 +08:00
matevip
196ddb8588
fix(ui): resolve active model label from /enabled when providers is admin-only
2026-05-15 10:19:10 +08:00
matevip
26df2c94d0
fix(rbac): let viewers read active model so they can actually chat
2026-05-15 10:19:03 +08:00
matevip
7cf2508ded
fix(ui): cron table layout, chart locale reactivity, mobile stats grid
2026-05-15 10:18:52 +08:00
matevip
ccd86dbb80
feat(ui): land viewers on /chat and show real role in switcher
2026-05-15 10:18:45 +08:00
matevip
777e2ecee2
feat(ui,router): gate routes and sidebar by workspace capability
2026-05-15 10:18:38 +08:00
matevip
aa27853712
feat(ui,workspace): consume backend access endpoint for capability state
2026-05-15 10:18:30 +08:00
matevip
eb6badeb61
feat(ui): surface pending approvals + stuck agents as sidebar badges
2026-05-15 10:17:30 +08:00
matevip
adf5d93975
fix(wiki): align HTTP status with R envelope and harden config + edit paths
2026-05-14 23:01:00 +08:00
matevip
3de554f464
fix(ui): localize skill name in agent binding picker ( #124 )
2026-05-14 17:54:55 +08:00
matevip
4833cbda39
chore: bump to 1.4.0-SNAPSHOT for next development cycle
2026-05-14 16:03:08 +08:00
matevip
d1be02985c
fix(agent): collapse model-predicted tool results that the actual tool replaced
2026-05-14 15:44:03 +08:00
matevip
0192a62f21
feat(ui/mcp): redesign MCP connections page with componentized layout
2026-05-14 14:09:44 +08:00
matevip
bf3f4af913
fix(agent): structured tool-call replay + final-answer-only content ( #120 )
2026-05-14 07:46:30 +08:00
matevip
004df80611
fix(ui/workflows): keep property panel rendering when an i18n message contains Pebble braces
2026-05-13 20:15:12 +08:00
matevip
4aad813f2d
fix(ui/workflows): rework editor layout, free property panel, slim route chunk
2026-05-13 17:53:18 +08:00
matevip
32507d2157
fix(ui/enterprise): type filter keys so computed arrays match ref unions
2026-05-13 11:30:52 +08:00
matevip
d5d301037e
release: v1.3.0
2026-05-13 10:15:35 +08:00
matevip
2bca55f5b4
fix(tool-guard): friendly duplicate rule-id rejection and client-side name/pattern validation ( #88 )
2026-05-13 09:55:30 +08:00
matevip
faf7f98358
feat(context): consume compact_status on the frontend; load history from latest boundary; backfill summaryId
2026-05-13 08:50:35 +08:00
matevip
cc5d7d5ad0
fix(agent): auto-include enabled MCP tools in effective allowlist ( #108 )
2026-05-12 21:24:36 +08:00
matevip
bcf194c35e
feat(ui): add agent binding search ( #106 )
2026-05-12 18:18:39 +08:00
matevip
ed788e9e42
feat(ui): per-skill secrets panel for env-var-style credentials
2026-05-12 17:20:30 +08:00
matevip
691d2b867b
fix(agent): hide disabled agents from the chat picker and reject chat calls against them ( #105 )
2026-05-12 14:53:14 +08:00
matevip
1bfb5f7fc8
chore(ui): move enterprise nav entry below memory in the core group
2026-05-12 14:35:38 +08:00
matevip
026afa2ba5
feat(wiki): optional JSON Schema on json-format transformations
2026-05-12 14:35:31 +08:00
matevip
8dde62e689
feat(wiki): side-by-side compare modal for two transformation runs
2026-05-12 14:35:24 +08:00
matevip
465a727be2
feat(wiki): record per-run token usage so operators can see what each template burns
2026-05-12 14:35:17 +08:00
matevip
e911af2192
feat(wiki): JSON output mode — structured transformation output for programmatic downstream
2026-05-12 14:11:02 +08:00
matevip
90936dba4f
feat(wiki): cross-material transformation aggregator — map-reduce all runs of a template into one KB page
2026-05-12 14:10:54 +08:00
matevip
2fc9a5153b
fix(enterprise): contain panels in scrollable body and rebuild steppers as centered vertical layout
2026-05-12 11:41:29 +08:00
matevip
093925e191
feat(ui): enterprise scenario workbench combining contract review, account intel, approvals, and audit
2026-05-12 11:26:05 +08:00
matevip
f04ea58c8d
feat(wiki): cancel a running transformation and re-run any past run
2026-05-12 11:25:44 +08:00
matevip
ef6ad1b91a
feat(wiki): expose per-template model picker in the transformations modal
2026-05-12 11:25:38 +08:00
matevip
bae9f68261
feat(wiki): user-defined transformation templates with optional auto-save to synthesis pages
2026-05-12 10:49:58 +08:00
matevip
dac3f5be20
fix(extract): trigger OCR when text extraction returns unreadable bytes
2026-05-12 08:44:20 +08:00
matevip
08fcab12d1
fix(deploy): drop DASHSCOPE_API_KEY requirement so Docker boots with no LLM key configured ( #99 )
2026-05-11 20:44:31 +08:00
matevip
6d5fb595d3
fix(agent): harden digital-employee isolation across creation, skill binding and prompt catalog
2026-05-11 16:10:28 +08:00
czhcc
18148aa724
feat(skill-mcp): expose readable display name alongside prefixed MCP tool names
...
Add a parallel effectiveAllowedToolsDisplay field on the runtime status payload so the SkillMarket detail drawer can render mcp_<server>_<slug>_<hash> with the raw tool name appended in parentheses, while leaving the original prefixed list unchanged for any caller that needs the machine name. McpSkillBridge#decorateToolNameForDisplay reverses a prefixed name via the per-server cached tool list; the frontend prefers the new display field and falls back to effectiveAllowedTools when the field is absent.
2026-05-10 23:30:22 +08:00
matevip
adddf0402a
style(ui-chat): align useI18n destructuring spacing in MessageBubble
2026-05-10 22:32:54 +08:00
DayByDay
7b9ec75137
feat(ui-chat): respect locale and bucket message bubble timestamps by today/yesterday/earlier
...
Replace hardcoded zh-CN locale with vue-i18n locale.value, add a yesterday bucket reusing the security.activity.yesterday key, and fall back to YYYY/MM/DD HH:mm for older messages. Computes the previous day with setDate(getDate()-1) so DST transitions stay correct, and short-circuits invalid Date inputs.
2026-05-10 22:30:35 +08:00
matevip
2f73bec94a
fix(ui-i18n): escape JSON examples in trigger placeholders so vue-i18n stops parsing them as interpolation
2026-05-10 21:53:47 +08:00
matevip
3984591ffe
fix(ui-build): invoke node directly with heap flag + .npmrc fallback for workers
2026-05-10 21:17:09 +08:00
matevip
617831ed90
fix(ui-build): export NODE_OPTIONS so vite build inherits the 6GB heap
2026-05-10 21:17:02 +08:00
matevip
5021760cbe
fix(ui-build): bump Node heap to 6GB to avoid OOM during vite build
2026-05-10 21:16:56 +08:00
matevip
6e57f78fc2
feat(wiki-ui): library home + workspace split for Wiki page
2026-05-10 19:16:22 +08:00
matevip
f18626304e
feat(agent,ui): recovery affordance card for non-transient LLM errors
2026-05-10 19:15:57 +08:00
matevip
63f14acb72
fix(settings): stop bulk save from clobbering multimodal sidecar config
2026-05-10 19:15:27 +08:00
matevip
2b84d94897
fix(channel): adaptive debounce window for paste-split long messages
2026-05-10 19:15:15 +08:00
matevip
9075abfef2
feat(channel + settings): wecom quote message parsing + sidecar config preservation
...
WeCom quoted-message context:
- Parse the body.quote field that arrives alongside any inbound message
(text / image / voice / file / mixed sub-types). When a user long-
presses a previous bot bubble and types a follow-up like "解释一下",
the agent now sees both the user's new text and the referenced
content as proper context — replies stay on topic instead of
guessing what was being explained.
- Quoted images / files are downloaded through the same pipeline as
inbound new media (magic-byte sniff, ZIP container peek for
DOCX / XLSX / PPTX recovery, chat-uploads layout) so the vision
sidecar and document tools can actually analyse what was quoted.
- Reading order in the assembled prompt: "[引用消息: ...]\n<user text>"
first, then quoted media parts, then the user's own current-message
media. Mixed quotes flatten into a space-joined summary.
Multimodal sidecar settings preservation:
- The bulk settings PUT used to unconditionally overwrite the vision /
video sidecar model ids — null in a partial payload became "" in
the DB, silently wiping the configured sidecar every time a user
saved an unrelated settings page (System / Music / Image / etc.).
Symptom: "I picked a vision model, saved a different settings tab,
now the bot can't see images anymore."
- Bulk save now guards both keys with non-null checks, matching the
pattern used for music / 3D / image / video / tts / stt blocks.
- A dedicated /settings/sidecar endpoint always writes both keys, so
the sidecar UI can still explicitly clear via null without leaking
the write-on-null semantics into every other settings save.
- Frontend sidecar card switches to the dedicated endpoint; other
settings pages keep their existing partial-payload behaviour.
2026-05-10 11:38:35 +08:00
matevip
b54fd7a24a
fix(ui): channel binding agent dropdown — render pi:* icons + 员工 wording
2026-05-10 08:27:55 +08:00
matevip
4567bd6019
fix(security): require tool guard rule id ( #88 )
2026-05-10 08:02:15 +08:00
matevip
932f3de402
feat(chat,settings): multimodal sidecar configuration + routing visibility ( #87 )
2026-05-09 16:41:36 +08:00
matevip
97e2b12f71
feat(chat): show reply model attribution in assistant message bubbles
2026-05-09 16:41:18 +08:00
matevip
d2886bdaa3
fix(llm): let custom OpenAI-compatible providers opt out of API Key requirement ( #89 )
2026-05-09 14:26:35 +08:00
matevip
88fb28a22a
feat(stt): route OpenAI Whisper provider to any OpenAI-compatible endpoint ( #76 )
2026-05-09 13:57:52 +08:00
matevip
77456d26f8
fix(skill): hide toggle and rescan on virtual MCP/ACP skill cards ( #83 )
2026-05-09 11:32:56 +08:00
matevip
d5969bb32c
fix(chat,llm): liveness-aware model popup with row-based configured check ( #81 )
2026-05-09 11:07:08 +08:00
matevip
95b7fed6d5
fix(docker): pin pnpm@10 + whitelist build scripts ( #80 )
2026-05-09 06:53:09 +08:00
matevip
52e06afec4
feat(llm,tool/image): dashscope-compat provider + media-gen test profile
2026-05-09 06:28:38 +08:00
matevip
0cbe271f6f
fix(ui/chat): mermaid streaming flicker + copy/download buttons
2026-05-08 17:09:22 +08:00