The meta description still framed Agora as a generic Nostr social
client. Update it to describe the actual product: peer-to-peer
crowdfunding with an integrated non-custodial on-chain Bitcoin wallet.
The qr-scanner library spins up its ZXing decoder inside a Web Worker
created from a blob URL. Our CSP allowed scripts and connections but
not workers, so the browser silently blocked worker creation — the
camera opened fine (media-src is permissive) but no frame was ever
decoded, leaving the user pointed at a QR code that never registered.
Add 'worker-src self blob:' and 'child-src self blob:' (the latter
covers older browsers that fall back to child-src for worker policy)
to match the directives Ditto already ships.
Regression-of: bae49e61
Replace og-image.jpg with the 1200x630 version of the Agora PR cover and
update index.html to reference the .jpg URL (the meta tags previously
pointed to a non-existent og-image.png).
Add interactive-widget=resizes-content to the viewport meta tag so
Chrome on Android resizes the layout viewport when the on-screen
keyboard opens. This keeps fixed-position dialogs (compose, reply,
login, etc.) centered in the visible area above the keyboard.
- Add blob: to media-src CSP directive to allow recorded audio playback
- Add robust MIME type selection helper for MediaRecorder
- Try MIME types in order: webm;opus, webm, mp4, ogg;opus, ogg
- Track actual recorder MIME type and use it for blob creation
- Add user-friendly playback error messages (non-fatal amber warnings)
- Verify PlayMusicModal blob URL handling works correctly
- Add 'Soon' badge to Upload tab in PlayMusicModal
- Generate apple-touch-icon.png (180x180 RGBA) for iOS home screen
- Generate icon-192.png (192x192 RGBA) for Android/PWA
- Update apple-touch-icon link in index.html to use PNG instead of SVG
- Add viewport-fit=cover for iPhone notch/safe-area support
- Add theme-color meta tags for light and dark mode
- Update manifest.webmanifest with PNG icons (192, 512) alongside SVG fallback
Defer body inline style removal until CSS variables are injected by
useApplyTheme, preventing a one-frame flash of unstyled background.
Replace preloader logo <img> with CSS mask technique matching the React
DittoLogo component, so the logo uses the theme's primary color instead
of filter:invert() which turned purple into green.
Read the user's theme from localStorage before first paint so the
preloader background and spinner colors match dark/light/black/pink.
Uses a small blocking script (public/theme.js) that runs before
the preloader is visible.
- Cache follow list and author profiles in localStorage for instant feed on return visits
- Prefetch profile images via <link rel=preload> for instant avatar rendering
- Replace Radix Avatar with lightweight component that renders <img> immediately
- Lazy-load route components (React.lazy) reducing main bundle from 1.7MB to 920KB
- Dynamic import hls.js (1.3MB) only when visiting stream pages
- Remove unused Buffer polyfill
- Add pre-React loading spinner in index.html outside #root for seamless handoff
- Fix 3-5s feed rerender caused by NostrSync relay/settings sync
- Fix Zod 4 strict mode rejecting feedSettings with extra/missing keys from localStorage
- Fix useLocalStorage skip update when value reference unchanged
- Reduce eoseTimeout from default to 600ms
- Added new mew_logo_2.svg to public directory
- Updated MewLogo component to use SVG instead of PNG
- Updated index.html favicon references to use SVG format
- Updated manifest.webmanifest icon references to use SVG with 'any' size
- SVG provides better scalability and smaller file size (3.5KB vs 4.2KB PNG)
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Add og-image.png to public/
- Add Open Graph tags (og:title, og:description, og:image with dimensions and type, og:url, og:site_name)
- Add Twitter Card tags (summary_large_image) for X/Twitter previews
- Add meta description for general SEO
- Works with Signal, Twitter/X, Discord, Slack, iMessage, etc.
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
- Added logo.png to public folder
- Added favicon and apple-touch-icon link tags to index.html
- Updated manifest.webmanifest with icon references
- Updated MewLogo component to render the PNG image instead of SVG
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>