chore(release): stamp v0.51.13 — single-PR composer UX (#1758)
Constituent PR: - #1758 (@nesquena-hermes) — feat(composer): click pasted/attached image thumbnails to lightbox-zoom them. Refs #1733. Companion Mac PR hermes-webui/hermes-swift-mac#74 for sequential-paste filename uniqueness. Independent review: @nesquena APPROVED with exhaustive headless-Chrome behavioural harness verifying all 4 click paths (thumb-image, ×-on-image, ×-on-audio, audio-element). Pre-fix verification confirmed 4/5 of the new tests catch regressions to the previous state. Opus advisor: SHIP, all 6 verification questions clean. One non-blocking nit absorbed in-release: wrap .attach-thumb:hover in @media (hover: hover) for iPad sticky-hover hygiene (3-LOC defensive cleanup). Tests: 4637 → 4642 collected (+5). 4630 passed, 9 skipped, 3 xpassed, 0 failed. Pre-release verification: - pytest 4630 passed, 0 failed - node -c clean on static/ui.js - 11/11 browser API endpoints PASS - Pre-stamp re-fetch: PR head still matches local rebase - Opus advisor: SHIP, 0 MUST-FIX Refs #1733.
This commit is contained in:
1 parent
8c8a41b6b3
commit
52e1689083
4 files changed
+26
-4
No files matched your search
@@ -1,5 +1,25 @@
|
||||
# Hermes Web UI -- Changelog
|
||||
|
||||
## [v0.51.13] — 2026-05-06 — single-PR composer UX
|
||||
|
||||
### Added
|
||||
|
||||
- **PR #1758** — Click pasted/attached image thumbnails in the composer to lightbox-zoom them. When pasting/dropping screenshots into the composer, the 56×56 thumbnail in each chip now opens the existing image lightbox on click — same modal that's been wired for message-attached images since v0.50.x. Cursor changes to `zoom-in` (was `default`, actively misleading) and a subtle hover emphasis (4% scale + 5% brightness, 120ms ease, hover-capable devices only via `@media (hover: hover)`) gives instant visual feedback. Audio/video chips are unaffected — they keep their inline native controls and never render an `.attach-thumb` IMG. Refs #1733. Pairs with the companion Mac PR `hermes-webui/hermes-swift-mac#74` for sequential-paste filename uniqueness — paste, paste, paste, click any to verify, send.
|
||||
|
||||
### Tests
|
||||
|
||||
4637 → **4642 collected** (+5 regression tests across composer chip wiring + cursor affordance). 4630 passed, 9 skipped (test-isolation prong-2 noise), 3 xpassed, 0 failed in 145s.
|
||||
|
||||
### Pre-release verification
|
||||
|
||||
- @nesquena independently APPROVED with exhaustive headless-Chrome behavioural harness verifying all 4 click paths (thumb-image, ×-on-image, ×-on-audio, audio-element). Pre-fix verification confirmed 4/5 of the new tests catch regressions to the previous state.
|
||||
- Stage-307: clean rebase + clean merge (no conflicts).
|
||||
- All JS files syntax-clean (`node -c static/ui.js`).
|
||||
- pytest: 4630 passed, 0 failed (single clean run).
|
||||
- `scripts/run-browser-tests.sh`: all 11 endpoints PASS on isolated port 8789.
|
||||
- Pre-stamp re-fetch: PR head still matches local rebase — no late commits.
|
||||
- Opus advisor: SHIP, all 6 verification questions clean, 0 MUST-FIX. One non-blocking nit (wrap `:hover` in `@media (hover: hover)` for iPad sticky-hover hygiene) absorbed in-release as a defensive 3-LOC cleanup.
|
||||
|
||||
## [v0.51.12] — 2026-05-06 — 3-PR full-sweep batch
|
||||
|
||||
### Fixed
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
> Web companion to the Hermes Agent CLI. Same workflows, browser-native.
|
||||
>
|
||||
> Last updated: v0.51.12 (May 6, 2026) — 4632 tests collected — 3-PR full-sweep batch (#1746, #1752, #1753)
|
||||
> Last updated: v0.51.13 (May 6, 2026) — 4642 tests collected — single-PR composer UX (#1758)
|
||||
> Test source: `pytest tests/ --collect-only -q`
|
||||
> Per-version detail: see [CHANGELOG.md](./CHANGELOG.md)
|
||||
|
||||
|
||||
+2
-2
@@ -1835,8 +1835,8 @@ Bridged CLI sessions:
|
||||
|
||||
---
|
||||
|
||||
*Last updated: v0.51.12, May 6, 2026*
|
||||
*Total automated tests collected: 4632*
|
||||
*Last updated: v0.51.13, May 6, 2026*
|
||||
*Total automated tests collected: 4642*
|
||||
*Regression gate: tests/test_regressions.py*
|
||||
*Run: pytest tests/ -v --timeout=60*
|
||||
*Source: <repo>/*
|
||||
+3
-1
@@ -895,7 +895,9 @@
|
||||
.attach-media-icon{display:inline-flex;align-items:center;color:var(--accent-text);}
|
||||
.attach-chip-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
|
||||
.attach-thumb{width:56px;height:56px;object-fit:cover;border-radius:4px;display:block;cursor:zoom-in;transition:filter .12s ease, transform .12s ease;}
|
||||
.attach-thumb:hover{filter:brightness(1.05);transform:scale(1.04);}
|
||||
@media (hover: hover) {
|
||||
.attach-thumb:hover{filter:brightness(1.05);transform:scale(1.04);}
|
||||
}
|
||||
textarea#msg{width:100%;background:transparent;border:none;outline:none;color:var(--text);font-size:16px;line-height:1.65;padding:12px 16px 6px;resize:none;min-height:44px;max-height:200px;font-family:inherit;}
|
||||
textarea#msg::placeholder{color:var(--muted);}
|
||||
.composer-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 10px 10px;position:relative;container-type:inline-size;container-name:composer-footer;}
|
||||
|
||||
Reference in new issue
Block a user