Commit Graph

166 Commits

Author SHA1 Message Date
kutesir
bc55d27f45 Fix NL parser: fuzzy tomorrow matching + relative date offsets
Handles tommorow/tomorow/tomarrow misspellings. Adds "in N days",
"in N weeks", and "next week" recognition with numeric and word forms.
2026-05-29 10:23:50 +03:00
kutesir
dc99a3f1f0 fix: widget iOS 17 deployment target + register FloatingTabState
- Widget extension: 16.0 → 17.0 (containerBackground/widget API require 17)
- xcodegen re-run picks up FloatingTabState.swift (was on disk but
  not registered in project.pbxproj after previous xcodegen run)
2026-05-28 20:35:44 +03:00
kutesir
5e232f2d81 feat: add widget extension — small, medium, large
- KisaniCalWidget: 3 sizes sharing the app's design language
  Small: date badge + kisaniCAL. wordmark + task count
  Medium: badge + task list (3 items) + workout row
  Large: badge + full task list (6 items) + workout row

- WidgetDataStore (Shared/): lightweight Codable types for App Group
  UserDefaults cross-process data exchange

- WidgetBridge: TaskViewModel/WorkoutViewModel extensions that sync
  data into App Group and call WidgetCenter.reloadAllTimelines()

- ContentView: calls syncWidget() on appear and scene becoming active

- project.yml + entitlements updated; project regenerated via xcodegen
2026-05-28 19:48:01 +03:00
kutesir
05a579e2f7 feat: replace workout progress bar with dot-grid indicator
7 rows of dots fill left-to-right, top-to-bottom as sets complete.
Filled dots: AppColors.green solid. Empty: green at 12% opacity.
Also: strip emoji from completion banner, tighten copy.
2026-05-28 18:55:09 +03:00
kutesir
e06f15c585 fix: compact AddTaskSheet to 150pt detent, eliminating empty space
Sheet was 500pt tall with ~145pt of content, leaving ~355pt blank.
Dropping to height(150) makes the sheet hug its content and sit flush
above the keyboard like the reference design.
2026-05-28 09:57:41 +03:00
kutesir
ad8b6574fb redesign: replace full calendar grid with compact date badge on splash
88pt badge: accent month strip on top, large day number below.
Wordmark collapsed to single line — kisaniCAL. with orange dot.
2026-05-28 00:43:14 +03:00
kutesir
d33a3d0168 fix: resolve SplashView type-check timeout and DayCell redeclaration
Break SplashCalendarCard body into monthHeader/weekdayRow/dayGrid
computed vars and extract SplashWeekRow to help the type-checker.
Rename DayCell -> SplashDayCell to avoid collision with CalendarView.
2026-05-28 00:38:34 +03:00
kutesir
21bbde8980 fix: register SplashView.swift in Xcode project file
Add PBXFileReference, PBXBuildFile, Views group entry, and
PBXSourcesBuildPhase entry so Xcode compiles the new file.
2026-05-28 00:35:13 +03:00
kutesir
07bc2eee1c feat: add launch splash screen with calendar and kisaniCAL. wordmark
Calendar card animates in with spring, wordmark fades in 280ms later.
Splash fades out at 1.65s and is removed from the view tree at 2s.
2026-05-28 00:29:06 +03:00
kutesir
234ef622f4 fix: resolve Swift phase-1 init errors in WorkoutViewModel
Using self.programs on the RHS of activeSections assignment violated
Swift's two-phase init rule (self is partially initialized). Use local
`migrated` array instead, then assign programs and activeSections in
the correct order.
2026-05-28 00:08:38 +03:00
kutesir
b3f21769ec refactor(design): replace workout emoji icon with segmented section bar
Replace the emoji tile on CalendarWorkoutBlock and WorkoutSessionSheet
header with WorkoutSectionBar — a stack of N horizontal segments, one
per workout section. No emojis, no custom per-program images.
2026-05-28 00:00:46 +03:00
kutesir
e105af147d fix: migrate persisted gamified emojis on load
UserDefaults retained the old 🔥/💥 emojis from before the sample data
was cleaned. On init, replace those emojis in loaded programs and persist
the result so they don't reappear after restart.
2026-05-27 23:55:38 +03:00
kutesir
36191f616f refactor(design): remove gamification — replace emoji icons with progress ring
WorkoutTodayBanner: progress ring replaces emoji cell as the lead
visual. Card background is now surface/border, not blue-tinted.

StreakBannerView: strip gradient, dot trail, and "Don't break the
chain". Replace with clean number + 7-tick week bar.

ProgressRingCard: "Keep going 🔥" / "Workout complete! 🎉" removed;
replaced with "N sets remaining" / "All sets done".

Sample programs: 🔥 Shoulders & Arms -> 🔄, 💥 Full Body -> 🏋️.
Emoji picker: 🔥 replaced with 🫀 (heart/cardio) as last option.
2026-05-27 23:41:15 +03:00
kutesir
1b29fb996f feat(tasks): natural language task input with inline token highlighting
Replace full-form AddTaskSheet with a compact NL input sheet.
Type "meeting today at 1500" — the words "today" and "at 1500"
highlight inline in blue, the toolbar shows "Today, 15:00", and
the mic button becomes a submit arrow when the title is non-empty.

Parser handles: today/tomorrow, weekday names (mon–sun),
times as at 3pm / at 15:00 / at 1500 / 3:30pm.
Clean title strips the date tokens before saving.
Sheet uses height(500) detent so it floats above the keyboard.
2026-05-27 14:58:47 +03:00
kutesir
d7ec351dd4 fix(layout): fix rotation crash and improve iPad split view
iPadLayout was rendering TodayView without workoutVM, crashing with
a fatal EnvironmentObject error on any device where hSizeClass goes
.regular (iPad, iPhone Plus/Max in landscape). Rewrote to use proper
NavigationSplitView with List(selection:) driving the detail column.

Also caches calendarIcon as a static func + @State instead of
recomputing UIGraphicsImageRenderer on every body evaluation.
2026-05-27 14:01:34 +03:00
kutesir
f67429de0b Initial commit: KisaniCal iOS app
Task management, Eisenhower matrix, workout logging with persistence,
and calendar with 6 view modes (Month, List, Year, Week, 3 Day, Day).
Custom floating tab bar, dynamic calendar icon, and workout data seeded.
2026-05-27 02:09:44 +03:00