Fix board selector label overlap - #2459
1 commit merged into
Conversation
eb82ea6 to
80bed76
Compare
|
Rebased this branch onto current
I also marked the PR ready for review and refreshed the PR body/screenshots links. I tried to remove the |
SummaryReading Code referenceThe new rule at .kanban-board-switcher-item-icon{
display:block;
font-size:14px;line-height:1.15;
flex:0 1 auto;
min-width:18px;max-width:7.5rem;
overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
text-align:center;
}Paired with the regression test at Diagnosis / RecommendationThe shape is correct and matches the suggested fix range. One small note worth thinking about for follow-up rather than this PR: The Worth verifying manually that nothing else relies on Test planCI's already green on the rebased head per your comment. For local verification: For visual verification, the two before/after PNGs under This is a clean, scoped CSS fix with a passing regression test, screenshots, and a CHANGELOG entry. Ready to land on a maintainer review. |
80bed76 to
9d6eb5f
Compare
|
Rebased #2459 onto current |
4589dbe
… 0.51.90) (#556) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/nesquena/hermes-webui](https://github.com/nesquena/hermes-webui) | patch | `0.51.89` → `0.51.90` | --- ### Release Notes <details> <summary>nesquena/hermes-webui (ghcr.io/nesquena/hermes-webui)</summary> ### [`v0.51.90`](https://github.com/nesquena/hermes-webui/blob/HEAD/CHANGELOG.md#v05190--2026-05-18--Release-BN-stage-383--10-PR-full-sweep-batch--empty-gateway-messaging-history-fix--previous-messaging-sessions-setting--Kanban-board-switcher-layout--UIUX-demo-theme-controls--Slice-3c-queuegoal-RFC-gate--keyless-custom-endpoints--custom-provider-remote-model-catalog-parity--auto-compression-elapsed-timer--new-conversation-cold-start-guard--Kanban-drag-drop-detail-open-fix) [Compare Source](nesquena/hermes-webui@v0.51.89...v0.51.90) ##### Fixed - **PR [#​2286](nesquena/hermes-webui#2286 by [@​junjunjunbong](https://github.com/junjunjunbong) (refs [#​2275](nesquena/hermes-webui#2275)) — Narrow messaging stale-session filtering to active gateway sessions that are visible in the current sidebar candidate set. Older Discord/messaging history is now preserved when the gateway advertises a fresh zero-message session that hasn't yet entered the visible projection, instead of being hidden as stale. Adds a regression test for an empty active Discord gateway row preserving prior history. - **PR [#​2459](nesquena/hermes-webui#2459 by [@​franksong2702](https://github.com/franksong2702) (closes [#​2458](nesquena/hermes-webui#2458)) — Fix the Kanban board switcher menu when a board's icon slot carries a long text label (e.g. `layout-kanban`). The icon column changed from a fixed `18px` slot to a bounded flex cell with `min-width:18px;max-width:7.5rem`, with overflow ellipsis on the icon itself so long labels render fully when space allows and truncate cleanly when not. Title and count columns keep stable spacing. Adds before/after screenshots and a CSS contract regression in `tests/test_kanban_ui_static.py`. - **PR [#​2522](nesquena/hermes-webui#2522 by [@​Michaelyklam](https://github.com/Michaelyklam) (refs [#​2271](nesquena/hermes-webui#2271)) — Treat named custom OpenAI-compatible endpoints with a configured `base_url` as key-optional at WebUI agent startup. Local keyless servers (llama-server / vLLM-style LAN deployments) no longer fail early with a synthetic `CUSTOM:<slug>_API_KEY` env-var prompt before the request reaches the endpoint; instead the OpenAI-compatible client initialises with a harmless placeholder key and real configured keys are still preferred when present. Refactors the three near-identical custom-provider rebuild blocks (initial agent setup + two retry/healing paths) through the existing `resolve_custom_provider_connection` helper. - **PR [#​2515](nesquena/hermes-webui#2515 by [@​Michaelyklam](https://github.com/Michaelyklam) (closes [#​2513](nesquena/hermes-webui#2513)) — Keep named custom-provider model pickers populated from each configured endpoint's live `/models` catalog even when `custom_providers[].model` is present. The singular `model` field now acts as a sticky/fallback entry appended *after* the remote catalog rather than collapsing the picker to just the configured model and hiding sibling named custom providers. Extracts reusable OpenAI-compatible `/models` parsing/fetching helpers and threads them through both the active-base-url and per-named-provider paths. - **PR [#​2512](nesquena/hermes-webui#2512 by [@​dso2ng](https://github.com/dso2ng) (refs [#​2477](nesquena/hermes-webui#2477), Slice A) — Show an elapsed timer on the running automatic-compression card so long WebUI context-compression pauses no longer look frozen while the browser waits for the `compressed` event. Stamps `startedAt` on the `compressing` SSE event, ticks once per second, and switches to a `5+ min` cap label past the Slice A bound so the UI never frame-freezes at `05:00`. Browser-transient state only — no SSE contract change and no server-side resume reconstruction. - **PR [#​2528](nesquena/hermes-webui#2528 by [@​Michaelyklam](https://github.com/Michaelyklam) (closes [#​2518](nesquena/hermes-webui#2518)) — Guard New Conversation creation while a previous `/api/session/new` request is still in flight, so cold model/provider catalog resolution gives immediate pending feedback and rapid repeated clicks reuse the same create request instead of enqueueing duplicate blank sessions. Coalesces concurrent `newSession()` calls behind a single in-flight promise, disables the sidebar button with `aria-busy="true"`, and shows a localized `Creating new conversation…` composer status. - **PR [#​2530](nesquena/hermes-webui#2530 by [@​franksong2702](https://github.com/franksong2702) (refs [#​2529](nesquena/hermes-webui#2529)) — Keep Kanban drag/drop status updates from also opening the task detail pane. Two failure paths were both producing detail-pane opens after drag/drop: the browser's trailing synthetic click after `drop`, and the generic task-update helper opening detail on every PATCH. The fix adds a time-windowed `_kanbanSuppressCardClickUntil` set on `ondragstart`/`ondragend`/`ondrop` and routes drag/drop status changes through a board-only update path. Explicit card click and keyboard activation remain unchanged. ##### Added - **PR [#​2294](nesquena/hermes-webui#2294 by [@​junjunjunbong](https://github.com/junjunjunbong) — Add a `show_previous_messaging_sessions` setting so users can opt back into seeing previous messaging sessions that were replaced by `session_reset` or auto-compression. The preference is wired through boot, settings persistence, and the sidebar projection. Also adds a separate "Hide from list" action for imported messaging/CLI sessions that hides individual rows from the sidebar without deleting source history. ##### Documentation - **PR [#​2511](nesquena/hermes-webui#2511 by [@​franksong2702](https://github.com/franksong2702) (refs [#​2502](nesquena/hermes-webui#2502) / [#​2503](nesquena/hermes-webui#2503)) — Update the `docs/ui-ux/` demo appearance controls to initialize as `class="dark" data-skin="slate"` instead of the deprecated `data-theme`-only buttons and legacy theme names. Brings the demo pages in line with the live Theme + Skin contract referenced from the new `docs/CONTRACTS.md` so contributors following the contract-index path don't land on stale demos. - **PR [#​2509](nesquena/hermes-webui#2509 by [@​Michaelyklam](https://github.com/Michaelyklam) (refs [#​1925](nesquena/hermes-webui#1925)) — Advance the runtime-adapter RFC after the Slice 3b approval/clarify seam shipped in v0.51.89. The RFC now marks Slice 3b as shipped and defines the next Slice 3c queue/continue + goal control gate: route those controls through `RuntimeAdapter.queue_message(...)` / `update_goal(...)` only after pinning stable response contracts, bounded unavailable-control behavior, replayable lifecycle/status evidence, ordering/idempotency expectations, and explicit non-goals for runner/sidecar ownership or a WebUI-owned queue/goal scheduler. Docs + adapter-seam regression test only — no runtime/control routing changes in this PR. </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19--> Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/556
Thinking Path
layout-kanbanoverflowing from the fixed 18px icon slot into the title column.b.iconis documented as an emoji-ish icon, but existing board metadata can hold short text labels. The row needs to tolerate that without changing board data behavior.Closes #2458.
What Changed
.kanban-board-switcher-item-iconfrom a fixed 18px slot to a bounded flex cell withmin-width,max-width,overflow:hidden, and ellipsis behavior.Why It Matters
The board selector remains readable when board metadata uses colored text labels instead of a single emoji. This keeps the fix scoped to presentation and avoids changing board storage, API payloads, or switch behavior.
Screenshots
Before:
After:
Verification
PYTHONPATH=$PWD python -m pytest tests/test_kanban_ui_static.py -q— 42 passed.git diff --check origin/master...HEAD— passed.test (3.11),test (3.12), andtest (3.13)— passed on the rebased head.layout-kanban: label/title gap 10px, title/count gap 10px.kanban-square: label/title gap 10px, title/count gap 10px.sparkles: label/title gap 10px, title/count gap 10px.Risks / Follow-ups
Model Used
AI assisted: OpenAI Codex (GPT-5) in the Codex desktop app, with local pytest and Playwright CLI verification.