mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-13 14:02:16 +00:00
Route the app off its hand-rolled helpers onto lib/{text,time,format,json-format}
and the new primitives, plus assorted small tidy-ups:
- compactNumber for counts/tokens; normalize/capitalize/asText at the many
filter/label sites; shared Intl date/time formatters; row-hover + framed
editor adoption; scrollbar-gutter + padding parity on list surfaces.
- Messaging/Artifacts/Cron search hints + narrow-viewport tab dropdown;
floating-pet adopts useOnProfileSwitch; number formatting in statusbar,
command-center, agents.
- Electron: native overlay width + backend spawn tidy.
- Settings > Keys: credential fields read as plain subtext (all-unset) until
the group is focused or expanded, then take full input chrome with no
horizontal/vertical shift; inline Remove (trash) + Save mirror SearchField's
trailing-clear pattern instead of a floating hint that overlapped the card;
Esc still cancels. Drops the now-dead or/escToCancel i18n keys.
- Shared TabDropdown/ResponsiveTabs (components/ui): PageSearchShell and the
Command Center log file/level filters reuse the one narrow-width collapse.
- OverlayNav: data-driven pane nav — persistent rail on wide, a single dropdown
riding the titlebar strip on narrow; Settings and Command Center adopt it, and
the mobile dropdown carries the same section icons as the rail. Fixes narrow
vertical centering, redundant mobile section titles, gateway-status wrap, and
Panel master/detail stacking.
- OverlayIconButton is now the titlebar ghost button, matching the close X at
every size. Settings sub-view nav opens section + sub-view in one navigate so
API-keys/accounts actually open on narrow.
- Settings > Model: cube icon (was the {} namespace glyph) and a DOM-shaped
skeleton in place of the centered spinner.
- Command palette / session switcher clear the macOS traffic lights on small
screens.
- Prettier/eslint sweep across the touched files.
22 lines
601 B
TypeScript
22 lines
601 B
TypeScript
import { normalize } from '@/lib/text'
|
|
import type { SessionInfo } from '@/types/hermes'
|
|
|
|
import { sessionTitle } from './chat-runtime'
|
|
import { sessionSourceSearchTerms } from './session-source'
|
|
|
|
export function sessionMatchesSearch(session: SessionInfo, query: string): boolean {
|
|
const needle = normalize(query)
|
|
|
|
if (!needle) {
|
|
return true
|
|
}
|
|
|
|
return [
|
|
session.id,
|
|
session._lineage_root_id ?? '',
|
|
sessionTitle(session),
|
|
session.preview ?? '',
|
|
session.cwd ?? '',
|
|
...sessionSourceSearchTerms(session.source)
|
|
].some(value => value.toLowerCase().includes(needle))
|
|
}
|