mirror of
https://github.com/wu736139669/hapi.git
synced 2026-11-07 01:21:37 +00:00
Replace the single-column settings screen with a category directory whose rows come from a declarative catalog (SettingsHubCatalog: one entry = route + title + summary + icon + visibility lambda), so adding a category later (Display, Chat, Voice, Machines) is a list element, not layout surgery. Mirrors the web settings IA at the category level. - General subpage (settings/general) inherits the uncategorized sections: Appearance (theme + Material You), Language, About (versions + hub health). Zero behavior change per item. - The owner-only Insights section dissolves into hub-level rows: Usage/Storage render only for the owner (same ns=default gate) and route to their existing dashboards, matching the web's owner-only nav categories (SettingsNav OWNER_ONLY_CATEGORIES). - Flat settings/... route pattern with per-hub ViewModelHolder, same as the existing usage/storage precedents; back from a subpage lands on the hub. The hub's holder passes probeHealth=false so opening the hub itself fires no /health request; the General holder keeps it. - Previews: hub owner/non-owner gating + General body. JVM tests pin catalog order, the owner gate, route uniqueness, and row summaries. - Strings: settings_category_general(+_summary) in en/ru/zh; relocate three zh keys (chat_tool_resolved, chat_plan_implement, chat_plan_continue) that had drifted to the file tail and broke the three-language key order (KEYSYNC) — pure moves, values untouched. via [HAPI](https://hapi.run) Co-authored-by: Claude Code <noreply@anthropic.com> Co-authored-by: HAPI <noreply@hapi.run>