feat(ui): complete ABox app experience redesign (#10)
## Summary - rebuild the authenticated shell, device dashboard, device detail pages, scenes, activity timeline, account sheet, and settings experience - redesign infrared remote management and controls, including custom remotes, learn-state handling, slot isolation, and safe default content - add persisted theme controls with internal accent, color-style, and color-standard resolution while keeping dynamic color authoritative - add ABox profile defaults for the three exact gateway device names, editable starter scenes, and custom infrared remotes - persist real activity events for device commands, infrared actions, and scene execution - stabilize navigation and back behavior, including duplicate top-back protection and removal of the unfinished predictive-back option - update launcher icons and bilingual application name ## Verification - `:android:app:assembleDebug` - installed the debug APK on `emulator-5554` - manually exercised device detail navigation, settings/theme navigation, infrared management, activity records, and repeated back actions ## Notes - no automated test suite was run during the visual iteration cycle - `docs/superpowers/**` and local reference repositories are excluded from this PR Reviewed-on: #10 Co-authored-by: KremeCN <3265494849@qq.com>
This commit was merged in pull request #10.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<resources>
|
||||
<string name="app_name">ABox Manager</string>
|
||||
<string name="app_name">ABox Home</string>
|
||||
<string name="provider_selection_title">Choose a provider</string>
|
||||
<string name="provider_selection_description">Choose how this profile connects. Sessions, credentials, and local data stay isolated between providers.</string>
|
||||
<string name="provider_abox_name">ABox</string>
|
||||
@@ -82,9 +82,9 @@
|
||||
<string name="scene_section_other">Other Options & Appearance</string>
|
||||
|
||||
<!-- Add Buttons -->
|
||||
<string name="scene_add_trigger">+ Add Trigger</string>
|
||||
<string name="scene_add_condition">+ Add Condition</string>
|
||||
<string name="scene_add_action_btn">+ Add Action</string>
|
||||
<string name="scene_add_trigger">Add Trigger</string>
|
||||
<string name="scene_add_condition">Add Condition</string>
|
||||
<string name="scene_add_action_btn">Add Action</string>
|
||||
<string name="scene_add_action">Add</string>
|
||||
<string name="scene_save_action">Save Command</string>
|
||||
|
||||
@@ -104,10 +104,10 @@
|
||||
|
||||
<!-- Trigger Types & Dialog -->
|
||||
<string name="scene_dialog_add_trigger_title">Select Trigger Type</string>
|
||||
<string name="scene_trigger_type_time">⏰ Time / Schedule Trigger</string>
|
||||
<string name="scene_trigger_type_temp">🌡️ Temperature Threshold</string>
|
||||
<string name="scene_trigger_type_humidity">💧 Humidity Threshold</string>
|
||||
<string name="scene_trigger_type_device">🔌 Socket State Changed</string>
|
||||
<string name="scene_trigger_type_time">Time / Schedule Trigger</string>
|
||||
<string name="scene_trigger_type_temp">Temperature Threshold</string>
|
||||
<string name="scene_trigger_type_humidity">Humidity Threshold</string>
|
||||
<string name="scene_trigger_type_device">Socket State Changed</string>
|
||||
<string name="scene_trigger_time_label">Trigger Time (e.g. 07:30)</string>
|
||||
<string name="scene_trigger_temp_threshold">Temperature Threshold (°C)</string>
|
||||
<string name="scene_trigger_humidity_threshold">Humidity Threshold (%)</string>
|
||||
@@ -118,19 +118,19 @@
|
||||
|
||||
<!-- Condition Types & Dialog -->
|
||||
<string name="scene_dialog_add_condition_title">Select Condition</string>
|
||||
<string name="scene_condition_type_temp">🌡️ Temperature Range</string>
|
||||
<string name="scene_condition_type_humidity">💧 Humidity Range</string>
|
||||
<string name="scene_condition_type_socket">🔌 Current Socket Power</string>
|
||||
<string name="scene_condition_type_time_range">🕒 Active Time Range</string>
|
||||
<string name="scene_condition_type_temp">Temperature Range</string>
|
||||
<string name="scene_condition_type_humidity">Humidity Range</string>
|
||||
<string name="scene_condition_type_socket">Current Socket Power</string>
|
||||
<string name="scene_condition_type_time_range">Active Time Range</string>
|
||||
<string name="scene_condition_start_time">Start Time (e.g. 22:00)</string>
|
||||
<string name="scene_condition_end_time">End Time (e.g. 07:00)</string>
|
||||
|
||||
<!-- Action Types & Dialog -->
|
||||
<string name="scene_dialog_add_action_title">Select Action</string>
|
||||
<string name="scene_action_type_socket">🔌 Smart Socket Control</string>
|
||||
<string name="scene_action_type_virtual_remote">📺 Infrared Remote Button</string>
|
||||
<string name="scene_action_type_delay">⏱️ Delay / Buffer Timer</string>
|
||||
<string name="scene_action_type_notification">🔔 System Notification</string>
|
||||
<string name="scene_action_type_socket">Smart Socket Control</string>
|
||||
<string name="scene_action_type_virtual_remote">Infrared Remote Button</string>
|
||||
<string name="scene_action_type_delay">Delay / Buffer Timer</string>
|
||||
<string name="scene_action_type_notification">System Notification</string>
|
||||
<string name="scene_select_socket">Select Target Socket</string>
|
||||
<string name="scene_socket_power_state">Target Power State</string>
|
||||
<string name="scene_select_virtual_remote">Select Virtual Remote</string>
|
||||
@@ -144,8 +144,8 @@
|
||||
<string name="scene_action_socket">Socket [%1$s]: Set %2$s</string>
|
||||
<string name="scene_action_remote">Remote [%1$s]: Send %2$s</string>
|
||||
<string name="scene_action_infrared">Infrared [%1$s]: Slot %2$s</string>
|
||||
<string name="scene_action_delay">⏱️ Delay %1$d seconds</string>
|
||||
<string name="scene_action_notification">🔔 Notify: %1$s</string>
|
||||
<string name="scene_action_delay">Delay %1$d seconds</string>
|
||||
<string name="scene_action_notification">Notify: %1$s</string>
|
||||
|
||||
<!-- Scene: execution -->
|
||||
<string name="scene_execution_title">Execute Command</string>
|
||||
@@ -164,13 +164,13 @@
|
||||
<!-- Validation & dialog chips / placeholders -->
|
||||
<string name="scene_trigger_time_error">Invalid time format (use HH:mm, e.g. 07:30)</string>
|
||||
<string name="scene_condition_time_error">Invalid time format (use HH:mm, e.g. 22:00)</string>
|
||||
<string name="scene_chip_time">⏰ Schedule</string>
|
||||
<string name="scene_chip_temp">🌡️ Temperature</string>
|
||||
<string name="scene_chip_humidity">💧 Humidity</string>
|
||||
<string name="scene_chip_socket">🔌 Socket</string>
|
||||
<string name="scene_chip_remote">📺 Remote</string>
|
||||
<string name="scene_chip_delay">⏱️ Delay</string>
|
||||
<string name="scene_chip_notify">🔔 Notify</string>
|
||||
<string name="scene_chip_time">Schedule</string>
|
||||
<string name="scene_chip_temp">Temperature</string>
|
||||
<string name="scene_chip_humidity">Humidity</string>
|
||||
<string name="scene_chip_socket">Socket</string>
|
||||
<string name="scene_chip_remote">Remote</string>
|
||||
<string name="scene_chip_delay">Delay</string>
|
||||
<string name="scene_chip_notify">Notify</string>
|
||||
<string name="scene_chip_above">> Above</string>
|
||||
<string name="scene_chip_below">< Below</string>
|
||||
<string name="scene_chip_power_on">Turn ON</string>
|
||||
@@ -184,7 +184,7 @@
|
||||
<string name="scene_empty_triggers_hint">No triggers configured. Tap + below to add.</string>
|
||||
<string name="scene_empty_conditions_hint">No conditions configured. Tap + below to add.</string>
|
||||
<string name="scene_empty_actions_hint">No actions configured. Tap + below to add.</string>
|
||||
<string name="scene_summary_triggers_and_actions">⚡ %1$d triggers • %2$d actions</string>
|
||||
<string name="scene_summary_triggers_and_actions">%1$d triggers · %2$d actions</string>
|
||||
<string name="scene_summary_actions_only">%1$d actions</string>
|
||||
<string name="scene_exec_ready_hint">Tap the button below to run immediately</string>
|
||||
<string name="scene_exec_rerun">Re-run</string>
|
||||
@@ -259,4 +259,127 @@
|
||||
<string name="error_operation_failed">Operation failed. Please try again.</string>
|
||||
<string name="error_no_data">No sensor data available.</string>
|
||||
<string name="error_unknown">An unexpected error occurred.</string>
|
||||
|
||||
<!-- Interface settings -->
|
||||
<string name="settings_title">Interface settings</string>
|
||||
<string name="settings_style_section">Style</string>
|
||||
<string name="settings_renderer_label">Renderer</string>
|
||||
<string name="settings_renderer_description">Choose the interface renderer used by the app</string>
|
||||
<string name="settings_renderer_material3">Material</string>
|
||||
<string name="settings_renderer_miuix">Miuix</string>
|
||||
<string name="settings_theme_section">Theme</string>
|
||||
<string name="settings_theme_label">Theme mode</string>
|
||||
<string name="settings_theme_system">Follow system</string>
|
||||
<string name="settings_theme_light">Light</string>
|
||||
<string name="settings_theme_dark">Dark</string>
|
||||
<string name="settings_dynamic_color">Dynamic color</string>
|
||||
<string name="settings_dynamic_color_description">Generate interface colors from the system wallpaper</string>
|
||||
<string name="settings_surface_section">Surface effects</string>
|
||||
<string name="settings_blur">Blur effects</string>
|
||||
<string name="settings_blur_description">Enable background blur on supported screens</string>
|
||||
<string name="settings_navigation">Navigation style</string>
|
||||
<string name="settings_navigation_standard">Standard navigation</string>
|
||||
<string name="settings_navigation_floating">Floating navigation</string>
|
||||
<string name="settings_feedback_section">Interaction feedback</string>
|
||||
<string name="settings_haptics">Haptic feedback</string>
|
||||
<string name="settings_haptics_description">Provide subtle vibration feedback for actions</string>
|
||||
<string name="settings_accessibility_section">System accessibility</string>
|
||||
<string name="settings_accessibility_card_title">Follow system accessibility settings</string>
|
||||
<string name="settings_accessibility_description">Animation, font size, contrast and other accessibility options are controlled by the system.</string>
|
||||
<string name="settings_error_save">Unable to save interface settings. Try again.</string>
|
||||
<string name="settings_style_entry">Interface style</string>
|
||||
<string name="settings_theme_entry">Theme</string>
|
||||
<string name="settings_theme_entry_description">Colors, brightness, effects and scale</string>
|
||||
<string name="settings_theme_detail_title">Theme</string>
|
||||
<string name="settings_renderer_primary">Material</string>
|
||||
<string name="settings_renderer_secondary">Miuix</string>
|
||||
<string name="settings_navigation_floating_description">Use a detached navigation surface above page content</string>
|
||||
<string name="settings_accent_label">Accent color</string>
|
||||
<string name="settings_scale">Interface scale</string>
|
||||
<string name="settings_scale_description">Adjust the size of interface elements</string>
|
||||
<string name="settings_color_style">Color style</string>
|
||||
<string name="settings_color_style_tonal">Tonal Spot</string>
|
||||
<string name="settings_color_style_expressive">Expressive</string>
|
||||
<string name="settings_color_style_fidelity">Fidelity</string>
|
||||
<string name="settings_color_standard">Color standard</string>
|
||||
<string name="settings_color_standard_2021">Spec 2021</string>
|
||||
<string name="settings_color_standard_2025">Spec 2025</string>
|
||||
<string name="settings_liquid_glass">Liquid glass</string>
|
||||
<string name="settings_liquid_glass_description">Apply a translucent glass surface to floating navigation</string>
|
||||
<string name="settings_predictive_back">Predictive back gesture</string>
|
||||
<string name="settings_predictive_back_description">Preview the destination while swiping back</string>
|
||||
<string name="settings_tap_to_choose">Tap to choose</string>
|
||||
<string name="settings_requires_android_13">Requires Android 13 or later</string>
|
||||
<string name="settings_requires_floating_navigation">Enable floating navigation first</string>
|
||||
|
||||
<!-- Redesigned device center and account surfaces -->
|
||||
<string name="device_center_heading">Connected devices</string>
|
||||
<string name="device_center_description">Select a device to control it or view its current state</string>
|
||||
<string name="device_center_loading">Loading devices</string>
|
||||
<string name="device_center_empty_title">No manageable devices configured</string>
|
||||
<string name="device_center_empty_description">Configure a gateway device name and type first</string>
|
||||
<string name="device_center_configure">Configure device</string>
|
||||
<string name="device_center_error">Unable to load devices</string>
|
||||
<string name="device_center_configure_title">Configure device</string>
|
||||
<string name="device_center_device_name">Device name</string>
|
||||
<string name="device_status_unavailable">Status unavailable</string>
|
||||
<string name="device_status_offline">Offline</string>
|
||||
<string name="device_status_switching">Switching</string>
|
||||
<string name="device_status_awaiting_confirmation">Awaiting confirmation</string>
|
||||
<string name="device_status_on">On</string>
|
||||
<string name="device_status_off">Off</string>
|
||||
<string name="device_status_confirmed">State confirmed</string>
|
||||
<string name="device_status_waiting_first_confirmation">Waiting for first confirmation</string>
|
||||
<string name="device_open_control_panel">Control panel</string>
|
||||
<string name="device_sensor_subtitle">Environment sensor · Read-only monitoring</string>
|
||||
<string name="device_live_reading">Live device reading</string>
|
||||
<string name="device_details">Details</string>
|
||||
<string name="device_metric_no_data">No data</string>
|
||||
<string name="device_infrared_subtitle">Infrared controller · %1$d virtual remotes</string>
|
||||
<string name="device_infrared_mounted">Mounted: %1$s</string>
|
||||
<string name="device_infrared_no_remotes">No remotes</string>
|
||||
<string name="device_infrared_slots">Hardware slots %1$d/%2$d</string>
|
||||
<string name="device_infrared_slots_unavailable">Slot state unavailable</string>
|
||||
<string name="device_infrared_center">Infrared center</string>
|
||||
<string name="account_current">Current account</string>
|
||||
<string name="account_greeting">Hello, %1$s</string>
|
||||
<string name="account_connection_method">Connection method</string>
|
||||
<string name="account_interface_settings">Theme</string>
|
||||
<string name="account_interface_settings_desc">Colors, brightness, effects and scale</string>
|
||||
<string name="account_logout">Sign out</string>
|
||||
<string name="account_logout_desc">End the current connection and return to sign-in</string>
|
||||
<string name="account_logout_confirm">Sign out of the current session?</string>
|
||||
<string name="scene_create_sheet_title">New command</string>
|
||||
<string name="scene_create_sheet_description">Choose how the command starts</string>
|
||||
<string name="scene_create_manual_description">Run manually for frequently used device combinations.</string>
|
||||
<string name="scene_create_automatic_description">Run automatically from time, device, or sensor conditions.</string>
|
||||
<string name="socket_detail_subtitle">Smart socket · confirmed control</string>
|
||||
<string name="socket_name_settings">Set socket device name</string>
|
||||
<string name="sensor_name_settings">Set sensor device name</string>
|
||||
<string name="gateway_device_name">Gateway device name</string>
|
||||
<string name="gateway_device_name_socket_desc">Used to match and control the gateway device. It must exactly match the gateway name.</string>
|
||||
<string name="gateway_device_name_sensor_desc">Used to match and read the gateway device. It must exactly match the gateway name.</string>
|
||||
<string name="action_save_device_name">Save device name</string>
|
||||
<string name="socket_direct_control">Direct control</string>
|
||||
<string name="socket_confirmation_hint">A command is confirmed only after the gateway reports the resulting state. Refresh while confirmation is pending.</string>
|
||||
<string name="sensor_current_readings">Current readings</string>
|
||||
<string name="sensor_monitoring_title">Live environment monitoring</string>
|
||||
<string name="sensor_monitoring_description">Values come directly from the current device. Missing metrics remain absent; no estimates or placeholders are used.</string>
|
||||
<string name="infrared_center_title">Infrared remote center</string>
|
||||
<string name="infrared_settings_title">Infrared device settings</string>
|
||||
<string name="infrared_settings_subtitle">Remotes, slots, and gateway device name</string>
|
||||
<string name="infrared_manage_title">Virtual remotes</string>
|
||||
<string name="infrared_remote_count">%1$d remotes</string>
|
||||
<string name="infrared_add_remote">Add remote</string>
|
||||
<string name="infrared_hardware_slots_title">Hardware slots</string>
|
||||
<string name="infrared_gateway_name_title">Gateway device name</string>
|
||||
<string name="infrared_gateway_name_desc">Used to match the infrared controller in the gateway. It must exactly match the gateway name.</string>
|
||||
<string name="infrared_save_name">Save device name</string>
|
||||
<string name="infrared_edit_remote">Edit remote</string>
|
||||
<string name="infrared_move_remote">Reorder remote</string>
|
||||
<string name="infrared_move_up">Move up</string>
|
||||
<string name="infrared_move_down">Move down</string>
|
||||
<string name="infrared_delete_remote">Delete remote</string>
|
||||
<string name="infrared_layout">Panel layout</string>
|
||||
<string name="infrared_transmission_mode">Transmission mode</string>
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user