Repository navigation
Better Creation Tools and Overhauled Moderation
0.13.0 brings a major upgrade to creating and sharing on Spark. We've revamped the video editor, refreshed story editing, and redesigned the recording and post review flows. There's also a new way to find your Bluesky friends on Spark, a substantial moderation overhaul, and plenty of improvements to browsing, messaging, and everyday reliability.
✨ Highlights
Creating and editing
- Revamped the video editor with a swipe-to-reveal timeline, contextual editing controls, and draggable tracks for timing and arranging layers. #121
- Added separate controls for original and added audio, including volume, muting, placement, and looping. #121
- Added a sound audition flow with waveform previews and range selection, making it easier to choose exactly which part of a sound plays over your video. #122
- Refreshed the story editor with a new layout, compact tool rail, and updated sticker controls. #128
- Redesigned camera controls, moved library access and camera switching into the footer, and added camera switching while recording.
- Unified post creation around the camera, with your photo and video library accessible from the recording screen.
- Redesigned photo and video review with clearer captions, media previews, sound and crossposting controls, and a persistent Post button.
- Added a scrollable photo strip for reviewing, editing, removing, and adding photos before posting.
- Added a clearer warning when crossposting more than four photos: Bluesky receives the first four and a link to the full Spark post.
Finding people and browsing
- Added Bluesky follow import: find people you already follow who have Spark profiles, then choose whom to follow on Spark.
- Made follow import available during onboarding, from Settings → Connections, and from an empty Following feed, with retries for any follows that couldn't be completed.
- Added a final onboarding review for your profile and selected follows.
- Improved the first-feed experience for new accounts, starting with Discover and providing more useful actions when a feed is empty or caught up.
- Added pinch-to-zoom for photos in carousels.
- Added a likes sheet so you can tap a post's like count to see who liked it.
- Refreshed the share sheet with a draggable bottom-sheet presentation.
Moderation
- Overhauled moderation so labels and content warnings behave consistently across posts, profiles, stories, messages, search, notifications, sounds, and suggested feeds. #129
- Added dedicated moderation settings for adult content and label preferences, alongside improved labeler management. #129
- Added clearer moderation details showing who applied a label, why content is restricted, and an appeal action for eligible labels on your own content. #129
- Improved reporting with moderation-service selection and report options matched to what each service supports. #129
Messages, notifications, and accounts
- Migrated messaging to Spark's
chat.sprkservice and improved placeholders for deleted and unsupported messages in conversations and previews. - Updated push-notification support, grouping, and navigation, including clearer handling of replies, follow-backs, and activity via reposts.
- Connected account management to your hosting provider's account-management page.
UI polish and accessibility
- Introduced a shared animated pull-to-refresh indicator across the app.
- Unified app and editor icons with a consistent set of SVG symbols.
- Added shared toggles with screen-reader support, keyboard interaction, right-to-left layouts, and reduced-motion behavior.
- Refined recording previews and photo/video review spacing.
🐞 Bug Fixes
- Fixed video exports to preserve trims, layer timing and animations, audio placement and looping, crop transforms, and story sizing. #121
- Fixed camera cleanup during navigation and lifecycle changes, including releasing the camera while reviewing photos. #127
- Fixed the back button on a freshly created post so it returns home correctly. #125
- Fixed video-review cleanup and feed playback failing to resume after leaving recorded-video review.
- Improved playback handling when the app loses focus or enters recording, while keeping videos playing when opening likes or comments.
- Fixed delegated video-upload authorization.
- Fixed onboarding profile edits being lost between steps and improved save failures and retry handling.
- Fixed moderation label updates, labeler policy defaults, profile-label scope, and preference-saving races. #129
- Fixed the refresh indicator appearing when a partial swipe returns to the first feed item.
- Made the video editor's reveal arrow tappable, with an accessible touch target.
- Fixed recording placeholder scaling, improved video capture proportions, and corrected crossposting-control visibility.
🧰 Internal
- Adopted granular ATProto authorization scopes.
- Reorganized media editors into their own feature area and separated timeline, playback, preview, and export responsibilities.
- Updated generated Poptart integrations and centralized moderation and preference handling.
- Migrated the main iOS app from CocoaPods to Swift Package Manager and aligned Swift package lockfiles.
- Updated dependencies and aligned development and CI with Flutter 3.47.2 and Dart 3.13.
- Expanded unit and widget coverage across repositories, providers, editors, moderation, onboarding, and shared components. #124
- Added authentication and registration integration journeys, Android and iOS integration-test workflows, broader analysis, and randomized test execution. #124
- Fixed photo-test hangs and Android Gradle compatibility.
- Improved worktree setup and Firebase configuration availability, simplified CI setup, and removed obsolete development scripts.
Full changelog: v0.12.2...v0.13.0