mirror of
https://github.com/wu736139669/hapi.git
synced 2026-11-07 01:21:37 +00:00
* android/protocol: carry hasConversationContent through the session projection The hub sends `hasConversationContent` on both `SessionSummary` and the full `Session`; the sidebar's empty-stub hiding (web `SessionList.tsx`) depends on it. Decode it on both wire models and project it through `toSessionSummary` exactly like shared/src/sessionSummary.ts does (`session.hasConversationContent ?? false`), so SSE upserts land with the same signal REST lists already carry. Optional-with-default keeps older hub payloads decodable. Co-Authored-By: Claude Code <noreply@anthropic.com> via [HAPI](https://hapi.run) Co-Authored-By: HAPI <noreply@hapi.run> * android: session-list sidebar parity — agent-session dedup, stub hiding, relevance search Port the web sidebar's list body to the Android session list: - Collapse duplicate views of one agent session (resume/reopen chains) into a single row — winner by active → selected → pin → recency — keyed on `flavor:agentSessionId` (web `getSessionDedupKey`). - Hide fresh auto-created "new session" stubs: inactive, conversation- less, no title signal and no agent id (web `isSidebarEmptySessionStub`); selected/active/pinned rows are never hidden. - Live search box with the web's relevance ranking (field weights, boundary + title-phrase bonuses, wildcard `*`/`?`, AND across terms) and a distinct no-results state. Pinned rows stay contiguous while searching. Pure logic lives in `SessionListFilters` / `SessionListSearch` (Kotlin objects, JVM-tested against the web reference cases); the ViewModel pipeline is visible → dedup+stub → canonical sort → search filter+rank. Co-Authored-By: Claude Code <noreply@anthropic.com> via [HAPI](https://hapi.run) Co-Authored-By: HAPI <noreply@hapi.run> * android: ru translations for session search parity Upstream landed values-ru after this stack's merge base; new strings need ru entries or :app:lintDebug fails with MissingTranslation. Co-Authored-By: Claude Code <noreply@anthropic.com> via [HAPI](https://hapi.run) Co-Authored-By: HAPI <noreply@hapi.run> * fix(android): preserve global pins in session search --------- Co-authored-by: Claude Code <noreply@anthropic.com> Co-authored-by: HAPI <noreply@hapi.run> Co-authored-by: weishu <twsxtd@gmail.com>