Commit Graph

36 Commits

Author SHA1 Message Date
Alex Gleason 932398c0aa Add favicon.ico generated from logo.png 2026-03-11 13:03:14 -05:00
Chad Curtis c2651dd36e Add lists intro image and remove rename input focus ring 2026-03-06 17:47:45 -06:00
Chad Curtis ac09b0670a Losslessly compress public and Android image assets
Reduced PNG file sizes using sharp (compressionLevel 9, effort 10) with
no quality loss. Saved ~132K from public/ and ~960K from Android res/.
2026-03-04 03:21:37 -06:00
Chad Curtis e4cc47ba51 Add Magic settings page with Magic Mouse cursor fire effect
- Add /settings/magic entry to settings page with magic-intro.png icon
- New MagicSettingsPage with toggle for Magic Mouse mode
- Add magicMouse boolean to AppConfig (optional, defaults to false)
- CursorFireEffect: canvas overlay emitting fire particles in primary color
- Mount CursorFireEffect in MainLayout when magicMouse is enabled
2026-02-28 03:47:07 -06:00
Chad Curtis dee8001eec fix: use APK launcher icon for PWA icons instead of logo SVG 2026-02-27 22:17:59 -06:00
Chad Curtis 9eac74d31c fix: add iOS PWA icons and update manifest with PNG icons
- 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
2026-02-27 22:16:49 -06:00
Alex Gleason e7f7d74085 Fix theme.js to match current ThemeConfig format
The preloader script was reading customTheme.background/primary directly,
but the app now stores colors under customTheme.colors.{background,primary}.
Also fixes the light theme builtin colors, adds support for configured
theme overrides (cfg.themes), and removes obsolete legacy preset handling
(legacy themes are migrated to 'custom' by AppProvider on load).
2026-02-27 17:43:49 -06:00
Chad Curtis 317cf6376c Add advanced illustration to settings menu 2026-02-26 22:13:54 -06:00
Chad Curtis c58ce9fe3f Update theme illustration 2026-02-26 22:13:54 -06:00
Chad Curtis d09fb23d1f Add theme and notification illustrations to settings menu 2026-02-26 22:13:54 -06:00
Alex Gleason 8d03d32b0d Simplify theme system to 4 core colors (background, text, primary, secondary)
Replace the 19-token ThemeTokens interface with a 4-field CoreThemeColors
for config storage, Nostr events, and encrypted settings. All other
Tailwind CSS tokens (card, muted, border, etc.) are now derived
automatically via deriveTokensFromCore().

- Add CoreThemeColors interface: { background, text, primary, secondary }
- Keep ThemeTokens as internal type for CSS variable injection
- Update builtinThemes and themePresets to store CoreThemeColors
- Add backward-compatible parsing for legacy 19-token format in Nostr
  events, encrypted settings, and localStorage
- Simplify ThemeBuilderPage: remove Surface/UI color sections, just 4
  color pickers with auto-derivation always on
- Update all consumers: ThemeSelector, ScopedTheme, ThemeUpdateCard,
  MobileDrawer, LeftSidebar, ProfilePage, InitialSyncGate, etc.
2026-02-25 22:46:27 -06:00
Alex Gleason 7a85ec73ed Refactor theme system: separate builtin themes from custom presets
Restructure the theme architecture so 'light', 'dark', and 'system' are
builtin themes with build-time colors (customizable by self-hosters),
while 'black', 'pink', and future themes become presets that apply to a
single 'custom' theme slot.

Key changes:
- Theme type is now 'light' | 'dark' | 'system' | 'custom'
- builtinThemes (light/dark) and themePresets (black/pink/etc.) are
  separate maps in themes.ts
- AppConfig gains optional customTheme (ThemeTokens) field
- useTheme exposes applyCustomTheme(tokens) for applying presets
- Custom theme tokens sync across devices via encrypted settings
- Backward compat: legacy 'black'/'pink' values in localStorage and
  encrypted settings auto-migrate to custom + preset tokens
