You are browsing as a guest. Sign up (or log in) to start making projects!

stefdp

@stefdp

Joined May 31st, 2026

  • 44Devlogs
  • 5Projects
  • 3Ships
  • 45Votes
idk, I just do stuff, also check out my website: https://stefdp.com !
Open comments for this post

1h 1m 44s logged

  • In the account settings screen created the activity tab (i think i finished all the client side of the app :yayayayayay: , now i just gotta finish the small importance TODOs like removing the padding to the scrollbar in most scrollable views & stuff like that)
  • Moved ActivityDisplay in the general components as it’s used in the accoutn activity too
  • Updated ActivityDisplay to include the user agent button when available
0
0
13
Open comments for this post

2h 54m 54s logged

  • In the account settings screen created the API credentials tab
  • Update the server screen so each tabs remembers its own data after switching to another tab (previously it would reset when the user switched to another tab).
    Also tabs now only fetch data on first render, then they use the previously fetched data instead of re-fetching, unless the user manually refreshes via the “pull to refresh” action (the thing where you swipe from top to down and it shows the refresh circle, idk it’s “professional” name :pf: )
  • Applied same changes as above to the account settings screen
  • Updated the formatDate function to include a param to toggle the year in the date
0
0
8
Open comments for this post

5h 25m 16s logged

  • Added the account settings screen and its account tab (now missing “API Credentials”, “SSH Keys” and “Activity” tabs, then the app is done :yayayayayay: )
  • in the server screen’s files tab file names are now limited to one line and if they overflow, they get cut off and “…” is added
  • Now each warning popup in the server screen has its own icon instead of all using the suspended icon
  • in all places, replaced refreshIndex += 1 with refreshIndex++
  • The app now no longer shows “Missing Server ID” toast as soon as you open a server
  • Fixed disable 2FA endpoint (i forgot to add /disable at the end and i was wondering why 2FA wasn’t getting disabled even tho the request succeeded :wiltedrose: (without /disable it acts as enable endpoint))
  • Fixed get qr code response as it was different from what the API docs listed :hs:
  • In the get qr code function added a secondary response to tell that 2FA is already enabled (used to check 2FA status so i know whether to show enable or disable button in the 2FA cuz the user object doesn’t tell me if the user has 2FA on :wiltedrose: … shitty API fr)
  • Added a simple regex to parse emails (so the change email button is enabled only if this regex passes)
  • Servers screen now uses a normal Column instead of a LazyColumn as lazily loading the server was causing more lag than loading all at once (after all it’s just 10 servers per page)
  • Same as above for the server screen activity tab (jusy 25 logs per page)
  • Fixed the pagination system in servers screen and server screen activity tab (for total amount of pages it was using the total amount of items in the current pages (.total) instead of the total number of pages (.totalPages), idk how i missed that :hs: )
  • Moved the file picker stuff outside of the LazyColumn & put the permissions in a remember to hopefully try to decrease lag

I wanted to make a screen rec but i was too lazy to then go and censor my 2FA secret :pf:

0
0
9
Open comments for this post

5h 15m 1s logged

  • Created the activity tab (finally finished all server tabs :yayayayayay: :D) along with a function to parse the variables in the logs’ description
  • Improved loading for schedules, backup and databases tabs
  • Fixed JSON text highlighting not highlighting strings inside of arrays
  • Added padding for the Waterfall Cutout (aka screens with rounded edges) in the Header and ScrollableTabRow components
  • In the settings tab added a popup to confirm the reinstallation of the server
  • Added the endpoint to get the server activity (idk how i had skipped that one) and its function to call it
  • Renamed AccountActivity to ActivityLog as it’s used in server activity too
  • Installed a lib to generate avatars thta look like “Boring Avatars” one (cuz boring avatars API is paid :wiltedrose: )
  • add .trim() to all user inputs
  • Now tabs refresh only when the server ID changes instead of anything in the server object
0
0
7
Open comments for this post

4h 19m 54s logged

  • Create a custom PullToRefreshBox component that just uses Material3 PullToRefreshBox under the hood, i just made a component so i can easily style it as it’s in 1 single place
  • Added the pull to refresh gesture to servers list & server details screens
  • Added a warning for when the server is suspended, installing, transferring, restoring from a backup or its node is under maintenance (all warnings for now use same icons, i gotta change that)
  • In the servers list servers now are disable and show a pill when they are suspended, installing, transferring, restoring from a backup or their node is under maintenance (basically when the warning is displayed, the server is also disabled aka you can’t access its data like console, files etc.)
  • The app now properly handles padding for devices that have a “waterfall inset” (aka those kind of phones with curved screen at the edge)
  • The top bar in the server list now properly shows a loading state instead of just disappearing and appearing when the user permissions are fetched
  • Created a function hasPermission to check if an user has a certain permission instead of repeating the same code like 20 times
  • Moved StartupContainer to a more general Container
  • Moved ServerStatus enum to Server.Status
  • Removed navController from all tabs as it was unused
0
0
3
Open comments for this post

44m 49s logged

  • Network tab now just disables all the buttons when loading instead of switching to skeleton loading for any small change like updating an allocation’s notes
  • Doubled hamburger menu icon left padding to match the avatar padding on the right
  • Doubled the gaps between the cards in the backups & network tabs
  • Halved the gaps between the cards in the schedules tab

