All files / shared types.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141                                                                                                                                                                                                                                                                                         
export type TimerPhase = 'focus' | 'shortBreak' | 'longBreak'
 
export type TimerStatus = 'idle' | 'running' | 'paused' | 'completed'
 
export type CompletionReason = 'completed' | 'skipped' | 'abandoned' | 'needs-confirmation'
 
export type ThemePreference = 'system' | 'light' | 'dark'
 
export interface AppSettings {
  focusMinutes: number
  shortBreakMinutes: number
  longBreakMinutes: number
  longBreakInterval: number
  autoStartBreaks: boolean
  autoStartFocus: boolean
  notificationsEnabled: boolean
  soundEnabled: boolean
  openAtLogin: boolean
  startToTray: boolean
  closeToTray: boolean
  themePreference: ThemePreference
}
 
export interface Task {
  id: string
  title: string
  sortOrder: number
  completedAt: string | null
  createdAt: string
  updatedAt: string
}
 
export interface TaskBoardItem {
  id: string
  title: string
  sortOrder: number
  completedAt: string | null
  createdAt: string
  updatedAt: string
  focusMinutes: number
  completedPomodoros: number
}
 
export interface TaskBoardCounts {
  all: number
  active: number
  completed: number
}
 
export interface TaskBoardSnapshot {
  counts: TaskBoardCounts
  activeItems: TaskBoardItem[]
  completedItems: TaskBoardItem[]
}
 
export interface TimerSession {
  id: string
  phase: TimerPhase
  taskId: string | null
  startedAt: string
  endedAt: string | null
  durationMs: number
  actualDurationMs: number | null
  completed: boolean
  completionReason: CompletionReason | null
  createdAt: string
  updatedAt: string
}
 
export interface TimerState {
  status: TimerStatus
  phase: TimerPhase
  taskId: string | null
  startedAt: number | null
  targetEndAt: number | null
  durationMs: number
  remainingMs: number
  focusCount: number
  unboundFocusCount: number
  lastFocusTaskId: string | null
  sessionId: string | null
  updatedAt: number
}
 
export interface TimerSnapshot extends TimerState {
  elapsedMs: number
  progress: number
}
 
export interface TodayStats {
  focusMinutes: number
  shortBreakMinutes: number
  longBreakMinutes: number
  completedPomodoros: number
  completedTasks: number
}
 
export interface MonthStatsSummary {
  focusMinutes: number
  completedPomodoros: number
  completedTasks: number
  shortBreakMinutes: number
  longBreakMinutes: number
}
 
export interface CalendarDayStats extends MonthStatsSummary {
  date: string
  isFuture: boolean
  taskFocusMinutes: TaskFocusPoint[]
  unboundFocusMinutes: number
}
 
export interface MonthStats {
  year: number
  month: number
  summary: MonthStatsSummary
  days: CalendarDayStats[]
  maxFocusMinutes: number
}
 
export interface TaskFocusPoint {
  taskId: string
  title: string
  minutes: number
  status: 'active' | 'completed'
}
 
export interface FocusStats {
  today: TodayStats
  hourlyFocusMinutes: number[]
  taskFocusMinutes: TaskFocusPoint[]
  unboundFocusMinutes: number
}
 
export interface AppEvent {
  id: string
  type: string
  payload: Record<string, unknown>
  createdAt: string
}