dadachann
70ad04ce25
Merge master into deploy/prod
2026-08-24 06:54:21 +00:00
Hyu
f0ee57c1e0
style(email): use generic LangBot invitation branding ( #2466 )
...
Co-authored-by: Junyan Qin <rockchinq@gmail.com >
2026-08-24 14:53:59 +08:00
dadachann
0bab5ddf4c
Merge master into deploy/prod
2026-08-24 06:15:09 +00:00
Hyu
a45e27e76e
style(cloud): redesign workspace invitation email ( #2464 )
...
* style(cloud): redesign workspace invitation email
* fix(email): harden Outlook spacing and text contrast
---------
Co-authored-by: Junyan Qin <rockchinq@gmail.com >
2026-08-24 14:14:56 +08:00
dadachann
b791caeb98
Merge master into deploy/prod
2026-08-24 04:53:51 +00:00
Hyu
536fcdf29f
fix(web): restore plugin page SDK loading ( #2435 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-24 12:40:50 +08:00
dadachann
dbea5150af
Merge master into deploy/prod
2026-08-24 04:35:30 +00:00
QuasarRyan
c87548c0b9
feat(qqofficial): add markdown reply rendering ( #2459 )
2026-08-24 11:59:23 +08:00
dadachann
0c06c05938
Merge master into deploy/prod
2026-08-24 03:54:53 +00:00
QuasarRyan
79634772da
fix(qqofficial): send complete stream snapshots ( #2458 )
2026-08-24 11:49:22 +08:00
dadachann
7e0a72b104
Merge master into deploy/prod for Cloud rollout
2026-08-24 03:18:22 +00:00
Hyu
bb366779af
fix(auth): align invitation password fields ( #2461 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-24 10:53:05 +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
RockChinQ
962366c507
fix(deps): make SeekDB optional for native installs
2026-08-21 12:07:36 +08:00
Hyu
23875b240f
Merge pull request #2452 from langbot-app/ci/immutable-core-images
...
ci: publish immutable Core image tags
2026-08-21 10:19:58 +08:00
dadachann
e699358a5a
ci: publish immutable Core image tags
2026-08-21 02:16:34 +00:00
Hyu
14277d129c
Merge pull request #2451 from langbot-app/fix/release-4.10.8-cloud
...
fix(cloud): carry runtime readiness fixes into 4.10.8
2026-08-21 03:12:12 +08:00
dadachann
6bf1546df2
style: format Cloud runtime readiness fixes
2026-08-20 19:08:41 +00:00
dadachann
0bec72a3f9
fix(cloud): run runtime initialization outside transaction gate
2026-08-20 18:55:24 +00:00
dadachann
f36542135a
fix(cloud): start API before runtime reconcile
2026-08-20 18:55:24 +00:00
dadachann
693c59b726
fix(cloud): import lifecycle task scope
2026-08-20 18:55:24 +00:00
dadachann
c3fe312a43
fix(cloud): refresh directory during plugin startup
2026-08-20 18:55:24 +00:00
dadachann
c4bad508d2
fix(runtime): honor configured cold reconcile timeout
2026-08-20 18:55:24 +00:00
RockChinQ
3d4a726cd8
chore: release v4.10.8 ( #2450 )
v4.10.8
2026-08-21 01:47:39 +08:00
DongXiaoming
e934f08adf
fix(wecombot): deliver sandbox outbox media through full pipeline chain ( #2328 )
...
* fix(wecombot): align media upload protocol
* fix(wecombot): deliver outbox media in reply and fix tool call recording
- Integrate _send_media into reply_message and reply_message_chunk so
sandbox outbox images/voices/files are uploaded and sent instead of
being silently dropped.
- Add missing import base64 that caused _send_media to fail with a
NameError swallowed by its except clause.
- Change yiri2target to return component dicts (text/image/voice/file)
so callers can distinguish text from media.
- Fix _get_message_for_tool_context using result.first()/row[0] which
returned a raw string instead of the ORM object, causing
"'str' object has no attribute 'pipeline_id'" in tool call recording.
Use result.scalars().first() per SQLAlchemy 2.0 convention.
* fix(pipeline): collect outbox attachments on final chunk with empty content
When the last streaming chunk has is_final=True but empty content
(e.g. the LLM sends all text in earlier chunks), the 'if result.content'
branch is skipped entirely, so _append_outbound_attachments never runs
and sandbox outbox images are silently dropped.
Add an elif branch for _is_final_assistant_message that creates an
empty MessageChain and still collects outbox attachments, so images
are delivered even when the final chunk carries no text.
* fix(box): bypass stdout truncation when reading outbox via exec
_read_outbox_via_exec used execute_tool which returns _serialize_result
where stdout is truncated to output_limit_chars (4000). A 7KB JPEG
encodes to ~9400 base64 chars, so the JSON payload was truncated and
json.loads failed silently, returning an empty list.
Call client.execute directly to get the raw BoxExecutionResult with
untruncated stdout, so base64 file data is preserved.
* fix(tests): adapt box and wrapper tests for client.execute and strict is_final check
- wrapper.py: restrict outbox collection on empty-content chunks to
actual MessageChunk instances with is_final=True, not generic Mock
objects that happen to have role='assistant'
- test_box_service.py: update _read_outbox_via_exec tests to mock
client.execute (returning BoxExecutionResult) instead of
execute_tool, matching the implementation change
* chore(wecombot): remove temporary upload log
* test(box): preserve direct outbox read and cleanup coverage
---------
Co-authored-by: fdc310 <2213070223@qq.com >
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-20 16:56:20 +08:00
Hyu
7803d56254
fix(plugin): keep pre-tenancy plugin storage readable ( #2446 )
...
* fix(plugin): adopt legacy scoped storage rows
* fix(plugin): delete adopted legacy storage rows
* test(plugin): cover legacy storage deletion
* fix(plugin): avoid mutating legacy storage on reads
* fix(plugin): make legacy storage adoption atomic
* fix(plugin): resolve concurrent legacy adoption
* fix(plugin): upsert concurrent storage writes
* fix(plugin): retry reads after legacy adoption
* fix(plugin): deduplicate migrated storage keys
---------
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-17 11:49:26 +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
Hyu
579e3556e4
Merge pull request #2441 from langbot-app/fix/runtime-readonly-sdk-0.5.5
...
fix(runtime): adopt plugin SDK 0.5.5
2026-08-17 01:40:56 +08:00
dadachann
a08a177a11
fix(runtime): adopt plugin SDK 0.5.5
2026-08-16 17:36:34 +00:00
Hyu
c224f61c8c
Merge pull request #2440 from langbot-app/fix/login-migration-20260817
...
fix(migrations): preserve legacy workspace ownership
2026-08-17 01:29:58 +08:00
dadachann
b62cc9da45
fix(migrations): preserve legacy workspace ownership
2026-08-16 17:15:57 +00:00
Hyu
700104c015
Merge pull request #2439 from langbot-app/fix/recent-issues-20260817
...
fix recent migration and plugin command regressions
2026-08-17 01:04:41 +08:00
dadachann
717bd4b8bf
fix(commands): pass trusted workspace scope to plugins
2026-08-16 17:01:02 +00:00
dadachann
0cc0e1b02d
fix(migrations): retry backup reopen on bind mounts
2026-08-16 16:42:20 +00:00
Hyu
1f1a3aff55
fix(release): publish installable multi-arch artifacts ( #2432 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
v4.10.7
2026-08-14 01:06:31 +08:00
Hyu
de28b3160c
docs(deploy): document optional runtime tokens ( #2431 )
...
Co-authored-by: dadachann <185672915+dadachann@users.noreply.github.com >
2026-08-14 00:29:58 +08: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
Hyu
b121c66f18
Merge pull request #2425 from langbot-app/fix/pin-plugin-sdk-hotfix
...
fix: pin Plugin Runtime SDK 0.5.3
2026-08-13 18:44:49 +08:00
Chan
536534865e
fix: pin plugin runtime SDK 0.5.3
2026-08-13 10:39:51 +00:00
Hyu
ff528e8e0b
Merge pull request #2424 from langbot-app/fix/pin-plugin-sdk-052
...
chore(runtime): pin plugin SDK 0.5.2
2026-08-13 17:36:18 +08:00
Chan
f7914a8900
test: remove obsolete private deploy workflow assertion
2026-08-13 09:31:45 +00:00
Chan
c18fc9dfe3
chore(runtime): pin plugin SDK 0.5.2
2026-08-13 09:27:50 +00:00
Hyu
bc40418bda
Merge pull request #2422 from langbot-app/fix/remove-cloud-v2-deploy
...
chore: remove private Cloud deployment configuration
2026-08-13 16:18:27 +08:00
Chan
45ed6efceb
chore: remove private Cloud deployment configuration
2026-08-13 08:14:40 +00:00
Hyu
c67a503532
feat(health): expose plugin runtime readiness ( #2420 )
...
Co-authored-by: Chan <dadachann@users.noreply.github.com >
2026-08-12 19:49:56 +08:00
Hyu
8b14d2ab8e
fix(runtime): allow shared plugin reconcile to finish ( #2419 )
...
Co-authored-by: Chan <dadachann@users.noreply.github.com >
2026-08-12 19:31:23 +08:00
Hyu
97428310b9
fix(runtime): require Cloud control secrets ( #2418 )
...
Co-authored-by: Chan <dadachann@users.noreply.github.com >
2026-08-12 18:42:23 +08:00
Hyu
338ee733cb
fix(deploy): preserve recovered Cloud adapter pin ( #2417 )
...
Co-authored-by: Chan <dadachann@users.noreply.github.com >
2026-08-12 18:06:34 +08:00
Hyu
c3299fd1a6
fix(wizard): remove redundant Space CTA ( #2416 )
...
Co-authored-by: Chan <dadachann@users.noreply.github.com >
2026-08-12 16:56:25 +08:00