Skip to content

merge into main#620

Merged
keeandev merged 9 commits into
mainfrom
dev
Dec 20, 2025
Merged

merge into main#620
keeandev merged 9 commits into
mainfrom
dev

Conversation

@keeandev

Copy link
Copy Markdown
Contributor

No description provided.

keeandev and others added 9 commits December 10, 2025 02:58
…glory goes to God our Father and the Lord Jesus Christ and the Holy Spirit. (#597)

* Enhance project membership and download profiles functionality

- Added `download_profiles` support to the `profile_project_link` table, allowing for better management of member visibility in projects.
- Implemented database triggers to automatically sync `download_profiles` between projects and their associated members.
- Updated various components and views to utilize the new `download_profiles` feature, ensuring consistent behavior across the application.
- Refactored alert handling to use `@blazejkustra/react-native-alert` for improved cross-platform support.

This commit includes updates to the database schema, migration scripts, and relevant application logic to support the new functionality.

* Enhance animation guidelines and Supabase migration practices

- Expanded the animation guidelines to include core UX principles, design philosophy, and practical implementation strategies for creating engaging user experiences.
- Updated the Supabase migration documentation to emphasize idempotency, ensuring migrations can be safely run multiple times without errors.
- Added detailed patterns for creating idempotent migrations, including usage of `if not exists`, `create or replace`, and appropriate trigger management.
- Refined sync rules in the Supabase configuration to improve profile management and ensure only relevant profiles are synced based on active memberships.

* Refactor Supabase database function guidelines and enhance migration documentation

- Updated the Supabase function guidelines to clarify the use of `SECURITY INVOKER` and `SECURITY DEFINER`, providing detailed examples and best practices for each scenario.
- Revised the migration documentation to emphasize adherence to SQL standards and included a note on following the `.cursor/rules/supabase/postgres-sql-style-guide.mdc` for consistent SQL formatting.
- Improved sync rules in the Supabase configuration to ensure only active profiles are synced, enhancing overall data integrity and performance.
- Added new triggers and functions in the migration script to manage `download_profiles` effectively, ensuring accurate synchronization of member profiles across projects.

* Update `download_profiles` handling in `profile_project_link` table seed data

- Adjusted the seed data for `profile_project_link` to initialize `download_profiles` as an empty array instead of including the profile's own UUID.
- Clarified comments to indicate that `download_profiles` will be managed by triggers, ensuring accurate synchronization of active members across projects.

* Add form handling guidelines for react-hook-form, Zod, and TanStack Query

* Update `download_profiles` logic in migration and seed data

- Enhanced the migration script to ensure `download_profiles` is populated with other active members when a profile becomes active, while safeguarding against including the profile's own ID.
- Adjusted the seed data for `profile_project_link` to remove the initialization of `download_profiles`, allowing the trigger to manage it effectively.

* Enhance `download_profiles` management in migration script

- Updated the migration script to normalize empty arrays to null and ensure that `download_profiles` only includes active members when a profile becomes active.
- Improved comments for clarity on the handling of `download_profiles` across various operations, reinforcing the safeguard against including the profile's own ID.

* Refine `download_profiles` handling in migration script

- Added logic to clear `download_profiles` when a profile becomes inactive, ensuring no unnecessary synchronization of other members.
- Updated comments for clarity on the normalization of empty arrays to null, reinforcing the safeguard against including the profile's own ID.
- Removed backfill logic for `download_profiles`, allowing the trigger to manage it effectively.

* Enhance migration documentation for PowerSync schema handling

- Added detailed guidelines on when local migrations are needed or not needed, clarifying the behavior of PowerSync with schemaless JSON storage.
- Included a decision flowchart to assist in determining the necessity of local migrations based on client code interactions with schema changes.
- Emphasized the distinction between schema changes and data transformations, outlining the requirements for client-side migrations.

* Add statement timeout guidelines for long-running migrations

- Introduced a new section in the migration documentation detailing the use of statement timeouts for operations that may exceed the default timeout.
- Provided examples and scenarios where increasing the statement timeout is beneficial, such as backfilling data, running extensive updates, and creating indexes on large tables.
- Clarified that the timeout resets automatically after the transaction/session ends, eliminating the need for manual resets.

* Update sync rules and migration script for `download_profiles` management

- Added a new sync rule to include active project memberships for users in the `sync-rules.yml` file.
- Modified the existing sync rule for `profile_project_link` to ensure it only pulls active memberships.
- Updated the migration script to normalize `download_profiles` to an empty array when a profile becomes inactive, enhancing data integrity during synchronization.

* Update configuration and migration scripts

- Added PowerSync configuration to the MCP JSON file for improved integration.
- Enhanced production test workflow by including environment variables for APP_ID, TEST_EMAIL, and TEST_PASSWORD.
- Introduced a helper function in the migration script to normalize empty arrays for `download_profiles`, ensuring consistency in data handling.

* Refactor configuration file to comment out unused vault secrets

- Commented out the `[db.vault]` section in `config.toml` to prevent confusion regarding unused vault secrets for the invite trigger function.
- This change enhances clarity in the configuration file without removing the existing structure.
…608)

