feat: persist draft messages and UI refinements

- Add dedicated draft-store with AsyncStorage persistence for drafts
  that survive app refresh/crash
- Reduce markdown bold weight from bold to medium (500)
- Various theme and component style updates
- Server bootstrap and config improvements

🤖 Generated with [Claude Code](https://claude.com/claude-code)
This commit is contained in:
Mohamed Boudra
2026-01-14 10:07:54 +07:00
parent 34a49c147f
commit 70e2d66dd5
65 changed files with 2466 additions and 570 deletions
@@ -251,7 +251,7 @@ function SidebarContent({
color={
activeTab === "changes"
? theme.colors.foreground
: theme.colors.mutedForeground
: theme.colors.foregroundMuted
}
/>
<Text
@@ -272,7 +272,7 @@ function SidebarContent({
color={
activeTab === "files"
? theme.colors.foreground
: theme.colors.mutedForeground
: theme.colors.foregroundMuted
}
/>
<Text
@@ -291,7 +291,7 @@ function SidebarContent({
)}
{isMobile && (
<Pressable onPress={onClose} style={styles.closeButton}>
<X size={18} color={theme.colors.mutedForeground} />
<X size={18} color={theme.colors.foregroundMuted} />
</Pressable>
)}
</View>
@@ -352,14 +352,14 @@ const styles = StyleSheet.create((theme) => ({
top: 0,
right: 0,
bottom: 0,
backgroundColor: theme.colors.background,
backgroundColor: theme.colors.surface0,
overflow: "hidden",
},
desktopSidebar: {
position: "relative",
borderLeftWidth: 1,
borderLeftColor: theme.colors.border,
backgroundColor: theme.colors.background,
backgroundColor: theme.colors.surface0,
},
resizeHandle: {
position: "absolute",
@@ -396,12 +396,12 @@ const styles = StyleSheet.create((theme) => ({
borderRadius: theme.borderRadius.md,
},
tabActive: {
backgroundColor: theme.colors.muted,
backgroundColor: theme.colors.surface2,
},
tabText: {
fontSize: theme.fontSize.sm,
fontWeight: theme.fontWeight.normal,
color: theme.colors.mutedForeground,
color: theme.colors.foregroundMuted,
},
tabTextActive: {
color: theme.colors.foreground,
@@ -430,6 +430,6 @@ const styles = StyleSheet.create((theme) => ({
padding: theme.spacing[2],
},
viewToggleActive: {
backgroundColor: theme.colors.muted,
backgroundColor: theme.colors.surface2,
},
}));