Skip to content

feat(mac): index notes and study sheets in Spotlight - #58

Merged
502Proxy merged 7 commits into
mainfrom
feat/spotlight
Oct 28, 2026
Merged

502Proxy merged 7 commits into
mainfrom
feat/spotlight

Conversation

@502Proxy

Copy link
Copy Markdown
Owner

Closes #48

What changes and why?

Notes, study sheets and modules in Spotlight. One commit per layer:

  1. Domain: SearchTarget (encodes module/note/study sheet in the item identifier and back), SearchableItem, SearchIndexing port, BuildSearchIndexUseCase (active modules, notes with content incl. module notes, study sheets; subtitles like „Notiz · Analysis I · VL01“), ReindexSearchUseCase
  2. Core Spotlight + navigation: CoreSpotlightIndexer replaces StudyApp's domain in its own index (no change tracking needed for a few hundred items) on launch and every five minutes. A click continues the user activity; AppNavigation.open(_:) opens the place, with a new ModuleIntent.selectStudySheet.
  3. Docs: FEATURES.md

Tests

  • SearchTargetTests (round trip, invalid identifiers), BuildSearchIndexTests (archived modules and empty notes skipped, subtitles), SearchNavigationTests
  • 166 tests pass locally (Linux subset); SwiftLint clean

Checklist

  • Linked issue, labels and milestone set
  • New logic has tests
  • Tried in Spotlight (search for a note, open the result)
  • Release notes: collected in the 1.12 release PR

Generated by Claude Code

SearchTarget encodes where a result leads (module, note, study sheet)
in the item identifier and decodes it again. BuildSearchIndexUseCase
collects active modules, notes with content and study sheets with a
subtitle such as „Notiz · Analysis I · VL01“; ReindexSearchUseCase
hands them to the SearchIndexing port.

Refs #48

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TmmqmKmX8VDSfoPbzTS1ew
CoreSpotlightIndexer replaces StudyApp's items in its own index on
launch and with the five-minute loop. Clicking a result continues the
user activity: AppNavigation.open(_:) opens the module, selects the note
or – with the new ModuleIntent.selectStudySheet – the study sheet.

Refs #48

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TmmqmKmX8VDSfoPbzTS1ew
Refs #48

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TmmqmKmX8VDSfoPbzTS1ew
@502Proxy 502Proxy added this to the 1.12 milestone Oct 28, 2026 — with Claude
@502Proxy 502Proxy added enhancement New feature or improvement area: mac Menu bar, widgets, Shortcuts, Spotlight labels Oct 28, 2026 — with Claude
# Conflicts:
#	App/StudyAppApp.swift
#	docs/FEATURES.md
# Conflicts:
#	App/AppContainer.swift
#	App/StudyAppApp.swift
#	docs/FEATURES.md

Copy link
Copy Markdown
Owner Author

CI: „test runner hung before establishing connection“. Das ist derselbe Hänger wie überall seit ca. 13 Uhr, nicht von Spotlight verursacht. Eine Gegenprobe auf einem alten grünen Stand läuft. Verdacht: neues Xcode durch xcode-version: latest-stable. Main ist inzwischen hineingemerged.


Generated by Claude Code

# Conflicts:
#	App/AppContainer.swift
#	App/StudyAppApp.swift
#	docs/FEATURES.md
@502Proxy
502Proxy merged commit 6777bbf into main Oct 28, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: mac Menu bar, widgets, Shortcuts, Spotlight enhancement New feature or improvement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(mac): index notes and study sheets in Spotlight

2 participants