55 lines
3.1 KiB
Markdown
55 lines
3.1 KiB
Markdown
# Codex Report
|
||
|
||
## Summary
|
||
- Implemented Apple Calendar–style month + list sync with vertical month paging, unified German locale + Monday-first calendar config, and improved year view behavior.
|
||
- Fixed multiple build warnings/errors related to Swift 6 actor isolation and AVAsset deprecation.
|
||
- Added dynamic year title that updates based on which year occupies most of the year view.
|
||
|
||
## Key Behavior Changes
|
||
- Month view: vertical paging, large top-left month header (Month + Year), list syncs with calendar selection.
|
||
- Year view: top-left large year title follows scroll position; scrolls to selected year on entry.
|
||
- “Heute” button added to jump to today.
|
||
- Calendar list now scrolls across all entries (not just current month) to enable list-mode feel.
|
||
|
||
## Major File Changes
|
||
- `videorem/ContentView.swift`
|
||
- Reworked month view to vertical paging `ScrollView` with `.scrollTargetBehavior(.paging)` and `scrollPosition`.
|
||
- Added `monthScrollID`, `yearTitle` tracking, `YearCenterPreferenceKey`, and year title UI logic.
|
||
- Added `setupMonthPages(focusDate:)` and ensured month ranges include selected month/year.
|
||
- Fixed month view not snapping back to today when coming from year view.
|
||
- Adjusted year view to use `viewModel.selectedDate` for scroll anchoring and title.
|
||
- `videorem/CalendarConfig.swift` (new)
|
||
- Centralized locale/calendar config (`de_DE`, Monday-first) and formatters.
|
||
- `videorem/Date+Extensions.swift`
|
||
- Switched to shared formatters from `CalendarConfig`.
|
||
- `videorem/CalendarViewModel.swift`
|
||
- Uses `CalendarConfig.calendar` and starts `selectedDate` at start of month.
|
||
- `videorem/MonthCalendarView.swift`
|
||
- Accepts `monthDate` and `selectedDay` for correct highlighting across months.
|
||
- `videorem/MonthDayCell.swift`, `videorem/YearMonthCell.swift`, `videorem/YearCalendarView.swift`, `videorem/VideoListView.swift`, `videorem/HomeView.swift`
|
||
- Unified calendar usage; bumped typography sizes for legibility.
|
||
|
||
## Build Fixes
|
||
- `videorem/VideoListRow.swift`
|
||
- Replaced `AVAsset(url:)` with `AVURLAsset(url:)`.
|
||
- `videorem/VideoRecorderView.swift`
|
||
- Marked `VideoRecorder` as `@MainActor`.
|
||
- `captureSession` is `nonisolated`, start running on a dedicated `sessionQueue`.
|
||
- Timer updates `currentDuration` on main actor; captured `recordingStartTime` outside Sendable closure.
|
||
|
||
## Open Issues / Known Follow-Ups
|
||
- Confirm year view title updates correctly while scrolling (uses geometry preference).
|
||
- Verify month list + calendar sync feels right for months with no entries (current list only shows dates with entries).
|
||
- Potential UI polish: sticky year headers, event list density like Apple Calendar.
|
||
|
||
## Commands Run
|
||
- `rg --files`
|
||
- `rg -n ...`
|
||
- `sed -n '...' ...`
|
||
- `xcodebuild` failed due to CoreSimulator/DerivedData permission issues in sandbox.
|
||
|
||
## Notes for Next Session
|
||
- If year view still misaligns, check `YearCenterPreferenceKey` usage and `coordinateSpace("yearScroll")` in `ContentView`.
|
||
- If month view still jumps to today, check `setupMonthPages(focusDate:)` and ensure `viewModel.selectedDate` is set before switching modes.
|
||
- For builds, run locally with proper permissions or rerun `xcodebuild` with escalated privileges.
|