468 Commits

Author SHA1 Message Date
MartinBraquet
c0d4127948 Bump API package version to 1.55.0 2026-07-30 01:08:09 +02:00
MartinBraquet
1a524345aa Implement notification deduplication with collapseKey to prevent stacking across messages/conversations. 2026-07-30 01:00:58 +02:00
MartinBraquet
f2c93e3220 Limit ts-jest worker usage in Jest configs to prevent memory exhaustion on high-core-count machines. 2026-07-29 22:58:54 +02:00
MartinBraquet
9612028e2c Mock database client functions in get-profiles tests to return resolved values; add projection field in test queries; comment out debug log in get-profiles implementation. 2026-07-29 22:47:01 +02:00
MartinBraquet
423361938c Refactor reusable components and improve test utilities: extract clickCheckbox and optionChip helpers, streamline personality slider updates, and integrate missing data-testid attributes for better test targeting. 2026-07-29 21:55:51 +02:00
MartinBraquet
77dc53d9c6 Fix redundant parentheses in is_banned_from_posting condition 2026-07-29 20:41:11 +02:00
MartinBraquet
8bf0ec0590 Clarify testing documentation: discourage monorepo-wide yarn test usage and add scoped testing examples. 2026-07-29 20:35:47 +02:00
MartinBraquet
98d9e5a7dd Enable response compression with compression middleware in API to reduce payload size. 2026-07-29 20:28:30 +02:00
MartinBraquet
0562896931 Bump API and Android app versions: update API to 1.53.0 and Android versionCode to 137 for release. 2026-07-28 19:39:22 +02:00
MartinBraquet
7a50931f49 Add moderation tools: AccountOnHoldNotice component for user ban messaging variations, BannedUserModBar for moderator actions, and backend support for banReason. 2026-07-28 13:21:50 +02:00
MartinBraquet
26f086ce14 Solid re-design of home / about / profile / press pages 2026-07-28 02:06:51 +02:00
MartinBraquet
b53f9ee14f Refactor OpenAPI spec handling: centralize securitySchemes definition, omit internal endpoints from public spec, and update 404 message link. 2026-07-27 13:47:01 +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
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
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
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