feat(memory): dedicated Memory screen (moved out of System tab) (#835)
* feat(memory): dedicated Memory screen — providers, builtin files & reset (moved from System tab) * feat(memory): move self-improvement & learning activity section from System tab to Memory screen * fix(memory): remove top padding, single-line reset buttons, providers spacing * fix(memory): tighten provider card padding * fix(memory): distinct AutoStories icon for Memory tab * chore: ignore local debug apk * feat(ui): fresh icon set for drawer screens * feat(ui): custom Neurology icon for Memory tab * fix(ui): theme-driven fill for NeurologyIcon (checkColorLiterals) The custom Neurology vector used SolidColor(Color.Black), tripping the hardcoded-color guard (issue #622). The fill only contributes alpha — Icon()'s tint replaces the RGB at draw time, mirroring Material's own icon set — so the literal belongs in theme/ like every other hardcoded color: new IconDefaultFill token, scoped there by the guard's design. --------- Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
fd5d851405
commit
7d00d7b81b
13 files changed
+764
-313
No files matched your search
@@ -3,7 +3,6 @@ package com.m57.hermescontrol
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.compose.material.icons.Icons
|
||||
import androidx.compose.material.icons.automirrored.filled.Chat
|
||||
import androidx.compose.material.icons.automirrored.filled.ListAlt
|
||||
import androidx.compose.material.icons.filled.AccountBalanceWallet
|
||||
import androidx.compose.material.icons.filled.AccountCircle
|
||||
import androidx.compose.material.icons.filled.BarChart
|
||||
@@ -11,23 +10,27 @@ import androidx.compose.material.icons.filled.Bolt
|
||||
import androidx.compose.material.icons.filled.Build
|
||||
import androidx.compose.material.icons.filled.Cloud
|
||||
import androidx.compose.material.icons.filled.Code
|
||||
import androidx.compose.material.icons.filled.Dashboard
|
||||
import androidx.compose.material.icons.filled.Devices
|
||||
import androidx.compose.material.icons.filled.Dns
|
||||
import androidx.compose.material.icons.filled.EmojiEvents
|
||||
import androidx.compose.material.icons.filled.Extension
|
||||
import androidx.compose.material.icons.filled.Folder
|
||||
import androidx.compose.material.icons.filled.History
|
||||
import androidx.compose.material.icons.filled.HistoryEdu
|
||||
import androidx.compose.material.icons.filled.Info
|
||||
import androidx.compose.material.icons.filled.Inventory2
|
||||
import androidx.compose.material.icons.filled.Key
|
||||
import androidx.compose.material.icons.filled.Memory
|
||||
import androidx.compose.material.icons.filled.Power
|
||||
import androidx.compose.material.icons.filled.Psychology
|
||||
import androidx.compose.material.icons.filled.Schedule
|
||||
import androidx.compose.material.icons.filled.Sensors
|
||||
import androidx.compose.material.icons.filled.Settings
|
||||
import androidx.compose.material.icons.filled.ViewKanban
|
||||
import androidx.compose.material.icons.filled.Webhook
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.navigation3.runtime.NavKey
|
||||
import com.m57.hermescontrol.ui.common.NeurologyIcon
|
||||
import com.m57.hermescontrol.ui.achievements.AchievementsScreen as AchievementsScreenContent
|
||||
import com.m57.hermescontrol.ui.analytics.AnalyticsScreen as AnalyticsScreenContent
|
||||
import com.m57.hermescontrol.ui.billing.BillingScreen as BillingScreenContent
|
||||
@@ -41,6 +44,7 @@ import com.m57.hermescontrol.ui.kanban.KanbanScreen as KanbanScreenContent
|
||||
import com.m57.hermescontrol.ui.keys.KeysScreen as KeysScreenContent
|
||||
import com.m57.hermescontrol.ui.logs.LogsScreen as LogsScreenContent
|
||||
import com.m57.hermescontrol.ui.mcp.McpServersScreen as McpServersScreenContent
|
||||
import com.m57.hermescontrol.ui.memory.MemoryScreen as MemoryScreenContent
|
||||
import com.m57.hermescontrol.ui.model.ModelScreen as ModelScreenContent
|
||||
import com.m57.hermescontrol.ui.pairing.PairingScreen as PairingScreenContent
|
||||
import com.m57.hermescontrol.ui.plugins.PluginsScreen as PluginsScreenContent
|
||||
@@ -107,13 +111,13 @@ object ScreenRegistry {
|
||||
ScreenDefinition(
|
||||
KanbanScreen,
|
||||
R.string.screen_kanban,
|
||||
Icons.Filled.Dashboard,
|
||||
Icons.Filled.ViewKanban,
|
||||
DrawerSection.AUTOMATE,
|
||||
) { sessionId, openDrawer -> KanbanScreenContent(onOpenDrawer = openDrawer) },
|
||||
ScreenDefinition(
|
||||
SkillsScreen,
|
||||
R.string.screen_skills,
|
||||
Icons.Filled.Extension,
|
||||
Icons.Filled.Inventory2,
|
||||
DrawerSection.CONFIGURE,
|
||||
) { sessionId, openDrawer -> SkillsScreenContent(onOpenDrawer = openDrawer) },
|
||||
ScreenDefinition(
|
||||
@@ -125,7 +129,7 @@ object ScreenRegistry {
|
||||
ScreenDefinition(
|
||||
PluginsScreen,
|
||||
R.string.screen_plugins,
|
||||
Icons.Filled.Memory,
|
||||
Icons.Filled.Extension,
|
||||
DrawerSection.CONFIGURE,
|
||||
) { sessionId, openDrawer -> PluginsScreenContent(onOpenDrawer = openDrawer) },
|
||||
ScreenDefinition(
|
||||
@@ -137,9 +141,15 @@ object ScreenRegistry {
|
||||
ScreenDefinition(
|
||||
McpServersScreen,
|
||||
R.string.screen_mcp_servers,
|
||||
Icons.Filled.Dashboard,
|
||||
Icons.Filled.Power,
|
||||
DrawerSection.CONFIGURE,
|
||||
) { sessionId, openDrawer -> McpServersScreenContent(onOpenDrawer = openDrawer) },
|
||||
ScreenDefinition(
|
||||
MemoryScreen,
|
||||
R.string.screen_memory,
|
||||
NeurologyIcon,
|
||||
DrawerSection.CONFIGURE,
|
||||
) { sessionId, openDrawer -> MemoryScreenContent(onOpenDrawer = openDrawer) },
|
||||
ScreenDefinition(
|
||||
ModelScreen,
|
||||
R.string.screen_models,
|
||||
@@ -161,7 +171,7 @@ object ScreenRegistry {
|
||||
ScreenDefinition(
|
||||
ChannelsScreen,
|
||||
R.string.screen_channels,
|
||||
Icons.AutoMirrored.Filled.ListAlt,
|
||||
Icons.Filled.Sensors,
|
||||
DrawerSection.CONFIGURE,
|
||||
) { sessionId, openDrawer -> ChannelsScreenContent(onOpenDrawer = openDrawer) },
|
||||
ScreenDefinition(
|
||||
@@ -179,7 +189,7 @@ object ScreenRegistry {
|
||||
ScreenDefinition(
|
||||
SystemScreen,
|
||||
R.string.screen_system,
|
||||
Icons.Filled.Info,
|
||||
Icons.Filled.Dns,
|
||||
DrawerSection.INSPECT,
|
||||
) { sessionId, openDrawer -> SystemScreenContent(onOpenDrawer = openDrawer) },
|
||||
ScreenDefinition(
|
||||
|
||||
Reference in new issue
Block a user