Commit Graph

25 Commits

Author SHA1 Message Date
Dorian
ffad3eb6e8 feat: enhance AuthModal loading indicators and button labels
- Replaced static icons with animated SVG loaders for various authentication actions, improving user feedback during loading states.
- Updated button labels to reflect current actions, such as 'Signing in...' and 'Waiting...', enhancing clarity for users.
- Adjusted layout spacing for buttons to ensure consistent visual presentation.

These changes improve the user experience by providing clear visual cues during authentication processes.
2026-02-17 04:25:23 +00:00
Dorian
d8f54a5032 feat: add remote signer QR flow to AuthModal
- Introduced a new phase for remote signer login using QR codes, enhancing the authentication experience for desktop users.
- Implemented UI elements for displaying the QR code and handling user interactions, including error messages and loading states.
- Updated the Nostr Connect composable to support the new QR flow, including cancellation handling and improved error management.

These changes provide users with a seamless and modern way to authenticate using remote signers, improving overall usability.
2026-02-17 04:18:55 +00:00
Dorian
bd1f370760 feat: enhance Nostr login options in AuthModal
- Added a new login button for Nostr using Primal, providing a default option for users.
- Implemented handling for blocked pop-ups, allowing users to open Primal directly if the login pop-up is blocked.
- Updated the existing Nostr login button to improve layout and spacing.

These changes improve the user experience by offering additional login methods and addressing common issues with pop-up blockers.
2026-02-17 04:08:33 +00:00
Dorian
cef73f9694 feat: add Nostr Connect login functionality and update routing
- Introduced a new login option in AuthModal for Nostr Connect using remote signer (Primal), enhancing authentication methods.
- Updated the router to include a new path for Nostr Connect callback, allowing for seamless integration after remote signer approval.
- Enhanced error handling in AuthModal to surface Nostr Connect errors, improving user feedback during the login process.

These changes improve the authentication experience by providing additional login options and ensuring robust error management.
2026-02-17 04:00:40 +00:00
Dorian
bb4f13fc65 feat: implement nsec login functionality in AuthModal
- Added a new nsec login option that allows users to sign in using their private key.
- Introduced a toggle to reveal the nsec input field, enhancing user experience.
- Implemented validation and error handling for nsec submissions, ensuring robust login flow.
- Updated styles and layout for better visual consistency and usability.

These changes enhance the authentication process by providing an additional secure login method for users.
2026-02-14 15:26:42 +00:00
Dorian
8b10de2180 feat: enhance pubkey decoding and processing in AuthModal
- Updated decodePubkeyText function to support JSON input for NIP-98 events, improving flexibility in pubkey formats.
- Enhanced processPubkey function to handle signed NIP-98 events directly, streamlining the login process.
- Normalized input handling by trimming whitespace and stripping newlines, ensuring robust pubkey validation.

These changes improve the user experience by allowing more diverse input formats for pubkeys and simplifying the login flow.
2026-02-14 13:23:03 +00:00
Dorian
e10b0a0406 refactor: simplify Nostr login button and improve Amber login flow
- Removed conditional rendering for the Nostr login button, ensuring it is always displayed when the extension is available.
- Enhanced the Amber login flow with clearer messaging during the waiting phases for pubkey and signature.
- Added paste fallback options for users in case clipboard functionality fails, improving user experience during the login process.

These changes streamline the authentication experience and provide better feedback to users during the login phases.
2026-02-14 13:07:52 +00:00
Dorian
11d289d793 feat: add comment support for Lightning payments in BTCPay and Strike services
- Enhanced the sendPaymentWithAddress method in BTCPayService and StrikeService to accept an optional comment parameter.
- Updated resolveLightningAddress to include the comment in the callback URL if supported by the LNURL-pay endpoint.
- Modified PaymentService to construct a descriptive comment for Lightning invoices, improving clarity for users.

These changes enhance the payment experience by allowing users to include contextual information with their transactions.
2026-02-14 13:02:42 +00:00
Dorian
bbac44854c feat: integrate content fetching on successful Amber login
- Added content store integration to re-fetch content after successful Amber login, ensuring backstage-published projects are merged into the active catalog.
- Updated comments for clarity regarding the login flow and account registration timing.

This change enhances the user experience by ensuring that the content is up-to-date immediately after authentication.
2026-02-14 11:39:28 +00:00
Dorian
40485e9622 feat: enhance Amber login flow with unsigned event management
- Updated the AuthModal to reset the amberUnsignedEvent state during various phases of the login process.
- Improved handling of the unsigned NIP-98 event for better reuse during signing.
- Enhanced error handling to ensure the correct event data is used when authenticating with Amber.

