578 Commits

Author SHA1 Message Date
MartinBraquet
a5c4969d48 Introduce new components and utilities: ProfileAvatar, ShareCTAButton, custom video extensions, and responsive hooks.
- Added `ProfileAvatar` for consistent avatar rendering across profiles, with fallback initials and gradient backgrounds.
- Created `ShareCTAButton` for sharing links with native sharing support and clipboard fallback.
- Integrated custom `tiptap` video extension (`tiptap-video`) for video support in rich text editing.
- Introduced `useColumnCount` for responsive column count management in dynamic masonry layouts.
- Enhanced onboarding flow with refined "Share My Profile" feature using the new share button.
- Updated styles and layout in filtered profiles and onboarding screens for better consistency and responsiveness.
2026-07-27 00:51:20 +02:00
MartinBraquet
deeb05f2e0 Add structured FAQ page with search, categories, and deep links
- Implemented `parseFaq` to transform markdown into structured data for improved rendering and SEO.
- Introduced `react-markdown` with custom styling for better alignment with the application design.
- Added search functionality with query matching and automatic expansion of relevant answers.
- Designed a sticky navigation rail for easier category navigation.
- Enabled deep linking to questions and categories for external reference.
- Created reusable components for FAQ items and markdown rendering.
- Updated markdown file handling to exclude FAQ from generic loader (`MD_PATHS`).
2026-07-26 13:41:08 +02:00
MartinBraquet
833b82feea Exclude null compatibility scores when ordering profiles by compatibility. Update compute-scores logic to delete invalid score rows instead of setting them to null. Add corresponding test coverage. 2026-07-26 12:40:08 +02:00
MartinBraquet
72ac0a63d5 Filter out banned users and disabled profiles in searchUsers when excludeUnavailable is enabled. Add corresponding unit tests. 2026-07-25 19:03:08 +02:00
MartinBraquet
27b18e1d46 Bump API version to 1.50.0 2026-07-25 18:22:41 +02:00
MartinBraquet
4c76b643e3 Add voice recording, transcription, and audio player components
- Implemented `AudioPlayer` for custom audio playback controls.
- Added `useAudioRecorder` hook for managing microphone audio recording with visual feedback.
- Introduced audio transcription API integration using OpenAI Whisper.
- Created `blobToBase64` utility to encode recorded blobs for API consumption.
- Added IndexedDB-based `recording-store` for saving in-progress recordings.
- Developed `VoiceAutofillSection` for guided recording, playback, transcription, and editing.
2026-07-25 18:01:58 +02:00
MartinBraquet
3a38e8affb Add neurotype and accessibility fields to profiles
- Added `accessibility_notes` (free text) to profiles to capture members' practical access needs while avoiding filterable attributes.
- Introduced `neurotype` (selectable values with details option) and GIN indexing to enable efficient keyword searches.
- Updated UI components, filters, and forms to support these new profile attributes.
- Modified backend and tests to handle the changes and ensure consistency across filtering, seeding, and display logic.
- Bumped API version to `1.49.0`.
2026-07-24 16:27:41 +02:00
MartinBraquet
674ca4172a Bump API version to 1.48.0 2026-07-24 03:17:10 +02:00
MartinBraquet
bce828aa74 Re-enable and conditionally include Firebase token retrieval instructions in local environment 2026-07-24 03:02:54 +02:00
MartinBraquet
95d217fb61 Add StatDonut, WorldHeatmap, and support for full country lists on stats page
- Introduced `StatDonut` and `WorldHeatmap` components for improved data visualization.
- Enhanced API to provide full country lists instead of a top-N subset for accurate map shading.
- Removed hardcoded country truncation logic in favor of dynamic slicing in the frontend.
- Updated age grouping logic to consolidate older age ranges and simplify backend queries.
- Refactored stats page layout to reduce redundancy and improve clarity of data presentation.
2026-07-24 02:57:51 +02:00
MartinBraquet
5645007ff8 Add demographic distribution cards and backend support for /stats page
- Implemented demographic breakdowns for profile fields like gender, age, orientation, and more.
- Added `DistributionCard` component to render ranked bar lists for frontend visualization.
- Introduced backend aggregation logic for demographic stats with thresholds to ensure data anonymity and validity.
- Updated API response to include `demographics` field for frontend integration.
2026-07-24 01:47:37 +02:00
MartinBraquet
d4f78d3d82 Make content_owner_id nullable in reports table 2026-07-23 19:20:08 +02:00
MartinBraquet
b171a81a75 Bump API to v1.47.0 and Android app to v1.31.0 2026-07-23 18:44:29 +02:00
MartinBraquet
799cca3c03 Add getChannelsCount API endpoint to retrieve total message channel count
- Implemented `getChannelsCount` function in the backend for querying channel count.
- Added public `get-channels-count` schema definition with related metadata.
- Integrated the new endpoint into client-side user utilities for specific table reads.
- Adjusted documentation for migration process consistency.
2026-07-23 15:01:38 +02:00
MartinBraquet
e7a68d56a6 Sanitize user input and strengthen limit validation for GeoDB API requests and SQL queries
- Encoded user-supplied terms to prevent query parameter injection in GeoDB API calls.
- Forced `limit` and `offset` to be finite integers in SQL builder for added defense against injection risks.
- Added unit tests to verify term encoding and limit validation behavior.
2026-07-23 14:31:37 +02:00
MartinBraquet
d69bc44dfd Improve SQL robustness and security across notification settings, private messages, and utilities
- Replaced raw SQL interpolation with parameterized queries to prevent injection risks.
- Refactored user notification preference validation using runtime synchronized enums for enhanced type safety.
- Updated private message and channel membership checks to respect the "left" status.
- Enhanced JSONB handling in update queries for correctness and maintainability.
2026-07-23 14:14:26 +02:00
MartinBraquet
ba3af2e5d7 Add alert loop video generation and platform stats enhancements
- Created `capture-alert.mjs` to generate alert loop video for the about page claim "Get Notified About Searches."
- Added `CountrySpread` widget for a ranked bar display of member distribution by country.
- Implemented `StatBand` component for live platform statistics on the about page.
- Introduced template rendering script (`render-search-alert.tsx`) for generating search alert email visuals.
- Updated documentation and improved workflows for media creation, video rendering, and data integration.
2026-07-23 00:28:45 +02:00
MartinBraquet
accdf56a79 Remove outdated "self update" policy from profiles table schema 2026-07-23 00:04:22 +02:00
MartinBraquet
153d52ece3 Streamline numeric range filtering for profile searches, improving logic for rare cases and excluding unfilled values where appropriate. Update version to 1.46.1. 2026-07-20 01:52:37 +02:00
MartinBraquet
2870377726 Refine diet filtering logic to better handle omnivore defaults 2026-07-20 01:33:39 +02:00
MartinBraquet
1148df10c8 Add spam guard to limit daily new conversations and auto-ban violators 2026-07-13 20:31:41 +02:00
MartinBraquet
83f7d2db54 Fix: remove lastModificationWithin filter from search notifications 2026-07-10 01:24:41 +02:00
MartinBraquet
8c69384de3 Add logs 2026-07-09 23:59:56 +02:00
MartinBraquet
75cbcee919 Fix daily alert
Do not send an alert again for someone who modified something in their profile that's unrelated to the alert
2026-07-09 23:16:38 +02:00
MartinBraquet
75c2913de2 Update docs 2026-07-02 18:45:37 +02:00
MartinBraquet
8b07e0ac13 API release 2026-07-02 18:40:08 +02:00
MartinBraquet
6f32b9a5cc Add dev API 2026-07-02 18:34:22 +02:00
Martin Braquet
394470c383 Update deploy script for remote dev (#61) 2026-07-02 17:19:46 +02:00
MartinBraquet
82eab67525 Add command to reset dev db and firebase 2026-06-09 21:42:03 +02:00
MartinBraquet
d37a7e3509 Add last_modification_time handling in claude code 2026-06-09 10:46:08 +02:00
MartinBraquet
bfd710f9b7 Fix db order 2026-06-09 00:13:22 +02:00
MartinBraquet
622e137c73 Save DB space and egress by removing prompts answered by <= 5 people 2026-06-08 15:58:13 +02:00
MartinBraquet
32b63b4ffd Fix profile chips UI in new search alerts emails 2026-06-07 18:21:43 +02:00
MartinBraquet
a10859079a Do not refresh profiles grid when going back to it without any filter change 2026-06-06 19:47:44 +02:00
MartinBraquet
ecb4a05d9a Add avatarUrl to new search alerts email 2026-06-06 18:39:31 +02:00
MartinBraquet
bf43bf1503 Add suspicious user limitations 2026-06-05 11:33:35 +02:00
MartinBraquet
4bfdc76687 Fix test 2026-05-31 14:32:28 +02:00
MartinBraquet
3201993561 Improve docs 2026-05-31 14:31:25 +02:00
MartinBraquet
e3f9a3fc81 Prevent user from setting their own user data 2026-05-31 14:23:37 +02:00
MartinBraquet
19c553f252 Refactor search alerts component for improved styling and structure 2026-05-31 01:35:03 +02:00
MartinBraquet
7ffb8c98c8 Update docs and add CLAUDE.md to sub dirs 2026-05-28 15:31:56 +02:00
MartinBraquet
d1010cd0ea Remove cisgender options from gender choices and localization files 2026-05-24 17:25:13 +02:00
MartinBraquet
77d8bd29e8 Refactor orientation filtering logic for improved clarity and handling of non-straight responses 2026-05-24 17:16:42 +02:00
MartinBraquet
4ce0096254 Deploy API 2026-05-24 16:38:02 +02:00
MartinBraquet
bd2325126c Fix jest tests 2026-05-24 16:35:15 +02:00
MartinBraquet
dd609e3448 Refactor profile column retrieval to improve caching and readability 2026-05-24 16:26:16 +02:00
MartinBraquet
770c02ac88 Add orientation profile field and extend gender options 2026-05-24 15:37:05 +02:00
MartinBraquet
c72b13fef9 Bump API package version to 1.40.0 2026-05-23 12:03:03 +02:00
Okechi Jones-Williams
00c6f2566e [Syncing] Small PR to lay foundations for Testing filtering and to sync with upstream (#51)
* Added Database checks to the onboarding flow

* Added compatibility page setup
Added more compatibility questions

* Finished up the onboarding flow suite
Added compatibility question tests and verifications
Updated tests to cover Keywords and Headline changes recently made
Updated tests to cover all of the big5 personality traits

* .

* Fix: Merge conflict

* .

* Fix: Added fix for None discriptive error issue #36
Updated signUp.spec.ts to use new fixture
Updated Account information variable names
Deleted "deleteUserFixture.ts" as it was incorporated into the "base.ts" file

* Linting and Prettier

* Minor cleaning

* Organizing helper func

* Added Google account to the Onboarding flow

* Added account cleanup for google accounts

* Started work on Sign-in tests
Updated seedDatabase.ts to throw an error if the user already exists, to also add display names and usernames so they seedUser func acts like a normal basic user
Some organising of the google auth code

* Linting and Prettier

* Added checks to the deleteUser func to check if the accout exists
Added account deletion checks

* Linting and Prettier

* Formatting update, fixed homePage locator for signin

* .

* .

* .

* Coderabbitai fix's

* Fix

* Improve test utilities and stabilize onboarding flow tests

* Changes requested

* Changed POM/Fixture structure to use an app class to instantiate the page objects

* Apply suggestion from @MartinBraquet

* Delete .vscode/settings.json

* Apply suggestion from @MartinBraquet

* Apply suggestion from @MartinBraquet

* Apply suggestion from @MartinBraquet

* Linting and Prettier

* Updated People page

* Fix app.ts

* Updated peoplePage.ts: continued adding functions to use filters
Updated filters.tsx: added data testid

* Coderabbitai fix's

* .

* Explanded seeding to better reflect the different types of profiles

* Updated People page
Added data test attributes to search.tsx and profile-grid.tsx

* Lint and Prettier

* Test renamed

* CodeRabbit Suggestions

* .

* Apply suggestions from code review

Co-authored-by: Martin Braquet <martin.braquet@gmail.com>

---------

Co-authored-by: MartinBraquet <martin.braquet@gmail.com>
2026-05-20 20:02:00 +02:00
MartinBraquet
5467016b05 Bump API package version to 1.39.1 2026-05-13 18:51:41 +02:00