- Populate download_profiles for active members with other active members' profile_ids
- Set download_profiles to null for inactive members
- Ensures existing records match trigger function behavior
- Uses normalize_download_profiles function for consistency
* Cursor: Apply local changes for cloud agent

* feat: Update get_schema_info to version 2.1

Co-authored-by: realdinozoid <realdinozoid@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
- Add enablePlayAll flag check to Play All button in NextGenAssetsView
- Add enablePlayAll flag check to Play All button in RecordingViewSimplified
* fix(ringbuffer): properly clear ring buffer after segment written

Ensure ring buffer is cleared after writing audio segment to prevent stale audio in preroll for next segment. Fixes possible audio artifact issues due to buffer not being flushed on segment completion.

* Enhance GitHub Actions workflow for native build checks

- Added a new job to dismiss bot reviews upon approval in pull request reviews targeting the 'dev' branch.
- Updated existing job conditions to prevent execution during pull request reviews, ensuring streamlined workflow operations.
- Improved overall clarity and functionality of the check-native-build.yml file for better integration with pull request processes.

* refactor(microphone-energy): reduce ring buffer preroll duration to 200ms

Updated the ring buffer configuration in both Android and iOS modules to capture speech onset with a 200ms preroll instead of 1000ms. This change includes adjustments to the maximum size of the ring buffer and the default preroll duration in the segment start options, enhancing responsiveness for voice activity detection.

* Reduced VAD pause length min to 0.1.

- Introduced constants for VAD silence duration: minimum, maximum, and default values.
- Updated comments and logic in localStore.ts to reflect new constants.
- Adjusted increment/decrement handlers in VADSettingsDrawer to use the new constants for better maintainability and clarity.
- Ensured that silence duration settings are validated against the defined constants to prevent invalid values.

* Update VAD silence duration constants and refactor useVADRecording hooks

- Changed default VAD silence duration from 1000ms to 300ms in localStore.ts.
- Refactored useVADRecording hooks in both web and native implementations to utilize VAD_SILENCE_DURATION_MIN constant instead of hardcoded values for minSegmentDuration, enhancing maintainability.

* Initial commit of modified files from installation

Co-authored-by: realdinozoid <realdinozoid@gmail.com>

* Refactor energy to dB conversion and cleanup VAD logging

Co-authored-by: realdinozoid <realdinozoid@gmail.com>

---------

Co-authored-by: Moss Doerksen <lomacar@gmail.com>
Co-authored-by: ryderwishart <ryderwishart@gmail.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* Initial commit of modified files from installation

Co-authored-by: realdinozoid <realdinozoid@gmail.com>

* Update localization strings for project visibility and status

Co-authored-by: realdinozoid <realdinozoid@gmail.com>

* Refactor: Simplify visibility toggle logic

Co-authored-by: realdinozoid <realdinozoid@gmail.com>

* styling stuff + keyboard fix for create quest modal - All glory goes to God our Father and the Lord Jesus Christ and the Holy Spirit.

* feat tooltip - All glory goes to God our Father and the Lord Jesus Christ and the Holy Spirit.

* Enhance Drawer and VADSettingsDrawer components

- Added gesture event handlers to the Drawer component for improved interaction.
- Refactored VADSettingsDrawer to optimize rendering and prevent unnecessary re-renders by memoizing props.
- Updated microphone energy handling to improve performance and UI responsiveness.
- Introduced a new energy visualization bar with dynamic styling based on user interaction.
- Enhanced calibration and threshold controls for better user experience.

This commit aims to streamline the user interface and improve the overall functionality of the audio settings components.

* Refactor VADSettingsDrawer component layout

- Removed unnecessary padding from the VADSettingsDrawer component to streamline the UI.
- Adjusted the layout for improved visual consistency and user experience.

This change aims to enhance the overall appearance of the VAD settings interface.

