1429 Commits

Author SHA1 Message Date
MartinBraquet
a091c7ad88 Add CHANGELOG.md and integrate user-facing release notes with technical details into release.sh and /news page. Enhance /news with collapsible technical sections and improve localization. 2026-07-27 01:26:14 +02:00
MartinBraquet
061c30e7f5 Adjust top padding for safe area insets in filters modal and media modal buttons for better responsive UI handling. 2026-07-27 01:24:35 +02:00
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
b6536a9b58 Simplify bio tooltip text for clarity and consistency in profile filtering explanation. 2026-07-26 16:06:18 +02:00
MartinBraquet
24fbd59f18 Add hint for centering face in profile picture with localized translations (DE, FR) 2026-07-26 15:09:07 +02:00
MartinBraquet
20732a5cbe Update filter labels for conciseness and consistency across components and translations. 2026-07-26 14:52:22 +02:00
MartinBraquet
fdc57f80af Add "Get Notified" button for saved searches and improve filters UI behavior:
- Introduced `GetNotifiedButton` for bookmarking searches and receiving notifications when new profiles match.
- Optimized responsive behavior of filters for desktop and mobile layouts.
- Enhanced "no profiles found" state with a clear call-to-action and improved visual design.
- Updated translations for notification strings in German and French.
2026-07-26 14:25:46 +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
3f73afb693 Wrap required profile form in a styled surface container for consistent UI with onboarding screens. Adjust layout and input widths in required form for better alignment and responsiveness. 2026-07-26 12:53:09 +02:00
MartinBraquet
e218fe4aa8 Update empty state subtitle for notifications with new text clarifying triggers and announcements 2026-07-26 12:52:17 +02:00
MartinBraquet
680431ed75 Revamp notifications UI and settings
- Redesigned notification cards with improved spacing and layout for better readability.
- Introduced a skeleton state and enhanced empty state for notifications with visual cues and localized text updates.
- Split notification settings into "Social" and "Other" categories for clearer organization.
- Added "Opt out of all notifications" as a separate toggle card.
- Refactored the option rendering logic and header structure for consistent alignment.
- Localized new strings for German and French translations.
2026-07-26 11:16:31 +02:00
MartinBraquet
fb24068729 Declare microphone-related permissions for voice recording in AndroidManifest and handle runtime permission errors appropriately in Android app. Update versionCode to 133 and add localized strings for improved error messaging. 2026-07-25 18:34:24 +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
fe5dc02321 Add customizable icon support to CopyLinkOrShareButton and update profile sharing icon
- Introduced `icon` prop to `CopyLinkOrShareButton` for greater flexibility.
- Updated `ShareProfileButton` to use `ShareIcon` for improved clarity and visual consistency.
2026-07-25 00:11:07 +02:00
MartinBraquet
d3e0835e43 Merge branch 'refs/heads/worktree-stay-on-delete' 2026-07-25 00:03:21 +02:00
MartinBraquet
19e253061d Add targeted share sheet content for profile sharing
- Enhanced `CopyLinkOrShareButton` to support optional title and text for OS share sheets.
- Updated profile sharing to include contextual text about Compass' features and profile relevance.
- Localized share content in German and French JSON translations.
- Adjusted "Copy Link" button label to "Share" for clarity in supported languages.
2026-07-24 23:57:56 +02:00
MartinBraquet
35c7ee178f Encourage users to keep their account when deleting for lack of matches
When someone picks a scarcity reason in the delete survey (not enough
relevant people, community not active enough, messages unanswered), show
a callout making the case for staying: keeping the account is free,
saved-search alerts come to them, and staying keeps them findable by
people who join later. Two compatible people who join at different times
and both delete never meet.

