Commit Graph

2387 Commits

Author SHA1 Message Date
Mary Kate Fain 9b93881663 Merge remote-tracking branch 'origin/main' into fix/toast-swipe
# Conflicts:
#	src/components/ui/toast.tsx
#	src/components/ui/toaster.tsx
2026-03-27 19:14:08 -05:00
Mary Kate 21df47eccb Merge branch 'fix/compose-preview-overflow' into 'main'
Fix compose preview overflow not being scrollable in modal

Closes #179

See merge request soapbox-pub/ditto!126
2026-03-28 00:07:25 +00:00
Alex Gleason 4a1e21e820 Merge branch 'main' of gitlab.com:soapbox-pub/ditto 2026-03-27 19:01:02 -05:00
Alex Gleason a8181c45d0 Regenerate iOS app icon 2026-03-27 18:59:59 -05:00
Alex Gleason 84ca17ebc4 Add iOS icon generation to generate-icons.sh 2026-03-27 18:54:51 -05:00
Mary Kate Fain 310993d57c Fix compose preview overflow not being scrollable in modal 2026-03-27 18:51:14 -05:00
Mary Kate d624b93d8c Merge branch 'fix/mobile-emoji-picker-close' into 'main'
Fix compose modal closing when dismissing emoji picker on mobile

See merge request soapbox-pub/ditto!125
2026-03-27 23:46:40 +00:00
Mary Kate Fain 872d319220 Fix compose modal closing when dismissing emoji picker on mobile
Prevent the compose modal from being accidentally dismissed when the user
taps the emoji/GIF picker overlay to close it.  On mobile this was very
easy to trigger, causing the draft to be lost.

Add onInteractOutside and onEscapeKeyDown handlers to the compose modal's
DialogContent that detect when a nested dialog (emoji picker) is open and
prevent the dismiss event from propagating to the parent modal.
2026-03-27 18:31:58 -05:00
Mary Kate cd44ae6bc0 Merge branch 'fix/notification-kind-labels' into 'main'
Use kind-specific labels in notification action text instead of generic 'post'

See merge request soapbox-pub/ditto!124
2026-03-27 23:25:35 +00:00
Mary Kate Fain c5bc900212 Use kind-specific labels in notification action text instead of generic 'post'
Notifications now say 'reacted to your badge', 'reposted your theme',
'commented on your nsite', etc. instead of always saying 'your post'
or 'your note'. Uses the referenced event's kind to look up a
human-readable noun from a comprehensive kind-to-label map.
2026-03-27 18:14:18 -05:00
Mary Kate 27283384bf Merge branch 'fix/zap-emoji-support' into 'main'
Add emoji picker and shortcode autocomplete to zap comment box

Closes #176

See merge request soapbox-pub/ditto!123
2026-03-27 23:02:55 +00:00
Mary Kate Fain 9901635008 Add zap button to badge detail view action bar
The BadgeDetailContent action bar had reactions, reposts, and comments
but was missing the zap button that NoteCard renders for the same
events in the feed.
2026-03-27 17:52:52 -05:00
Mary Kate Fain 1f5ce2546c Add emoji picker and shortcode autocomplete to zap comment box
Extract shared useInsertText hook to DRY up the duplicated text
insertion logic across ComposeBox, DMChatArea, and ZapDialog.
Add EmojiPicker (GUI) and EmojiShortcodeAutocomplete (:shortcode
typing) to the zap comment textarea, and also add shortcode
autocomplete to the DM chat input which was previously missing it.

Closes #176
2026-03-27 17:46:16 -05:00
Mary Kate 2f0adcce7c Merge branch 'fix/theme-description-expand' into 'main'
Show full theme description on theme detail page

Closes #124

See merge request soapbox-pub/ditto!122
2026-03-27 22:34:08 +00:00
Lemon 7bfab65042 Fix toast swipe direction to match entry direction on mobile
On mobile, toasts enter from the top but previously could only be swiped
right to dismiss. Now swipe direction is responsive: swipe up on mobile
(top-positioned), swipe right on desktop (bottom-right positioned). Exit
animations also match the swipe direction at each breakpoint.
2026-03-27 15:13:43 -07:00
Mary Kate Fain b59eeeca81 Show theme description on 'updated their theme' (kind 16767) posts
Kind 16767 events previously hardcoded description to undefined, so the
theme description never appeared on 'updated their theme' posts in the
feed or detail view.

