Wall posts are kind 1111 comments targeting the profile owner's kind 0
event (A tag: 0:pubkey:). Comments are filtered by the target user's
kind 3 follow list to show only posts from people they follow. Uses
the same ComposeBox/ReplyComposeModal pattern as /i/:uri routes.
If the profile owner has no follow list, an empty state is shown.
All runtime references to 'Ditto' now use config.appName, which defaults
to 'Ditto' and can be overridden at build-time via ditto.json. This
covers useSeoMeta titles across all pages, the welcome screen, feed CTA,
Nostr Connect app name, encrypted settings event title, and the
AdvancedSettings zap comment placeholder.
Guard the __DITTO_CONFIG__ global with a typeof check to prevent
an uncaught ReferenceError when Vite's define replacement has not
been applied (e.g. in certain runtime contexts).
- Render eye as data-URI img so browser anti-aliases it cleanly without
creating a compositing layer that affected adjacent elements (the
foreignObject approach was causing the diagonal stripes to look pixelated)
- Move 'Set as theme' text to the left of the eye, matching the requested layout
- Restore CSS animate-eyelid-blink via overflow-hidden on the eye container
(the SVG animate element approach didn't fire correctly with React mount/unmount)
- Use React useId for stable unique IDs
- Revert diagonal stripes to original hard-stop gradient (the feathering was wrong)
Replaces the SwatchBook icon with a small circular eye (using the palette
colors for iris/pupil ring) that blinks using espy's eyelid-blink animation
when tapped. The eyelid fills with the palette's midpoint color and carries
the EyeClosed lash icon at its edge, matching the interaction pattern from
espy's color picker.
The MobileDrawer Sheet stays mounted when closed, so moreMenuOpen state
persisted across open/close cycles. Once expanded, it appeared always open.
Now moreMenuOpen resets to false whenever the drawer closes, regardless of
whether it was closed via navigation or backdrop tap/swipe.
When a nostr:nevent1 URI is decoded in NoteContent, the relay hints and
author pubkey embedded in the identifier were being discarded. This meant
EmbeddedNote would only query the user's configured relays and skip the
relay hints, causing quoted events hosted on other relays to silently fail
to load. Now the hints are stored in the nevent-embed token and forwarded
to EmbeddedNote → useEvent.
Files in the external directory take precedence over the built-in
public/ directory. Works in both dev (middleware) and build (post-copy)
modes. Also fix missing magicMouse property in TestApp.
Move h-14 from the <nav> to an inner wrapper div, letting safe-area-bottom padding expand the overall nav height on devices with a home indicator rather than squishing the content area.
The @fontsource-variable packages register fonts with a ' Variable' suffix
(e.g., 'Comfortaa Variable'), but the CSS override was using the canonical
name without the suffix (e.g., 'Comfortaa'). On machines with the Google
Fonts installed locally, the browser found the font via the system fallback,
masking the bug.
Add a cssFamily field to BundledFont that holds the actual @font-face name
registered by fontsource, and use it in the CSS font-family override and
FontPicker inline styles. The canonical family name (without suffix) is
preserved for Nostr event f-tags and UI display labels.
- 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
- Create extraKindIcons.ts as single source of truth for extra-kind icons
- BUILTIN_ICON_COMPONENTS in SidebarNavItem covers system items only
- sidebarItemIcon() merges both maps; all pages/routes use it
- EXTRA_KINDS is now source of truth for labels and kind numbers in AppRouter, page titles, and onboarding (CONTENT_KINDS derived from EXTRA_KINDS)
- Remove themes from BUILTIN_SIDEBAR_ITEMS (it lives in EXTRA_KINDS)
- Delete dead SIDEBAR_ITEM_ICONS export
- Rename 'Theme' → 'Vibe', 'Colors' → 'Color Moments'
- Articles icon: FileText → BookOpen; Settings icon: Settings → Scroll
- Hide Vibe settings back button on non-mobile (md:hidden)
- Settings and Bookmarks page headers aligned to same structure
- Codex of Configuration opacity 40% → 60%