RockChinQ
381bb3f852
fix(rag): retain interrupted ingestion state and engine identity
2026-09-21 07:47:31 +00:00
RockChinQ
20a04a77bf
feat(plugin): enforce certified archive admission ( #2553 )
...
* feat(plugin): add certified admission policy
* feat(plugin): enforce certified archive admission
* chore(plugin): pin certified SDK beta
* fix(plugin): consume SDK beta 5
* style(plugin): format certification admission
2026-09-20 18:54:45 +08:00
huanghuoguoguo
d26d0635c5
fix(vector): correct SeekDB adapter semantics ( #2536 )
2026-09-12 19:40:30 +08:00
BiFangKNT
19526e1400
test(api): define explicit fixtures for passkey integration tests
2026-09-12 15:51:56 +08:00
BiFangKNT
dfde9578c1
fix(ci): fix ruff lint errors and postgres legacy migration table exclusion
2026-09-12 15:35:47 +08:00
BiFangKNT
b594cf23e4
feat(auth): add webauthn authentication support
2026-09-12 12:17:26 +08:00
Hyu
45d77c3926
fix(plugin): preserve explicit nested installation scope ( #2528 )
...
* fix(plugin): preserve explicit nested installation scope
* fix(deps): pin released RAG runtime SDK 0.5.8
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-11 17:41:33 +08:00
Hyu
ff6ad6adc2
fix(monitoring): restore Cloud messages and bot-scoped sessions ( #2526 )
...
* fix(monitoring): restore Cloud message persistence and bot-scoped sessions
* fix(migrations): support partial monitoring schemas and align regression fixtures
* test(migrations): complete raw bot session fixture values
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-11 14:34:37 +08:00
Tynwink
1ba3c1ec72
Merge pull request #2520 from langbot-app/feat/api-key-system-context
...
为 lbctl 增加 API Key 发现与管理能力
当前为 lbctl 提供的能力通过 system.py -> SYSTEM_CAPABILITY_OPERATIONS 维护,后续可通过统一的接口暴露能力,避免频繁维护常量。
2026-09-09 14:47:00 +08:00
Tynwink2000
d90253cc77
feat(api): advertise provider and model management
2026-09-09 11:18:01 +08:00
Tynwink2000
8281eb18c9
feat(api): advertise plugin and skill management
2026-09-09 00:12:40 +08:00
Tynwink2000
4eea3419e8
feat(api): advertise knowledge and MCP management
2026-09-08 23:07:43 +08:00
Tynwink2000
814740ea68
feat(api): advertise managed read operations
2026-09-08 18:53:55 +08:00
Tynwink2000
e6e8258545
feat(api): advertise extension operation capabilities
2026-09-08 17:43:11 +08:00
Tynwink2000
1a69747a06
feat(api): expose task status to api keys
2026-09-08 14:06:13 +08:00
Tynwink2000
1fa5e2f755
feat(api): add system capabilities endpoint
2026-09-08 13:03:02 +08:00
fishzjp
267232c24f
fix(security): harden password recovery with usable eight-character codes ( #2477 )
...
Use eight securely random recovery-code characters with concurrency-safe online throttling. Preserve existing keys and verify recovery through browser and real SQLite integration tests.
Co-authored-by: zhangjinpeng@mail.tuchong.com <zhangjinpeng@mail.tuchong.com >
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-07 15:31:54 +00:00
Tynwink
0577689da4
Merge pull request #2517 from langbot-app/feat/api-key-system-context
...
feat(api): add system context endpoint for lbctl
2026-09-07 14:51:31 +08:00
Tynwink2000
bc32eb3ca0
feat(api): add system context endpoint for lbctl
2026-09-07 14:22:27 +08:00
Hyu
0f216a0d4d
feat(provider): support Codex subscriptions with ChatGPT sign-in ( #2513 )
...
* feat(provider): support Codex subscriptions with ChatGPT sign-in
* style: format Codex live integration test
* fix(provider): preserve Codex identity in temporary model tests
* fix(web): portal provider selector without dialog overflow
* fix(web): allow native scrolling in provider dropdown
* fix(provider): surface safe Codex quota and upstream errors
* fix(web): provide reliable Codex copy feedback in dialogs
* feat(provider): confirm cascade deletion from edit dialog
* fix(persistence): discard connections after failed commit
* fix(web): polish provider loading and confirmation motion
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-06 23:31:02 +08:00
Hyu
b44b8f474d
fix(cloud): provision login workspace just in time ( #2505 )
...
* fix(cloud): provision login workspace just in time
* fix(oauth): send callback URI during code exchange
* fix(oauth): preserve callback URI through browser exchange
* fix(oauth): negotiate redirect-bound codes
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-03 23:14:44 +08:00
Hyu
ab52684a01
Revert "fix(cloud): request automatic Space launch ( #2501 )" ( #2503 )
...
This reverts commit d50957fc4f .
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-03 12:16:21 +08:00
Hyu
d50957fc4f
fix(cloud): request automatic Space launch ( #2501 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-03 11:44:32 +08:00
Hyu
c8d8b1aac4
fix(cloud): serialize directory catch-up ( #2500 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-02 21:57:53 +08:00
Hyu
018dd7a363
fix(cloud): launch newly registered accounts through Space ( #2499 )
...
* fix(cloud): launch new accounts through Space
* style: format Cloud entry URL
* fix(cloud): wait for launch workspace projection
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-02 21:41:35 +08:00
Hyu
bf8d418ad4
feat(monitoring): paginate sessions and messages ( #2489 )
...
* feat(monitoring): paginate sessions and messages
* fix(monitoring): align detail pages with local dates
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-09-01 15:14:29 +08:00
Neos
e69a80f5e9
Windows 兼容性修复 + Dify API 适配 + 企微 WS 加载优化 ( #2470 )
...
* fix: Windows fsync requires write access to file descriptor
- _fsync_file: os.O_RDONLY -> os.O_RDWR (Windows _commit() requires write access)
- _fsync_directory: tolerate OSError on fsync and os.open (chmod 0o700 blocks access on Windows)
* fix: Dify SSE empty data lines and upload response format mismatch
- Skip malformed/flushed SSE data lines (JSONDecodeError)
- Accept HTTP 200 besides 201 for file upload response
- Unwrap data wrapper in upload response (resp.get('data', resp))
* feat: WeCom WS mode sends empty initial stream frame for loading spinner
Send an empty reply_stream frame immediately after stream session
creation so the WeCom client shows its built-in loading indicator
while the pipeline processes the message (e.g. RAG retrieval).
* fix(compat): harden Windows, Dify, and WeCom changes
* fix(migration): clean interrupted SQLite temp files
---------
Co-authored-by: Hyu <chenhyu@proton.me >
2026-08-29 22:34:10 +08:00
Hyu
bafdaf0033
fix(monitoring): restore SQLite token statistics ( #2479 )
...
* fix(monitoring): restore SQLite token statistics
Allow the monitored SQLite strftime bucket expression through the tenant SQL guard and preserve structured backend errors in the token dashboard. Add persistence and frontend regressions.\n\nVerified-by: independent-review
* test(runtime): accept reconcile timeout in capacity stub
Keep the PostgreSQL capacity probe aligned with the runtime handler contract and assert the bounded reconcile timeout.
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-28 11:41:42 +08:00
Dongchuan Fu
be3734ffda
feat(wizard): rework agent onboarding flow ( #2471 )
...
* feat(wizard): rework agent onboarding flow
* fix(web): support LAN development access
* fix(wizard): parse ranked model selection entries
* feat(wizard): add inbound bot verification
* feat(wizard): add floating page bot verification
* fix(wizard): repair HTTP bot inbound test setup
* feat(wizard): streamline custom model onboarding
* feat(wizard): label page bot test preview
* style(space): apply ruff formatting
* fix(wizard): polish AI engine onboarding
* fix(wizard): clarify local account message test
* feat(wizard): animate AI engine transitions
* fix(wizard): align AI engine setup headers
---------
Co-authored-by: langbot-dev <langbot@users.noreply.github.com >
Co-authored-by: RockChinQ <rockchinq@gmail.com >
2026-08-28 01:30:30 +08:00
Hyu
1336f47cb4
fix(auth): enable local registration for OSS invitations ( #2460 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-24 10:28:45 +08:00
Hyu
54c96a18e1
test(migration): preserve legacy plugin storage payloads ( #2444 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-17 10:31:03 +08:00
dadachann
b62cc9da45
fix(migrations): preserve legacy workspace ownership
2026-08-16 17:15:57 +00:00
dadachann
0cc0e1b02d
fix(migrations): retry backup reopen on bind mounts
2026-08-16 16:42:20 +00:00
Hyu
79773b669a
fix(auth): allow callbacks from literally any origin ( #2430 )
...
* fix(auth): allow callbacks from any origin
* chore: retrigger repository checks
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-13 23:58:23 +08:00
Hyu
5084f2391d
fix(auth): support dynamic OSS callbacks and LangBot Account copy ( #2428 )
...
* fix(auth): support dynamic OSS callbacks and LangBot Account copy
* style(web): format LangBot Account copy
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-13 23:18:01 +08:00
RockChinQ
bbc912d0ef
fix(runtime): restore standalone runtime compatibility
2026-08-11 21:35:03 +08:00
Dongchuan Fu
e37987215e
feat(provider): add pipeline reasoning controls ( #2373 )
...
* feat(provider): add pipeline reasoning controls
* fix(provider): preserve local agent model compatibility
* refactor(web): use shadcn reasoning slider
* fix(runtime): stabilize reasoning chat delivery
* fix(provider): route reasoning controls by model family
* fix(provider): handle hosted Kimi reasoning protocols
* fix(provider): map qwen reasoning levels to budgets
* fix(provider): preserve think tags in streamed reasoning
* fix(provider): preserve reasoning tool metadata
* style(provider): satisfy ruff checks after merge
* fix(persistence): preserve reasoning migration compatibility
2026-08-09 17:38:01 +08:00
Hyu
4bd899e77b
fix(cloud): track workspace membership provenance ( #2406 )
...
* fix(cloud): converge legacy revision-zero members
* fix(cloud): track workspace membership provenance
* test(persistence): track current migration head
---------
Co-authored-by: Chan <dadachann@users.noreply.github.com >
2026-08-07 11:26:06 +08:00
Hyu
cdd5c6589c
fix: support 3072-dimensional knowledge embeddings ( #2401 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-05 21:19:57 +08:00
Hyu
d78546967c
feat: expose Workspace-scoped rotating plugin debug keys ( #2395 )
...
* feat: add Workspace-scoped rotating plugin debug tokens
* chore: pin formatted Workspace debug runtime
* chore: pin merged Workspace debug runtime
* chore: pin tenant-safe debug runtime
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-04 19:20:06 +08:00
Hyu
c08bfc8ced
feat: report independent instance and workspace identities ( #2394 )
...
* feat: report independent instance and workspace identities
* test: include workspace in OAuth callback fixture
* ci: pin production cloud adapter to Space release
* fix: preserve authenticated Workspace telemetry attribution
* ci: pin production cloud adapter to final Space release
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-04 17:27:23 +08:00
Hyu
7820949d3a
fix(workspace): show member emails ( #2393 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-04 11:48:43 +08:00
Hyu
1e6e4c0ca7
fix(cloud): show owner model balance and enforce single owner ( #2384 ) ( #2385 )
...
* fix(cloud): show owner model balance and enforce single owner
* fix(migrations): create owner index idempotently
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-03 02:14:43 +08:00
dadachann
a7a7218afe
fix(cloud): accept invitations with current account
2026-08-02 09:08:49 +00:00
Hyu
c5aada494d
fix(cloud): treat workspace owners as Space-bound ( #2378 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-02 00:33:46 +08:00
dadachann
2456bf1350
fix(migrations): preserve published Cloud revision head
2026-07-31 18:35:21 +00:00
Hyu
5d9fd15671
feat: use workspace identity for telemetry ( #2371 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-07-31 23:35:14 +08:00
Hyu
404e3466d9
feat(cloud): add scoped support admin sessions ( #2369 )
...
* feat(cloud): add scoped support admin sessions
* style(web): format support admin session changes
* fix(cloud): isolate support adapter sessions
* fix(cloud): authenticate plugin assets and report workspace resources
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-07-31 17:41:55 +08:00
RockChinQ
e1ac5e0fc8
feat(tenancy): add Workspace multi-tenant foundation ( #2353 )
...
* Document multi-tenant workspace architecture
* Add OSS and commercial workspace boundaries
* docs: redesign multi-tenant workspace architecture
* feat(tenancy): implement workspace isolation
* docs(tenancy): record verification evidence
* docs(tenancy): revise single-instance SaaS topology
* docs(tenancy): refine architecture options
* docs: finalize cloud v2 multi-tenant decisions
* feat(tenancy): establish cloud isolation foundations
* feat(tenancy): harden shared cloud runtime boundaries
* docs(tenancy): record final isolation verification
* fix(tenancy): close isolation and permission gaps
* docs(tenancy): record final isolation verification
* feat(tenancy): connect cloud workspace control plane
* fix(build): install git for pinned SDK
* docs(cloud): update control plane verification
* chore: update multi-tenant SDK pin
* fix(cloud): skip legacy model sync during startup
* test(cloud): preserve minimal model manager fixtures
* fix(cloud): preserve authenticated account context
* fix(cloud): reuse authenticated account for user info
* feat(cloud): complete Workspace settings navigation
* test(web): cover Workspace dropdown menu
* feat(web): place workspace controls in sidebar
* refactor(web): streamline workspace controls
* style(web): format workspace layout test
* fix(cloud): surface runtime and workspace plan status
* fix(plugin): keep runtime identity stable across restarts
* fix(ui): widen and center workspace switcher
* fix(ui): hide roles from workspace switcher
* fix(ui): align workspace switcher with sidebar entries
* feat(workspace): add in-product collaboration and direct Cloud launch
* style: format collaboration changes
* fix(workspace): bind collaboration APIs to tenant UoW
* fix(cloud): preserve Core-owned collaboration state
* test(cloud): require Space identity for invite registration
* feat(cloud): complete secure invitation experience
* style(web): format invitation flows
* fix(cloud): recover box runtime without unscoped skill reload
* feat(oss): enforce invitation account and owner billing flows
* style: format OSS account service
* test(oss): cover invitation logout handoff
* fix(oss): resolve workspace owner in scoped session
* feat(cloud): harden multi-tenant runtime resources
* fix(cloud): bound runtime restart storms
* fix(cloud): eliminate periodic runtime CPU spikes
* fix(cloud): enforce instance capacity ceilings
* fix(cloud): scope public login capability discovery
* fix(cloud): bound tenant maintenance and monitoring work
* fix(runtime): bound tenant resource amplification
* fix(deps): pin green multi-tenant plugin SDK
* fix(cloud): handle unavailable skill capability
* fix(security): require authentication for image file endpoint (H-2)
- Changed /api/v1/files/image from AuthType.NONE to USER_TOKEN_OR_API_KEY
- Added Permission.RESOURCE_VIEW requirement
- Prevents unauthenticated cross-tenant file access via leaked keys
- Fixes HIGH severity finding from multi-tenant security review
docs: add comprehensive database migration guide
- Complete migration steps for OSS → multi-tenant
- Backup, execution, verification procedures
- Rollback scenarios and recovery plans
- Performance tuning recommendations
* test: add comprehensive cross-tenant isolation tests
Added 7 critical test scenarios for multi-tenant boundaries:
- Cross-tenant bot access prevention
- Viewer role read-only enforcement
- Removed member immediate access revocation
- Model provider credential isolation
- WebSocket message isolation
- Invitation token workspace scoping
- Multi-workspace context validation
These tests address P0-2 coverage gaps for:
- workspaces.py (membership & invitation flows)
- user.py (authentication & authorization)
- websocket_chat.py (real-time isolation)
- plugins.py (resource access control)
docs: finalize database migration guide
* fix(security): resolve M-1, M-2, M-3 security findings
M-1: WebSocket authorization TOCTOU race (FIXED)
- Changed _revalidate_websocket_authorization to return RequestContext
- Ensures validated context is used immediately without race window
- Prevents removed members from sending messages during revalidation gap
M-2: Model Manager cache workspace isolation (VERIFIED)
- Confirmed _CacheKey already uses 4-tuple: (instance, workspace, generation, resource)
- Cache is properly scoped per workspace, no cross-tenant leakage possible
- No code change needed, documented as working correctly
M-3: Invitation lock workspace scoping (FIXED)
- Changed lock key from token_digest to workspace_uuid:token_digest
- Prevents DoS where attacker locks token in Workspace A to block Workspace B
- Locks now isolated per workspace
All MEDIUM severity findings from security review now resolved.
* fix(cloud): unblock tenant CI and enforce knowledge quotas
* fix(tenancy): scope rerank model sync
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-07-30 21:43:35 +08:00
RockChinQ
bd35b793e1
fix(embed): isolate browser chat sessions ( #2335 )
...
* fix(embed): isolate browser chat sessions
* fix(embed): harden reset and reconnect recovery
2026-07-13 15:08:45 +08:00