June 16, 2025
I started Wakatime for Procreate integration and I thought got the idea of it, except I then realised due to Apple's downright stupidity in DeviceActivityReport, I can't track specific apps!
So I spent 1 whole hour trying to understand what attributes to use. eventually got a copy of a .procreate file to my mac. Apparently all these are are just .zips with different names, and inside you can find a binary PLIST. converting that to a regular PLIST, and then accessing a the SilicaDocumentTimeTrackedKey to see the time spent. well gonna leave this here cus it drives me so insane ill continue in school when im bored
Introducing offline tracking! Track your time while offline now! (Please make sure your ipad doesn't go close the app in background, else no worky (yet)). (Rate limits work now, submitting to the app store)
Introducing offline tracking! Track your time while offline now! (Please make sure your ipad doesn't go close the app in background, else no worky (yet))
Ok so the app finally works!! i’m just running into stupid App store review issues ðŸ˜
will ship once those are resolved
excuse the light mode but although the heartbeats work, due to watchdog being annoying on python, thing is crashing :sob:
currently reworking the thing to work a different way
This took soooooo long, but FINALLY FOLKS WE HAVE HEARTBEAT DETECTION ON HACKATIME!!!
Successfully started the time tracker!! However it detect as unknown and idk why :pf:
Asked for some help in #hackatime-v2 so yeah waiting for help form them
Introducing background support! I'm gonna implement requests now!
This took so long but I finally got the basic fundamentals going! I've asked some questions in #hackatime-v2 cus there are some clear things we cannot implement within the app due to the sandboxing thing, but we can implement the basic heartbeat. The guide also really doesn't talk much about how the heartbeats should be sent and what not. Anyways, gonna work on the logo and call it a day for now - will return on Friday
Finished the whole setup!
Ok so this is an unsually long time to be doing something-
Anyways I'm rebooting this project under a new name, and a fresh new approach. The new name will now be called Wakatime Playgrounds! Not just that, instead of using buggy Swift code that I am not very good at to manage network stuff, I'm gonna use PythonKit and Python 3.12, bundled within the app to run some Python scripts. This allows the usage of modules like iamawaterloo's wakapi-anyIDE, which I will use heavily in the new Python scripts
However, it looks like embedding Python within an iOS app is the least straightforward thing-
It didn't tell me that I cannot just import PythonKit and then run everything from there?? I had to embed a whole Python framework
After COMPILING one, I finally got the XCFramework, followed the steps, and it didn't work due to PythonPath not being found?? HUH?? turns out their initalisation steps are broken, and ChatGPT 5 my lord and saviour for once finally gave me a working script to install it! Python is now running, let's start the project reboot now.
It might look like it's copy-pasted, but trust me it's not. It's running using sys.version code-side
Finally finished the whole app after patching some bugs, and adding some quality-of-life features. Now we're pending approval from Apple for App Store release
This took forever cus Xcode does not feel like working today but yeah here's the blocked screen, time to start on the blocking code + flow
Successfully made the settings + home View! Now time to get the in progress screen
Added persistence using SwiftData, added image uploading, and got the AI model to work!
Redid the whole setup, cus I didn't like it, and it is now complete!
Ok so that wasn't the exact reason I took 1h 35 mins, but I spent 8 mins on that
Anyways I choose to redo the UI cus I didn't like it (felt tacky and laggy)
passcode picker made to make it somewhat complaint to apple's T&Cs
Created the app icons + banner image!
Finished the starting UI! This took so long cus my mac was lagging + downright laggy swiftUI lol :pf:
Known issues: Screen time TestFlight bugs, Master passkey not working [WARNING! TO TESTFLIGHT TESTERS, THERE IS A WEIRD TESTFLIGHT BUG WHERE AN APP RELAUNCH IS REQUIRED AFTER GIVING SCREENTIME ACCESS] Manage your distractions by blocking apps and restricting their use until you finish your tasks - powered by Claude
Finished installer! Everything is done
Added a progress bar, image background selector, and a font selector! Fixing some minor text-related bugs and then starting installer creation
Added a progress bar, and fixed some bugs with settings!
WHY DOES C# SYNTAX MAKE NO SENSE IM GONNA BE MENTALLY UNSTABLE AT THE END OF THIS
anyways got almost the whole timer syntax working correctly!
Got the todos and other persistence working! Time we start on the timer stuff
Changed the window system to be soooo much smoother and better, starting on timer logic now
ah yes .net + winforms are SO IRRITATING TO WORK IN (ESPECIALLY C# SYNTAX WHY NEED SEMICOLON THIS IS NOT JS) anyways managed to get some stuff working and persistence. Just need to get the other bits working. At the rate stuff is going i'm gonna skyrocket past 10 hours lol
Changed the task picker to integrate the settings menu too
Added a tasks picker
Added the basic UI to it, after spending over 45 mins of setting up the Windows XP VM after installing VMWare Fusion
A port of my pomodoro timer built for iPadOS and macOS, to Windows XP, just to try out Rewind V2!!
Finished up the dev assets, time to ship it!!
Finished the new website design, with a custom new hero image! Used a bit of AI for socials cus I wanted to style them instead of keeping it boring. Also the liquid glass changes from below, don't expect that in the final version lol
Reviewers, unless this is the whole point of SoM, please reject these 1h 0m 56s
So I tried to Liquid Glass the box in the centre that holds the timer, it went horribly wrong-
I didn't know anything about where to start, so i tried UltraThinMaterial, gave up and tried vibe-coding, made the situation even worse, then I tried to manually learn MetalFX on that, gave up on that, tried vibe coding that, got 3 billion errors. Finally, I tried to liquid glass it using actual SwiftUI APIs for iOS 26. So I tried to liquid glass it, and got THIS MONSTROSITY!!! yeah no we are not shipping this with that screw liquid glass
Started the website redesign for v2! Looking great so far, although learning Bootstrap + Going back and forth with AI takes so long (i can only vibe code websites until we have a solid module like SwiftUI to quickly develop these)
tried to vibe code a new version of the website, it then went terribly lol.
i then proceeded to work on the macos verision. i tried to get custom notification sounds to work but STUPID MACOS SDK WHY OFNONGIPNPANFPBPF. anyways i then gave up and have uploaded it to the app store
Successfully implemented Elara Hyperfocus and finally got the screen blocker extension working!! Now I just need to wait cus I have requested authorisation from apple to publish all this. (another one of their rules ik)
Added Elara momentum, a quick and easy way to hop back into Elara and get a nice motivational quote on your home screen, with over 80 quotes coming from Elara.
(quotes mostly by AI)
2 different versions and attempts later, I have miraculously gotten SwiftData working in a VERY weird sense, I'm surprised this even works but it's a summer miracle (get it cus SoM lol), however I have to nuke user data but it's a trade off I bet users are ready to make.
TL;DR of how this works:
Basically, there is just a new Class called UserData that stores al the data. When the data is edited, it is detected by a .onChange modifier and runs the saveData function, which calls the SwiftData model and saves it by the ModelContext. This might sound janky, but it works relatively well, and you could argue it works better then certain other implementations.
v1: re-write this, this went terribly because of how textfield and nothing works without multiple different variables for editing
v2: this!
Reason I'm even doing this now is because I want to implement screen blocking while the timer is running, but for some reason the apps list can't be coded so my old PLIST-based system using Forever by Jia Chen Yee on GitHub just wouldn't work
Got timer chimes finally working!! this took so long (reading docs moment lol)
added a statisticsview! still need to implement it tho
Finished the general UI
Looking for testers! To contact, DM me your email (advaitconty on the slack)
Minimum iPadOS version: iOS 18.0
HEARTBEATS WORK!!
you can also select a file but I forgot to showcase that oops and I have no time for even re-recording cus i'm gonna be late for tuition :P
Added a way to extract the wakatime data from the Hackatime stuff
idk why simulator records like this
A wakatime instance for iPadOS, especially for Swift Playgrounds programmers
It's been a while, but I managed to rebuild the whole system to run on a date-based system for increased accuracy, made it a lot more like iPadOS, made it work with iPadOS 26 and dropped it onto TestFlight (awaiting approval)
Also there is keyboard shortcuts now
The best free aesthetic pomodoro timer, where time meets tranquility. (The latest version of the iPad app is pending approval for FamilyControls so not yet available.)
This was widely regarded as a great move by everyone.