Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
431 commits
Select commit Hold shift + click to select a range
6bd69f3
feat(ui): enhance endpoint selection and date picker
Calcium-Ion Jun 19, 2026
3fcd741
refactor: codex usage ui (#5595)
seefs001 Jun 19, 2026
6858556
feat(data-table): add reusable card/table view toggle
Calcium-Ion Jun 19, 2026
29c3dcb
feat(table): support card layout
Calcium-Ion Jun 19, 2026
0467d54
chore: update frontend branding copy
Calcium-Ion Jun 19, 2026
a0de4b5
refactor(channels): restructure channel card into left/right columns
Calcium-Ion Jun 19, 2026
50b8f2a
refactor: update styling and improve code readability across multiple…
Calcium-Ion Jun 19, 2026
4206d7f
feat(data-table): enhance mobile card view handling and improve layou…
Calcium-Ion Jun 19, 2026
9100e15
feat: add channel sensitive info toggle
Calcium-Ion Jun 19, 2026
0229dc2
refactor: refine toolbar controls and model drawer
Calcium-Ion Jun 19, 2026
2c2d921
refactor: simplify model list
Calcium-Ion Jun 20, 2026
fae39cd
fix: stop repeated allow_balance_pay column migration on restart (#5361)
feitianbubu Jun 20, 2026
dfcb74b
fix: stop repeated allow_wallet_overflow column migration on restart …
feitianbubu Jun 20, 2026
91ab664
feat: add routing reliability management
Calcium-Ion Jun 20, 2026
cb84185
fix: update channel icon
Calcium-Ion Jun 20, 2026
f9e508b
perf(channels): optimize card view layout and reduce re-renders
Calcium-Ion Jun 20, 2026
a68041f
feat(dashboard): add traffic flow sankey chart (#5465)
Quaternijkon Jun 20, 2026
7409174
fix(log): 修复新前端日志按登录类型(type=7)筛选失效 (#5620)
feitianbubu Jun 20, 2026
0c6c1b3
fix(wallet): 修复计费历史弹窗分页与列表重叠 (#5627)
feitianbubu Jun 20, 2026
d58029c
fix(model-pricing): 修复可视化模型定价列表项无法删除 (#5628)
feitianbubu Jun 20, 2026
0619480
feat: limit dashboard flow nodes
Calcium-Ion Jun 20, 2026
8ad83bf
feat(dashboard): interactive sankey highlighting and persistent filters
Calcium-Ion Jun 20, 2026
5e86644
feat(dashboard): add sensitive data toggle to flow chart
Calcium-Ion Jun 20, 2026
1f1da55
fix(usage-logs): show provider icons for CN models (align with classi…
Jun 21, 2026
0b7ae4e
fix: StepFun -> Stepfun (#5636)
seefs001 Jun 21, 2026
44e0e68
feat: add channel test env toggle
Calcium-Ion Jun 22, 2026
e569474
chore(web): use tsgo for type checking
Calcium-Ion Jun 22, 2026
efd6c44
feat: add passive channel monitoring mode (#5592)
exherb Jun 22, 2026
354d0fe
feat: default node name to hostname when NODE_NAME unset (#5659)
feitianbubu Jun 22, 2026
6dc4030
feat: support ClickHouse log database (#5663)
Calcium-Ion Jun 22, 2026
a162163
feat: add persistent system task log cleanup progress
Calcium-Ion Jun 22, 2026
f84b7d5
refactor(log): simplify ClickHouse log deletion and add unit tests
Calcium-Ion Jun 22, 2026
f8cfbfa
refactor(log): remove legacy log deletion endpoint and associated types
Calcium-Ion Jun 22, 2026
9fc9c8f
chore: avoid duplicate shadcn skill exposure
Calcium-Ion Jun 23, 2026
2f23a66
fix: support SMTP STARTTLS mode and NTLM auth (#5426)
bensonfx Jun 24, 2026
cf6ae6f
fix: preserve SMTP PLAIN auth TLS guard
Calcium-Ion Jun 24, 2026
993d67e
chore(deps): bump github.com/ClickHouse/ch-go from 0.58.2 to 0.65.0 (…
dependabot[bot] Jun 24, 2026
72b3f34
chore: update agent skills and project config
Calcium-Ion Jun 24, 2026
64eafc9
fix: date-fns-tz classic theme build error (#5676)
seefs001 Jun 24, 2026
acb52d0
chore(deps): update clickhouse-go and orb dependencies
Calcium-Ion Jun 24, 2026
5377192
feat: add system task runner (#5680)
Calcium-Ion Jun 24, 2026
2cbdfa0
feat: add system instance info panel (#5716)
Calcium-Ion Jun 24, 2026
f4473d9
fix(web): replace default markdown renderer and expand syntax support…
QuentinHsu Jun 24, 2026
de0d6ac
fix(web): sync channel card selection state (#5700)
yyhhyyyyyy Jun 24, 2026
0b2cf43
fix(web): hide wallet entry in profile dropdown when wallet module di…
feitianbubu Jun 24, 2026
5d94328
feat(system-settings): add user token limit configuration section (#5…
RedwindA Jun 24, 2026
d2dcbc3
feat: add channel async polling delay toggle
Calcium-Ion Jun 24, 2026
5814ca9
fix: add token limit save label translations
Calcium-Ion Jun 24, 2026
ad35ab1
feat: enhance i18n-translate skill
Calcium-Ion Jun 24, 2026
48da37a
feat: add date-fns and date-fns-tz dependencies
Calcium-Ion Jun 24, 2026
69b0f0b
feat: add date-fns and date-fns-tz paths to build configuration
Calcium-Ion Jun 24, 2026
0bf4278
chore(deps): bump dompurify from 3.4.5 to 3.4.11 in /web/default (#5718)
dependabot[bot] Jun 24, 2026
c12e5db
fix(ci): install classic workspace dependencies for releases (#5719)
seefs001 Jun 24, 2026
b191f47
fix: use neutral drawing task labels
Calcium-Ion Jun 24, 2026
9ba251c
perf(web): streamline table actions and destructive dialogs (#5645)
QuentinHsu Jun 25, 2026
7939674
fix: add Waffo goods info and webhook SDK update (#5704)
zhongyuanzhao-alt Jun 25, 2026
3245b2b
fix(model-pricing): refresh tiered expression editor when switching m…
feitianbubu Jun 26, 2026
3507434
chore(deps): sync bun.lock for dompurify 3.4.11 (#5738)
feitianbubu Jun 26, 2026
c0e42bf
fix(theme): 切换前端主题后重置到首页,避免路由 404 (#5612)
zhangzhichaolove Jun 26, 2026
d10fc76
fix(task): attribute async task usage log to the initiating node (#5684)
feitianbubu Jun 26, 2026
6c35e1e
chore: update i18n skill
Calcium-Ion Jun 27, 2026
4aee5f7
feat: better admin permissions (#5755)
Calcium-Ion Jun 27, 2026
df44a75
fix: adapt ClickHouse log LIKE filters
Calcium-Ion Jun 27, 2026
966af88
feat(playground): improve Playground chat experience and Markdown ren…
QuentinHsu Jun 27, 2026
df5ba9f
fix(auth): align password validation copy (#5759)
QuentinHsu Jun 27, 2026
0b48ad8
fix(web): render custom HTML and Markdown content consistently (#5760)
QuentinHsu Jun 27, 2026
626dadb
fix(web): secure rich content rendering
Calcium-Ion Jun 27, 2026
3a506f5
fix(openai): harden Chat-to-Responses compatibility (#5772)
Calcium-Ion Jun 27, 2026
2d5a041
feat: support Responses to Chat (#5787)
Calcium-Ion Jun 28, 2026
1d16653
fix: update section titles and improve layout in channel components
Calcium-Ion Jun 28, 2026
25f9985
feat: refine channel management UI
Calcium-Ion Jun 28, 2026
43591fb
feat: improve advanced custom route editor
Calcium-Ion Jun 29, 2026
12fc010
Bump Electron lockfile dependencies
Calcium-Ion Jun 30, 2026
c8491b4
feat: bill doubao seedance-2.0 by output resolution and video input (…
feitianbubu Jun 30, 2026
e514db2
feat: support doubao seedance 2.0 safety_identifier/priority and 4k b…
feitianbubu Jun 30, 2026
5bf3468
chore: run `bun format` to automatically format the frontend code
t0ng7u Jun 30, 2026
fda8177
fix(web): 修复自定义 HTML 样式被过滤及排版间距异常的问题 (#5795)
olwater Jul 1, 2026
52858ad
feat: support Wan2.7 i2v media mapping (#4984)
wxwwt Jul 1, 2026
95e8c5e
perf(web): optimize web Rsbuild and Tailwind build pipeline (#5786)
QuentinHsu Jul 2, 2026
f9165e7
fix(dev): run only default frontend in dev-web
QuentinHsu Jun 28, 2026
e1fd9cc
chore(build): align make targets with web naming
QuentinHsu Jun 28, 2026
1f4d8d2
fix(web): inject app styles into isolated HTML (#5860)
QuentinHsu Jul 2, 2026
759ab6b
fix: keep page state when switching tabs within the same route (#5796)
feitianbubu Jul 2, 2026
986d90a
支持服务优雅关闭,避免重启回复中断和面板缓存数据丢失 (#4258)
feitianbubu Jul 2, 2026
bff701b
docs: update AGENTS.md
Calcium-Ion Jul 2, 2026
8874d19
Make quota logging synchronous and delay startup log
Calcium-Ion Jul 2, 2026
0565e62
fix: only treat 401 as session expiry in auth guard (#5872)
feitianbubu Jul 3, 2026
c190360
fix: persist channel status filter across page navigation (#5863)
feitianbubu Jul 3, 2026
69c4d83
chore(deps): bump golang.org/x/net from 0.50.0 to 0.55.0 (#5862)
dependabot[bot] Jul 3, 2026
bfddc5f
fix: omit access_token from user queries
Calcium-Ion Jul 3, 2026
dfc0d63
Merge commit from fork
Calcium-Ion Jul 3, 2026
1dcb389
chore(deps): bump golang.org/x/image from 0.38.0 to 0.41.0 (#5873)
dependabot[bot] Jul 3, 2026
0977965
fix: handle ollama non-stream tool calls (#5865)
stevenjoezhang Jul 3, 2026
a6c0201
chore(deps): update web default dependencies
QuentinHsu Jul 3, 2026
aa334c0
fix(ai-elements): read nested usage token details
QuentinHsu Jul 3, 2026
70c0b37
chore(deps): remove unused date-fns dependency
QuentinHsu Jul 3, 2026
55858f3
feat: add manual Docker image publishing workflow
Calcium-Ion Jul 3, 2026
917a2cf
chore(deps-dev): bump tmp from 0.2.5 to 0.2.7 in /electron (#5147)
dependabot[bot] Jul 3, 2026
b35dfa3
perf(channels): streamline channel test dialog layout
QuentinHsu Jul 3, 2026
c5600f9
perf(channels): compact model test row actions
QuentinHsu Jul 3, 2026
f5bba11
chore(web): update default web dependencies
t0ng7u Jul 3, 2026
b6e8ff9
perf(web): refine channel test dialog interactions
t0ng7u Jul 3, 2026
997926b
fix(classic): fix classic web build failures
QuentinHsu Jul 4, 2026
a130103
chore(makefile): rename backend targets to api
QuentinHsu Jul 4, 2026
722d036
fix(classic): fix classic web build failures
t0ng7u Jul 4, 2026
86021d8
Refine default web UI and backend sync handling
Calcium-Ion Jul 4, 2026
12603a7
fix(redemption): add status filtering and cleanup action
Calcium-Ion Jul 4, 2026
bed4a3f
fix(user): trim whitespace from username and validate input
Calcium-Ion Jul 4, 2026
4ae3417
fix(channels): show field passthrough controls for Codex (#5902)
seefs001 Jul 4, 2026
f52b52b
fix: align dynamic pricing style with log details dialog sections
feitianbubu Jul 4, 2026
1ae7574
fix: align dynamic pricing style with log details dialog sections
t0ng7u Jul 4, 2026
81808d2
fix: remove sample special usable groups leaking into pricing page
feitianbubu Jul 4, 2026
5fc35e2
fix(user): harden account email and password handling
Calcium-Ion Jul 5, 2026
0d5995e
fix(auth): allow read-only access for non-disabled tokens
Calcium-Ion Jul 5, 2026
56dbaab
feat(session): support opt-in Secure session cookies
Calcium-Ion Jul 5, 2026
4a64b87
test(user): cover self-service password update guard
Calcium-Ion Jul 5, 2026
2281c9e
fix(web): refine mobile user cards
Calcium-Ion Jul 5, 2026
043720f
fix: 任务差额结算后 quota 和阿里视频时长优化 (#5923)
feitianbubu Jul 6, 2026
2f91d8c
fix(web): sync home iframe theme and language (#5917)
guoruqiang Jul 6, 2026
17465b8
fix(html): 修复 Shadow DOM 隔离渲染下深浅色模式无法自动切换的问题 (#5890)
olwater Jul 6, 2026
1e11dfc
feat(user): better messages for redeem failures
Calcium-Ion Jul 6, 2026
df087b0
feat(ssrf): implement SSRF protection in HTTP clients and validation …
Calcium-Ion Jul 6, 2026
3a876d6
fix(web): redirect authenticated users away from sign-up page (#5910)
Heykode Jul 6, 2026
1e80ce0
feat: optimize legacy top-up warning banner copy (#5851) (#5855)
Gravirei Jul 6, 2026
fc26b88
feat(group): enhance group ratio editor with improved visibility rule…
Calcium-Ion Jul 6, 2026
153d7f0
fix: avoid stale stream writes after client disconnect (#5710)
seefs001 Jul 6, 2026
45f0484
Fix/build date dns error (#5945)
seefs001 Jul 6, 2026
d0bd8aa
fix(billing): validate quantity parameters and harden quota calculations
Calcium-Ion Jul 6, 2026
c9943d3
fix(billing): extend quantity validation and saturating conversions t…
Calcium-Ion Jul 6, 2026
bae799c
fix(billing): surface quota saturation events for admin auditing
Calcium-Ion Jul 7, 2026
70ea899
fix(model): centralize row locking in transactional flows
Calcium-Ion Jul 7, 2026
d1abf78
Localized new ui to zh-TW (#5942)
MeowTechOpenSource Jul 7, 2026
9b93d61
feat(subscription): add admin quota reset actions (#5952)
seefs001 Jul 7, 2026
48b7f49
fix(billing): adjust quota calculation to prevent exceeding int32 limits
Calcium-Ion Jul 7, 2026
5cbb7b0
docs: update system architecture requirements
Calcium-Ion Jul 7, 2026
8f31b30
fix(i18n): standardize locale formatting for Intl APIs
Calcium-Ion Jul 7, 2026
becc18e
fix(i18n): add language detection mapping for Chinese locales
Calcium-Ion Jul 7, 2026
3fbad6a
fix(price): add default token estimate for tiered expression pre-consume
Calcium-Ion Jul 7, 2026
8bc4bf1
feat(docker): add cosign for signing manifests and update permissions
Calcium-Ion Jul 7, 2026
2f5f6ba
feat: prepare for 5.6
Calcium-Ion Jul 7, 2026
394b023
fix: keep group ratio input as string draft to allow decimal typing (…
feitianbubu Jul 7, 2026
fc1259f
refactor(price): improve handling of other ratios in PriceData
Calcium-Ion Jul 7, 2026
a72e508
feat(system-info): add stale instance cleanup actions (#5953)
seefs001 Jul 7, 2026
90fa6fe
fix(wallet): honor configured quota units for reward transfers (#5808)
A-Words Jul 7, 2026
6ce7305
feat(price): add token ratios for GPT-5.6 models
Calcium-Ion Jul 7, 2026
57865fc
fix: restore default channel connection paste
Calcium-Ion Jul 8, 2026
6a437a3
feat(oauth): add OAuth callback URL display and copy functionality
Calcium-Ion Jul 8, 2026
28e0115
fix(web): prevent browser translation from mutating React roots (#5963)
cat0825 Jul 8, 2026
97bbb7c
feat(pricing): enhance dynamic pricing calculations with group select…
Calcium-Ion Jul 8, 2026
8739c05
feat(web): 支持渠道列表手动调整列宽 (#5948)
zuiho-kai Jul 8, 2026
df01273
fix(web): let resized tables fill available width (#6031)
zuiho-kai Jul 9, 2026
a79f969
fix(affiliate): update referral message
Calcium-Ion Jul 9, 2026
4645ad9
fix(playground): keep model selector lists in sync
QuentinHsu Jul 9, 2026
246d62a
chore: remove dead files resurrected by v1.0 launch commit (#6041)
feitianbubu Jul 9, 2026
928b475
feat(playground): add chat parameter settings panel
QuentinHsu Jul 9, 2026
4e57038
fix: use GORM v2 row locking for subscription resets (#6057)
seefs001 Jul 10, 2026
e8596ca
fix: allow adding custom model names that differ only by case
feitianbubu Jul 10, 2026
4823417
feat(playground): add playground parameter settings panel (#6044)
t0ng7u Jul 10, 2026
d3b01b4
fix: allow adding model names that differ only by case in multi-selec…
t0ng7u Jul 10, 2026
f2c7cd3
fix: remove sample special usable groups leaking into pricing page (#…
t0ng7u Jul 10, 2026
489c045
perf(model-pricing): optimize upstream price sync table
QuentinHsu Jul 10, 2026
4378328
fix(model-pricing): polish sync channel dialog layout
QuentinHsu Jul 10, 2026
6869cd9
perf(web): align table badge spacing
QuentinHsu Jul 10, 2026
0cb741d
perf(model-pricing): optimize upstream price sync tables (#6092)
t0ng7u Jul 10, 2026
262ab93
✨ style(web): unify design system across default frontend
t0ng7u Jul 10, 2026
0918bdb
♻️ refactor(web): consolidate design-system primitives and responsive…
t0ng7u Jul 10, 2026
9d1ca54
♻️ refactor(web): refine data-table cards and pricing page layout
t0ng7u Jul 10, 2026
ca97141
fix(web): allow user-activated top navigation for custom home iframe …
Heykode Jul 11, 2026
00f1cbb
chore(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 (#6096)
dependabot[bot] Jul 11, 2026
dad57a6
fix: sync codex field (#6018)
seefs001 Jul 11, 2026
b2a890e
🐛 fix: Fontsource asset resolution across workspace layouts
t0ng7u Jul 11, 2026
621927f
fix(billing): reject saturated pre-consume quota
Calcium-Ion Jul 10, 2026
d959583
fix(billing): improve quota handling and error reporting for pre-cons…
Calcium-Ion Jul 10, 2026
269e4ff
feat(image): enhance image stream handling with client disconnect log…
Calcium-Ion Jul 11, 2026
308e3e3
✨ feat(web): polish themed data views and add task log details
t0ng7u Jul 11, 2026
ad900bb
Merge remote-tracking branch 'origin/main'
t0ng7u Jul 11, 2026
337169e
revert: undo t0ng7u UI design-system refactor
Calcium-Ion Jul 11, 2026
1b1b23d
revert: restore StatusBadge horizontal padding
Calcium-Ion Jul 11, 2026
6bbddb1
feat(timing): add timing metrics display for stream logs and enhance …
Calcium-Ion Jul 11, 2026
162f879
feat: update theme colors
Calcium-Ion Jul 11, 2026
e400619
feat: enhance stale instance handling and update theme colors
Calcium-Ion Jul 11, 2026
1250fb2
fix: adjust margin for StatusBadge component in logs columns
Calcium-Ion Jul 11, 2026
c36418c
feat: enhance text protocol conversion and advanced custom routing (#…
Calcium-Ion Jul 11, 2026
48068ce
feat: bill OpenAI cache_write_tokens at cache-creation price with zer…
Calcium-Ion Jul 11, 2026
92d3c9d
fix: bound uncached remainder by prompt-max(cached,write) and forward…
Calcium-Ion Jul 11, 2026
7a2b9d8
feat: enhance model search functionality with status and sync filters
Calcium-Ion Jul 11, 2026
8283df1
feat: add unset price models tab to model pricing settings (#6124)
feitianbubu Jul 11, 2026
bde9b2f
fix: harden unset price models tab batch copy, feedback, and memo equ…
Calcium-Ion Jul 11, 2026
93e936f
fix: list only channel models in unset price models tab
feitianbubu Jul 11, 2026
7c28993
fix: list only channel models in unset price models tab (#6126)
t0ng7u Jul 11, 2026
b6b97a6
fix: purge authentication data on hard user deletion (#6168)
seefs001 Jul 14, 2026
9a2d660
fix(users): prevent large quota values from overflowing (#6134)
QuentinHsu Jul 14, 2026
a63364d
fix: infer MiniMax vendor for MiniMax models (#6164)
fux-dev Jul 14, 2026
506e41c
fix: add server-side sorting to user list, prevent client-side sort o…
DawnMoon1542 Jul 17, 2026
dc9aeab
fix(data-table): update table body immediately when toggling columns …
DawnMoon1542 Jul 17, 2026
923a17c
fix: update high-risk status code retry confirmation texts
Calcium-Ion Jul 17, 2026
1086038
fix: prevent duplicate tool calls in Responses-to-Chat streaming (#6225)
nikuleo Jul 18, 2026
57746fc
feat(channel): support Codex upstream model discovery (#6184)
seefs001 Jul 18, 2026
a6cf42c
feat: support upstream model fetch for advanced custom channels (#5971)
seefs001 Jul 18, 2026
5a6c53d
feat: standardize OpenAI Models label usage across components
Calcium-Ion Jul 18, 2026
31d70fc
refactor(auth): replace dashboard sessions with stateless tokens and …
Calcium-Ion Jul 20, 2026
d0e23e1
chore: include frontend in language stats
Calcium-Ion Jul 20, 2026
16bfae1
fix: drop realtime beta header for ga models and register new ones (#…
feitianbubu Jul 20, 2026
2ef4cff
fix(playground): prevent model group option stretching (#6120)
QuentinHsu Jul 20, 2026
270accc
perf(data-table): optimize action column width allocation (#6135)
QuentinHsu Jul 20, 2026
0867756
fix(web): show used quota for unlimited API keys (#6224)
RedwindA Jul 20, 2026
e13d403
fix(channel): improve proxy client compatibility and cache lifecycle …
yyhhyyyyyy Jul 20, 2026
4aa08f9
fix(playground): resolve auto group model listing (#6163)
QuentinHsu Jul 20, 2026
e0d5156
fix: prevent duplicate suno task refunds via cas status update (#6074)
feitianbubu Jul 20, 2026
1721144
fix(auth): keep login state on rate-limited or failing token refresh
Calcium-Ion Jul 21, 2026
cb96ab0
chore(github): migrate issue templates to required forms (#6452)
seefs001 Jul 24, 2026
cbd9b30
fix(github): restore issue form visibility (#6454)
seefs001 Jul 24, 2026
84a79b6
fix: log response body when parsed upstream error message is empty
bigsongeth Jul 24, 2026
27235a2
fix: prevent model create from wiping existing pricing for same name …
feitianbubu Jul 25, 2026
bf8cfcc
fix(model-mutate-drawer): prevent form reset on modelSettings refetch
Calcium-Ion Jul 25, 2026
a0d0e50
fix(web/channel): stabilize inline priority updates (#6415)
RedwindA Jul 25, 2026
18b0b76
refactor: rename channel priority update to channel field update
Calcium-Ion Jul 25, 2026
eb4a1bd
perf(json-editor): unify admin JSON editing experience (#6421)
QuentinHsu Jul 25, 2026
257223b
chore(README): update AtomGit badge and remove Product Hunt badge
Calcium-Ion Jul 25, 2026
5ede832
chore(README): update AtomGit badge and remove Product Hunt badge
Calcium-Ion Jul 25, 2026
ae17f27
fix(json-code-editor): remove opaque line-number layer background hid…
Calcium-Ion Jul 25, 2026
8b41def
feat: add gemini-3-pro-image and gemini-3.1-flash-image GA models (#6…
feitianbubu Jul 25, 2026
08f88d2
feat: support Tencent TokenHub API key via OpenAI-compatible protocol…
feitianbubu Jul 25, 2026
ab65d25
fix: allow topup amount input to be fully cleared (#6473)
feitianbubu Jul 26, 2026
3e1e728
perf(web): debounce users page search input (#6474)
feitianbubu Jul 26, 2026
2d23cdf
feat: configurable tool pricing, Sub2API channel, and alpha search bi…
Calcium-Ion Jul 26, 2026
bc14c18
refactor: update task refund logic and remove legacy handling
Calcium-Ion Jul 26, 2026
398cdaf
feat: add New API channel support
Calcium-Ion Jul 27, 2026
f51dd4d
fix: allow Advanced Custom Responses Compact
Calcium-Ion Jul 27, 2026
86ac0f7
refactor: extract protocol conversion layer into standalone relaykit …
Calcium-Ion Jul 27, 2026
60a1acb
refactor: update import paths to use relaykit module
Calcium-Ion Jul 27, 2026
b8bb3f4
refactor: update import paths to use new types package
Calcium-Ion Jul 27, 2026
8aa5e75
refactor: rename trusted_proxies package to middleware and update fun…
Calcium-Ion Jul 27, 2026
8a7a490
feat: add workflow to sync GitHub releases to GitCode
Calcium-Ion Jul 27, 2026
2ec6171
fix: replace ASCII apostrophes in release notes to prevent script bre…
Calcium-Ion Jul 27, 2026
6d57d25
feat: enhance GitCode release workflow with bootstrap asset and asset…
Calcium-Ion Jul 27, 2026
f3ab2cf
feat: enhance GitCode release workflow to handle bootstrap and matrix…
Calcium-Ion Jul 27, 2026
a043eef
feat: implement Gemini to OpenAI chat stream conversion with state ma…
Calcium-Ion Jul 27, 2026
b27b2b1
fix(web): detect iPad login sessions correctly
Calcium-Ion Jul 27, 2026
e99a9bd
feat: add per-channel HTTP transport controls
Calcium-Ion Jul 27, 2026
2cf3c8d
docs: update AGENTS.md
Calcium-Ion Jul 27, 2026
f01c13b
feat: add CI workflow for backend and frontend build, typecheck, and …
Calcium-Ion Jul 27, 2026
c3db414
fix: 慢查询/错误 SQL 日志参数化 (#6493)
feitianbubu Jul 27, 2026
8e2bfe2
refactor: remove mutex from CustomEvent and update TCP connection han…
Calcium-Ion Jul 28, 2026
1db6ae1
feat: enhance CI workflow to include vetting for Go modules
Calcium-Ion Jul 28, 2026
afe16c6
feat: add README.md for RelayKit module with capabilities and usage e…
Calcium-Ion Jul 28, 2026
c27d1ef
Update .gitattributes
Calcium-Ion Jul 29, 2026
cb4c8c0
feat(oidc): 支持自定义 OIDC 登录显示名称 (#6012)
mrchi Jul 29, 2026
66ee6b8
fix: preserve Qwen thinking_budget passthrough (#5836)
wxwwt Jul 29, 2026
9972a94
test(middleware): add testify suite for DecompressRequestMiddleware
xiaoyuyu6420 Jul 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
83 changes: 0 additions & 83 deletions .agents/skills/classic-to-default-sync/SKILL.md

This file was deleted.

86 changes: 73 additions & 13 deletions .agents/skills/i18n-translate/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,77 @@ name: i18n-translate
description: >-
Complete and maintain frontend i18n translations for this project. Covers
finding missing translation keys, detecting untranslated entries, and adding
translations for all supported locales (en, zh, fr, ja, ru, vi). Use when the
user asks to add translations, fix i18n, complete missing translations, or
when new UI text needs to be internationalized.
translations for all supported locales (en, zh, zh-TW, fr, ja, ru, vi). Use for any
task involving frontend locale files, missing translation keys, untranslated
UI text, `t(...)` keys, `useTranslation()`, static i18n keys, button/label/
toast/dialog/placeholder/validation copy, or adding/fixing even a single
i18n key. Use when review findings mention missing i18n, when new UI text
needs translation, or when the user asks to add translations, fix i18n, or
complete missing translations. Always load and follow this skill before
translating, adding locale keys, or editing frontend i18n files.
---

# Frontend i18n Translation Workflow

## Mandatory Preflight

- Read this entire `SKILL.md` before any frontend i18n work, including one-key fixes.
- Before editing locale files, confirm the source text comes from a `t(...)` key, `en.json`, existing UI copy, or an explicitly requested new UI string.
- Use the user conversation only to understand the task target. Do not copy conversation text, review wording, or task descriptions directly into locale values.
- Before translating each key, re-think the intended UI copy from the code and locale context instead of treating the surrounding chat as the translation source.

### Hard Constraint: Locale Writes Go Through the Script

- You MUST NOT edit `web/src/i18n/locales/*.json` directly with text-editing tools (StrReplace, Write, search-and-replace, manual JSON edits, etc.). This applies even to a single key.
- ALL locale writes MUST go through the `add-missing-keys.mjs` script, followed by `bun run i18n:sync`. The script is the only sanctioned way to add or change locale values.
- Why this is mandatory, not optional:
- Hand-editing reliably drops one or more of the seven locales (`en`, `zh`, `zh-TW`, `fr`, `ja`, `ru`, `vi`), leaving keys missing in some languages.
- Hand-editing breaks the required alphabetical key order and introduces JSON syntax errors (trailing commas, mismatched quotes).
- The script writes all seven files atomically with consistent sorting, so the locale set stays in sync by construction.
- The script does not do the translation for you. You still must reason out each locale's copy and populate the script's `newKeys` object; the script only handles insertion, sorting, and writing. Do not skip the script just because the thinking happens regardless.

## Scope Checklist

Before editing files, treat the task as covered by this skill if it involves:

- `i18n`, translation, locale files, language packs, missing keys, or untranslated text
- `t('...')`, `useTranslation()`, `static-keys.ts`, or `locales/*.json`
- UI copy in buttons, labels, toasts, dialogs, placeholders, validation messages, descriptions, or table/empty states
- A review finding about missing i18n keys

Do not skip this workflow because the fix is "just one key".

## Overview

- Locale files: `web/default/src/i18n/locales/{en,zh,fr,ja,ru,vi}.json`
- Locale files: `web/src/i18n/locales/{en,zh,zh-TW,fr,ja,ru,vi}.json`
- Format: flat JSON under `"translation"` key, keys are English source strings
- Base locale: `en.json` (most keys), fallback: `zh` (Chinese)
- Sync script: `bun run i18n:sync` (from `web/default/`)
- Sync script: `bun run i18n:sync` (from `web/`)
- All `t()` calls must have corresponding keys in every locale file

## Small Fix Path

For a single known missing key (still script-only, no direct JSON edits):

1. Confirm the exact key at the call site and verify it is absent from all locale files.
2. Add the key via `add-missing-keys.mjs`, populating its `newKeys` object for every supported locale: `en`, `zh`, `zh-TW`, `fr`, `ja`, `ru`, `vi`. Even one key goes through the script; do not hand-edit the JSON.
3. The script preserves the flat `"translation"` object and keeps keys alphabetically sorted automatically.
4. Run a targeted search for the key in code and locale files.
5. Run `bun run i18n:sync` to normalize file order. This step is mandatory, not optional.

## Workflow

### Step 1: Run sync and read report

```bash
cd web/default && bun run i18n:sync
cd web && bun run i18n:sync
```

Read `web/default/src/i18n/locales/_reports/_sync-report.json` to see per-locale status (missingCount, extrasCount, untranslatedCount).
Read `web/src/i18n/locales/_reports/_sync-report.json` to see per-locale status (missingCount, extrasCount, untranslatedCount).

### Step 2: Find missing keys (used in code but not in locale files)

Create and run `web/default/scripts/find-missing-keys.mjs`:
Create and run `web/scripts/find-missing-keys.mjs`:

```javascript
import fs from 'node:fs/promises'
Expand Down Expand Up @@ -93,7 +136,7 @@ if (missingKeys.size === 0) {

### Step 3: Find untranslated entries (value equals English)

Create and run `web/default/scripts/find-untranslated.mjs`:
Create and run `web/scripts/find-untranslated.mjs`:

```javascript
import fs from 'node:fs/promises'
Expand Down Expand Up @@ -124,7 +167,7 @@ const brandNames = new Set([
'WeChat','Xinference','Xunfei','AI Proxy','One API',
])

const locales = ['fr', 'ja', 'ru', 'zh', 'vi']
const locales = ['fr', 'ja', 'ru', 'zh', 'zh-TW', 'vi']

for (const locale of locales) {
const locFile = JSON.parse(await fs.readFile(path.join(LOCALES_DIR, `${locale}.json`), 'utf8'))
Expand Down Expand Up @@ -153,7 +196,7 @@ for (const locale of locales) {

### Step 4: Add translations

Create `web/default/scripts/add-missing-keys.mjs` with this structure:
This script is the ONLY sanctioned way to write locale values. You MUST NOT bypass it by hand-filling the JSON files. Create `web/scripts/add-missing-keys.mjs` with this exact structure:

```javascript
import fs from 'node:fs/promises'
Expand All @@ -168,6 +211,7 @@ function stableStringify(obj) {
const newKeys = {
en: { /* "key": "English value" */ },
zh: { /* "key": "中文翻译" */ },
'zh-TW': { /* "key": "繁體中文翻譯" */ },
fr: { /* "key": "Traduction française" */ },
ja: { /* "key": "日本語翻訳" */ },
ru: { /* "key": "Русский перевод" */ },
Expand Down Expand Up @@ -214,7 +258,7 @@ Populate the `newKeys` object with actual translations for each locale.
### Step 5: Verify and clean up

```bash
cd web/default
cd web
node scripts/add-missing-keys.mjs # apply translations
node scripts/find-missing-keys.mjs # verify: should say "All t() keys found"
bun run i18n:sync # normalize file order
Expand All @@ -224,10 +268,25 @@ Delete temporary scripts after completion.

## Translation Guidelines

### Source Text Rules

- Reconsider every key's UI meaning before translating: component location, user action, placeholder variables, button/label/toast/dialog/validation context, and whether the copy is a noun, command, status, or full sentence.
- Prefer the English key or `en` value as the source text. Use the call site only to clarify meaning, tone, and constraints.
- Do not copy chat messages, review comments, issue descriptions, or task wording as translation text.
- If the source text is unclear, inspect the code and locale files first. Ask the user for exact source copy only when the intended UI text remains ambiguous.

### Length and Layout Awareness

- Consider whether translated text may overflow the UI before choosing final wording, especially for buttons, table headers, menu items, labels, toasts, dialog titles, tabs, badges, and empty states.
- For languages that often expand relative to English, especially French, Russian, and Vietnamese, prefer natural but compact wording.
- Do not sacrifice meaning just to shorten text. When the call site has limited space, choose the shortest clear translation that preserves the UI intent.
- For interpolated variables, counts, model names, provider names, quotas, and dates, consider the longest realistic rendered text, not only the translation string itself.

| Language | Code | Notes |
|----------|------|-------|
| English | en | Base locale, key = value |
| Chinese | zh | Fallback locale, must be complete |
| Traditional Chinese | zh-TW | Use natural Traditional Chinese wording |
| French | fr | Many English cognates are valid (e.g., "Configuration") |
| Japanese | ja | Use katakana for technical loanwords |
| Russian | ru | Use formal register |
Expand All @@ -246,9 +305,10 @@ Delete temporary scripts after completion.

## Key Rules

1. All scripts run from `web/default/` directory
1. All scripts run from `web/` directory
2. Use `node scripts/xxx.mjs` (ESM format with top-level await)
3. Sort keys alphabetically when writing locale files
4. Always run `bun run i18n:sync` as the final step
5. Delete temporary scripts after completion
6. The `{{variable}}` placeholders in keys must be preserved in all translations
7. NEVER edit `locales/*.json` directly. Any non-script write to a locale file (StrReplace, Write, manual JSON edit) is non-compliant, including single-key fixes.
18 changes: 9 additions & 9 deletions .agents/skills/shadcn-ui/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: shadcn-ui
description: >-
Give the assistant project-aware shadcn/ui context: components.json,
composition patterns, CLI, registries, theming, and MCP. Use when working on
web/default UI, shadcn components, or presets. Overview aligns with
web UI, shadcn components, or presets. Overview aligns with
https://ui.shadcn.com/docs/skills.md; full upstream skill text is vendored
under vendor/shadcn/.
---
Expand Down Expand Up @@ -37,7 +37,7 @@ npx skills add shadcn/ui
That installs the skill where the `skills` CLI is available. **This repository** keeps the same intent under `.agents/skills/shadcn-ui/` (overview here + **vendored** upstream docs in [`vendor/shadcn/`](./vendor/shadcn/)) and runs the shadcn CLI from the frontend app root:

```bash
cd web/default && bunx shadcn@latest info --json
cd web && bunx shadcn@latest info --json
```

Learn more about skills at [skills.sh](https://skills.sh).
Expand All @@ -48,7 +48,7 @@ Learn more about skills at [skills.sh](https://skills.sh).

### Project context

Run **`shadcn info --json`** (here: `cd web/default && bunx shadcn@latest info --json`) for framework, Tailwind version, aliases, base (`radix` | `base`), icon library, installed components, and resolved paths.
Run **`shadcn info --json`** (here: `cd web && bunx shadcn@latest info --json`) for framework, Tailwind version, aliases, base (`radix` | `base`), icon library, installed components, and resolved paths.

### CLI commands

Expand All @@ -70,10 +70,10 @@ Vendored: [`vendor/shadcn/mcp.md`](./vendor/shadcn/mcp.md). Live docs: [MCP Serv

## How it works

1. **Project detection** — Applies when `components.json` exists (here: `web/default/components.json`).
1. **Project detection** — Applies when `components.json` exists (here: `web/components.json`).
2. **Context injection** — Use `shadcn info --json` as ground truth for imports and APIs.
3. **Pattern enforcement** — Follow rules in [`vendor/shadcn/SKILL.md`](./vendor/shadcn/SKILL.md) and [`vendor/shadcn/rules/`](./vendor/shadcn/rules/).
4. **Component discovery** — `shadcn docs`, `shadcn search`, MCP, or registries — see vendored SKILL + MCP doc.
3. **Pattern enforcement** — Use [`vendor/shadcn/rules/`](./vendor/shadcn/rules/) for concrete markup checks; the complete official workflow reference is listed below for deeper CLI, registry, and preset questions.
4. **Component discovery** — `shadcn docs`, `shadcn search`, MCP, or registries — see the official workflow reference and MCP doc when deeper context is needed.

---

Expand All @@ -88,11 +88,11 @@ Vendored: [`vendor/shadcn/mcp.md`](./vendor/shadcn/mcp.md). Live docs: [MCP Serv

## Vendored upstream bundle (deep rules)

Snapshot from [shadcn-ui/ui `skills/shadcn`](https://github.com/shadcn-ui/ui/tree/main/skills/shadcn); revision note in [`vendor/shadcn/UPSTREAM.txt`](./vendor/shadcn/UPSTREAM.txt).
Snapshot from [shadcn-ui/ui `skills/shadcn`](https://github.com/shadcn-ui/ui/tree/main/skills/shadcn); revision note in [`vendor/shadcn/UPSTREAM.txt`](./vendor/shadcn/UPSTREAM.txt). The upstream workflow is stored as a reference file, with its original skill frontmatter removed, so the vendored copy is not discovered as a second local skill.

| Doc | Path |
| --- | --- |
| Full official skill body | [`vendor/shadcn/SKILL.md`](./vendor/shadcn/SKILL.md) |
| Official shadcn/ui workflow reference | [`vendor/shadcn/official-shadcn-ui-workflow.md`](./vendor/shadcn/official-shadcn-ui-workflow.md) |
| CLI reference | [`vendor/shadcn/cli.md`](./vendor/shadcn/cli.md) |
| Theming / customization | [`vendor/shadcn/customization.md`](./vendor/shadcn/customization.md) |
| MCP | [`vendor/shadcn/mcp.md`](./vendor/shadcn/mcp.md) |
Expand All @@ -102,4 +102,4 @@ Snapshot from [shadcn-ui/ui `skills/shadcn`](https://github.com/shadcn-ui/ui/tre
| Styling | [`vendor/shadcn/rules/styling.md`](./vendor/shadcn/rules/styling.md) |
| Base vs Radix | [`vendor/shadcn/rules/base-vs-radix.md`](./vendor/shadcn/rules/base-vs-radix.md) |

**Workflow:** Prefer this **root** `SKILL.md` for repo paths (`web/default`, Bun). Read **`vendor/shadcn/SKILL.md`** for the complete upstream workflow, patterns, and CLI quick reference. Use **`vendor/shadcn/rules/*.md`** when validating concrete markup.
**Workflow:** Prefer this **root** `SKILL.md` for repo paths (`web`, Bun). Read **`vendor/shadcn/official-shadcn-ui-workflow.md`** only when you need the complete official component, registry, or preset workflow. Use **`vendor/shadcn/rules/*.md`** when validating concrete markup.
Loading