* Update localization strings for project descriptions

- Reformatted localization strings for better readability and consistency across multiple languages.
- Ensured that all project description strings are clearly defined and properly structured.

This change aims to enhance the clarity and maintainability of localization files.

* Update writing rules and refactor ForgotPasswordView and SignInView components

- Added a new configuration section to writing rules to specify `alwaysApply` as false.
- Refactored ForgotPasswordView and SignInView components to replace direct imports of RNAlert with a consistent usage pattern.
- Updated the handling of the WifiOffIcon to use the Icon component for improved consistency in UI rendering.

These changes aim to enhance the maintainability of writing rules and improve the user interface across authentication views.

* Refactor Button component to use useThemeColor for activity indicator colors

- Replaced getThemeColor with useThemeColor for improved theme management in the Button component.
- Consolidated activity indicator color definitions into a single object for better maintainability.
- Removed the unused activityIndicatorColorVariants function to streamline the code.

These changes enhance the Button component's responsiveness to theme changes and improve overall code clarity.

* Enhance component guidelines and refactor UI elements

- Updated the component creation guidelines to clarify descriptions and improve accessibility sections.
- Refactored the AuthModal, OnboardingProgressIndicator, and ProjectMembershipModal components to improve z-index management for better layering.
- Introduced the Drawer component for the ProjectMembershipModal, enhancing the modal's usability and layout.
- Adjusted z-index values across various components to ensure proper stacking order and visibility.
- Improved the Tooltip component with new animation guidelines for a more responsive user experience.

These changes aim to enhance the clarity of component guidelines and improve the overall user interface across the application.

* Refactor AssetSettingsModal and QuestSettingsModal for improved UI and functionality

- Replaced the Modal component with a Drawer component for better usability and layout consistency.
- Updated the handling of visibility and active status toggles to simplify logic and improve clarity.
- Enhanced localization strings for better user guidance in asset and quest settings.
- Improved error handling and user feedback with consistent alert messages.

These changes aim to enhance the user experience and maintainability of the settings modals across the application.

* Update ProjectMembershipModal and ProfileView for improved layout and functionality

- Adjusted snap points in ProjectMembershipModal from 85% to 70% for better visibility.
- Reduced max height of ScrollView components in ProjectMembershipModal from 300 to 180 for enhanced content display.
- Added a property to the View component in ProfileView for improved handling of touch events.
- Cleaned up the import statement for RNAlert in ProfileView to ensure consistency.

These changes aim to enhance the user experience and maintainability of the components.

* Add description to writing style guidelines for clarity

* Enhance Drawer component with dismissible functionality

- Added a `dismissible` property to the Drawer context and props for improved user interaction.
- Updated the Drawer implementation to support dismissible behavior, allowing users to close the drawer by swiping down.

These changes aim to enhance the usability of the Drawer component and improve the overall user experience.

* Refactor VADSettingsDrawer and clean up NativeOnlyAnimatedView

- Simplified the TooltipContent component in VADSettingsDrawer by removing unnecessary props for improved readability.
- Removed redundant whitespace in NativeOnlyAnimatedView to streamline the code.

These changes aim to enhance code clarity and maintainability across the components.

* Adopt pressto pressables and harden VAD energy handling

- standardize buttons, drawers, and forms on pressto pressables (with global config) and replace the asset rename modal with a drawer for smoother UX

- add shared energy/reset plumbing and external energy support to avoid VAD lock conflicts, plus small localization and docs tidy-ups

* Refactor WalkieTalkieRecorder to use SharedValue for recording state management

- Replaced React refs with SharedValue in WalkieTalkieRecorder to avoid warnings and improve performance in worklet callbacks.
- Updated energy detection logic in useMicrophoneEnergy to handle active state more effectively and added a resetEnergy function.
- Refactored Combobox to utilize ButtonPressable for consistent button behavior across the UI.
- Minor cleanup in ForgotPasswordView to enhance form input handling.

These changes aim to enhance performance, maintainability, and user experience across the components.

* Refactor RecordingViewSimplified for performance and usability improvements

- Removed unnecessary imports and optimized SharedValue management for asset progress tracking, reducing memory usage.
- Replaced the RenameAssetModal with a RenameAssetDrawer for a smoother user experience.
- Updated asset loading logic to handle local-only assets and improved metadata handling to prevent memory issues.
- Enhanced VAD segment handling and recording order calculations to streamline functionality and improve responsiveness.

