7.0 KiB
7.0 KiB
Session Handoff: Dependency Updates & ESLint Cleanup
Date: 2026-03-15 Session Focus: Complete Quasar v1→v2 migration, Appwrite SDK v14→v23 update, ESLint flat config cleanup Status: BUILD PASSING — 0 errors, 0 warnings
What Was Accomplished
From prior sessions (captured in archived handoffs):
- Auth flow refactored to passwordless (magic link + OTP), OAuth removed
- Google/Discord OAuth components deleted
- About dialog with version info added →
src/components/LeftDrawer.vue quasar.config.js→quasar.config.ts(ESM TypeScript)"type": "module"added topackage.json- Yarn 1.x → Yarn 4.13.0
- ESLint legacy
.eslintrc.cjs→ flat configeslint.config.js - QCalendar app extension removed → direct npm package import
- Boot/router/store wrappers updated to
#q-app/wrappersimports - Appwrite SDK updated v14.0.1 → v23.0.0
globalspackage installed; browser + ES2021 globals added to ESLint config
This session (build cleanup — all 30 TS errors + 12 ESLint issues resolved):
TypeScript as unknown as casts (Appwrite v23 DefaultDocument no longer overlaps domain types):
src/stores/boat.ts:36—as unknown as Boat[]src/stores/interval.ts:95,113,127—as unknown as Intervalsrc/stores/intervalTemplate.ts— map callback cast +as unknown as IntervalTemplate(3 places)src/stores/reservation.ts:65,80,247—as unknown as Reservationsrc/stores/task.ts:53,65,77,109,132—as unknown as Task[],TaskTag[],SkillTag[],Task
.id → .$id fixes (Appwrite uses $id, not id):
src/components/boat/BoatPreviewComponent.vue:7src/components/scheduling/boat/BoatScheduleTableComponent.vue:54src/components/task/TaskListComponent.vue:4src/pages/schedule/ManageCalendar.vue:40src/stores/sampledata/schedule.ts:19,29,138— alsoid:→$id:in object literals
defineProps import conflict (auto-imported in <script setup>, cannot also be explicitly imported):
src/components/task/TaskCardComponent.vue:20— removed import; also removedsubtaskstemplate refs (not in Task type)src/components/task/TaskTableComponent.vue:215— removeddefinePropsfrom import
ESLint fixes:
eslint.config.js:52—process.env.NODE_ENV === 'production' ? 'error' : 'off'→'off'(process not defined in .js ESLint globals)src/components/ResourceScheduleViewerComponent.vue:173— removed|| undefined(always truthy)src/components/ResourceScheduleViewerComponent.vue:177—catch (e)→catch { }(unused binding)src/components/ResourceScheduleViewerComponent.vue:237-247— removed unusedeslint-disable-next-linecommentssrc/components/scheduling/boat/BoatScheduleTableComponent.vue:116—NodeJS.Timeout→ReturnType<typeof setInterval>src/components/scheduling/boat/BoatScheduleTableComponent.vue:129— ternary as statement →if/else; also destructured{ direction }to fix unusedeventhintsrc/pages/LoginPage.vue:131—catch (e)→catch { }
Other fixes:
src-pwa/register-service-worker.ts— installedregister-service-workerpackage (was missing from package.json)src/stores/sampledata/schedule.ts:50—template.blocks→template.timeTuples(property was renamed)src/stores/sampledata/schedule.ts:145— removedreservationDate(not in Reservation type)src/stores/intervalTemplate.ts:27—d.timeTuplecast viaas unknown as { timeTuple: string[] }src/stores/intervalTemplate.ts:82—response.timeTuplecast viaas unknown as { timeTuple: string[] }src/components/scheduling/boat/CalendarHeaderComponent.vue— removedgetWeekdaySkips(removed from qcalendar API);createDayListnow takesweekdaysdirectly as 4th arg; removedweekdaySkipscomputed
Decisions Made
as unknown as Typepattern — correct approach for Appwrite v23DefaultDocumentcasts; v23 madeDefaultDocumentstrict, no longer assignable to domain types without double-cast — STATUS: CONFIRMEDgetWeekdaySkipsremoved from qcalendar —createDayListnow acceptsweekdaysarray directly as 4th param — STATUS: CONFIRMED (verified from ESM source)subtasksremoved from TaskCardComponent template —Tasktype has nosubtasksfield; feature was dead code — STATUS: ASSUMED safe (see open question)no-debugger: 'off'— hardcoded instead ofprocess.env.NODE_ENVconditional becauseprocessis not in ESLint globals for.jsfiles — STATUS: CONFIRMED
Key Numbers
- TS errors at session start: 30 (in 14 files)
- ESLint errors at session start: 12 (6 errors, 6 warnings)
- TS errors at session end: 0
- ESLint errors at session end: 0
- Packages added:
register-service-worker
Files Modified This Session
| File | Change |
|---|---|
eslint.config.js |
no-debugger rule hardcoded to 'off' |
src/components/ResourceScheduleViewerComponent.vue |
3 ESLint fixes |
src/components/scheduling/boat/BoatScheduleTableComponent.vue |
.id→.$id, NodeJS.Timeout, if/else |
src/components/scheduling/boat/CalendarHeaderComponent.vue |
Removed getWeekdaySkips; updated createDayList call |
src/pages/LoginPage.vue |
catch { } |
src/components/boat/BoatPreviewComponent.vue |
.id→.$id |
src/components/task/TaskCardComponent.vue |
Removed defineProps import + subtasks refs |
src/components/task/TaskListComponent.vue |
.id→.$id |
src/components/task/TaskTableComponent.vue |
Removed defineProps from import |
src/pages/schedule/ManageCalendar.vue |
.id→.$id |
src/stores/boat.ts |
as unknown as Boat[] |
src/stores/interval.ts |
as unknown as Interval (3 places) |
src/stores/intervalTemplate.ts |
Multiple cast fixes + timeTuple access |
src/stores/reservation.ts |
as unknown as Reservation (multiple) |
src/stores/sampledata/schedule.ts |
id→$id, blocks→timeTuples, removed reservationDate |
src/stores/task.ts |
as unknown as for Task/TaskTag/SkillTag |
package.json / yarn.lock |
Added register-service-worker |
Open Questions
src/components/task/TaskCardComponent.vue—subtasksremoved from template. Shouldsubtasks?: Task[]be added to theTaskinterface intask.tsfor future use? OPEN- Appwrite v23 deprecated positional-param overloads (hints in every store). Should stores be migrated to new object-param style? Low priority — code still works. OPEN
Assumptions
- ASSUMED:
subtasksfeature in TaskCardComponent was dead/future code — safe to remove template refs - ASSUMED:
no-debugger: 'off'is fine for devel branch
What NOT to Re-Read
docs/archive/handoffs/handoff-2026-03-15-auth-magic-link.md— archived
Next Session
- Commit all dependency update + build fix changes
- Test the app against the dev Appwrite backend (validate v23 API calls work at runtime)
- Consider migrating Appwrite calls from deprecated positional-param to object-param style (optional)
- Consider adding
subtasks?: Task[]toTaskinterface if the feature is planned