Hello!
The frontend now uses bun instead of npm, so it’s very fast now! If you have a profile picture in gravatar, that will now be your profile picture.
Also, School Tools has a new logo!
Bug fixes:
I fixed some bugs around here and there and added basic support for the mobile UI.
Mobile UI support was largely done with OpenCode
I added a new toggle so users can disable ICS generation. The functionality is off by default, tho users can manually enable it in the settings. Existing users will still have it on.
QOL things:
Hi! hi!
The main point of this updated is that i added Homework support! 
You can see all your homework in a new shiny homework page. I also revamped the ‘Todays schedule’ in the main dashboard, and added a new homework widget there too
A few QOL things:
Added a new shinny settings page! You can edit your name, email and password
New feature:
• You can now change the icons of your subjects. If you already had subjects prior to this, its icon will be set as BookOpen.
Bug fixes:
• added very janky admin endpoints + ui. UI was mostly done by ai because its not public and just needs to work. I made the endpoints myself, even tho they are a bit janky. Will impove in the future..
• added a resend verification link button (only available after 6h) and logout button in the /auth/verify/pending page..
So, i had OpenCode do a look around the codebase for vulnerabilities and bugs that i should fix before release. However, the edits were done by me. This devlog is basically that:
• fixed an IDOR vulnerability that allowed any authenticated user to uncancel any class by just having its ID.
.
• when trying to log in with an account that does not exist, the api now raises a password incorrect error instead of user_not_found . .
• added rate limiting to /v1/auth/pwd (5 per minute) , /v1/auth/signup (20 per hour) and /v1/auth/verify (2 per minute).
• Improve email validation on account creation.
• Added password requirements on signup..
• Enforce email verified in endpoints.
• Fixed a vuln that allowed the ?next=//example.com param to redirect to any website after login.
• Added a FAQ in the calendar settings page ‘Why is my calendar not updating?’.
• Don’t allow class deletion if used by evaluation.
• Add loader and icon to the class deletion modal..
• Don’t allow subject deletion if used by class..
• Rename canceled to cancelled in many parts of the code..
• Ensure character count limit (8-50 in most places).
• Relax rate limits.
• [OpenCode] Created a migration worker.
• Migration to remove depreacted onboarding_status field..
• Made many things TZ aware and added an user timezone field in the IANA format..
• [OpenCode] Tried, and failed
to add mobile support..
• Standernize responses in the valid_json decorator.
Many of the changes are non-visual, so i put the devlog image as the new FAQ.
Hello!
I have added ICS integration support, so now you can add your School Tools calendar in any of your prefered calendars!
I started by making the job that generates the ICS per se. After that, i added API routes to integrate around it. I then integrated it into the frontend under /settings/calendar. There is also a tooltip in the normal calendar page!*
The way ICS feeds work is basically every time there is a DB edit (such as class creation for example) the user is marked as ‘dirty’. Then, the ICS job that runs every five minutes, gets every dirty user and updates their ICS feeds. It doesn’t really matter that it isn’t updated automatically, since the majority of calendar providers have a long TTL for ICS subscriptions. (Google Calendar has ~12h TTL for example!)
I also added a README.
*Frontend integration was heavily AI assisted, but i supervised it and edited some things to ensure code quality.
Hi! Recent updates:
You can now create and view classes! You can also cancel them individually if anything came up.
Okay, looong devlog.
I have made a very WIP frontend
A slack bot that celebrates people’s birthdays!
/birthday slash command with respective config and delete sub commands.Hi. I have done a few things: