 gslzwhlandhermes-i18n
|
fdbd98af3e
|
Add Simplified Chinese (zh) localization (#901)
* feat: add Simplified Chinese (zh) localization
- Add complete values-zh/strings.xml (921 strings, all keys covered)
- Translate 107 hardcoded UI strings across 34 Kotlin files
- Add 简体中文 option to in-app language picker
- Terminology aligned with official Hermes dashboard zh translations
* fix: resource-ize hardcoded Chinese strings per review
Address Hy4ri's review on PR #901:
- Move 104 hardcoded Chinese UI strings to string resources
(English in values/strings.xml, Chinese in values-zh/strings.xml)
referenced via stringResource()
- SystemViewModel labels -> @StringRes + AndroidViewModel with
resource-based toast templates
- Make TodoTaskCardTest assertion locale-agnostic via getString()
- Update cookie tests to assert new host-agnostic session cookie
behavior (WiFi/Tailscale switch-safe)
- Session cookie mirroring to WILDCARD bucket survives host switches
* style: apply ktlintFormat per review
---------
Co-authored-by: hermes-i18n <hermes-i18n@localhost>
|
2026-08-15 11:33:43 +03:00 |
|
 M57andHy4ri
|
0018e5d172
|
feat(#617): skeleton loaders instead of bare spinner on list screens (#625)
Adds SkeletonListState to StateViews.kt — an animated shimmer
placeholder list whose geometry matches a typical list row (avatar circle
+ title line + subtitle line). The shimmer colors derive from
MaterialTheme.colorScheme.surfaceVariant (theme-aware, works on
light/dark/AMOLED/Material You). Sweeps horizontally via an
infiniteTransition tween — no new dependencies, pure Compose foundation
animations.
Wired SkeletonListState into 22 list-loading call sites across 22 screens:
skills, cron, plugins, mcp, toolsets, webhooks, system, sessions (x2),
config (x2 — list + YAMLEditor), model, profiles, keys, channels,
achievements, gateways, kanban, logs, analytics, providers,
processes, hub skills tab, installed skills tab (list branch).
Preserved LoadingState() (centered spinner) where the issue explicitly
calls for it:
- PairingScreen (one-shot auth flow)
- SkillEditorDialog / ModelPickerDialog / CronJobEditorDialog interiors
- SkillPreviewDialog and SkillEditorDialog inline-loading branches in
SkillsScreen.kt (lines 790, 914)
- InstalledSkillsTab dialog-interior branch (line 393)
SkeletonListState testTag: "skeleton_list_state".
Verified: ktlintCheck, assembleDebug, testDebugUnitTest all green locally.
Co-authored-by: Hy4ri <hy4ri@users.noreply.github.com>
|
2026-07-18 15:12:21 +03:00 |
|