These changes aim to enhance performance, maintainability, and user experience in the recording view component.

* Remove trailing whitespace in NativeOnlyAnimatedView for improved code clarity and maintainability.

* Supabase schema version bump (#610)

* Cursor: Apply local changes for cloud agent

* feat: Update get_schema_info to version 2.1

Co-authored-by: realdinozoid <realdinozoid@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>

* Refactor DownloadConfirmationModal to use Drawer component for improved UX

- Replaced Modal with Drawer for the download confirmation interface, enhancing user interaction.
- Updated localization to include 'Download Quest' alongside 'Download Project'.
- Adjusted layout and styling to fit the new Drawer structure, ensuring a consistent design.

These changes aim to streamline the download confirmation process and improve overall usability.

* Remove compatibility patch for react-native-reanimated 4 and update ANIMATION_EASING declaration in bottom-sheet constants for cleaner code.

* Update Drawer component to use DrawerKeyboardAwareScrollView and comment out drawerInput prop in ProjectDirectoryView for improved functionality and clarity.

* Change uniqueIdentifier to a constant

Changed uniqueIdentifier from export to const.

* Enhance WaveformVisualization and VADSettingsDrawer components

- Improved waveform bar height scaling for recorded and non-recorded audio, ensuring better visibility and responsiveness.
- Adjusted energy bar dimensions and spacing in VADSettingsDrawer for improved UI consistency.
- Updated energy normalization logic to reflect that energy values are already in a normalized amplitude range (0-1), simplifying calculations and enhancing performance.
- Refactored dB conversion logic to eliminate unnecessary divisions, optimizing performance in audio processing.

* Refactor RenameAssetDrawer to use DrawerView for improved structure and maintainability. Updated component layout while preserving functionality.

* Refactor microphone energy module ring buffer to store timestamps

- Updated the ring buffer implementation in both Android and iOS modules to store tuples of (buffer, timestamp) for better time-based clearing.
- Enhanced the logic for managing the ring buffer, ensuring that only entries up to a specified time after segment end are cleared, preserving relevant audio data.
- Adjusted the handling of buffers during segment writing to maintain consistency and prevent stale audio in preroll.

* Add energyShared prop to RecordingViewSimplified component

* chore: typefix

* Update package dependencies and scripts for React Native Debugger

- Added @react-native/debugger-frontend and @react-native/dev-middleware at version 0.83.1 to package.json and package-lock.json.
- Updated start script to set the REACT_NATIVE_DEBUGGER_FRONTEND_PATH environment variable.
- Resolved dependency versions to ensure compatibility with the latest Chrome DevTools.

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: ryderwishart <ryderwishart@gmail.com>
@vercel

vercel Bot commented Dec 20, 2025

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
langquest Ready Ready Preview, Comment Dec 20, 2025 2:29am

@keeandev keeandev enabled auto-merge December 20, 2025 02:29
@supabase

supabase Bot commented Dec 20, 2025

Copy link
Copy Markdown

Updates to Preview Branch (dev) ↗︎

Deployments Status Updated
Database Fri, 09 Jan 2026 22:32:22 UTC
Services Fri, 09 Jan 2026 22:32:22 UTC
APIs Fri, 09 Jan 2026 22:32:22 UTC

Tasks are run on every commit but only new migration files are pushed.
Close and reopen this PR if you want to apply changes from existing seed or migration files.

Tasks Status Updated
Configurations ⚠️ Fri, 09 Jan 2026 22:32:22 UTC
Migrations Fri, 09 Jan 2026 22:32:22 UTC
Seeding Fri, 09 Jan 2026 22:32:23 UTC
Edge Functions Fri, 09 Jan 2026 22:32:25 UTC

⚠️ Warning — You can configure a persistent branch with config.toml:
[remotes.staging]
project_id = "yjgdgsycxmlvaiuynlbv"


View logs for this Workflow Run ↗︎.
Learn more about Supabase for Git ↗︎.

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​rn-primitives/​tooltip@​1.2.0981006983100
Added@​react-native/​debugger-frontend@​0.83.1941008697100
Updated@​gorhom/​bottom-sheet@​5.2.6 ⏵ 5.2.89910093 +192 +6100
Added@​react-native/​dev-middleware@​0.83.19910010097100

View full report

@ryderwishart ryderwishart left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have tested affected functionality (VAD), in TestFlight for iOS and the dev APK on android

@keeandev keeandev merged commit bf8556c into main Dec 20, 2025
18 of 19 checks passed
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.

2 participants