Sign in

stackotter

@stackotter.dev
171 followers 179 following 178 posts

Aussie software developer & uni student; Rock climber; Loves Swift, Rust and Svelte; Creator of SwiftCrossUI, Swift Bundler and Delta Client. stackotter.dev mastodon.social/@stackotter

PostsRepliesMedia
stackotter @stackotter.dev · 20/08/2026
Even my VMs can't escape Windows updates 💀 My remote build job froze, and when I switched over to my PC's HDMI I found that the VM had restarted for a Windows update
000
stackotter @stackotter.dev · 17/08/2026
I've recently been searching around for open source SwiftUI apps to port to non-Apple platforms using SwiftCrossUI. Mostly as an exercise to discover the needs of real world apps, but also to bring existing macOS apps to more platforms! I've begun by porting ZenTime (an exam study timer)
252
stackotter @stackotter.dev · 10/07/2026
SwiftCrossUI's Android support has gotten to the point where my sudoku app written with SwiftCrossUI runs on Android without any UI-specific code changes! (I just had to work around a weird HTTPS issue unrelated to SwiftCrossUI)
030
stackotter @stackotter.dev · 07/06/2026
SwiftCrossUI 0.7.0 introduced support for hot reloading on Linux! If you'd like to try it out, install the latest commit of Swift Bundler, and create a new project from the SwiftCrossUI hot reloading template. Then you can run the project with the ‘--hot’ flag, and everything should "just work” (TM)
042
stackotter @stackotter.dev · 25/05/2026
SwiftCrossUI's AndroidBackend now supports sheets thanks to Beberka! github.com/moreSwift/sw...
030
stackotter @stackotter.dev · 09/05/2026
Thanks to Mia Koring, SwiftCrossUI now support gradients! (linear, radial, and angular/conical) github.com/moreSwift/sw...
130
stackotter @stackotter.dev · 08/05/2026
Kaleb Ascevich recently converted SwiftCrossUI's quick start documentation and platform-specific setup guides into DocC tutorials, with screenshots and all! github.com/moreSwift/sw...
100
stackotter @stackotter.dev · 07/05/2026
SwiftCrossUI now supports WebViews on Android thanks to Beberka’s recent PR! github.com/moreSwift/sw...
010
stackotter @stackotter.dev · 06/05/2026
SwiftCrossUI's AndroidBackend has been hanging for a few hundred milliseconds after each view update, so Beberka collected a flame graph to investigate. It turns out, Android's RelativeLayout view measures each child twice per measurement pass, leading to exponential time complexity when nested!
210
stackotter @stackotter.dev · 05/05/2026
The SwiftCrossUI ControlsExample is starting to look a lot more complete on Android thanks to Beberka's recent AndroidBackend PRs! Pickers: github.com/moreSwift/sw... Toggle buttons, switches, and checkboxes: github.com/moreSwift/sw...
020
stackotter @stackotter.dev · 04/05/2026
Worked on implementing basic drag and drop for SwiftCrossUI today, and it's coming along well! But there are still quite a few edge cases to iron out. Content types are hard to pin down, and abstracting over 5 different platforms makes things rather tedious.
130
stackotter @stackotter.dev · 18/02/2026
Swift Bundler can now automatically locate compatible Swift Android SDK + Swift toolchain pairs on the user's behalf. It also supports automatically installing and launching apps on Android devices and emulators.
120
stackotter @stackotter.dev · 04/02/2026
Made a small utility for checking in on my repositories at a glance. It solves something that has bothered me for a while, which is that GitHub doesn't display a diff from the latest review to current changes (instead it shows which *files* changed since the last review but diffs against the base).
120
stackotter @stackotter.dev · 03/02/2026
I've been working on Android support for Swift Bundler this past week or so, and it can now bundle SwiftCrossUI applications into Android APKs fully automatically 🎉 To finish off basic Android support, I still have to implement Android device/emulator discovery and automatic APK running.
040
stackotter @stackotter.dev · 09/01/2026
I've just merged a bunch of native interoperability features into SwiftCrossUI; namely native widget inspection modifiers, and …Representable protocols similar to NS/UIViewRepresentable from SwiftUI; github.com/stackotter/s...
130
stackotter @stackotter.dev · 01/01/2026
I feel like Google slightly misinterpreted the sentiment of my search query...
000
stackotter @stackotter.dev · 28/11/2025
4th time's a charm? 🥲
3 commits with failing workflows, and a 4th in progress
120
stackotter @stackotter.dev · 25/10/2025
SwiftCrossUI recently gained support for onHover thanks to MiaKoring!
110
stackotter @stackotter.dev · 23/10/2025
I forgot to update my system-wide Swift Bundler to the latest version for Mac Catalyst support, and I was graced by a very informative error automatically generated by the wonderful swift-parsing package by @pointfreeco@hachyderm.io
120
stackotter @stackotter.dev · 22/10/2025
Swift Bundler now supports targeting Mac Catalyst. Use the `--platform macCatalyst` command line option to try it out. You can optionally set the interface idiom (often called Optimize for Mac) as seen in attached configuration. github.com/stackotter/s...
Example Swift Bundler configuration file with Mac Catalyst specific overlay that configures the interface idiom (aka enabling Optimize for Mac)
000
stackotter @stackotter.dev · 24/06/2025
And here's the same app without the AppKit-specific changes.
010
stackotter @stackotter.dev · 24/06/2025
Here's an example app with a variety of views, all sporting AppKit-specific changes applied with a few lines each. See next for without changes. In terms of not-so-visible modifications, I made the Count text selectable, moved the picker to the right edge, and enabled drag&drop image replacement.
120
stackotter @stackotter.dev · 24/06/2025
I'm working on making it easier to make platform-specific changes to SwiftCrossUI's underlying backend views. I've taken inspiration from swiftui-introspect. This sort of flexibility will be super useful for more advanced user interfaces.
1101
stackotter @stackotter.dev · 24/06/2025
SwiftCrossUI now supports dynamic text styles! They adapt to the current 'device class'. Sizes and weights were roughly taken from Apple's typography guidelines (with some extrapolation to fill in missing text styles on certain platforms).
All of SwiftCrossUI's text styles displayed consecutively in a VStack from largest to smallest on macOSAll of SwiftCrossUI's text styles displayed consecutively in a VStack from largest to smallest on iOS
142
stackotter @stackotter.dev · 23/06/2025
SwiftCrossUI has a basic multi-line TextEditor view now!
SwiftCrossUI's notes example app running on macOSSwiftCrossUI's notes example app running on UbuntuSwiftCrossUI's notes example app running on iOS
110
stackotter @stackotter.dev · 13/06/2025
Thank you to everyone who popped by during the stream 🙏 SwiftCrossUI's AndroidBackend prototype now supports basic buttons, text and stacks. The example may not look like much, but we solved quite a few foundational challenges which will make future progress much faster!
120
stackotter @stackotter.dev · 09/06/2025
Didn't manage to get it working everywhere (thank you Windows for all your strange failure modes...), but at least SwiftCrossUI has a WebView for macOS and iOS/tvOS!
110
stackotter @stackotter.dev · 03/06/2025
Just published a basic landing page for SwiftCrossUI! swiftcrossui.dev I've tested it with mobile, laptop and ultrawide screen sizes. But if you use your phone's browser in landscape then that's on you 😅
SwiftCrossUI's landing page with a 3-tabbed image viewer. The tabs are macOS, Linux and Windows. The viewer displays SwiftCrossUI's music player sample app running on each platform.
0242
stackotter @stackotter.dev · 02/06/2025
SwiftCrossUI's Music Player example app is starting to take form! When I finally got around to testing today's improvements against Linux and Windows, almost* all of them just worked! And they adapted to look native on each platform 😉 *ignoring a GtkBackend layout bug I had to address 🥲
SwiftCrossUI's music player example app running on macOSSwiftCrossUI's music player example app running on UbuntuSwiftCrossUI's music player example app running on Windows
140
stackotter @stackotter.dev · 27/05/2025
Just messing around with Swift on Android a bit 👀 I created this basic layout from Swift via JNI as a quick test of some ideas I have for bringing SwiftCrossUI to Android
040
stackotter @stackotter.dev · 23/05/2025
Made a prototype of a Swift formal verification system a little while ago and never got around to sharing it! Here's it finding a 'bug' in my questionable xkcd random implementation 😅
161
stackotter @stackotter.dev · 22/05/2025
I forgot to update the body of the ForEach after removing the duration field from my Song type. But Swift had other ideas...
000
stackotter @stackotter.dev · 21/05/2025
26 failed CI runs later, SwiftCrossUI's automatically-generated documentation site contains documentation for each backend's platform-specific features (e.g. NSViewRepresentable) in addition to the existing documentation for the core SwiftCrossUI target.
SwiftCrossUI's documentation site with 6 entries. One for SwiftCrossUI's core target, and one for each of SwiftCrossUI's 5 backends.
140
stackotter @stackotter.dev · 20/05/2025
I’m excited to announce (belatedly) that @videovillage.com has released a Linux port of their plugin manager, built with SwiftCrossUI and Swift Bundler!
Video Village's plugin manager running on Linux. It has a UI for installing Filmbox and Scatter, two of Video Village's offerings.
1103
stackotter @stackotter.dev · 20/05/2025
Just one more commit...
A classic meme about gambling, with two men mining for diamonds. The top one is mining excitedly and the bottom one has turned around just before reaching the diamonds. The text 'Working CI' has been imposed over the diamonds.
010
stackotter @stackotter.dev · 20/05/2025
Classic CI wrestling match
7 failing GitHub Actions CI runs in a row
120
stackotter @stackotter.dev · 20/05/2025
Love a good job graph 🤤 I'm adding backend-specific documentation to SwiftCrossUI's documentation site, which has required rearranging my CI to pass doccarchive's from each platform-specific job to a final update-docs step.
A GitHub Actions job graph with three groups of jobs flowing into a final update-docs job.
010
stackotter @stackotter.dev · 17/05/2025
Finally got around to organising SwiftCrossUI's documentation. So satisfying finally having a clutter-free sidebar again! stackotter.github.io/swift-cross-...
000
stackotter @stackotter.dev · 16/05/2025
Third SwiftCrossUI modifier of the evening: fixedSize. This one was a lot easier to implement than aspectRatio.
200
stackotter @stackotter.dev · 16/05/2025
Just a quick demo of SwiftCrossUI's new aspectRatio modifier. It was surprisingly fiddly implementing aspectRatio while keeping in mind that there are far less well behaved views than images, but it should work well enough in most cases...
100
stackotter @stackotter.dev · 14/05/2025
Here's the same app running on Linux and Windows. Paths and shapes aren't supported on Linux yet so I had to disable the play buttons, but the rest worked with zero UI tweaks.
The SwiftCrossUI music player sample app running on LinuxThe SwiftCrossUI music player sample app running on Windows
000
stackotter @stackotter.dev · 14/05/2025
Check out SwiftCrossUI's hot reloading helping me whip up a new sample app in no time at all 😉 Hot reloading is only supported on macOS at the moment but I hope to bring it to Linux & Windows in the near future.
120
stackotter @stackotter.dev · 14/05/2025
Made a little cross platform development helper that lets me develop centrally on my Mac and sync+run the code on remote machines over SSH (in this case two VMs running on my desktop). Made a custom incremental syncing solution to support both Windows and Linux remotes.
010
stackotter @stackotter.dev · 13/05/2025
Just added a List view to SwiftCrossUI. As usual, I've used the underlying list view for each platform to provide a native and accessible experience no matter where apps are deployed! This view should unlock quite a few use-cases; SwiftCrossUI music player incoming?
130
stackotter @stackotter.dev · 28/01/2025
92.53gb used by UTM?? 😭 And 14gb by kitty?? And 6.46gb by Safari?? Safe to say, my 8gb MacBook Air is not loving me rn. My guess is that UTM/qemu is memory leaking, and kitty's memory usage is probably related to my multiple sourcekit-lsp instances running in various terminal windows
010
stackotter @stackotter.dev · 17/01/2025
Jackpot!
010
stackotter @stackotter.dev · 17/01/2025
Debugging GitHub Actions workflows makes me feel like a gambler. *It'll work this time, I swear*
100
stackotter @stackotter.dev · 17/01/2025
xcodebuild: we have json at home json at home:
100
stackotter @stackotter.dev · 15/01/2025
Anyone want to review my PR? Just a couple of changes ✨
A screenshot of a GitHub pull request titled "New layout system and much much more!" with 35000 additions, 5700 deletions and 526 changed files.
100
stackotter @stackotter.dev · 15/01/2025
And now it runs on Windows too. That's macOS, Linux, Windows and iOS with a single Swift codebase, for anyone keeping track 😎
000