Claude/edit person bio view kq js x - #42

Merged
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX
Apr 2, 2026
Merged

Claude/edit person bio view kq js x#42
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

No description provided.

claude added 11 commits April 2, 2026 01:14
signInWithGoogle/Facebook now check isSupabaseAvailable() before
loading oauthHelpers.ts (which requires expo-crypto). In Expo Go,
returns a user-friendly error message instead of a native module crash.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Social sharing:
- shareStreak(): "I'm on a X-day reading streak..."
- shareProgress(): "I've studied X% of the Bible..."
- StreakBadge now tappable → share streak via OS share sheet
- Progress card gets share icon button
- Analytics events: share_streak, share_progress
Deep linking (scripture:// URL scheme):
- scripture://book/{bookId}/{chapterNum} → opens chapter
- scripture://people/{personId} → opens genealogy tree
- scripture://map, scripture://timeline → explore tools
- NavigationContainer linking config in App.tsx
- Shared verse messages include deep link URL
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Shows Old Testament and New Testament reading progress below the
overall progress card. Each bar shows chapters read / total with
percentage. Only appears for testaments where the user has started.
- getTestamentProgress() in db/user.ts: groups reading_progress by
OT/NT book IDs, returns chapters read vs total for each
- HomeScreen: loads testament progress on focus, renders compact
progress bars with gold fill
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Panels: DiscoursePanel, EchoesView, PeoplePanel, PlacesPanel,
TabbedPanelRenderer, TextualPanel, TimelinePanel
Tree: PersonSearchBar
Map: StoryPicker
Screens: ConceptBrowse/Detail, WordStudyDetail, ProphecyDetail,
DifficultPassagesBrowse/Detail, ScholarBio, Search, BookList, AllNotes
Components: InterlinearSheet, CollectionPicker, ScholarInfoSheet,
AuthorshipSheet, WordStudyPopup, CrossRefPopup, QnavOverlay
All interactive elements (TouchableOpacity/Pressable) now have
accessibilityRole + descriptive accessibilityLabel. Tab controls
include accessibilityState for selected state.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- useTTS: accepts optional voiceId, passes to Speech.speak()
- useAvailableVoices: lists device's English TTS voices
- settingsStore: ttsVoice preference (persisted to SQLite)
- ChapterScreen: passes ttsVoice from settings to useTTS
- Added debug logging to diagnose TTS not playing
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Speech.stop() triggers onDone on some platforms, which caused the
hook to auto-advance to the next verse even when paused. Added a
stoppedManually ref flag — onDone only advances when the speech
completed naturally, not when we explicitly stopped it.
Also fixes: pause → play now restarts the current verse instead
of silently skipping it.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
expo-speech uses the iOS ringtone/phone-call audio channel, which is
silenced by the hardware mute switch — even though music/video plays
fine. Added expo-av to set playsInSilentModeIOS=true before speaking,
which routes TTS through the media channel instead.
Now TTS plays regardless of the mute switch position, matching user
expectation (they tapped play, they want to hear it).
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
New section "TEXT-TO-SPEECH" in Settings lets users choose from all
English voices available on their device. Includes hint to download
enhanced voices from iOS Accessibility settings.
- useAvailableVoices hook: enumerates system English voices via expo-speech
- VoicePicker component in SettingsScreen: expandable list, persists selection
- settingsStore: ttsVoice preference (persisted, hydrated on startup)
- ChapterScreen: passes selected voice to useTTS hook
iOS ships with dozens of voices (Samantha, Daniel, Aaron, etc.).
Enhanced/premium voices can be downloaded free in Settings > Accessibility
> Spoken Content > Voices > English.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Recommended voices (Nathan, Daniel, Samantha, Aaron Enhanced) sort
to the top of the voice list with a RECOMMENDED badge. Helps users
find the best voices for scripture reading without scrolling.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- LoginScreen: 7 tests (rendering, social buttons, inputs, links)
- SignUpScreen: 5 tests (rendering, fields, social buttons, links)
- ForgotPasswordScreen: 6 tests (rendering, input, button, links)
- supabase.ts: 4 tests (isSupabaseAvailable, getSupabase when unconfigured)
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CraigBuckmaster
CraigBuckmaster merged commit 3966e20 into masterApr 2, 2026
1 check passed
@CraigBuckmaster
CraigBuckmaster deleted the claude/edit-person-bio-view-KqJsX branch April 2, 2026 02:17
@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 1228❌ 01228
Suites✅ 211❌ 0211

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 46.4s

Sign up for freeto 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.

2 participants

@CraigBuckmaster@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Claude/edit person bio view kq js x - #42

Merged
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX
Apr 2, 2026
Merged

Claude/edit person bio view kq js x#42
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

No description provided.

claude added 11 commits April 2, 2026 01:14
signInWithGoogle/Facebook now check isSupabaseAvailable() before
loading oauthHelpers.ts (which requires expo-crypto). In Expo Go,
returns a user-friendly error message instead of a native module crash.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Social sharing:
- shareStreak(): "I'm on a X-day reading streak..."
- shareProgress(): "I've studied X% of the Bible..."
- StreakBadge now tappable → share streak via OS share sheet
- Progress card gets share icon button
- Analytics events: share_streak, share_progress
Deep linking (scripture:// URL scheme):
- scripture://book/{bookId}/{chapterNum} → opens chapter
- scripture://people/{personId} → opens genealogy tree
- scripture://map, scripture://timeline → explore tools
- NavigationContainer linking config in App.tsx
- Shared verse messages include deep link URL
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Shows Old Testament and New Testament reading progress below the
overall progress card. Each bar shows chapters read / total with
percentage. Only appears for testaments where the user has started.
- getTestamentProgress() in db/user.ts: groups reading_progress by
OT/NT book IDs, returns chapters read vs total for each
- HomeScreen: loads testament progress on focus, renders compact
progress bars with gold fill
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Panels: DiscoursePanel, EchoesView, PeoplePanel, PlacesPanel,
TabbedPanelRenderer, TextualPanel, TimelinePanel
Tree: PersonSearchBar
Map: StoryPicker
Screens: ConceptBrowse/Detail, WordStudyDetail, ProphecyDetail,
DifficultPassagesBrowse/Detail, ScholarBio, Search, BookList, AllNotes
Components: InterlinearSheet, CollectionPicker, ScholarInfoSheet,
AuthorshipSheet, WordStudyPopup, CrossRefPopup, QnavOverlay
All interactive elements (TouchableOpacity/Pressable) now have
accessibilityRole + descriptive accessibilityLabel. Tab controls
include accessibilityState for selected state.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- useTTS: accepts optional voiceId, passes to Speech.speak()
- useAvailableVoices: lists device's English TTS voices
- settingsStore: ttsVoice preference (persisted to SQLite)
- ChapterScreen: passes ttsVoice from settings to useTTS
- Added debug logging to diagnose TTS not playing
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Speech.stop() triggers onDone on some platforms, which caused the
hook to auto-advance to the next verse even when paused. Added a
stoppedManually ref flag — onDone only advances when the speech
completed naturally, not when we explicitly stopped it.
Also fixes: pause → play now restarts the current verse instead
of silently skipping it.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
expo-speech uses the iOS ringtone/phone-call audio channel, which is
silenced by the hardware mute switch — even though music/video plays
fine. Added expo-av to set playsInSilentModeIOS=true before speaking,
which routes TTS through the media channel instead.
Now TTS plays regardless of the mute switch position, matching user
expectation (they tapped play, they want to hear it).
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
New section "TEXT-TO-SPEECH" in Settings lets users choose from all
English voices available on their device. Includes hint to download
enhanced voices from iOS Accessibility settings.
- useAvailableVoices hook: enumerates system English voices via expo-speech
- VoicePicker component in SettingsScreen: expandable list, persists selection
- settingsStore: ttsVoice preference (persisted, hydrated on startup)
- ChapterScreen: passes selected voice to useTTS hook
iOS ships with dozens of voices (Samantha, Daniel, Aaron, etc.).
Enhanced/premium voices can be downloaded free in Settings > Accessibility
> Spoken Content > Voices > English.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Recommended voices (Nathan, Daniel, Samantha, Aaron Enhanced) sort
to the top of the voice list with a RECOMMENDED badge. Helps users
find the best voices for scripture reading without scrolling.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- LoginScreen: 7 tests (rendering, social buttons, inputs, links)
- SignUpScreen: 5 tests (rendering, fields, social buttons, links)
- ForgotPasswordScreen: 6 tests (rendering, input, button, links)
- supabase.ts: 4 tests (isSupabaseAvailable, getSupabase when unconfigured)
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CraigBuckmaster
CraigBuckmaster merged commit 3966e20 into masterApr 2, 2026
1 check passed
@CraigBuckmaster
CraigBuckmaster deleted the claude/edit-person-bio-view-KqJsX branch April 2, 2026 02:17
@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 1228❌ 01228
Suites✅ 211❌ 0211

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 46.4s

Sign up for freeto 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.

2 participants

@CraigBuckmaster@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Claude/edit person bio view kq js x - #42

Merged
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX
Apr 2, 2026
Merged

Claude/edit person bio view kq js x#42
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

No description provided.

claude added 11 commits April 2, 2026 01:14
signInWithGoogle/Facebook now check isSupabaseAvailable() before
loading oauthHelpers.ts (which requires expo-crypto). In Expo Go,
returns a user-friendly error message instead of a native module crash.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Social sharing:
- shareStreak(): "I'm on a X-day reading streak..."
- shareProgress(): "I've studied X% of the Bible..."
- StreakBadge now tappable → share streak via OS share sheet
- Progress card gets share icon button
- Analytics events: share_streak, share_progress
Deep linking (scripture:// URL scheme):
- scripture://book/{bookId}/{chapterNum} → opens chapter
- scripture://people/{personId} → opens genealogy tree
- scripture://map, scripture://timeline → explore tools
- NavigationContainer linking config in App.tsx
- Shared verse messages include deep link URL
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Shows Old Testament and New Testament reading progress below the
overall progress card. Each bar shows chapters read / total with
percentage. Only appears for testaments where the user has started.
- getTestamentProgress() in db/user.ts: groups reading_progress by
OT/NT book IDs, returns chapters read vs total for each
- HomeScreen: loads testament progress on focus, renders compact
progress bars with gold fill
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Panels: DiscoursePanel, EchoesView, PeoplePanel, PlacesPanel,
TabbedPanelRenderer, TextualPanel, TimelinePanel
Tree: PersonSearchBar
Map: StoryPicker
Screens: ConceptBrowse/Detail, WordStudyDetail, ProphecyDetail,
DifficultPassagesBrowse/Detail, ScholarBio, Search, BookList, AllNotes
Components: InterlinearSheet, CollectionPicker, ScholarInfoSheet,
AuthorshipSheet, WordStudyPopup, CrossRefPopup, QnavOverlay
All interactive elements (TouchableOpacity/Pressable) now have
accessibilityRole + descriptive accessibilityLabel. Tab controls
include accessibilityState for selected state.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- useTTS: accepts optional voiceId, passes to Speech.speak()
- useAvailableVoices: lists device's English TTS voices
- settingsStore: ttsVoice preference (persisted to SQLite)
- ChapterScreen: passes ttsVoice from settings to useTTS
- Added debug logging to diagnose TTS not playing
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Speech.stop() triggers onDone on some platforms, which caused the
hook to auto-advance to the next verse even when paused. Added a
stoppedManually ref flag — onDone only advances when the speech
completed naturally, not when we explicitly stopped it.
Also fixes: pause → play now restarts the current verse instead
of silently skipping it.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
expo-speech uses the iOS ringtone/phone-call audio channel, which is
silenced by the hardware mute switch — even though music/video plays
fine. Added expo-av to set playsInSilentModeIOS=true before speaking,
which routes TTS through the media channel instead.
Now TTS plays regardless of the mute switch position, matching user
expectation (they tapped play, they want to hear it).
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
New section "TEXT-TO-SPEECH" in Settings lets users choose from all
English voices available on their device. Includes hint to download
enhanced voices from iOS Accessibility settings.
- useAvailableVoices hook: enumerates system English voices via expo-speech
- VoicePicker component in SettingsScreen: expandable list, persists selection
- settingsStore: ttsVoice preference (persisted, hydrated on startup)
- ChapterScreen: passes selected voice to useTTS hook
iOS ships with dozens of voices (Samantha, Daniel, Aaron, etc.).
Enhanced/premium voices can be downloaded free in Settings > Accessibility
> Spoken Content > Voices > English.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Recommended voices (Nathan, Daniel, Samantha, Aaron Enhanced) sort
to the top of the voice list with a RECOMMENDED badge. Helps users
find the best voices for scripture reading without scrolling.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- LoginScreen: 7 tests (rendering, social buttons, inputs, links)
- SignUpScreen: 5 tests (rendering, fields, social buttons, links)
- ForgotPasswordScreen: 6 tests (rendering, input, button, links)
- supabase.ts: 4 tests (isSupabaseAvailable, getSupabase when unconfigured)
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CraigBuckmaster
CraigBuckmaster merged commit 3966e20 into masterApr 2, 2026
1 check passed
@CraigBuckmaster
CraigBuckmaster deleted the claude/edit-person-bio-view-KqJsX branch April 2, 2026 02:17
@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 1228❌ 01228
Suites✅ 211❌ 0211

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 46.4s

Sign up for freeto 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.

2 participants

@CraigBuckmaster@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Claude/edit person bio view kq js x - #42

Merged
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX
Apr 2, 2026
Merged

Claude/edit person bio view kq js x#42
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

No description provided.

claude added 11 commits April 2, 2026 01:14
signInWithGoogle/Facebook now check isSupabaseAvailable() before
loading oauthHelpers.ts (which requires expo-crypto). In Expo Go,
returns a user-friendly error message instead of a native module crash.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Social sharing:
- shareStreak(): "I'm on a X-day reading streak..."
- shareProgress(): "I've studied X% of the Bible..."
- StreakBadge now tappable → share streak via OS share sheet
- Progress card gets share icon button
- Analytics events: share_streak, share_progress
Deep linking (scripture:// URL scheme):
- scripture://book/{bookId}/{chapterNum} → opens chapter
- scripture://people/{personId} → opens genealogy tree
- scripture://map, scripture://timeline → explore tools
- NavigationContainer linking config in App.tsx
- Shared verse messages include deep link URL
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Shows Old Testament and New Testament reading progress below the
overall progress card. Each bar shows chapters read / total with
percentage. Only appears for testaments where the user has started.
- getTestamentProgress() in db/user.ts: groups reading_progress by
OT/NT book IDs, returns chapters read vs total for each
- HomeScreen: loads testament progress on focus, renders compact
progress bars with gold fill
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Panels: DiscoursePanel, EchoesView, PeoplePanel, PlacesPanel,
TabbedPanelRenderer, TextualPanel, TimelinePanel
Tree: PersonSearchBar
Map: StoryPicker
Screens: ConceptBrowse/Detail, WordStudyDetail, ProphecyDetail,
DifficultPassagesBrowse/Detail, ScholarBio, Search, BookList, AllNotes
Components: InterlinearSheet, CollectionPicker, ScholarInfoSheet,
AuthorshipSheet, WordStudyPopup, CrossRefPopup, QnavOverlay
All interactive elements (TouchableOpacity/Pressable) now have
accessibilityRole + descriptive accessibilityLabel. Tab controls
include accessibilityState for selected state.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- useTTS: accepts optional voiceId, passes to Speech.speak()
- useAvailableVoices: lists device's English TTS voices
- settingsStore: ttsVoice preference (persisted to SQLite)
- ChapterScreen: passes ttsVoice from settings to useTTS
- Added debug logging to diagnose TTS not playing
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Speech.stop() triggers onDone on some platforms, which caused the
hook to auto-advance to the next verse even when paused. Added a
stoppedManually ref flag — onDone only advances when the speech
completed naturally, not when we explicitly stopped it.
Also fixes: pause → play now restarts the current verse instead
of silently skipping it.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
expo-speech uses the iOS ringtone/phone-call audio channel, which is
silenced by the hardware mute switch — even though music/video plays
fine. Added expo-av to set playsInSilentModeIOS=true before speaking,
which routes TTS through the media channel instead.
Now TTS plays regardless of the mute switch position, matching user
expectation (they tapped play, they want to hear it).
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
New section "TEXT-TO-SPEECH" in Settings lets users choose from all
English voices available on their device. Includes hint to download
enhanced voices from iOS Accessibility settings.
- useAvailableVoices hook: enumerates system English voices via expo-speech
- VoicePicker component in SettingsScreen: expandable list, persists selection
- settingsStore: ttsVoice preference (persisted, hydrated on startup)
- ChapterScreen: passes selected voice to useTTS hook
iOS ships with dozens of voices (Samantha, Daniel, Aaron, etc.).
Enhanced/premium voices can be downloaded free in Settings > Accessibility
> Spoken Content > Voices > English.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Recommended voices (Nathan, Daniel, Samantha, Aaron Enhanced) sort
to the top of the voice list with a RECOMMENDED badge. Helps users
find the best voices for scripture reading without scrolling.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- LoginScreen: 7 tests (rendering, social buttons, inputs, links)
- SignUpScreen: 5 tests (rendering, fields, social buttons, links)
- ForgotPasswordScreen: 6 tests (rendering, input, button, links)
- supabase.ts: 4 tests (isSupabaseAvailable, getSupabase when unconfigured)
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CraigBuckmaster
CraigBuckmaster merged commit 3966e20 into masterApr 2, 2026
1 check passed
@CraigBuckmaster
CraigBuckmaster deleted the claude/edit-person-bio-view-KqJsX branch April 2, 2026 02:17
@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 1228❌ 01228
Suites✅ 211❌ 0211

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 46.4s

Sign up for freeto 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.

2 participants

@CraigBuckmaster@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Claude/edit person bio view kq js x - #42

Merged
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX
Apr 2, 2026
Merged

Claude/edit person bio view kq js x#42
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

No description provided.

claude added 11 commits April 2, 2026 01:14
signInWithGoogle/Facebook now check isSupabaseAvailable() before
loading oauthHelpers.ts (which requires expo-crypto). In Expo Go,
returns a user-friendly error message instead of a native module crash.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Social sharing:
- shareStreak(): "I'm on a X-day reading streak..."
- shareProgress(): "I've studied X% of the Bible..."
- StreakBadge now tappable → share streak via OS share sheet
- Progress card gets share icon button
- Analytics events: share_streak, share_progress
Deep linking (scripture:// URL scheme):
- scripture://book/{bookId}/{chapterNum} → opens chapter
- scripture://people/{personId} → opens genealogy tree
- scripture://map, scripture://timeline → explore tools
- NavigationContainer linking config in App.tsx
- Shared verse messages include deep link URL
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Shows Old Testament and New Testament reading progress below the
overall progress card. Each bar shows chapters read / total with
percentage. Only appears for testaments where the user has started.
- getTestamentProgress() in db/user.ts: groups reading_progress by
OT/NT book IDs, returns chapters read vs total for each
- HomeScreen: loads testament progress on focus, renders compact
progress bars with gold fill
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Panels: DiscoursePanel, EchoesView, PeoplePanel, PlacesPanel,
TabbedPanelRenderer, TextualPanel, TimelinePanel
Tree: PersonSearchBar
Map: StoryPicker
Screens: ConceptBrowse/Detail, WordStudyDetail, ProphecyDetail,
DifficultPassagesBrowse/Detail, ScholarBio, Search, BookList, AllNotes
Components: InterlinearSheet, CollectionPicker, ScholarInfoSheet,
AuthorshipSheet, WordStudyPopup, CrossRefPopup, QnavOverlay
All interactive elements (TouchableOpacity/Pressable) now have
accessibilityRole + descriptive accessibilityLabel. Tab controls
include accessibilityState for selected state.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- useTTS: accepts optional voiceId, passes to Speech.speak()
- useAvailableVoices: lists device's English TTS voices
- settingsStore: ttsVoice preference (persisted to SQLite)
- ChapterScreen: passes ttsVoice from settings to useTTS
- Added debug logging to diagnose TTS not playing
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Speech.stop() triggers onDone on some platforms, which caused the
hook to auto-advance to the next verse even when paused. Added a
stoppedManually ref flag — onDone only advances when the speech
completed naturally, not when we explicitly stopped it.
Also fixes: pause → play now restarts the current verse instead
of silently skipping it.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
expo-speech uses the iOS ringtone/phone-call audio channel, which is
silenced by the hardware mute switch — even though music/video plays
fine. Added expo-av to set playsInSilentModeIOS=true before speaking,
which routes TTS through the media channel instead.
Now TTS plays regardless of the mute switch position, matching user
expectation (they tapped play, they want to hear it).
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
New section "TEXT-TO-SPEECH" in Settings lets users choose from all
English voices available on their device. Includes hint to download
enhanced voices from iOS Accessibility settings.
- useAvailableVoices hook: enumerates system English voices via expo-speech
- VoicePicker component in SettingsScreen: expandable list, persists selection
- settingsStore: ttsVoice preference (persisted, hydrated on startup)
- ChapterScreen: passes selected voice to useTTS hook
iOS ships with dozens of voices (Samantha, Daniel, Aaron, etc.).
Enhanced/premium voices can be downloaded free in Settings > Accessibility
> Spoken Content > Voices > English.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Recommended voices (Nathan, Daniel, Samantha, Aaron Enhanced) sort
to the top of the voice list with a RECOMMENDED badge. Helps users
find the best voices for scripture reading without scrolling.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- LoginScreen: 7 tests (rendering, social buttons, inputs, links)
- SignUpScreen: 5 tests (rendering, fields, social buttons, links)
- ForgotPasswordScreen: 6 tests (rendering, input, button, links)
- supabase.ts: 4 tests (isSupabaseAvailable, getSupabase when unconfigured)
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CraigBuckmaster
CraigBuckmaster merged commit 3966e20 into masterApr 2, 2026
1 check passed
@CraigBuckmaster
CraigBuckmaster deleted the claude/edit-person-bio-view-KqJsX branch April 2, 2026 02:17
@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 1228❌ 01228
Suites✅ 211❌ 0211

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 46.4s

Sign up for freeto 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.

2 participants

@CraigBuckmaster@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Claude/edit person bio view kq js x - #42

Merged
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX
Apr 2, 2026
Merged

Claude/edit person bio view kq js x#42
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

No description provided.

claude added 11 commits April 2, 2026 01:14
signInWithGoogle/Facebook now check isSupabaseAvailable() before
loading oauthHelpers.ts (which requires expo-crypto). In Expo Go,
returns a user-friendly error message instead of a native module crash.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Social sharing:
- shareStreak(): "I'm on a X-day reading streak..."
- shareProgress(): "I've studied X% of the Bible..."
- StreakBadge now tappable → share streak via OS share sheet
- Progress card gets share icon button
- Analytics events: share_streak, share_progress
Deep linking (scripture:// URL scheme):
- scripture://book/{bookId}/{chapterNum} → opens chapter
- scripture://people/{personId} → opens genealogy tree
- scripture://map, scripture://timeline → explore tools
- NavigationContainer linking config in App.tsx
- Shared verse messages include deep link URL
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Shows Old Testament and New Testament reading progress below the
overall progress card. Each bar shows chapters read / total with
percentage. Only appears for testaments where the user has started.
- getTestamentProgress() in db/user.ts: groups reading_progress by
OT/NT book IDs, returns chapters read vs total for each
- HomeScreen: loads testament progress on focus, renders compact
progress bars with gold fill
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Panels: DiscoursePanel, EchoesView, PeoplePanel, PlacesPanel,
TabbedPanelRenderer, TextualPanel, TimelinePanel
Tree: PersonSearchBar
Map: StoryPicker
Screens: ConceptBrowse/Detail, WordStudyDetail, ProphecyDetail,
DifficultPassagesBrowse/Detail, ScholarBio, Search, BookList, AllNotes
Components: InterlinearSheet, CollectionPicker, ScholarInfoSheet,
AuthorshipSheet, WordStudyPopup, CrossRefPopup, QnavOverlay
All interactive elements (TouchableOpacity/Pressable) now have
accessibilityRole + descriptive accessibilityLabel. Tab controls
include accessibilityState for selected state.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- useTTS: accepts optional voiceId, passes to Speech.speak()
- useAvailableVoices: lists device's English TTS voices
- settingsStore: ttsVoice preference (persisted to SQLite)
- ChapterScreen: passes ttsVoice from settings to useTTS
- Added debug logging to diagnose TTS not playing
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Speech.stop() triggers onDone on some platforms, which caused the
hook to auto-advance to the next verse even when paused. Added a
stoppedManually ref flag — onDone only advances when the speech
completed naturally, not when we explicitly stopped it.
Also fixes: pause → play now restarts the current verse instead
of silently skipping it.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
expo-speech uses the iOS ringtone/phone-call audio channel, which is
silenced by the hardware mute switch — even though music/video plays
fine. Added expo-av to set playsInSilentModeIOS=true before speaking,
which routes TTS through the media channel instead.
Now TTS plays regardless of the mute switch position, matching user
expectation (they tapped play, they want to hear it).
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
New section "TEXT-TO-SPEECH" in Settings lets users choose from all
English voices available on their device. Includes hint to download
enhanced voices from iOS Accessibility settings.
- useAvailableVoices hook: enumerates system English voices via expo-speech
- VoicePicker component in SettingsScreen: expandable list, persists selection
- settingsStore: ttsVoice preference (persisted, hydrated on startup)
- ChapterScreen: passes selected voice to useTTS hook
iOS ships with dozens of voices (Samantha, Daniel, Aaron, etc.).
Enhanced/premium voices can be downloaded free in Settings > Accessibility
> Spoken Content > Voices > English.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Recommended voices (Nathan, Daniel, Samantha, Aaron Enhanced) sort
to the top of the voice list with a RECOMMENDED badge. Helps users
find the best voices for scripture reading without scrolling.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- LoginScreen: 7 tests (rendering, social buttons, inputs, links)
- SignUpScreen: 5 tests (rendering, fields, social buttons, links)
- ForgotPasswordScreen: 6 tests (rendering, input, button, links)
- supabase.ts: 4 tests (isSupabaseAvailable, getSupabase when unconfigured)
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CraigBuckmaster
CraigBuckmaster merged commit 3966e20 into masterApr 2, 2026
1 check passed
@CraigBuckmaster
CraigBuckmaster deleted the claude/edit-person-bio-view-KqJsX branch April 2, 2026 02:17
@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 1228❌ 01228
Suites✅ 211❌ 0211

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 46.4s

Sign up for freeto 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.

2 participants

@CraigBuckmaster@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Claude/edit person bio view kq js x - #42

Merged
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX
Apr 2, 2026
Merged

Claude/edit person bio view kq js x#42
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

No description provided.

claude added 11 commits April 2, 2026 01:14
signInWithGoogle/Facebook now check isSupabaseAvailable() before
loading oauthHelpers.ts (which requires expo-crypto). In Expo Go,
returns a user-friendly error message instead of a native module crash.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Social sharing:
- shareStreak(): "I'm on a X-day reading streak..."
- shareProgress(): "I've studied X% of the Bible..."
- StreakBadge now tappable → share streak via OS share sheet
- Progress card gets share icon button
- Analytics events: share_streak, share_progress
Deep linking (scripture:// URL scheme):
- scripture://book/{bookId}/{chapterNum} → opens chapter
- scripture://people/{personId} → opens genealogy tree
- scripture://map, scripture://timeline → explore tools
- NavigationContainer linking config in App.tsx
- Shared verse messages include deep link URL
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Shows Old Testament and New Testament reading progress below the
overall progress card. Each bar shows chapters read / total with
percentage. Only appears for testaments where the user has started.
- getTestamentProgress() in db/user.ts: groups reading_progress by
OT/NT book IDs, returns chapters read vs total for each
- HomeScreen: loads testament progress on focus, renders compact
progress bars with gold fill
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Panels: DiscoursePanel, EchoesView, PeoplePanel, PlacesPanel,
TabbedPanelRenderer, TextualPanel, TimelinePanel
Tree: PersonSearchBar
Map: StoryPicker
Screens: ConceptBrowse/Detail, WordStudyDetail, ProphecyDetail,
DifficultPassagesBrowse/Detail, ScholarBio, Search, BookList, AllNotes
Components: InterlinearSheet, CollectionPicker, ScholarInfoSheet,
AuthorshipSheet, WordStudyPopup, CrossRefPopup, QnavOverlay
All interactive elements (TouchableOpacity/Pressable) now have
accessibilityRole + descriptive accessibilityLabel. Tab controls
include accessibilityState for selected state.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- useTTS: accepts optional voiceId, passes to Speech.speak()
- useAvailableVoices: lists device's English TTS voices
- settingsStore: ttsVoice preference (persisted to SQLite)
- ChapterScreen: passes ttsVoice from settings to useTTS
- Added debug logging to diagnose TTS not playing
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Speech.stop() triggers onDone on some platforms, which caused the
hook to auto-advance to the next verse even when paused. Added a
stoppedManually ref flag — onDone only advances when the speech
completed naturally, not when we explicitly stopped it.
Also fixes: pause → play now restarts the current verse instead
of silently skipping it.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
expo-speech uses the iOS ringtone/phone-call audio channel, which is
silenced by the hardware mute switch — even though music/video plays
fine. Added expo-av to set playsInSilentModeIOS=true before speaking,
which routes TTS through the media channel instead.
Now TTS plays regardless of the mute switch position, matching user
expectation (they tapped play, they want to hear it).
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
New section "TEXT-TO-SPEECH" in Settings lets users choose from all
English voices available on their device. Includes hint to download
enhanced voices from iOS Accessibility settings.
- useAvailableVoices hook: enumerates system English voices via expo-speech
- VoicePicker component in SettingsScreen: expandable list, persists selection
- settingsStore: ttsVoice preference (persisted, hydrated on startup)
- ChapterScreen: passes selected voice to useTTS hook
iOS ships with dozens of voices (Samantha, Daniel, Aaron, etc.).
Enhanced/premium voices can be downloaded free in Settings > Accessibility
> Spoken Content > Voices > English.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Recommended voices (Nathan, Daniel, Samantha, Aaron Enhanced) sort
to the top of the voice list with a RECOMMENDED badge. Helps users
find the best voices for scripture reading without scrolling.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- LoginScreen: 7 tests (rendering, social buttons, inputs, links)
- SignUpScreen: 5 tests (rendering, fields, social buttons, links)
- ForgotPasswordScreen: 6 tests (rendering, input, button, links)
- supabase.ts: 4 tests (isSupabaseAvailable, getSupabase when unconfigured)
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CraigBuckmaster
CraigBuckmaster merged commit 3966e20 into masterApr 2, 2026
1 check passed
@CraigBuckmaster
CraigBuckmaster deleted the claude/edit-person-bio-view-KqJsX branch April 2, 2026 02:17
@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 1228❌ 01228
Suites✅ 211❌ 0211

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 46.4s

Sign up for freeto 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.

2 participants

@CraigBuckmaster@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Claude/edit person bio view kq js x - #42

Merged
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX
Apr 2, 2026
Merged

Claude/edit person bio view kq js x#42
CraigBuckmaster merged 11 commits into
masterfrom
claude/edit-person-bio-view-KqJsX

Conversation

@CraigBuckmaster

Copy link
Copy Markdown
Owner

No description provided.

claude added 11 commits April 2, 2026 01:14
signInWithGoogle/Facebook now check isSupabaseAvailable() before
loading oauthHelpers.ts (which requires expo-crypto). In Expo Go,
returns a user-friendly error message instead of a native module crash.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Social sharing:
- shareStreak(): "I'm on a X-day reading streak..."
- shareProgress(): "I've studied X% of the Bible..."
- StreakBadge now tappable → share streak via OS share sheet
- Progress card gets share icon button
- Analytics events: share_streak, share_progress
Deep linking (scripture:// URL scheme):
- scripture://book/{bookId}/{chapterNum} → opens chapter
- scripture://people/{personId} → opens genealogy tree
- scripture://map, scripture://timeline → explore tools
- NavigationContainer linking config in App.tsx
- Shared verse messages include deep link URL
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Shows Old Testament and New Testament reading progress below the
overall progress card. Each bar shows chapters read / total with
percentage. Only appears for testaments where the user has started.
- getTestamentProgress() in db/user.ts: groups reading_progress by
OT/NT book IDs, returns chapters read vs total for each
- HomeScreen: loads testament progress on focus, renders compact
progress bars with gold fill
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Panels: DiscoursePanel, EchoesView, PeoplePanel, PlacesPanel,
TabbedPanelRenderer, TextualPanel, TimelinePanel
Tree: PersonSearchBar
Map: StoryPicker
Screens: ConceptBrowse/Detail, WordStudyDetail, ProphecyDetail,
DifficultPassagesBrowse/Detail, ScholarBio, Search, BookList, AllNotes
Components: InterlinearSheet, CollectionPicker, ScholarInfoSheet,
AuthorshipSheet, WordStudyPopup, CrossRefPopup, QnavOverlay
All interactive elements (TouchableOpacity/Pressable) now have
accessibilityRole + descriptive accessibilityLabel. Tab controls
include accessibilityState for selected state.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- useTTS: accepts optional voiceId, passes to Speech.speak()
- useAvailableVoices: lists device's English TTS voices
- settingsStore: ttsVoice preference (persisted to SQLite)
- ChapterScreen: passes ttsVoice from settings to useTTS
- Added debug logging to diagnose TTS not playing
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Speech.stop() triggers onDone on some platforms, which caused the
hook to auto-advance to the next verse even when paused. Added a
stoppedManually ref flag — onDone only advances when the speech
completed naturally, not when we explicitly stopped it.
Also fixes: pause → play now restarts the current verse instead
of silently skipping it.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
expo-speech uses the iOS ringtone/phone-call audio channel, which is
silenced by the hardware mute switch — even though music/video plays
fine. Added expo-av to set playsInSilentModeIOS=true before speaking,
which routes TTS through the media channel instead.
Now TTS plays regardless of the mute switch position, matching user
expectation (they tapped play, they want to hear it).
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
New section "TEXT-TO-SPEECH" in Settings lets users choose from all
English voices available on their device. Includes hint to download
enhanced voices from iOS Accessibility settings.
- useAvailableVoices hook: enumerates system English voices via expo-speech
- VoicePicker component in SettingsScreen: expandable list, persists selection
- settingsStore: ttsVoice preference (persisted, hydrated on startup)
- ChapterScreen: passes selected voice to useTTS hook
iOS ships with dozens of voices (Samantha, Daniel, Aaron, etc.).
Enhanced/premium voices can be downloaded free in Settings > Accessibility
> Spoken Content > Voices > English.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
Recommended voices (Nathan, Daniel, Samantha, Aaron Enhanced) sort
to the top of the voice list with a RECOMMENDED badge. Helps users
find the best voices for scripture reading without scrolling.
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
- LoginScreen: 7 tests (rendering, social buttons, inputs, links)
- SignUpScreen: 5 tests (rendering, fields, social buttons, links)
- ForgotPasswordScreen: 6 tests (rendering, input, button, links)
- supabase.ts: 4 tests (isSupabaseAvailable, getSupabase when unconfigured)
https://claude.ai/code/session_01A4HcModKHZYEAerBS28rzr
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@CraigBuckmaster
CraigBuckmaster merged commit 3966e20 into masterApr 2, 2026
1 check passed
@CraigBuckmaster
CraigBuckmaster deleted the claude/edit-person-bio-view-KqJsX branch April 2, 2026 02:17
@github-actions

Copy link
Copy Markdown

Test Results

✅ All tests passed

PassedFailedTotal
Tests✅ 1228❌ 01228
Suites✅ 211❌ 0211

Coverage

StatementsBranchesFunctionsLines

⏱️ Duration: 46.4s

Sign up for freeto 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.

2 participants

@CraigBuckmaster@claude