Skip to content

Cleanup 3: tighten access widened by the splits - #1969

Merged
r3dbars merged 18 commits into
mainfrom
claude/c3-access
Oct 2, 2026
Merged

r3dbars merged 18 commits into
mainfrom
claude/c3-access

Conversation

@r3dbars

@r3dbars r3dbars commented Oct 2, 2026

Copy link
Copy Markdown
Owner

The hotspot splits (#1950, #1960) widened about 60 members so extensions in other files could reach them. Now that the code has settled, this tightens them back.

  • 51 members become private, private(set) or fileprivate.
  • 9 TranscriptedCore members go from public to internal. Outside Core, only @testable Core tests use them.
  • MeetingSessionController's published levels, duration and saved-transcript fields are private(set) again. Writes go through small mirror*/note* helpers in +State.swift.
  • MeetingPromptDetector's calendar refresh and two meeting-stop helpers move next to their only callers, unchanged, so they can be private.

No behavior change. An independent review (grep across Sources, Tests, Tools and scripts) found no compile, link or hidden-user risk: no KVO, #selector, Codable or SwiftUI bindings on the changed members. The ratchets didn't move.

Follow-up: Audio.ensureEngineInitialized() has no callers and could be deleted.

🤖 Generated with Claude Code

r3dbars added 18 commits October 2, 2026 10:59
audioLevel, systemLevel, recordingDuration, lastSavedTranscriptURL,
lastSavedTitle and savedMeetingReplacementCommitCount are private(set)
again; the extensions write them through small mirror setters in
+State.swift. Same values, same emission order.
Nothing outside TranscriptedCore calls it; Meeting uses the
overrideSystemAudioStatus overload. Only Core's @testable tests use it.
These helpers in Audio+MeetingInputGraph, MicBufferWrite,
PinnedMicrophone, SleepWake and SystemAudioWrite are only used in their
own file. Access change only, no logic touched.
audioUsability moves next to its only caller in +Start, and
placeholderFailedTranscriptURL next to its only caller in
+FailedAudioRetention. Both are private now. Bodies unchanged.
Move refreshCalendarEventSnapshots and installCalendarStoreObserver back
into the core file so the cache state, fetch closure and intervals are
private again. calendarEventSnapshots is private(set). No behavior change.
Make single-file helpers private and drop public from Core members the
app never calls. No behavior change.
callAppMicrophoneUseScan, recoveredAutoHideSeconds and the system audio
tail gate go private; PersistentDictationInputSystem.live goes fileprivate.
No behavior change.
writeTemporaryString, FocusedTextPasteConfirmationPolicy.messagingTimeout and nonTextEntryRoles are only used in their own file. The other members the split widened are used by two paster files and stay internal. No behavior change.
Only ParakeetEngine.swift (the engine and its AVAudioEngine graph driver)
calls it. The other members the Speech split widened are used across
the Parakeet* extension files or pinned by source-contract tests, so
they stay internal.
@r3dbars
r3dbars merged commit 4f2d096 into main Oct 2, 2026
9 checks passed
@r3dbars
r3dbars deleted the claude/c3-access branch October 2, 2026 19:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant