feat: implement storyforge mobile v4 shell

This commit is contained in:
kris
2026-03-22 10:39:53 +08:00
parent 35c97ffe4d
commit fe07a5f212
8 changed files with 3396 additions and 325 deletions

View File

@@ -15,7 +15,9 @@ import kotlinx.coroutines.launch
import retrofit2.HttpException
enum class StoryForgeTab {
Explore,
Overview,
Benchmark,
Agent,
Production,
Mine
}
@@ -53,7 +55,7 @@ data class StoryForgeUiState(
val originalHost: String = "",
val isAuthenticated: Boolean = false,
val isApproved: Boolean = false,
val currentTab: StoryForgeTab = StoryForgeTab.Explore,
val currentTab: StoryForgeTab = StoryForgeTab.Overview,
val busy: Boolean = false,
val generateBusy: Boolean = false,
val statusMessage: String = "准备连接 StoryForge",
@@ -847,7 +849,7 @@ class StoryForgeViewModel(application: Application) : AndroidViewModel(applicati
_state.value = state.value.copy(
latestJob = job,
latestJobId = job.id,
currentTab = StoryForgeTab.Explore
currentTab = StoryForgeTab.Benchmark
)
refreshWorkspace()
startJobPolling(job.id)

View File

@@ -13,51 +13,82 @@ import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.sp
private val LightColors = lightColorScheme(
primary = Color(0xFF0E4B43),
secondary = Color(0xFF9C6427),
tertiary = Color(0xFF2A5B8A),
background = Color(0xFFF7F3EC),
surface = Color(0xFFFFFCF8),
primary = Color(0xFF4E89F5),
secondary = Color(0xFF87AEEB),
tertiary = Color(0xFF17283A),
background = Color(0xFFF2F7FF),
surface = Color(0xFFFFFFFF),
surfaceVariant = Color(0xFFEAF2FF),
onPrimary = Color.White,
onSecondary = Color.White,
onBackground = Color(0xFF1A1713),
onSurface = Color(0xFF1A1713)
onBackground = Color(0xFF152332),
onSurface = Color(0xFF152332),
outline = Color(0xFFC9D8EA)
)
private val DarkColors = darkColorScheme(
primary = Color(0xFF7FD6C7),
secondary = Color(0xFFFFC27A),
tertiary = Color(0xFF98C7FF),
background = Color(0xFF101714),
surface = Color(0xFF18211D),
onPrimary = Color(0xFF062D29),
onSecondary = Color(0xFF4B2B00),
onBackground = Color(0xFFF0E8DB),
onSurface = Color(0xFFF0E8DB)
primary = Color(0xFF8CB7FF),
secondary = Color(0xFF7EA5DE),
tertiary = Color(0xFFE6EEF9),
background = Color(0xFF101823),
surface = Color(0xFF162131),
surfaceVariant = Color(0xFF1D2B3D),
onPrimary = Color(0xFF0C1B30),
onSecondary = Color(0xFF0C1B30),
onBackground = Color(0xFFEAF1FB),
onSurface = Color(0xFFEAF1FB),
outline = Color(0xFF35506F)
)
private val AppTypography = Typography(
headlineLarge = TextStyle(
fontFamily = FontFamily.Serif,
fontFamily = FontFamily.SansSerif,
fontWeight = FontWeight.Bold,
fontSize = 34.sp,
lineHeight = 40.sp
fontSize = 30.sp,
lineHeight = 36.sp
),
headlineMedium = TextStyle(
fontFamily = FontFamily.SansSerif,
fontWeight = FontWeight.Bold,
fontSize = 26.sp,
lineHeight = 32.sp
),
headlineSmall = TextStyle(
fontFamily = FontFamily.Serif,
fontFamily = FontFamily.SansSerif,
fontWeight = FontWeight.SemiBold,
fontSize = 22.sp,
lineHeight = 28.sp
),
titleLarge = TextStyle(
fontFamily = FontFamily.SansSerif,
fontWeight = FontWeight.Bold,
fontSize = 20.sp,
lineHeight = 26.sp
),
bodyLarge = TextStyle(
fontFamily = FontFamily.SansSerif,
fontSize = 16.sp,
lineHeight = 24.sp
),
bodyMedium = TextStyle(
fontFamily = FontFamily.SansSerif,
fontSize = 14.sp,
lineHeight = 21.sp
),
bodySmall = TextStyle(
fontFamily = FontFamily.SansSerif,
fontSize = 12.sp,
lineHeight = 18.sp
),
labelLarge = TextStyle(
fontFamily = FontFamily.SansSerif,
fontWeight = FontWeight.Medium,
fontSize = 14.sp
),
labelSmall = TextStyle(
fontFamily = FontFamily.SansSerif,
fontWeight = FontWeight.Medium,
fontSize = 11.sp
)
)