Michael Lam
c991f36021
fix: clean session attachment and stream recovery leftovers
2026-05-15 13:30:46 -07:00
nesquena-hermes
7ac4bf4f4a
Merge pull request #2324 from nesquena/stage-361
...
stage-361: 4-PR follow-up batch — profile skill seeding + theme fallback + mobile stream defer + chat upload relocation (with vision-model regression fix)
2026-05-15 12:58:51 -07:00
Hermes Agent
29d13953d6
stage-361: apply Opus SHOULD-FIX — allow _attachment_root() in _build_native_multimodal_message
2026-05-15 19:55:34 +00:00
Hermes Agent
1b6870086d
docs: CHANGELOG stage-361 — close v0.51.67 (stage-360), open Unreleased for 4-PR stage-361 batch with proper attribution
2026-05-15 19:18:12 +00:00
Hermes Agent
0a4d9679fc
Merge pull request #2319 into stage-361
...
feat: store chat uploads outside workspace root (Michaelyklam)
2026-05-15 19:17:08 +00:00
Hermes Agent
ab749575df
Merge pull request #2318 into stage-361
...
fix: defer mobile stream errors while tab is hidden (Michaelyklam, closes #2307 )
# Conflicts:
# CHANGELOG.md
2026-05-15 19:17:06 +00:00
Hermes Agent
74ee110b2f
Merge pull request #2315 into stage-361
...
Seed bundled skills for WebUI profile creation (Michaelyklam, closes #2305 )
# Conflicts:
# CHANGELOG.md
2026-05-15 19:17:04 +00:00
Hermes Agent
62413067e6
Merge pull request #2317 into stage-361
...
fix: preserve explicit light/dark theme fallback (Michaelyklam, refs #2312 )
2026-05-15 19:17:03 +00:00
nesquena-hermes
2170846031
Merge pull request #2320 from nesquena/stage-360
...
stage-360: 3-PR streaming-lane batch — stream completion recovery + profile-scoped aux routing + workspace panel polish (with _ENV_LOCK architectural fix)
2026-05-15 12:11:59 -07:00
Hermes Agent
a8a27eeb7d
stage-360: Opus follow-up — update _ENV_LOCK docstring to reflect narrow-lock semantics
...
Opus stage-360 review caught that the docstring at api/streaming.py:40-43
said 'around the entire agent run' which is no longer accurate after the
narrow-lock refactor. The lock is now held only briefly for the env-mutation
critical section; the agent runs outside the lock and the finally block
re-acquires to atomically restore env vars.
Docstring now points to both narrow-lock implementations as references:
- _run_agent_streaming at line ~2719 (the original pattern)
- profile_env_for_background_worker at api/profiles.py:715 (added stage-360)
2026-05-15 19:05:37 +00:00
Michael Lam
3ead446f14
feat: store chat uploads outside workspace root
2026-05-15 11:52:23 -07:00
Michael Lam
aeda75271c
fix: defer stream errors while mobile tabs are hidden
2026-05-15 11:25:53 -07:00
Hermes Agent
803ab170d8
stage-360: align test_sprint29::TestENVLock with non-reentrant invariant from QA
...
#2299 added test_env_lock_importable_from_streaming asserting reentrance,
which contradicts the architectural invariant enforced by QA
test_env_lock_is_non_reentrant. The QA test wins because the non-reentrant
property is what makes _ENV_LOCK catch deadlock bugs early.
Updated the new test to assert NON-reentrance to match the actual lock
type (threading.Lock) and the QA invariant.
2026-05-15 17:12:29 +00:00
Hermes Agent
fb0e664a10
stage-360 maintainer fix: narrow _ENV_LOCK to env mutation only in profile_env_for_background_worker
...
#2299 introduced profile_env_for_background_worker() in api/profiles.py and
changed _ENV_LOCK from threading.Lock() to threading.RLock(). Both changes
were incorrect:
1. RLock masked rather than fixed the underlying deadlock. The QA
test_env_lock_is_non_reentrant test exists precisely to enforce
non-reentrance — RLock would let a single thread hold _ENV_LOCK across
nested critical sections, which hides bugs while still allowing
different-thread races.
2. The original context manager held _ENV_LOCK for the ENTIRE 'yield'
duration, meaning the lock was held for the full background worker's
runtime (title generation, compression, update summary — possibly
many seconds). That blocked ALL other sessions on _ENV_LOCK, which
the QA test_third_message_completes runtime test caught as a timeout
on the third sequential message.
Fix: mirror the narrow-lock pattern from _run_agent_streaming:
- Acquire _ENV_LOCK only for env mutation (set runtime_env + patch
skill modules)
- Release immediately, yield to worker (no lock held)
- Reacquire in finally to restore env + skill modules
Restored _ENV_LOCK back to threading.Lock(). All 20 QA tests now pass,
including test_third_message_completes (was timing out, now 35s).
2026-05-15 17:11:45 +00:00
Michael Lam
957bffc49e
fix: preserve explicit light dark theme fallback
2026-05-15 10:10:34 -07:00
Michael Lam
b2cbf7bb2f
Seed bundled skills for WebUI profile creation
2026-05-15 09:29:46 -07:00
Hermes Agent
f1bb73a7f2
docs: CHANGELOG stage-360 — close v0.51.66 (stage-359), open Unreleased for 3-PR stage-360 batch
2026-05-15 16:16:50 +00:00
Hermes Agent
3b05929f1a
Merge pull request #2299 into stage-360
...
Fix profile-scoped auxiliary routing for background workers (starship-s)
2026-05-15 16:15:39 +00:00
Hermes Agent
b2ebbebf01
Merge pull request #2279 into stage-360
...
Fix WebUI stream completion recovery gaps (franksong2702, closes #2262 + #2168 )
2026-05-15 16:15:38 +00:00
Hermes Agent
36d82f1aa1
Merge pull request #2306 into stage-360
...
Fix iPhone PWA mobile shell and workspace header layout — workspace panel polish + test cleanup (dobby-d-elf, follow-up to stage-359 #2306 )
2026-05-15 16:15:36 +00:00
dobby-d-elf
fe1689caef
style: remove opacity from .close-preview so X button matches other panel icons
2026-05-15 09:43:18 -06:00
dobby-d-elf
0f86030f5f
fix: single close button on workspace panel, tooltip → 'Close'
...
- Remove duplicate mobile-close-btn from HTML
- Remove dead .mobile-close-btn CSS rules; unhide .close-preview at all viewports
- Change btnClearPreview tooltip from 'Hide workspace panel' to 'Close'
- Update tests across test_sprint41.py, test_sprint44.py, test_issue781.py,
and test_mobile_layout.py to match new single-button model
2026-05-15 09:43:18 -06:00
dobby-d-elf
acce80a50a
fix workspace panel header test syntax
2026-05-15 09:43:18 -06:00
dobby-d-elf
0e9017a665
refine workspace panel header layout
2026-05-15 09:43:18 -06:00
nesquena-hermes
6f22fe567c
Merge pull request #2311 from nesquena/stage-359
...
stage-359: 17-PR safe-lane batch — Docker fixes + UI polish + compression snapshot improvements + i18n parity + profile validation
2026-05-15 08:31:38 -07:00
Hermes Agent
75a2464821
stage-359: apply Opus SHOULD-FIX — symmetric runtime-field clearing on snapshot load-and-mark path
2026-05-15 15:27:24 +00:00
Hermes Agent
4c102eaad5
docs: CHANGELOG stage-359 — close v0.51.65 (stage-358), open Unreleased for 17-PR stage-359 with proper attribution
2026-05-15 15:10:39 +00:00
Hermes Agent
fb8b91019e
Merge pull request #2295 into stage-359
...
fix: clear runtime fields on compression snapshots (ai-ag2026)
# Conflicts:
# CHANGELOG.md
# api/streaming.py
2026-05-15 15:06:35 +00:00
Hermes Agent
4826a31fbc
Merge pull request #2285 into stage-359
...
fix: hide pre-compression snapshots from sidebar (dso2ng, refs #2230 )
# Conflicts:
# CHANGELOG.md
2026-05-15 14:55:19 +00:00
Hermes Agent
90fd16e273
Merge pull request #2306 into stage-359
...
Fix iPhone PWA mobile shell and workspace header layout (dobby-d-elf, regression fix for #2238 )
2026-05-15 14:55:17 +00:00
Hermes Agent
d510b8d2d5
Merge pull request #2303 into stage-359
...
Add assistant question jump buttons (franksong2702, fixes #2246 )
# Conflicts:
# CHANGELOG.md
2026-05-15 14:55:15 +00:00
Hermes Agent
f7d98cdf3f
Merge pull request #2301 into stage-359
...
Add cron detail expansion controls (franksong2702, fixes #2289 )
2026-05-15 14:55:13 +00:00
Hermes Agent
b28a132f91
Merge pull request #2296 into stage-359
...
fix: align offline banner with active theme palette (Jordan-SkyLF)
# Conflicts:
# CHANGELOG.md
2026-05-15 14:55:12 +00:00
Hermes Agent
ad76db8651
Merge pull request #2291 into stage-359
...
feat: add Nous Research skin (linuxid10t)
2026-05-15 14:55:10 +00:00
Hermes Agent
8e610ce790
Merge pull request #2288 into stage-359
...
fix: prevent theme reset on refresh when autosave failed (linuxid10t)
2026-05-15 14:55:09 +00:00
Hermes Agent
49597df554
Merge pull request #2302 into stage-359
...
Validate profile model selections (franksong2702, refs #749 follow-up)
# Conflicts:
# CHANGELOG.md
2026-05-15 14:55:08 +00:00
Hermes Agent
4365758a78
Merge pull request #2287 into stage-359
...
feat: make upload size limit runtime-configurable (mslovy, refs #2284 )
2026-05-15 14:55:06 +00:00
Hermes Agent
7d10539852
Merge pull request #2282 into stage-359
...
Keep unknown update summary bullets (franksong2702, refs #2264 )
# Conflicts:
# CHANGELOG.md
2026-05-15 14:55:05 +00:00
Hermes Agent
e960285d55
Merge pull request #2281 into stage-359
...
Classify onboarding DNS probe failures consistently (franksong2702, refs #2260 )
# Conflicts:
# CHANGELOG.md
2026-05-15 14:55:03 +00:00
Hermes Agent
32c1e8319c
Merge pull request #2280 into stage-359
...
Fix settings i18n parity coverage (franksong2702, closes #2276 )
2026-05-15 14:55:02 +00:00
Hermes Agent
b01fb0e7ff
Merge pull request #2275 into stage-359
...
fix: load CLI continuation session transcripts (ai-ag2026)
2026-05-15 14:55:01 +00:00
Hermes Agent
29db680f0a
Merge pull request #2293 into stage-359
...
Skip agent git objects during Docker chown (franksong2702, refs #2237 )
2026-05-15 14:54:59 +00:00
Hermes Agent
4dcf523f0c
Merge pull request #2300 into stage-359
...
Tighten silent failure shrink detection (franksong2702, refs #2240 )
2026-05-15 14:54:58 +00:00
Hermes Agent
adbbf0e507
Merge pull request #2277 into stage-359
...
fix: support rootless container runtimes (eleboucher)
2026-05-15 14:54:56 +00:00
dobby-d-elf
256b9d6294
fix: restore iPhone PWA mobile workspace layout
2026-05-15 08:14:53 -06:00
Frank Song
05a5ed5af1
Add assistant question jump buttons
2026-05-15 19:39:27 +08:00
Frank Song
1fb047b51a
Validate profile model selections
2026-05-15 18:36:38 +08:00
starship-s
abb6057304
test(profiles): keep profile module reloads isolated
2026-05-15 04:14:09 -06:00
Frank Song
079d6b4e86
Add cron detail expansion controls
2026-05-15 18:04:53 +08:00
Frank Song
cadcf983d5
Tighten silent failure shrink detection
2026-05-15 18:04:53 +08:00