Skip to content

v1.1.1

Choose a tag to compare

@github-actions github-actions released this 05 Jun 21:17
· 28 commits to main since this release
680a31a

What's Changed

  • Add Course Detail keyboard navigation by @MorrisXDS in #3
  • Drop unrunnable CI test step; fix unused-var lint errors by @MorrisXDS in #4
  • Ci/clean lint baseline by @MorrisXDS in #5
  • Chore/secret scan skill by @MorrisXDS in #6
  • Expand e2e harness (pages + Calendar); fix Updates focus indicator by @MorrisXDS in #8
  • Wire Calendar quick-filter keyboard shortcuts by @MorrisXDS in #7
  • Chore/remove dead calendar pages by @MorrisXDS in #9
  • Track tests + gate CI on them; fix ambiguous title-merge by @MorrisXDS in #10
  • Add sync pipeline integration tests (30 scenarios, A–G) by @MorrisXDS in #11
  • Chore/tests in ci and merge fix by @MorrisXDS in #12
  • Keyboard scope architecture: useKeymap + Files nav + registry by @MorrisXDS in #13
  • Scope-aware two-tab help modal + Settings shortcuts by @MorrisXDS in #15
  • Refactor remaining pages onto useKeymap by @MorrisXDS in #14
  • Per-field merge selection + keyboard scoping in duplicate-warning modal by @MorrisXDS in #16
  • Migrate ConfirmDialog to Modal primitive + delete dead TaskMergeDialog by @MorrisXDS in #17
  • Add gitleaks CI workflow as secret-scan safety net by @MorrisXDS in #18
  • Add 8 project skills covering common CanvasAssistant workflows by @MorrisXDS in #19
  • Migrate shared modals to Modal primitive (FOLLOWUPS #2 batch 1) by @MorrisXDS in #20
  • Fix state-duplication in CourseDetail (FOLLOWUPS #1) by @MorrisXDS in #21
  • Migrate handwritten modals to Modal primitive (FOLLOWUPS — batch 2) by @MorrisXDS in #22
  • Refactor TaskLinkDialog to Modal primitive + FieldMergeEditor (FOLLOWUPS batch 3 / final) by @MorrisXDS in #23
  • Add test-matrix project skill by @MorrisXDS in #24
  • Enrich canvas_data JSON in manual-test seed scripts by @MorrisXDS in #25
  • Modal-stack-aware keyboard shortcuts (ADR-0006) by @MorrisXDS in #26
  • Fix TaskLinkDialog regressions (recovery from PR #23) by @MorrisXDS in #27
  • docs: add CONTEXT.md domain glossary by @MorrisXDS in #30
  • refactor: rename VisibleDataProvider to VisibilityOracle by @MorrisXDS in #31
  • fix(ipc): close visibility-bypass bugs via CourseReader (ADR-0007 PR-B) by @MorrisXDS in #32
  • test(ipc): recover orphaned PR-B TDD tests by @MorrisXDS in #34
  • refactor(store): centralize visibility-defense filter in selectors (ADR-0007 PR-C) by @MorrisXDS in #33
  • test(selectors): cover mixed and empty states for visibleNotifications/visibleTasks (ADR-0007 PR-T1) by @MorrisXDS in #35
  • test(coreDataSlice): regression coverage for PR-B's fetchCourses simplification (ADR-0007 PR-T3) by @MorrisXDS in #36
  • feat(test-utils): createStore() factory + setupTestEnv() for component-integration tests (ADR-0007 PR-T4) by @MorrisXDS in #37
  • test(Dashboard): real-store integration test for visibility selector (ADR-0007 PR-T5) by @MorrisXDS in #38
  • test(Dashboard): IPC → store → component full chain (ADR-0007 PR-T6) by @MorrisXDS in #39
  • ci: enforce per-PR test coverage via diff-coverage check (PR-Gate-1) by @MorrisXDS in #40
  • ci(husky): enforce Conventional Commits + test-deletion acknowledgment (PR-Gate-2) by @MorrisXDS in #42
  • feat(ipc-contract): FileEntity unified read contract (ADR-0008 PR-F.1) by @MorrisXDS in #43
  • feat(l1-persistence): FileEntityProvider + readers + index migration (ADR-0008 PR-F.2) by @MorrisXDS in #44
  • feat(ipc): FileEntity IPC channels + getAttachments migration (ADR-0008 PR-F.3) by @MorrisXDS in #45
  • feat(ipc): TaskReader + CanvasTaskQueueReader + taskDataHandlers migration (ADR-0007 PR-D) by @MorrisXDS in #46
  • feat(ipc): NotificationReader + notificationDataHandlers migration (ADR-0007 PR-E) by @MorrisXDS in #47
  • chore(skills): add wait-for-pr skill by @MorrisXDS in #48
  • feat(ipc): PolicyReader + policyHandlers migration (ADR-0007 PR-H) by @MorrisXDS in #49
  • feat(arch): ADR-0007 enforcement via ratchet ceiling (Final PR) by @MorrisXDS in #50
  • feat(ipc): migrate taskTypesHandlers off raw SQL (ADR-0007) by @MorrisXDS in #51
  • feat(ipc): migrate taskLinkHandlers off raw SQL (ADR-0007) by @MorrisXDS in #52
  • feat(ipc): migrate settingsHandlers off raw SQL (ADR-0007) by @MorrisXDS in #53
  • feat(ipc): migrate csvExportHandlers off raw SQL (ADR-0007) by @MorrisXDS in #54
  • feat(ipc): migrate exportHandlers off raw SQL (ADR-0007) by @MorrisXDS in #55
  • feat(ipc): migrate htmlExportHandlers off raw SQL (ADR-0007) by @MorrisXDS in #56
  • feat(ipc): migrate courseExportHandlers import pipeline (ADR-0007) by @MorrisXDS in #57
  • feat(ipc): migrate courseAuthorityHandlers off raw SQL (ADR-0007) by @MorrisXDS in #58
  • feat(ipc): migrate databaseExportHandlers off raw SQL (ADR-0007) by @MorrisXDS in #59
  • refactor(calendar): relocate recomputeCalendarHashes out of ipc-handlers (ADR-0007) by @MorrisXDS in #60
  • feat(ipc): migrate backupScheduleHandlers off raw SQL (ADR-0007) by @MorrisXDS in #61
  • feat(ipc): migrate calendarEventHandlers off raw SQL (ADR-0007) by @MorrisXDS in #62
  • feat(ipc): migrate calendarCrudHandlers off raw SQL (ADR-0007) by @MorrisXDS in #63
  • feat(ipc): migrate pagesHandlers off raw SQL (ADR-0007) by @MorrisXDS in #64
  • feat(ipc): migrate resourceHandlers off raw SQL (ADR-0007) by @MorrisXDS in #65
  • feat(ipc): migrate syncUpdatesHandlers off raw SQL (ADR-0007) by @MorrisXDS in #66
  • chore(test): cap jest at 2 workers to contain memory use by @MorrisXDS in #67
  • feat(ipc): migrate htmlDependencyHandlers off raw SQL (ADR-0007) by @MorrisXDS in #68
  • feat(ipc): migrate fileHandlers off raw SQL (ADR-0007) by @MorrisXDS in #69
  • feat(ipc): migrate syncHandlers off raw SQL (ADR-0007 — final handler) by @MorrisXDS in #70
  • feat(ipc): migrate courseExportHandlers export reads off raw SQL (ADR-0007) by @MorrisXDS in #71
  • feat(ipc): migrate courseDataHandlers enrollment-terms read off raw SQL (ADR-0007) by @MorrisXDS in #72
  • feat(ipc): migrate courseContentHandlers off raw SQL (ADR-0007) by @MorrisXDS in #73
  • feat(ipc): migrate fileDataHandlers + flip enforcement test to hard-zero (ADR-0007 closeout) by @MorrisXDS in #74
  • chore(db): drop 11 dead zombie tables (ADR-0003 cleanup, migration 105) by @MorrisXDS in #75
  • refactor(sync): drop orphaned policy_announcements table (migration 106) by @MorrisXDS in #76
  • feat(sync): record grade_history points so the grade-trend chart works by @MorrisXDS in #77
  • refactor(ipc): remove dead course_policies read chain (ADR-0003) by @MorrisXDS in #78
  • refactor(db): drop 6 vestigial scoring columns (migration 107, ADR-0003) by @MorrisXDS in #79
  • fix(sync): persist conflict "remember choice" to the column sync reads by @MorrisXDS in #80
  • refactor(db): drop dead grace_tokens / grace_token_usage / policy_rules (migration 109) by @MorrisXDS in #81
  • refactor(sync): remove dead announcement policy-keyword detection (ADR-0003) by @MorrisXDS in #82
  • fix(db): land page-dependency resources + fix createTestData session insert by @MorrisXDS in #83
  • feat(db): foreign-key-off table rebuilds in the migration engine (ADR-0009) by @MorrisXDS in #84
  • refactor(db): drop course_policies via FK-off notifications rebuild (migration 110) by @MorrisXDS in #85
  • docs(context): mark course_task_groups accepted-dead, close zombie cleanup by @MorrisXDS in #86
  • feat(ui): reveal announcement file references in the Files page (#29) by @MorrisXDS in #87
  • refactor: remove dead policy types + config left by course_policies drop by @MorrisXDS in #88
  • chore(skills): session-handoff writes a separate doc CLAUDE.md @imports by @MorrisXDS in #89
  • ci: run affected tests only on PRs, full suite on push-to-main by @MorrisXDS in #90
  • test(l6-ui): wrap afterEach store resets in act() to silence warnings by @MorrisXDS in #91
  • test(l6-ui): clear Dashboard act() warnings + guard against regressions by @MorrisXDS in #92
  • refactor(db): drop 3 dead notifications policy columns (migration 111) by @MorrisXDS in #93
  • refactor(calendar): migrate ImportConfirmationModal to Modal primitive by @MorrisXDS in #94
  • refactor(settings): migrate SettingsModal to Modal primitive by @MorrisXDS in #95
  • refactor(sync): migrate SyncConflictModal to Modal primitive by @MorrisXDS in #96
  • fix(export): migrate ExportDialog to Modal primitive and fix select-none by @MorrisXDS in #97
  • refactor(calendar): migrate EventFormModal to Modal primitive by @MorrisXDS in #98
  • refactor(settings): migrate nested settings sub-dialogs to Modal primitive by @MorrisXDS in #99
  • refactor(shared): migrate InfoTrigger's InfoModal to Modal primitive by @MorrisXDS in #100
  • refactor(tasks): migrate Add-Task modal to Modal primitive by @MorrisXDS in #101
  • refactor(calendar): migrate event-detail quick-view to Modal primitive by @MorrisXDS in #102
  • test(l6-ui): guard against new handwritten modals by @MorrisXDS in #103
  • fix(backup): write manual scheduled backups to the canonical backup dir by @MorrisXDS in #104
  • refactor(ui): add Z_INDEX scale and fix modal-occlusion strays by @MorrisXDS in #105
  • refactor(constants): centralize straggler storage keys and color maps by @MorrisXDS in #106
  • fix(lifecycle): handle macOS sleep/wake (wire IdleStateManager + fix resume deadlock) by @MorrisXDS in #107
  • fix(reset): clear app_settings on reset-all-data (backup schedule survived) by @MorrisXDS in #108
  • fix(keyboard): correct shortcut-registry drift so Help matches reality by @MorrisXDS in #109
  • refactor(settings): consolidate app_settings into user_preferences (migration 112) by @MorrisXDS in #110
  • fix(keyboard): resolve page-scope help + migrate announcement-detail to useKeymap by @MorrisXDS in #111
  • feat(keyboard): add useSectionScope + SectionBar foundation (no-op) by @MorrisXDS in #112
  • feat(keyboard): migrate CourseDetail to useSectionScope + SectionBar (section-nav Phase 1) by @MorrisXDS in #113
  • feat(keyboard): migrate Calendar to useSectionScope + rebind course-filter to Alt+Shift+1-9 by @MorrisXDS in #114
  • feat(keyboard): migrate CoursesPage to useSectionScope + codify §2 section-nav rule by @MorrisXDS in #115
  • chore: ignore agent scratch dirs and workspace briefs by @MorrisXDS in #116
  • fix(ui): replace nonexistent --color-primary with --color-navy by @MorrisXDS in #117
  • chore: remove dead write-only canvasTimezone SQL path by @MorrisXDS in #118
  • fix(keyboard): migrate TaskDetailModal to useModalHotkeys (ADR-0006) by @MorrisXDS in #119
  • fix(keyboard): migrate Calendar Alt+Shift to useStackAwareHotkeys (ADR-0006) by @MorrisXDS in #120
  • feat(keyboard): add W/S and arrow aliases for Updates row-nav by @MorrisXDS in #121
  • refactor(cleanup): remove dead CalendarGrid quick-view path + ExportSchedule.destination by @MorrisXDS in #122
  • refactor(cleanup): remove dead L3 Constants + fix Dashboard shortcut registry drift by @MorrisXDS in #123
  • test(hotkeys): add no-raw-useHotkeys fitness guard (ADR-0006 step 3) by @MorrisXDS in #124
  • fix(keyboard): de-dup section-nav help + e.code digit fallback for intl layouts by @MorrisXDS in #125
  • fix(e2e): correct stale Calendar Alt+1 spec + add e2e type-check by @MorrisXDS in #126
  • test(e2e): expand suite to 33 specs — route gaps, mutations, ADR-0006 deep modal-stack by @MorrisXDS in #127
  • test(e2e): trace+screenshot on failure, html report, forbidOnly guard by @MorrisXDS in #128
  • test(e2e): deterministic generated seed — portable, skip-free (ADR-0011) by @MorrisXDS in #129
  • test(e2e): coverage breadth — visibility invariant, ADR-0006 deep specs, calendar CRUD, conflicts by @MorrisXDS in #130
  • test(e2e): add sync-pull spec with mock Canvas + Playwright projects by @MorrisXDS in #131
  • docs(readme): rewrite root README + publish ADRs and testing guide by @MorrisXDS in #132
  • docs(readme): regenerate screenshots from synthetic demo data by @MorrisXDS in #133
  • docs: add ARCHITECTURE.md + CONTRIBUTING.md by @MorrisXDS in #134
  • docs(readme): add production build steps; drop status/author sections by @MorrisXDS in #135
  • chore: remove redundant tracked files by @MorrisXDS in #136

Full Changelog: v1.0.2...v1.1.1