I also tried to make the TextInput label not squared for a while but failed 😭 , for some reasons even if i clip my highest component to rounded corners, it still has the squared bg in the back :wiltedrose:

0
0
7
Open comments for this post

1h 57m 5s logged

  • Added the network tab to manage server allocations
  • Added a “Tertiary” button type (just cuz secondary was almost invisible on the allocation bg 🥀)
  • Fixed allocation endpoints using String instead of Long
  • Moved backup popups outside of the padded Column
  • Updated my github username in the readme
0
0
5
Ship

I updated the webring code so that now:

  • The webring is on the bottom right (moved neko credits from bottom right to bottom center), a bit more above the bottom so that on small screens like phones it doesn’t overlap with the credits
  • It’s now vertical
  • Added a new webring (https://horser.ing, only for friends) and so i added a select to choose the ring and also a ?webring query that auto selects given ring (currently as values there’s hackclub for hc ring and horsering for the horsering)
    it’s wasn’t really challenging, only thing that took me a bit was find out which class added a horizontal padding to the select cuz none of my tailwind classes added it, then i found out it was DaisyUI’s btn class
  • 3 devlogs
  • 3h
  • 5.13x multiplier
  • 16 Stardust
Try project → See source code →
Open comments for this post

26m 31s logged

Made the horizontal padding of the select smaller
I legit couldn’t find what that padding was caused by cuz i didn’t have any p* classes and after like 20 mins i found out that it was the DaisyUI’s btn class that added padding-inline 🥀 so i fixed it with px-2 (which in tailwind stands for 0.5rem or 8px

0
0
11
Open comments for this post

2h 23m 28s logged

  • Added the Horsering in the rings (friend only ring)
  • Moved the neko credits in the middle
  • Moved the webring on the right and made it vertical
1
0
64
Open comments for this post

26m 37s logged

After i tested more the additions of the last devlog i found some issues so here i fixed them

  • Fixed backups downloading as .gz instead of .tar.gz
  • Fixed “Create Backup” not showing up when the current backup count was 0 (making it impossible to create backups at all)
  • Disabled inputs in the restore & create popups when respectively restoring and creating
  • Removed the enabled param in the BackupDisplay as it was basically useless
0
0
3
Open comments for this post

4h 29m 2s logged

  • Finished the users tab
  • Made the backups tab
  • Made all popup’s horizontal padding equal
  • When editing or creating a new subuser, the permissins that the current user doesn’t have are disabled in the permissions list
  • Disabled the “Create Database” button when at the limit
  • Renamed File to FileDisplay for consistency with other components
  • Fixed edit & create user body still using String instead of ServerSubuser.Permission
  • Fixed the deleteServerBackup function which was marked as GET instead of DELETE
  • Made the truncate param required in the restoreServerBackup function as it’s required in the API
0
0
5
Ship

To use the app please read the README’s “Stardance Demo” section, I explained there how to get it to run.

I made a GitHub action to restart your Pterodactyl Panel server, during Stardance I added the ability to run commands or a delay before the server is restarted (or both).
It wasn’t really hard as I just make multiple HTTP requests and I know the Pterodactyl API quite well since I’m also making an android app for it.

I made this action mainly for the Minecraft server of a friend, so the server automatically restarts when we add a new mod in the packwiz config on git but this can actually be used by anyone with a server, no matter what they’re running (as long as their user has the permission to restart the server)

  • 2 devlogs
  • 2h
  • 6.26x multiplier
  • 13 Stardust
Try project → See source code →
Open comments for this post

56m 28s logged

  • Added the option to run a command before the server restarts
  • Added the option to add a delay before the server restarts (useful with the command as the API doesn’t say when the cmd has finished running)
  • Added the README
0
0
4
Open comments for this post

5h 27m 46s logged

  • Started making the users tab but it’s really WIP, none of the buttons except create new user works)
  • Handled subuser permissions for all current tabs
  • Added a LabeledCheckbox component
  • Removed some function params that were pointless to have
  • Installed the Gravatar SDK for the subusers’ avatar

I legit think Android Studio is ragebaiting me, as soon as i start the rec the app starts to lag, when i stop the rec it’s fine

0
0
4
Open comments for this post

3h 46m 12s logged

  • Finished handling buttons in the schedules tab & created all the popups for schedule & tasks management
  • In all screens & tab now all the inputs, switches, selects etc. are disabled when loading or making a HTTP request (like delete schedule, update file name etc.)
  • Added a function to convert ISO date strings in human-readable strings
  • Added a missing endpoint to execute a schedule
  • Added a missing only_when_online property in the ServerSchedule data class
  • Fixed schedule & tasks endpoint types (was using String instead of Long for the IDs)
  • Fixed ScrollableTabRow not using all the horizontal space when in landscape mode
0
0
4
Open comments for this post

2h 31m 27s logged

  • Finished the UI side of the schedule details popup (still WIP for backend like button handling)
  • Moved each popup into its own folder & file to avoid having many long Popup calls at the top of screen/tab files
  • Changed task action from a normal screen to an enum
  • Took the formatDate function from my Zipline app
0
0
3
Loading more…

Followers

Loading…