- All UI surfaces updated: ThemeSelector, LeftSidebar dropdown,
  MobileDrawer cycle, and onboarding ThemeStep
2026-02-24 21:46:28 -06:00
Alex Gleason b42ca9434a Add 'system' theme option that follows OS prefers-color-scheme 2026-02-24 20:56:17 -06:00
Chad Curtis 1af6a45a77 Fix preloader flash and green logo on light/pink themes
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.
2026-02-24 00:39:27 -06:00
Alex Gleason cd29071f6b Make the icon purple by default 2026-02-23 18:00:46 -06:00
Alex Gleason 77bb7d2037 Run all public assets through Trimage 2026-02-23 17:55:46 -06:00
Alex Gleason 5fa5bff401 Swap out og:image 2026-02-23 17:54:54 -06:00
Alex Gleason cc74443010 Render DittoLogo using CSS mask with primary color 2026-02-23 13:10:47 -06:00
Alex Gleason 1f035f4a6e Rename Mew to Ditto across entire codebase
- Update all branding: titles, meta tags, OG tags, manifest
- Rename MewLogo component to DittoLogo
- Update Capacitor config: appId to pub.ditto.app, hostname to ditto.pub
- Migrate Android Java package from com.mew.app to pub.ditto.app
- Rename MewNotificationPlugin to DittoNotificationPlugin
- Update all localStorage keys from mew: to ditto: prefix
- Update Nostr encrypted settings d-tag from mew-metadata to ditto-metadata
- Update all page titles, zap comments, and UI strings
- Rename ic_stat_mew.xml drawable to ic_stat_ditto.xml
- Update build script references (mew.apk -> ditto.apk)
- Update all domain references (mew.shakespeare.wtf -> ditto.pub)
2026-02-23 11:50:00 -06:00
Chad Curtis 916adf7fb6 Invert preloader logo to dark on light/pink themes 2026-02-20 21:29:05 -06:00
Chad Curtis 313b66f8fd Use saved theme for pre-React loading spinner
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.
2026-02-20 21:28:01 -06:00
Chad Curtis 2f02e65ab6 Add Android Capacitor build system
- Install Capacitor dependencies (@capacitor/cli, @capacitor/core, @capacitor/android, @capacitor/app, @capacitor/status-bar, sharp)
- Create capacitor.config.ts with app configuration
- Update .gitignore to exclude Android build outputs and keystore files
- Generate icon-512.png from logo.svg
- Add scripts for icon generation, APK building, and keystore creation
- Initialize Capacitor Android platform
- Configure build.gradle with signing support
- Generate Android app icons in all required densities
- Add npm scripts: 'icons' and 'build:apk'
2026-02-19 06:18:02 -06:00
shakespeare.diy d519fe82bd Replace favicon and logo with new SVG design
- 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>
2026-02-19 06:11:34 -06:00
shakespeare.diy 955b4d61de Add intro image and description to Feed Tabs section
- Added community-intro.png image
- Added "Feed Navigation" heading
- Added description about managing feed tabs and communities
- Matches styling of Other Stuff and Muted Content sections
- Consistent visual presentation across all collapsible sections

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-19 00:52:48 -06:00
shakespeare.diy a2680f1e1b Redesign relays tab to match feed/mutes/profile presentation style
- Added intro section with relay-intro.png image and description
- Reorganized layout with cleaner visual hierarchy and border separators
- Reduced font sizes for consistency (text-xs, text-sm labels)
- Removed rounded borders and card-style backgrounds
- Added hover states to relay rows (hover:bg-muted/20)
- Improved spacing and padding throughout
- Smaller icon sizes (h-4 w-4 for relays, h-5 w-5 for section headers)
- Reduced button sizes and input heights (h-9) to match other tabs
- Simplified "Add Relay" button text and styling
- Updated popover label sizes to text-xs for consistency

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-19 00:29:02 -06:00
shakespeare.diy d4d745e883 Redesign profile tab to match feed/mutes presentation style
- Added intro section with profile-intro.png image and description
- Reorganized form layout with cleaner visual hierarchy and border separators
- Reduced font sizes and spacing to match feed tab style (text-xs labels)
- Moved "Bot Account" setting under collapsible "Advanced Settings" section
- Improved input heights (h-9) and button sizes for consistency
- Enhanced image upload field styling with smaller previews and buttons
- Updated form descriptions to be more concise
- Added proper spacing with border-b separators between sections

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-19 00:14:36 -06:00
shakespeare.diy c3c1370090 Redesign mutes tab to match feed tab presentation style
- Refactored MuteSettings component to follow feed tab layout pattern
- Added intro section with image and description
- Reorganized mute type sections with cleaner visual hierarchy
- Removed card-based layout in favor of borderless sections
- Improved spacing and typography consistency
- Added mute-intro.png image for visual consistency
- Streamlined add mute interface with better label styling
- Enhanced muted items list with hover states and better visual feedback

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-19 00:04:12 -06:00
shakespeare.diy 01bdb9322d Replace intro art with custom mew_boy illustration, update blend logic
- Swapped to provided gray-on-white line art
- Light/pink: darken blend (gray lines show naturally)
- Dark/black: lighten + invert (lines become light on dark bg)

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-18 03:01:19 -06:00
shakespeare.diy e379b03a7a Replace intro illustration with charming chibi-style Nintendo manual art
- Polished white line illustration with cute character and detailed icons
- Clapperboard, bar chart, treasure chest, palette, party popper floating above
- Clean confident linework that reads well at small sizes

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-18 02:47:59 -06:00
shakespeare.diy ecb2a53ad1 Update intro illustration and remove box wrapper
- New whimsical stick figure head with floating doodle icons
- Removed rounded box/card wrapper, image sits openly in the layout
- Sized down illustration for subtlety

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-18 02:43:00 -06:00
shakespeare.diy c66e5aad0b Move kind badges to descriptions, add fun intro with illustration
- Kind badges now appear as [xxxxx] prefix on description lines, not titles
- Added Nintendo-style instruction illustration explaining "Other Stuff"
- Rewrote intro copy to be friendlier and more fun
- Removed old webp illustration file

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-18 02:40:30 -06:00
shakespeare.diy 3400e33207 Fix og-image not loading on Signal: exclude static files from SPA redirect
The catch-all /* -> /index.html redirect was serving HTML for /og-image.png,
so Signal's crawler got text/html instead of image/png. Added explicit rules
for static files (og-image.png, logo.png, robots.txt, manifest.webmanifest)
before the SPA fallback so they serve with correct content types.

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-17 06:12:31 -06:00
shakespeare.diy c8af7c1ab4 Add OG image and social media meta tags for link previews
- 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>
2026-02-17 06:09:20 -06:00
shakespeare.diy 6e24acc266 Set custom logo as favicon and in-app logo
- 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>
2026-02-16 22:27:13 -06:00
shakespeare.diy 4f1b4800d0 Build Mew: a full-featured kind 1 Nostr client
- Dark theme with purple accent colors matching the reference design
- Three-column layout: left sidebar, main feed, right sidebar
- Left sidebar: Mew logo, search, navigation (Home, Notifications, Search, Vines, Profile, Wallet, Settings, More), compose button, user profile/login
- Main feed: compose box, Follows/Global tabs, live note cards with avatars, author info, NIP-05 verification, relative timestamps, image attachments, and action buttons (reply, repost, like, zap, more)
- Right sidebar: trending hashtags with sparklines, latest accounts, footer
- Full routing: home, profile, notifications, search, hashtags, settings (profile/relays), placeholder pages
- NIP-19 routing with automatic profile redirect
- Custom hooks: useFeed, useTrendingTags, useLatestAccounts, useEventStats
- NoteContent renders mentions, links, and hashtags as clickable elements
- Inter Variable font, skeleton loading states, responsive layout

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-16 17:05:32 -06:00
shakespeare.diy 98ff1e09e0 New project created with Shakespeare
Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
2026-02-16 16:54:01 -06:00