Three changes:
- buildActiveThemeTags now accepts and includes a description tag, so
  future kind 16767 events carry the description directly
- setActiveTheme accepts description to thread it through publishing
- ThemeContent extracts the description tag from kind 16767 events, and
  for older events without one, falls back to querying the source theme
  definition via the a-tag reference
2026-03-27 17:09:08 -05:00
Mary Kate Fain 81e42f24c8 Exclude Capacitor native-only plugins from Vite dep optimization
@capacitor/filesystem and @capacitor/share are dynamically imported
behind a Capacitor.isNativePlatform() guard, but Vite's import analysis
plugin still tries to resolve them at transform time in dev mode. This
causes a 'Failed to resolve import' error when running the dev server.

Excluding them from optimizeDeps prevents Vite from pre-bundling these
packages, letting the dynamic imports resolve naturally at runtime.
2026-03-27 16:59:24 -05:00
Mary Kate Fain d4a928b682 Show full theme description on post detail page
On the feed, theme descriptions are truncated to a single line. On the
post detail page, the full description is now displayed so users can
read long descriptions that don't fit in the thumbnail card.

Closes #124
2026-03-27 16:52:20 -05:00
Alex Gleason da27054a9b Fix file downloads and URL opening on Capacitor iOS
The <a download> and <a target="_blank"> patterns don't work in
WKWebView. Add downloadTextFile() and openUrl() utilities in
src/lib/downloadFile.ts that use @capacitor/filesystem and
@capacitor/share on native platforms, falling back to standard
browser behavior on web.

Update all call sites: onboarding key download (InitialSyncGate,
SignupDialog), image lightbox buttons (ImageGallery, ProfilePage).

Document Capacitor compatibility constraints in AGENTS.md.
2026-03-27 16:42:36 -05:00
Alex Gleason 3c54cd27fe Fix package-lock name 2026-03-27 15:41:39 -05:00
Alex Gleason 8fe8525b06 Merge branch 'main' of gitlab.com:soapbox-pub/ditto 2026-03-27 15:40:40 -05:00
Mary Kate 9169cd5d1f Merge branch 'fix/letter-notifications' into 'main'
Fix: add letter (kind 8211) notifications

Closes #188

See merge request soapbox-pub/ditto!118
2026-03-27 20:30:42 +00:00
Mary Kate 490b8554e2 Merge branch 'badge-notification-preview' into 'main'
Show badge thumbnail preview in badge award notifications

Closes #186

See merge request soapbox-pub/ditto!119
2026-03-27 20:29:16 +00:00
Alex Gleason 32b0cef65d Change toast swipe direction from right to up for mobile dismissal 2026-03-27 14:57:51 -05:00
Mary Kate Fain abcb51c0e2 Show badge thumbnail preview in badge award notifications
Closes #186. Badge award notifications now display a visual preview
card with the badge image, name, and description for both single and
grouped badge notifications.
2026-03-27 14:44:33 -05:00
Mary Kate Fain 8d02645e26 Enhance letter notification with envelope card preview
Show the sender's profile pic via the EnvelopeCard component (the same
Wii-Mail-inspired envelope tile used in the letters inbox). The card
auto-decrypts to display stationery colors and the sender's avatar as a
wax seal. Clicking the envelope navigates to /letters.
2026-03-27 14:31:05 -05:00
Mary Kate Fain f82adab05d Fix: add letter (kind 8211) notifications
Letters were completely absent from the notification pipeline — users had
to visit the Letters page to discover incoming letters. This integrates
kind 8211 into every layer of the notification system:

- useNotifications: query, grouping, and referenced-event exclusion
- useHasUnreadNotifications: unread dot indicator
- NotificationsPage: LetterNotification component with link to /letters
- NotificationSettings: toggleable Letters row
- notificationTemplates: web push template
- Android NotificationRelayService + NostrPoller: native push support
- EncryptedSettings + schema: letters preference field

