Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
171 commits
Select commit Hold shift + click to select a range
be237ca
main changes
Lomacar Jan 31, 2026
942f43c
record button ripple animation
Lomacar Jan 31, 2026
62788c3
Create Recording View as a page
rafaelwinter01 Jan 31, 2026
41ffa96
Fixed tap and hold timing issues
Lomacar Feb 1, 2026
299f795
Update UI components
rafaelwinter01 Feb 1, 2026
5e64f95
Added help tooltip and localisation for everything
Lomacar Feb 1, 2026
f1058a4
Changed min press-and-hold time 1s > 0.5s
Lomacar Feb 1, 2026
2d6e468
adjusted haptic feedback, other tweaks
Lomacar Feb 1, 2026
4f3232d
lint fixes and prettier
Lomacar Feb 1, 2026
8234875
fixed double "recording" key in localizations
Lomacar Feb 1, 2026
6eeab38
UI Changes
rafaelwinter01 Feb 1, 2026
bf13e18
Replace Inserting Wheel with LegendList
rafaelwinter01 Feb 2, 2026
b2e4f15
Merge branch 'dev' into rafael/new-recording-view-b
rafaelwinter01 Feb 4, 2026
a610214
Update Record Button
rafaelwinter01 Feb 4, 2026
4988cde
Merge branch 'dev' into rafael/new-recording-view-b
rafaelwinter01 Feb 4, 2026
12e668c
Adding function to selected between add or replace audio
rafaelwinter01 Feb 6, 2026
067e790
Fix play all assets when no card is selected
rafaelwinter01 Feb 6, 2026
04d76ce
Hide buttons when recording
rafaelwinter01 Feb 6, 2026
b9bed29
Just implementing UI first
Lomacar Feb 7, 2026
a235a7c
Merge remote-tracking branch 'origin/rafael/new-recording-view-b' int…
Lomacar Feb 7, 2026
8f2fe77
Fixed merge related issues + trimming plays audio
Lomacar Feb 7, 2026
eccee21
generating waveform from m4a and some refactoring
Lomacar Feb 8, 2026
8b2e3c2
support for merged segments
Lomacar Feb 8, 2026
c92256c
localization and audio preview checkbox
Lomacar Feb 8, 2026
5e597f8
allow dragging trim point after jumping
Lomacar Feb 8, 2026
ba4268c
upgrade expo 54 + reanimated + posthog
keeandev Feb 9, 2026
ad1f4f4
expo doctor git ignore change
keeandev Feb 9, 2026
a7ae6fb
remove deprecated code (reanimated, edge to edge flag, safe area view)
keeandev Feb 9, 2026
c113c1e
remove legacy expo file system
keeandev Feb 9, 2026
bfd2d46
replace expo-av with expo-audio
keeandev Feb 9, 2026
f44c047
expo 55
keeandev Feb 10, 2026
90e2bfc
upgrade remaining dependencies
keeandev Feb 10, 2026
2559c1b
update tsconfig based on default expo template
keeandev Feb 10, 2026
7708675
fix: update tsconfig.json to fix @/ imports
keeandev Feb 10, 2026
0bdd124
add package json override for expo 55 compatiblity with package
keeandev Feb 10, 2026
cc5c00e
fix: package lock
keeandev Feb 10, 2026
c66f14b
fix syntax in package.json
keeandev Feb 10, 2026
370ae53
add missing dependency
keeandev Feb 10, 2026
5691a06
update packages again?
keeandev Feb 10, 2026
3e2ce05
migrate dependencies to expo doctor suggestions
keeandev Feb 10, 2026
f377d09
remove unused expo plugin
keeandev Feb 10, 2026
380bbb4
better precision playback of m4a with trim points
Lomacar Feb 10, 2026
2aaa560
added metadata for saving trim points
Lomacar Feb 10, 2026
06e5d19
Created assetAudio.ts with documentation, reworked AudioContext and p…
Lomacar Feb 11, 2026
505a32d
Merge branch 'dev' into AssetAudio
Lomacar Feb 11, 2026
6d28c5c
fix color scheme crash on android
keeandev Feb 12, 2026
5fc097f
Imported code for generating waveforms
Lomacar Feb 11, 2026
84ec949
Converted RecordingViewSimplified.tsx to use AssetAudio
Lomacar Feb 12, 2026
9b41f16
convert RecordingView to use AssetAudio
Lomacar Feb 12, 2026
db7a7e8
revamped play all
Lomacar Feb 12, 2026
8a82c37
enhanced audio progress bar
Lomacar Feb 12, 2026
3333c9f
removed test asset from recordingview
Lomacar Feb 12, 2026
f6555c5
refactor: rename supabase scripts to sb and knip to knip:check
keeandev Feb 12, 2026
84e92fa
Integrated AssetAudio into BibleAssetsView, fixed Play All bugs
Lomacar Feb 12, 2026
cc90b1a
update package lock
keeandev Feb 13, 2026
78e22cc
junk that probably shouldn't be in this branch
Lomacar Feb 13, 2026
c3d4a77
chore: style changes
keeandev Feb 13, 2026
cbaa7a6
chore: style changes
keeandev Feb 13, 2026
1cf82cf
chore: update app version to 2.1.0 and fix typo in android release sc…
keeandev Feb 13, 2026
f13eda4
Add isPreferred: true to react-native-alert primary action buttons
keeandev Feb 13, 2026
0b29b0d
fussed with animation of audio progress bar for merged clips
Lomacar Feb 13, 2026
340da6d
Jesus/animate button (#653)
keeandev Feb 13, 2026
7be63b1
Enhance localization support by adding Hindi, Burmese, Thai, and Mand…
keeandev Feb 13, 2026
42127af
Merge branch 'dev' into jesus/expo-54-2026
keeandev Feb 13, 2026
ac1b6b8
fix: package-lock
keeandev Feb 13, 2026
953a631
format + typefix
keeandev Feb 13, 2026
92e8154
fix(ci): use env vars for fingerprint-diff to avoid argument length l…
keeandev Feb 13, 2026
6ef8974
fix(ci): use file-based approach for large fingerprint diffs to avoid…
keeandev Feb 13, 2026
448c88c
change terms page
keeandev Feb 13, 2026
c9350bb
fix padding on download indicator
keeandev Feb 13, 2026
9bcd239
remove @expo/vector-icons and migrate all icons to lucide
keeandev Feb 13, 2026
60bc356
make sure to use the icon component
keeandev Feb 13, 2026
bae374c
remove withoutCredentials
keeandev Feb 13, 2026
e436316
refactor(ci): reorganize iOS and Android build jobs in preview workflow
keeandev Feb 13, 2026
1778440
format fix + check native build workflow attempt fix
keeandev Feb 13, 2026
c78bbcf
disable eas caching temporarily
keeandev Feb 13, 2026
9d20caa
invalidate preview cache
keeandev Feb 13, 2026
b8eb500
fix worker type for ios builds from linux to mac
keeandev Feb 13, 2026
4c64c1b
update ios repack step to use macos-medium for iOS builds
keeandev Feb 13, 2026
88c26aa
fix i agree button not being shown
keeandev Feb 13, 2026
77789cc
record ios screen in maestro tests
keeandev Feb 13, 2026
c0bceb2
try and fix terms page on small screens android
keeandev Feb 14, 2026
7a37508
use consistent testing devices Pixel 6 and iPhone 16e
keeandev Feb 14, 2026
0158249
improved progress bar accuracy for merged segments
Lomacar Feb 14, 2026
ab9bc75
Merge branch 'dev' into AssetAudio
Lomacar Feb 14, 2026
1e7c55f
prettier
Lomacar Feb 14, 2026
9849252
refactor(maestro): update flow paths and add new flows for user manag…
keeandev Feb 17, 2026
9e4c277
fix sign in button press in maestro flow
keeandev Feb 17, 2026
abb1315
add ios autofill fix
keeandev Feb 17, 2026
737544e
fix maestro flow to only apply on IOS - password autofill + run befor…
keeandev Feb 17, 2026
8ddda84
fix agree to terms localization
keeandev Feb 17, 2026
6d09441
add package.json scripts for clean rebuilds + fix swift warnings in m…
keeandev Feb 17, 2026
165165e
dont create apps on maestro test file changes
keeandev Feb 17, 2026
6bffda4
Merge branch 'dev' into jesus/expo-54-2026
keeandev Feb 17, 2026
8b1d480
chore: format fix
keeandev Feb 17, 2026
58a38af
Merge branch 'dev' into jesus/expo-54-2026
keeandev Feb 17, 2026
8c45e99
refactor: standardize item card components with cn() and Button compo…
keeandev Feb 17, 2026
ce784e5
fix text color on play button for audio player
keeandev Feb 17, 2026
8510c6e
add languoid aliases for new localizations + seed local
keeandev Feb 17, 2026
8356243
bump package.json version to 2.1.0 to match app.config.ts
cursoragent Feb 17, 2026
776a959
Merge branch 'dev' into jesus/expo-54-2026
keeandev Feb 17, 2026
2fe692e
add missing localization languages to mustBeOnlineToAcceptInvite and …
cursoragent Feb 17, 2026
61518b1
fix: remove duplicate mustBeOnlineToAcceptInvite entry and format
cursoragent Feb 18, 2026
d95bdb0
Add line-ending policy for consistent working tree state.
Lomacar Feb 18, 2026
0c946d2
rename localization migration to latest timestamp
cursoragent Feb 19, 2026
3c3165d
add EAS build cache provider
cursoragent Feb 19, 2026
0fd5f74
fix clean-rebuild scripts to use --clean flag
cursoragent Feb 19, 2026
e9d42b3
Add "development-simulator" build profile to eas.json
keeandev Feb 19, 2026
7f155a2
Merge expo-54 and align AssetAudio etc.
Lomacar Feb 19, 2026
8a7d05b
fixed Play All with expo-audio
Lomacar Feb 19, 2026
1282560
prettier and lint
Lomacar Feb 19, 2026
11c4d44
Merge branch 'AssetAudio' into Moss/trim-audio-feature
Lomacar Feb 19, 2026
3e7907f
getting trim modal to work again and performance improvements
Lomacar Feb 19, 2026
7781c93
fixed progress bar glitch in recording view
Lomacar Feb 20, 2026
20ab140
Tried to fix end trim precision and remove unused BibleRecordingView …
Lomacar Feb 20, 2026
d57f7ff
big improvent to end trim precision
Lomacar Feb 20, 2026
548ac87
migration fix
CalJosKos Feb 20, 2026
6aa212a
Handle saving trim in DB
Lomacar Feb 21, 2026
a940bf5
refactor merging
Lomacar Feb 21, 2026
8846ec7
added documention and unignored docs
Lomacar Feb 21, 2026
54bacb5
Implemented unmerging
Lomacar Feb 21, 2026
d1f7c52
flashing card animation after merge/unmerge
Lomacar Feb 21, 2026
03ae88f
refactor post merge/unmerge and flash effect
Lomacar Feb 21, 2026
36f58e9
fix asset resizing glitch on merge/unmerge
Lomacar Feb 21, 2026
0895466
prettier and lint
Lomacar Feb 21, 2026
1787259
Merge branch 'Moss/unmerging' into Moss/trim-audio-feature
Lomacar Feb 21, 2026
73c251b
fixed syntax errors
Lomacar Feb 21, 2026
b0a7691
bugfix - display and playback of merged assets with trimmed segments
Lomacar Feb 22, 2026
043c82f
improved selection controls UI
Lomacar Feb 22, 2026
048da02
refactored/consolidated selection controls and selection actions
Lomacar Feb 22, 2026
3296c9b
localisation
Lomacar Feb 22, 2026
a993784
improved drag gesture handling on edges of waveform
Lomacar Feb 22, 2026
2e4f17c
Merge branch 'dev' into jesus/expo-54-2026
keeandev Feb 23, 2026
e89326c
rename localization migration to latest timestamp
cursoragent Feb 23, 2026
62d1e0d
Merge branch 'dev' into jesus/expo-54-2026
keeandev Feb 23, 2026
7306bb6
fix migration
keeandev Feb 23, 2026
d4b7c81
Merge branch 'jesus/expo-54-2026' of https://github.com/genesis-ai-de…
keeandev Feb 23, 2026
75d8519
fix translation/transcription cards
keeandev Feb 23, 2026
95a146a
fix onboarding continue button hidden behind 3 button navigation on a…
keeandev Feb 24, 2026
100b0a5
attempt fix for audio recording state machine
keeandev Feb 24, 2026
c31604a
attempt fix for cannot create translation/transcription
keeandev Feb 24, 2026
6bc3fd5
try large machine for ios simulator runs
keeandev Feb 24, 2026
b154b65
update production ios simulator to large machine for consistency
keeandev Feb 24, 2026
0ccb376
Merge branch 'dev' into jesus/expo-54-2026
keeandev Feb 25, 2026
285ec0f
Merge branch 'dev' into Moss/trim-audio-feature
Lomacar Feb 26, 2026
8b3779e
typecheck
Lomacar Feb 27, 2026
9e37cb9
VAD and manual recording changes/fixes
Lomacar Mar 1, 2026
01ccb1d
Merge branch 'dev' into Moss/trim-audio-feature
Lomacar Mar 1, 2026
67915b7
Merge branch 'dev' into Moss/m4a-recording
Lomacar Mar 1, 2026
2f6f8a4
prettier and typecheck
Lomacar Mar 1, 2026
7cb46a0
Merge branch 'Moss/trim-audio-feature' of https://github.com/genesis-…
Lomacar Mar 1, 2026
e2cd416
Merging formatting and typecheck fixes from Moss/trim-audio-feature
Lomacar Mar 1, 2026
b2a39c0
Merge branch 'dev' into jesus/expo-54-2026
keeandev Mar 2, 2026
097bc7b
Upgrade to Expo SDK 55 and remove drizzle studio plugin override
keeandev Mar 2, 2026
68b7621
fix typecheck: add type assertion for buildCacheProvider
cursoragent Mar 2, 2026
612d433
Fix @powersync/common version conflict by adding override
keeandev Mar 2, 2026
612e19c
Merge branch 'jesus/expo-54-2026' of https://github.com/genesis-ai-de…
keeandev Mar 2, 2026
2a238ca
chore: bump app version to 2.2.0
keeandev Mar 3, 2026
b1b58f0
update deps + remove unused dep from old recording view
keeandev Mar 3, 2026
3c69fff
remove unused files
keeandev Mar 3, 2026
ff7b9eb
test disabling ios password autofill
keeandev Mar 5, 2026
72d2958
add agent skills
keeandev Mar 5, 2026
9e88833
bump package versions
keeandev Mar 5, 2026
4ec8a37
docs + script fix + package json script changes
keeandev Mar 5, 2026
5284109
recording state machine fix
keeandev Mar 5, 2026
f26708c
Merge branch 'jesus/expo-54-2026' into Moss/m4a-recording
keeandev Mar 6, 2026
0fde107
Merge branch 'dev' into Moss/m4a-recording
keeandev Mar 9, 2026
c28edb8
fix: remove undefined lastProcessedDurationRef and fix formatting
cursoragent Mar 9, 2026
9f91b9d
Merge branch 'dev' into Moss/m4a-recording
keeandev Mar 9, 2026
e1d8dd1
Merge branch 'dev' into Moss/m4a-recording
keeandev Mar 9, 2026
f60b552
Merge branch 'dev' into Moss/m4a-recording
keeandev Mar 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
<overview>
Component architecture patterns for building composable, accessible, reusable UI in React Native. Follows the components.build specification and Radix composition pattern.
</overview>

<artifact_taxonomy>
Understand the hierarchy:

1. **Primitive** - Lowest-level building block providing behavior and accessibility without styling (e.g., Radix UI Primitives)
2. **Component** - Styled, reusable UI unit that adds visual design to primitives (e.g., shadcn/ui components)
3. **Pattern** - Specific composition solving a UI/UX problem (e.g., form validation with inline errors)
</artifact_taxonomy>

<existing_components>
**Decision order when building features:**

1. **Check existing UI components** (in order):
- [React Native Reusables](https://reactnativereusables.com/docs) - UI components
- [React Native Primitives](https://rn-primitives.vercel.app/) - Radix primitives
- [RNR Community Resources](https://github.com/founded-labs/react-native-reusables/blob/main/COMMUNITY_RESOURCES.md)

2. **Check Expo SDK** - [Expo SDK docs](https://docs.expo.dev/versions/latest/) for native APIs

3. **Only then** consider third-party libraries or custom components.
</existing_components>

<composition_patterns>

<pattern name="children_and_slots">
- **Children** (implicit slot): JSX between opening/closing tags
- **Named slots**: Props like `icon`, `footer`, or `<Component.Slot>` subcomponents
- **Slot forwarding**: Pass DOM attributes/className/refs through to underlying element
</pattern>

<pattern name="render_props">
Use when parent must own data/behavior but consumer controls markup:

```tsx
<ParentComponent data={data}>
{(item) => <ChildComponent key={item.id} {...item} />}
</ParentComponent>
```
</pattern>

<pattern name="compound_components">
Use separate component imports to compose complex UI (shadcn-style):

```tsx
import {
Card,
CardHeader,
CardContent,
CardFooter
} from '@/components/ui/card';

<Card>
<CardHeader>Title</CardHeader>
<CardContent>Body</CardContent>
<CardFooter>Actions</CardFooter>
</Card>;
```
</pattern>

<pattern name="controlled_vs_uncontrolled">
- **Controlled**: Value driven by props, emits `onChange` (source of truth is parent)
- **Uncontrolled**: Holds internal state, may expose `defaultValue` and imperative reset
- Many inputs should support both patterns
</pattern>

<pattern name="polymorphism_aschild">
Use `asChild` prop to render as a different element:

```tsx
<Button asChild>
<Link href="/">Click me</Link>
</Button>
```

Renders as `<Link>` instead of `<button>`, preserving all Button behavior.
</pattern>

</composition_patterns>

<accessibility>

<keyboard_navigation>
- Document and implement keyboard map for every interactive component
- Support standard patterns: `Tab`, `Arrow keys`, `Home/End`, `Escape`
- All interactive elements must be keyboard accessible
</keyboard_navigation>

<focus_management>
- Rules for initial focus, roving focus, focus trapping
- Focus return on teardown (e.g., modals)
- Focus indicators visible and clear
</focus_management>

<aria>
- Use semantic HTML elements (`<button>`, `<ul>/<li>`, etc.)
- Augment with ARIA when necessary:
- `role` - Communicate semantics (`role="menu"`)
- `aria-*` states - State (`aria-checked`, `aria-expanded`)
- `aria-*` properties - Relationships (`aria-controls`, `aria-labelledby`)
</aria>

<color_contrast>
- Ensure sufficient contrast for text and interactive elements
- Don't rely solely on color to convey information
</color_contrast>

</accessibility>

<props_api>
- **TypeScript**: Ship with comprehensive types for safety and autocomplete
- **Stable, typed, documented** with defaults and a11y ramifications
- Support both **controlled** and **uncontrolled** patterns where applicable
- Document all props: name, type, default, required, description
- Document purpose, usage, accessibility notes, and customization options
</props_api>

<data_attributes>
Use data attributes for styling hooks and state:

- `data-slot` - Identify component parts for styling
- `data-state` - Indicate component state (open, closed, checked, etc.)
- `data-disabled`, `data-selected`, etc. - State indicators

```tsx
<View data-slot="trigger" data-state={isOpen ? 'open' : 'closed'}>
```
</data_attributes>

<variants>
Use **variants** for discrete style/behavior permutations (e.g., `size="sm|md|lg"`, `tone="neutral|destructive"`). Variants are not separate components.
</variants>
Loading