Redesign mobile time clock, add shortcuts, and improve account management.

Add iOS Shortcuts/Siri intents, local send-reminder notifications, stable
client picker with last-client defaults, account refresh/remove, and softer
session handling on unauthorized API responses.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-22 16:06:17 -04:00
parent 0b2d65a4e9
commit 06bc91ac13
33 changed files with 1844 additions and 320 deletions
+9 -4
View File
@@ -23,6 +23,7 @@ type LineItemEditorProps = {
onToggle: () => void;
onChange: (patch: Partial<EditableLineItem>) => void;
onRemove: () => void;
readOnly?: boolean;
};
export function LineItemEditor({
@@ -32,6 +33,7 @@ export function LineItemEditor({
onToggle,
onChange,
onRemove,
readOnly = false,
}: LineItemEditorProps) {
const { colors } = useAppTheme();
const hours = Number(item.hours) || 0;
@@ -39,12 +41,13 @@ export function LineItemEditor({
const amount = hours * rate;
const borderStyle = { borderTopColor: colors.border };
if (!expanded) {
if (!expanded || readOnly) {
return (
<Pressable
accessibilityRole="button"
onPress={onToggle}
style={({ pressed }) => [styles.row, borderStyle, pressed && styles.rowPressed]}
onPress={readOnly ? undefined : onToggle}
disabled={readOnly}
style={({ pressed }) => [styles.row, borderStyle, pressed && !readOnly && styles.rowPressed]}
>
<View style={styles.rowMain}>
<Text style={[styles.rowTitle, { color: colors.foreground }]} numberOfLines={1}>
@@ -57,7 +60,9 @@ export function LineItemEditor({
<Text style={[styles.rowAmount, { color: colors.foreground }]}>
{formatCurrency(amount, currency)}
</Text>
<Ionicons name="chevron-down" size={16} color={colors.mutedForeground} />
{!readOnly ? (
<Ionicons name="chevron-down" size={16} color={colors.mutedForeground} />
) : null}
</Pressable>
);
}