- Wrap inline algo buttons in a hidden/flex container so the
parent div controls visibility instead of per-button classes
(scoped .nav-button display:inline-block was overriding
Tailwind's hidden class)
- Add flex-shrink-0 to logo link so it never gets squeezed out
on narrower desktop screens
- Reduce logo-to-nav gap on md screens (gap-4) to prevent
overflow, widen to gap-10 at lg+
Co-authored-by: Cursor <cursoragent@cursor.com>
- Top-level comments keep their existing layout (avatar, name,
timestamp, text, action bar)
- Replies now render in a rounded glass bubble with subtle
background and border, chat-message style (flat top-left
corner, rounded on the other three)
- Smaller avatars and more compact action buttons for replies
- Reply form pulled outside the comment layout for cleaner
nesting at all depths
- Better spacing between comment threads
Co-authored-by: Cursor <cursoragent@cursor.com>
- Top-level comments render as glass-card bubbles with subtle
border, backdrop blur, and hover highlight
- Replies use a lighter, more compact bubble variant
- Threaded replies connected by a vertical line on the left
instead of raw margin indentation
- Action buttons (upvote, downvote, reply, expand) styled as
pill-shaped micro-buttons inside each bubble
- Reply form nests inline within the parent bubble
- Proper spacing and responsive padding at all nesting depths
Co-authored-by: Cursor <cursoragent@cursor.com>
- Clicking My List when not logged in now opens the auth modal
directly instead of navigating to a page with a sign-in button
- After successful login, auto-redirects to /library (My List)
- Works on both desktop header and mobile tab bar
- App.vue tracks a pending redirect path so the post-login
navigation happens seamlessly
- Direct URL navigation to /library when not logged in also
triggers the modal and redirects back to Films
Co-authored-by: Cursor <cursoragent@cursor.com>
- 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>
- Replace inline filter buttons in desktop header with a single
"Algos" dropdown that shows all discovery algorithms in a glass
menu with checkmark for the active selection and a clear option
- Button label dynamically shows the active algorithm name or
defaults to "Algos" when no filter is active
- Rename mobile tab bar "Filters" to "Algos" with a gear icon
- Rename bottom sheet title to "Algos" to match
Co-authored-by: Cursor <cursoragent@cursor.com>
- Add nostr-rs-relay service to docker-compose for persistent
comments, reactions, and profiles on the dev server
- Add one-shot seeder container that auto-populates the relay
with test personas, reactions, and comments on first deploy
- Proxy WebSocket connections through nginx at /relay so the
frontend connects to the relay on the same host (no CORS)
- Make relay URL dynamic: reads from VITE_NOSTR_RELAYS in dev,
auto-detects /relay proxy path in production Docker builds
- Make seed scripts configurable via RELAY_URL and ORIGIN env vars
- Add wait-for-relay script for reliable container orchestration
- Add "Resume last played" hero banner on My List tab
Co-authored-by: Cursor <cursoragent@cursor.com>
- Added several new dependencies related to the Applesauce library, including 'applesauce-accounts', 'applesauce-common', 'applesauce-core', 'applesauce-loaders', 'applesauce-relay', and 'applesauce-signers', all at version 5.1.0.
- Updated the development script in package.json to specify a port for Vite and added new seed scripts for profiles and activity.
- Removed outdated image files from the public directory to clean up unused assets.
- Enhanced the App.vue structure by integrating shared components like AppHeader and AuthModal for improved user experience.
- Refactored ContentDetailModal and MobileNav components to support new features and improve usability.
These changes improve the overall functionality and maintainability of the application while ensuring it utilizes the latest libraries for better performance.
- 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.
Restructured scroll navigation:
- Arrow icons now in their own glass containers
- Minimal padding: 8px around icons
- 12px border-radius for rounded corners
- Positioned with left-2/right-2 and centered vertically
- Smaller, more elegant design
- Scale(1.05) on hover for subtle feedback
Icons are now compact glass pills instead of full-height bars.
Co-authored-by: Cursor <cursoragent@cursor.com>
Styled scroll buttons with glass treatment:
- Background: rgba(0, 0, 0, 0.35) with 24px backdrop blur
- Border: Subtle white border with glow
- Box shadow: Layered shadows with inset highlight
- Hover: Darker background with enhanced glow
- Opacity: 70% default, 100% on hover
- Matches overall glassmorphic design language
Buttons now have the same elegant glass styling as other UI elements.
Co-authored-by: Cursor <cursoragent@cursor.com>
Changed scroll buttons behavior:
- Always visible at 70% opacity when there's more content to scroll
- Increase to 100% opacity on hover
- Removed group-hover requirement
- Only show when canScrollLeft/canScrollRight is true
Users now have a clear indicator when more content is available
without needing to hover over the content row.
Co-authored-by: Cursor <cursoragent@cursor.com>
Applied same styling as content row titles:
- Gradient from #fafafa to #9ca3af
- letter-spacing: 0.05em (5% character spacing)
- Used background-clip: text for gradient effect
- Maintains uppercase and bold styling
Hero title now matches the visual language of section titles.
Co-authored-by: Cursor <cursoragent@cursor.com>
Changed content row titles to:
- font-bold (700 weight) for more emphasis
- letter-spacing: 0.05em (5% character spacing)
- Maintains gradient effect from #fafafa to #9ca3af
- More prominent and readable
Co-authored-by: Cursor <cursoragent@cursor.com>
Established core color constants:
- Pure black: #0a0a0a (never #000000)
- White text: #FAFAFA (never #FFFFFF)
- Reverse in light mode (bg: #FAFAFA, text: #0a0a0a)
Updated:
- visual-design-system.mdc: Added core color constants section
- visual-design-system.mdc: Updated dark mode CSS variables
- code-quality.mdc: Added color consistency checklist
These rules ensure consistent color usage across the entire application.
Co-authored-by: Cursor <cursoragent@cursor.com>
Changed content row titles to:
- font-semibold (less bold than before)
- Added gradient: #fafafa (very light grey) to #9ca3af (light grey)
- Used background-clip: text for gradient effect
- More subtle and elegant appearance
Co-authored-by: Cursor <cursoragent@cursor.com>
Changed section titles (Featured Films, etc.) to:
- Uppercase with 'uppercase' class
- font-bold on mobile, font-extrabold on desktop
- More prominent and attention-grabbing
Co-authored-by: Cursor <cursoragent@cursor.com>
Changes:
- Moved .profile-avatar styles from Browse.vue to src/style.css
- Restored original gradient fill: orange (#f97316) to pink (#ec4899)
- Kept gradient border treatment
- Added z-index to span for proper layering
- Now available globally for reuse
Co-authored-by: Cursor <cursoragent@cursor.com>
Applied the same gradient border treatment as other UI elements:
- Inner gradient fill: Red to orange to blue
- Outer gradient border: White to red with mask composite
- 2px border width with rounded corners
- Applied to both desktop and mobile profile avatars
Co-authored-by: Cursor <cursoragent@cursor.com>
- Logo: ml-2 on mobile (8px left margin)
- Profile: mr-2 on mobile (8px right margin)
- Desktop: ml-0/mr-0 (no extra margins)
Co-authored-by: Cursor <cursoragent@cursor.com>
Critical fixes for PWA installation:
1. ✅ Use proper Vite PWA registration with virtual:pwa-register
2. ✅ Simplified manifest.json (removed verbose name, fixed orientation)
3. ✅ Added 'any maskable' dual-purpose icon for better compatibility
4. ✅ Removed crossorigin from manifest link (causes issues)
5. ✅ Simplified start_url to just '/'
6. ✅ Added msapplication-TileColor meta tag
7. ✅ Set injectRegister: 'auto' in Vite config
8. ✅ Use public/manifest.json directly instead of generating
This should now work on Brave Browser Android with proper 'Install App' prompt.
Test: Clear site data, visit site, should see install prompt within 30 seconds.
Co-authored-by: Cursor <cursoragent@cursor.com>
Issues fixed:
1. Removed duplicate health check from Dockerfile (docker-compose overrides it)
2. Switched from wget to curl (more reliable in alpine)
3. Installed curl in the Docker image
4. Simplified health check command
The health check now properly tests if Nginx is serving content on port 7777.
Container should show as healthy after 40s start period.
Co-authored-by: Cursor <cursoragent@cursor.com>
The favicon was trying to load from /assets/images/app-icon.svg
which doesn't exist in the build output (Vite only copies public folder).
Copied app-icon.svg to public/icons/ and updated index.html reference.
This fixes the 404 error and container health check.
Co-authored-by: Cursor <cursoragent@cursor.com>
Generated proper PNG icons for Android PWA support:
- icon-192.png / icon-512.png (standard icons)
- icon-192-maskable.png / icon-512-maskable.png (with 10% padding for Android)
- apple-touch-icon.png (180x180 for iOS)
Android requires PNG icons, not SVG, for proper PWA installation.
SVG-only manifests cause 'shortcut' behavior instead of full app install.
Updated manifest.json, index.html, and vite.config.ts to use PNG icons.
Added icon generation scripts for future updates.
This should now offer proper 'Install App' on Android instead of 'Add to Home Screen'.
Co-authored-by: Cursor <cursoragent@cursor.com>
The health check was failing because /health endpoint doesn't exist.
Changed to check the root path (/) which serves the Vue app.
This should prevent the container from restarting.
Co-authored-by: Cursor <cursoragent@cursor.com>
Changes:
- Fills disappear in reverse order (last-in, first-out)
- Strokes undraw using reverse dasharray animation
- Diagonals undraw with reverse 0.3s stagger
- Circle undraws slower (2s) like it drew
- Background still fades out smoothly after undraw completes
Animation now perfectly mirrors itself!
Co-authored-by: Cursor <cursoragent@cursor.com>
- Reduce opacity from 0.95 to 0.85 (85% transparent)
- Hover state: 0.95 for subtle feedback
- More glassmorphic appearance with background showing through
- Better matches design system glass aesthetic
Co-authored-by: Cursor <cursoragent@cursor.com>
Header Layout Changes:
- Move navigation buttons next to logo on left side (40px gap)
- Remove centered navigation positioning
- Add profile dropdown after search on right side
Profile Dropdown Features:
- Shows user avatar, name 'Dorian', and chevron icon
- Glassmorphic dropdown menu with our button styles
- Menu items: Profile, Settings, Sign Out
- Icons for each menu item
- Smooth slide-down animation
- Click outside to close
- Desktop only (hidden on mobile)
- Uses same glass effect as nav buttons
Responsive:
- Mobile shows simple avatar without dropdown
- Search button hidden on mobile
- Nav stays in mobile bottom bar
Co-authored-by: Cursor <cursoragent@cursor.com>
Android PWA Requirements:
- Add mobile-web-app-capable meta tag for Android
- Add application-name meta tag
- Add prefer_related_applications: false to manifest
- Add explicit icon sizes (192x192, 512x512) for both any and maskable
- Add orientation: any for flexible display
- Add lang and dir to manifest for proper localization
- Add ?source=pwa to start_url for analytics
- Add crossorigin="use-credentials" to manifest link
- Add proper service worker registration in main.ts
- Add vite-plugin-pwa/client types to env.d.ts
This ensures Android recognizes it as a full PWA instead of creating a shortcut
Co-authored-by: Cursor <cursoragent@cursor.com>
- Revise app-icon.svg and logo.svg to enhance stroke widths and circle radii for a more cohesive look
- Adjust stroke widths from 3 to 30 for better visibility
- Maintain design elements while ensuring a unified aesthetic across both icons
Co-authored-by: Cursor <cursoragent@cursor.com>
- Remove 'image: indeedhub-prototype:latest' line
- Force Docker to build from Dockerfile instead of trying to pull
- Fixes Portainer deployment error: 'pull access denied'
Co-authored-by: Cursor <cursoragent@cursor.com>
- Remove references to non-existent PNG icon files in manifest
- Use SVG icon for both 'any' and 'maskable' purposes
- Add start_url and scope to manifest for proper PWA installation
- Remove orientation restriction for better compatibility
- Remove shortcuts that reference non-existent routes
- Update vite.config.ts with proper PWA settings
- Add devOptions to disable PWA in development
- Separate 'any' and 'maskable' icon entries as required by spec
- Increase container top padding to prevent hover clipping
Build success: 44 entries precached (82.02 MB)
Co-authored-by: Cursor <cursoragent@cursor.com>
- Move god-bless-bitcoin-backdrop.jpg to public/images/ folder
- Update content store to use /images/ path instead of /assets/images/
- Files in public/ are served directly in production builds
- Fixes broken banner image on production server
Co-authored-by: Cursor <cursoragent@cursor.com>