These changes streamline the Amber login experience and improve state management for the signing process.
2026-02-14 11:25:27 +00:00
Dorian
276dab207c feat: implement three-phase Amber login flow in AuthModal
- Updated Amber login button to reflect new three-phase process.
- Added handling for reading public key and signature from clipboard.
- Introduced new state management for Amber login phases.
- Enhanced user feedback during each phase with appropriate messaging.
- Refactored related functions for clarity and maintainability.
2026-02-14 09:28:25 +00:00
Dorian
0e2f2b0a73 feat: allow dismissing sovereign flow to use traditional auth form
- "Go back" replaced with red italic "fuck you, I wanna be lame"
- After dismissing, sovereign trap no longer intercepts clicks
- Form fields become real inputs (email/password) for actual use
- sovereignDismissed state resets when modal reopens or closes

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 23:05:24 +00:00
Dorian
d8b8237300 copy: change sovereign flow text from NAH! to STOP!
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 23:02:47 +00:00
Dorian
31a225ec15 fix: set Nostr Extension and Amber login buttons to exact 48px height
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 22:48:28 +00:00
Dorian
37b0bc654a style: left-to-right fade animations on sovereign phases + match close button to film modal
- NAH! text now slides in from the left with a scale punch and glow
- Own your privacy phase slides in from the left with a smooth fade
- Close button restyled to match ContentDetailModal (circular, glassmorphism, blur)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 22:47:56 +00:00
Dorian
19e8186a30 fix: default auth modal to 'Join IndeeHub' register mode
- Modal now opens in register mode by default instead of login
- Removed the subtitle text under the heading
- Fake form fields update based on mode (Create a password vs Enter)
- Toggle text reads "Already have an account? Sign in" first
- Forgot password only shows in login mode

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 22:46:46 +00:00
Dorian
90cdd030e1 feat: sovereign identity flow — NAH! animation + keypair generation
When users click on the legacy email/password form, the form zooms
out and a bold "NAH!" animates in. This transitions to an
"Own your privacy" message with a "Generate Sovereign Identity"
button that creates a new Nostr keypair, logs the user in, and
presents a red glassmorphism "Download your new identity" button
that saves the nsec/npub keypair to a text file.

Uses applesauce PrivateKeyAccount.fromKey() for proper account
registration and persistence.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 22:43:23 +00:00
Dorian
941d8917f3 style: dark glass button for Nostr Extension login + or-divider
Replaced the hero-info-button class with a dark glass morphism style
matching the nav buttons — dark translucent background, subtle inset
highlight, backdrop blur, and hover lift. Added an -or- divider
between the Nostr Extension and Amber login options.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 22:39:34 +00:00
Dorian
6bb95fd004 fix: Amber login on mobile with two-phase clipboard flow
Mobile browsers block navigator.clipboard.readText() unless called
inside a user gesture (tap/click). The old flow relied on the
visibilitychange event to auto-read the clipboard when the user
returned from Amber, which silently failed.

New flow:
1. User taps "Sign in with Amber" → opens Amber via Android intent
2. User approves in Amber → pubkey copied to clipboard
3. User returns to browser → sees "Complete Sign-in" button
4. User taps "Complete Sign-in" → clipboard read succeeds (user gesture)
5. Pubkey decoded, account registered, backend session created

Also handles npub/nprofile decoding and provides clear error messages
for empty clipboard, missing permissions, and non-Android devices.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-13 22:23:34 +00:00
Dorian
cdd24a5def Implement backend API and database services in Docker setup
- Added a new `api` service for the NestJS backend, including health checks and dependencies on PostgreSQL, Redis, and MinIO.
- Introduced PostgreSQL and Redis services with health checks and configurations for data persistence.
- Added MinIO for S3-compatible object storage and a one-shot service to initialize required buckets.
- Updated the Nginx configuration to proxy requests to the new backend API and MinIO storage.
- Enhanced the Dockerfile to support the new API environment variables and configurations.
- Updated the `package.json` and `package-lock.json` to include new dependencies for QR code generation and other utilities.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 20:14:39 +00:00
Dorian
53a88b012a Update tsconfig and AuthModal component for enhanced functionality
- Added new composable `usecontentdiscovery` and `contentsource` to support additional content sources in the application.
- Removed unused `isAmberSupported` from the AuthModal component to streamline the authentication process.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 14:26:52 +00:00
Dorian
35bc78b890 Enhance content management and user interaction features
- Introduced a new content source toggle in the profile and app header to switch between IndeeHub and TopDoc films.
- Updated the content fetching logic to dynamically load content based on the selected source.
- Enhanced the seeding process to include a combined catalog of IndeeHub and TopDoc films, ensuring diverse content availability.
- Improved user interaction by preventing duplicate reactions and ensuring a smoother voting experience across comments and content.
- Added support for Amber login (NIP-55) for Android users, integrating it into the existing authentication flow.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 14:24:52 +00:00
Dorian
dcb419d67a Unify auth: bridge auth store and Nostr account on every login path
The app had two disconnected auth systems:
- Auth store (useAuth): controls isAuthenticated, subscription, My List
- Account manager (useAccounts): controls isNostrLoggedIn, comments

Previously each login path only populated one system:
- Persona login → Nostr only (no subscription/My List)
- AuthModal Nostr → Auth store only (no commenting)
- Extension login → Nostr only (no subscription/My List)

Now every login path bridges both systems:
- Persona/extension login also calls auth store loginWithNostr
- AuthModal Nostr login also registers extension in accountManager
- Logout already cleared both (no change needed)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 13:20:35 +00:00
Dorian
04d80f545e Fix Nostr icon and make algo filters responsive
- Replace broken shield SVG in auth modal Nostr login button
  with a proper key icon (matches Nostr's key-based identity)
- Show algorithm filter buttons inline on xl+ screens (1280px+)
  where there's room for all of them
- Collapse into "Algos" dropdown on md–xl screens to prevent
  overflow when the header is too narrow

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 12:37:20 +00:00
Dorian
c970f5b29f Enhance deployment script and update package dependencies
- Added detailed labels to the deployment script for IndeedHub, including title, version, description, license, icon, and repository URL.
- Updated package dependencies in package.json and package-lock.json, including upgrading 'nostr-tools' to version 2.23.0 and adding 'axios' and '@tanstack/vue-query'.
- Improved README with a modern description of the platform and updated project structure details.

This commit enhances the clarity of the deployment process and ensures the project is using the latest dependencies for better performance and features.
2026-02-12 10:30:47 +00:00