Closes #188
2026-03-27 14:15:50 -05:00
Alex Gleason 17954e0504 Fix badges page showing infinite skeleton when logged out
The useBadgeFeed hook required a logged-in user before enabling the query,
causing the follows tab to show loading skeletons forever when logged out.
Now fetches the Team Soapbox follow pack (kind 39089) and uses its members
as the authors filter, giving logged-out users a curated badge feed.
2026-03-27 13:15:44 -05:00
Chad Curtis 488ce5750d Hide top nav on scroll and unify top padding across pages
- MobileTopBar: changed from sticky to fixed positioning with scroll-hide
  transform animation (mirrors bottom nav behavior via useScrollDirection)
- MainLayout: replaced -mt-mobile-bar overlap trick with pt-mobile-bar
  padding since the top bar is now fixed; added data-nav-hidden attribute
  to drive CSS transitions on sticky sub-headers
- SubHeaderBar/top-mobile-bar: sticky top offset transitions to 0 when
  the top bar hides, keeping sub-headers flush with the viewport top
- NotificationsPage, ProfilePage: added arc overhang spacer after
  SubHeaderBar to match Feed's spacing
2026-03-27 02:07:12 -05:00
Alex Gleason 6e2589e125 fix: use project-relative path for release notes file v2.1.0 2026-03-26 23:57:24 -05:00
Alex Gleason d980fdf96d Merge branch 'main' of gitlab.com:soapbox-pub/ditto 2026-03-26 23:42:19 -05:00
Alex Gleason 89fe5b8937 fix: use native release: keyword instead of glab to fix 403 permission error 2026-03-26 23:42:04 -05:00
Chad Curtis 93bc669f24 Lazy-load hls.js in VideoPlayer to reduce main bundle by ~500KB 2026-03-26 23:33:09 -05:00
Alex Gleason 6e2716d957 Strengthen commit requirement in AGENTS.md: always commit after changes 2026-03-26 23:31:53 -05:00
Alex Gleason 9c3ec58246 Rename package from mkstack to ditto 2026-03-26 23:31:24 -05:00
Alex Gleason c46e7b98e0 npm audit fix 2026-03-26 23:22:21 -05:00
Alex Gleason 65762e8645 skill: fix MARKETING_VERSION occurrence count in release instructions 2026-03-26 23:20:38 -05:00
Alex Gleason 689ac34946 skill: pull before committing release to prevent tag/rebase issues 2026-03-26 23:18:22 -05:00
Alex Gleason 58a5c470bd release: v2.1.0 2026-03-26 23:14:03 -05:00
Chad Curtis aecddf6fb5 Fix drawing canvas 'done' button clipped by drawer max-height 2026-03-26 23:13:42 -05:00
Alex Gleason f702513a64 Merge branch 'main' of gitlab.com:soapbox-pub/ditto 2026-03-26 23:02:47 -05:00
Alex Gleason 3126ad2380 fix: pass CI_JOB_TOKEN to glab in release job 2026-03-26 23:02:06 -05:00
Chad Curtis 51fffc0ae1 Merge branch 'envelope-inbox' into 'main'
Add Letters inbox page with full letter composing from lief

See merge request soapbox-pub/ditto!117
2026-03-27 03:59:48 +00:00
Chad Curtis 403946bac5 Use mailbox icon from lief for Letters page and sidebar 2026-03-26 22:43:11 -05:00
Alex Gleason cb81fd3315 fix: push only the specific release tag, never --tags 2026-03-26 22:40:06 -05:00
Alex Gleason 95db4e4dcf release: v2.0.1 v2.0.1 2026-03-26 22:39:07 -05:00
Alex Gleason c5fb019702 Clarify release skill uses marketing versioning, not semver 2026-03-26 22:36:06 -05:00
Alex Gleason c1b33e17c8 release: v2.1.0 2026-03-26 22:31:54 -05:00
Alex Gleason 5fed2f4182 Add pre-release indicator to settings version footer 2026-03-26 22:28:18 -05:00
Alex Gleason b2f62e12c7 Add build info env vars and pre-release banner to changelog
Expose COMMIT_SHA and COMMIT_TAG via import.meta.env at build time.
In CI, these come from GitLab env vars; locally they fall back to git.

The changelog page now shows:
- A pre-release banner when the build is untagged, with a link to
  the GitLab diff between the latest release and main
- An external link icon on each version card header linking to the
  GitLab release page for that version
2026-03-26 22:19:12 -05:00