June 16, 2025
Worked some more on the isideload and zsign crates to get them to work on windows and to experiment with them
I extracted the sideloading code into a seperate crate, isideload (https://github.com/nab138/isideload). Lot of debugging and stuff but its done now.
I worked on updating dependencies and fixing bugs in apple-private-apis. I even made a pr to the original repo. Also started working on extracting the sideloading code from ycode into its own separate project (temporarily called isideload)
While procrastinating fixing errors with monaco-vscode-api, I decided to make proper rust bindings for zsign so I don't have to rely on precompiled binaries anymore. I was able to make them and publish them on crates.io! https://crates.io/crates/zsign-rust
I audibly gasped when I finally got the error to show up. Due to monaco-vscode-api and monaco-languageclients poor documentation I've spent the last couple days playing with different configurations and looking at existing projects to figure out how to get the lsp to work properly. And finally it works!! Still a lot of work to do until its ready but it works!!
Windows support is finally here! After fixing numerous bugs and making some efficiency improvements, ycode is now capable of:
- Detecting swift sdks in wsl
- Generating and installing the darwin sdk in wsl
- Building a project
- Installing a built project to the device.
I also fixed a few bugs:
- Cancelling logins now works gracefully instead of causing any future login attempts to hang
- Swift 6.1 was changed to be the required toolchain (was originally swift 6.0 because I had the wrong xcode version)
So excited to be done with windows (for now).
Switched over to extracting the xip in the wsl filesystem but still have to fix some issues with symlinking. I love windows!!!!
Worked on darwin SDK installation in windows. After getting the xip extraction to work, It failed as it was unable to symlink the files like they should be. I'm going to have to redo this part to do the sdk preparation entirely within wsl so that the symlinks work properly. Yippee.
Worked on windows support some more and got WSL installed swift toolchains to show up in the app. That means they had to pass the internal validation as well, which meant I had to rewrite the whole swift invocation system to support running through wsl. The joys of windows.
Once again my devlog time isn't working right... Anyways I finally got the app to open on my windows desktop which took about 2 hours of installing various toolchains and dependencies... I love windows so much!!!!
If I had a nickel for every time my dev logs left a random amount of time out from them for no reason, I’d have two nickels.
Got the app to compile on windows again (still doesn't work though). Problem was that I was relying on a unix filesystem import which obviously doesn't work on windows, so I wrote a small wrapper that just invokes ln on wsl if its windows. Working on getting windows properly supported is my next goal
For some reason my last devlog didn't count 45m randomly, so this is just to count that. Anyway heres what the new ycode.toml looks like
First successful install of an iOS app built on linux with swift instead of theos!
I added support for a ycode.toml config file to specify the version number and bundle id, and later other options.
I created a packer to take the compiled executable and required resources and put them into a .app
I updated the templates to use this new project structure
Fixed linux builds in github actions by statically linking the unxip binary (windows is still broken and I don't plan on fixing it very soon). Also did some more research into packing with swiftpm.
I spent some time working on a reusable operation view that will inform the user of errors and also make sure they know that things are working instead of just starting at a blank spinner. I think it turned out quite nice!
Been doing some research and stuff. Got bored and decided to start working on an operation view that basically will just show all the steps of an operation like installing the darwin sdk so that theres something nicer to look at than a spinner. Not much to show of it yet.
Made some minor styling updates and fixed a few visual glitches
Cleaned up some edges and did some research into how I will package the app. Also started playing with an iOS emulator to see how feasable integrating one might be, but it's taken me a few hours to setup and I'm still not done, so... unlikely that it will get added anytime soon.
Finished the sdk generation code, YCode is now able to take a downloaded Xcode.xip and convert it into a darwin sdk that swift can use to build an iOS app with. Also made some nice UI for doing so and detecting if the darwin sdk is already installed.
Added a few more projects (YCode, NetworkTableSharp, and this website) and tweaked the homepage plus added some links to a few projects.
Tried and failed to add transitions back to the home page from the projects page. Added some arrows to the slides in the project pages, and started updating and adding more projects.
Not much to show, just did some work on the sdk generation code
Decided to ditch theos so that I could build SPM support into YCode. Started by allowing the user to select a swift toolchain
Made some real templates. I'm doing research on swift package manager integration, and am thinking about replacing theos with something custom to support it.
Got project creation working! Still need to make a proper template but the app is all setup to have the user select a template and fill out the info, and it will copy the template and fill in the user data.
Added an early access disclaimer to the app and created a github action to build and upload recompiled linux and windows versions for testers
Added an app ID page to preferences and a developer settings page. While making the app ID page, I discovered a few bugs in the app ID registration code that prevented deploying in some cases, so those have been patched.
I updated the splash screen to use just a single HTML file so that it appears faster, and I updated the IDE onboarding page to fix styling, add the logo, and other misc changes.
Redid how Preferences are handled and how their look, and used the new system to make a snazzy certificate management page. If YCode is your only use of sideloading you shouldn't need it, but for someone like me who codes on different machines and sideloads apps, this is invaluable
Have been working on windows support. I hate windows paths
Even more internal cleanups, fixed several UI bugs, added more features to the integrated file browser, and added a project clean button to the toolbar.
Did a ton of internal cleanups as well as making the build and deploy button actually build and deploy!
Sideloading works!!! It's been such a long journey to get here (even before SOM I had spent well over 30 hours on attempts that ultimately failed) and I'm so glad it's finally working. Now I just need to polish everything up and I can start working on the actual IDE part of this project
Finished code to register app ids & app groups and to download provisioning profiles. Now have everything I need to sign the app ready (except for the code of course!)
Not much tangible progress but I spent some time porting over structures from Sideloader that will be important to signing the app.
Finally got certificate submission working!! this took way too long
Big refactor! Not only did this clean things up in the backend a lot, but I also made it so that your current Apple session is saved so to make sideloading faster.
Successfully added device as a development device with apples auth servers. One step closer to sideloading
Got apple developer api auth working!
iOS Development IDE for swift on windows and linux. - Uses swift with a darwin SDK to build the app for ios - Uses your apple account credentials to acquire a certificate and sign the app - Installs the app onto your device with the idevice rust crate Right now, the app is mostly a proof-of-concept, with just basic project creation, code editing, and deploying working. However, I hope to add many new features: - Debugging - SourceKit-LSP integration for proper error reporting in the IDE - UIs for managing settings, dependencies, etc
Improved performance, SEO, and other various improvements.
Fixed a bug with the logo on mobile and added a mini projects page
Filled out the project page with pictures, cleaned up some UI bugs and finished the contact page.
Tweaked some appearances, added some more content and added an under construction warning so I could add the demo here.
Got a nice looking UI together! The home, projects, about, and project pages are mostly working (with fun animations too), just missing a lot of the projects.
Personal portfolio showing off my projects, both past and present. My 3rd redesign of the site, and hopefully this one is here to stay.
This was widely regarded as a great move by everyone.