Also relabels the modal's cancel button to "Keep my account" in that case.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-24 23:54:53 +02:00
MartinBraquet
6dbfab2237 Add useCountUp hook and integrate animated counting stats into About page
- Introduced `useCountUp` hook to facilitate animated counting of numbers with easing effects.
- Updated About page to display member, country, and conversation stats with count-up animations.
- Added API data retrieval and Intersection Observer logic to trigger animations on scroll.
- Replaced `GeneralButton` in About page with a custom `<Link>` for consistent styling and hover effects.
- Enhanced visual hierarchy by applying animations and styles adapted for reduced-motion users.
2026-07-24 21:07:39 +02:00
MartinBraquet
bf4c1460af Update Twitter description meta tag to use OG_DESCRIPTION constant for consistency 2026-07-24 21:04:11 +02:00
MartinBraquet
381a6a0b7a Standardize meta descriptions by introducing OG_DESCRIPTION constant 2026-07-24 20:28:20 +02:00
MartinBraquet
9ab38056ab Update app description to emphasize directory features and ad-free experience 2026-07-24 20:11:44 +02:00
MartinBraquet
de99d2decc Add social preview card rendering and deployment
- Introduced `OgCard` React component as the default Open Graph preview card for social sharing (1200x630).
- Added `BrandFonts` module to load web fonts for accurate rendering.
- Integrated `OgCard` into the media creator pipeline as a `<Still>` with a new `still:og` script.
- Updated upload script to version the output and ensure compatibility with caching policies.
- Included new card meta tags across web pages, defaulting to this design for links without a custom preview.
- Extended theme and README to document font usage, card details, and deployment workflow.
2026-07-24 18:34:18 +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
cfa39ec88c Bump Android app version to 1.31.1 2026-07-24 04:38:10 +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
f1b71513b6 Switch vote tally images to PNG format and remove WebP variants 2026-07-23 18:52:13 +02:00
MartinBraquet
a468326e92 Remove support for narrow vote tally images and switch to PNG format 2026-07-23 18:42:48 +02:00
MartinBraquet
b3351707e2 Optimize editor performance by reducing excessive re-renders
- Introduced `useEditorState` hook for targeted subscriptions in components (e.g., text length, active marks, editor state).
- Disabled global re-rendering on every transaction within the editor.
- Improved typing responsiveness across components by limiting reflows and re-renders caused by keystrokes.
- Updated components (`LLMExtractSection`, `comment-input`, `editable-bio`, etc.) to leverage `useEditorState` for localized updates.
- Refined floating toolbar behavior with `requestAnimationFrame` for smoother scrolling and reduced layout thrashing.
2026-07-23 18:14:30 +02:00
MartinBraquet
f055e2e4e1 Update VoteEvidence link styling to use primary-700 color 2026-07-23 18:04:48 +02:00
MartinBraquet
f79f85bdde Refine chart animation trigger logic
- Adjusted IntersectionObserver to wait for the entire chart frame to enter the viewport before triggering animation, using `threshold: 1`.
- Updated observer options for smoother and more intuitive growth visualization.
2026-07-23 18:04:24 +02:00
MartinBraquet
8a562a1470 Redesign sidebar components for improved accessibility, visual hierarchy, and hover/active state differentiation. 2026-07-23 17:44:45 +02:00
MartinBraquet
f168ce2466 Enhance About page with updated help cards, improved sharing functionality, growth visualization, and refined translations 2026-07-23 17:32:56 +02:00
MartinBraquet
8d66e324e8 Redesign and enhance About page layout and content
- Updated `VoteEvidence` and `NotifySpotlight` components with improved layouts, scaling, and responsiveness.
- Added live mobile sharing button leveraging the Web Share API on supported devices.
- Simplified and modernized repo activity metrics, introducing display floors and "last updated" live ping messaging.
- Improved German and French translations for new and existing components.
- Removed outdated or redundant components and feature cards for cleaner structure and focus.
- Refined media handling, accessibility, and content ordering for better usability and readability.
2026-07-23 16:18:31 +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
58625b604a Prettier 2026-07-23 14:53:48 +02:00
MartinBraquet
46cd312b9a Add user reporting functionality to message channels
- Introduced the ability to report users directly from the message channel menu.
- Added `ReportUser` modal for selecting and reporting specific users.
- Updated icon usage and adjusted supporting logic in the `[channelId].tsx` file.
2026-07-23 14:18:36 +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
d35066d485 Add vote-tally capture and "How a decision gets made" section
- Introduced `capture-vote.mjs` script to capture real voting proposal cards as visual evidence.
- Added `VoteEvidence` component to the about page to support the "Democratic" governance claim with verifiable proof from the `/vote` page.
- Integrated desktop and mobile screenshot handling, switching via `<picture>` media queries for optimal display.
- Updated about page layout to embed the proof next to the assertion, removing redundancy from the feature cards.
- Documented implementation details and selection rationale in `marketing-visuals.md`.
- Enhanced build scripts and updated image handling to support vote screenshots (WebP format, lazy-loaded).
2026-07-22 02:34:18 +02:00
MartinBraquet
0136f1f386 Add search demo video generation and integration
- Introduced `capture-search.mjs` script for end-to-end mobile search flow captures.
- Added `SearchDemo` scene as a Remotion composition for the home-page hero clip.
- Integrated dynamic video selection based on theme in `home/search-demo.tsx` component.
- Included `fetch-media.mjs` script for fetching demo assets during build.
- Enabled optional email verification bypass for local captures (`dev-flags.ts`).
- Updated related documentation and scripts for media creation and deployment.
2026-07-22 01:39:45 +02:00
MartinBraquet
7afa52252f Add script to generate AI-based showcase portraits for fictional profiles
- Introduced `generate-showcase-portraits.ts` using the Gemini API for synthetic portrait generation.
- Added `PORTRAITS` data structure for controlling persona appearances and scenes.
- Implemented functionality to ensure consistent identity across generated photos.
- Integrated `.env` API key support and optional modes for targeted regeneration (`--only`, `--force`, `--dry-run`).
- Updated related documentation (`marketing-visuals.md` and `README.md`) with generation guidelines and usage instructions.
- Seed script (`seed-showcase.ts`) enhanced to link generated photos with fictional profiles in the showcase dataset.
2026-07-21 15:34:41 +02:00
MartinBraquet
10e4c2008d Update member count messaging to reflect 700+ members in all relevant components and translations 2026-07-21 12:06:42 +02:00
MartinBraquet
fa8d09e10a Update Signal placeholder to support both phone numbers and signal.me links 2026-07-20 23:51:05 +02:00
MartinBraquet
31c241bb95 Add Signal support for social links, including URL handling, placeholder text, and icon rendering. Update version to 1.30.0. 2026-07-20 23:36:55 +02:00
MartinBraquet
414a86ee71 Improve tooltip and button styles for disabled state in connect actions 2026-07-13 18:05:33 +02:00
MartinBraquet
373721999f Simplify tooltip logic and add dismissal support for touch devices. 2026-07-13 14:04:50 +02:00
MartinBraquet
f79e1dd865 Replace Modal with MediaModal and add lightbox for profile pinned media. 2026-07-13 13:57:13 +02:00
MartinBraquet
c4074a9d4e Add media creator 2026-07-13 13:40:01 +02:00
MartinBraquet
e2f49c6090 Fix 2026-07-11 11:24:53 +02:00
MartinBraquet
bd19aa6e7a Fix: update SEO logic to handle disabled or member-only profiles 2026-07-11 11:24:07 +02:00