Szkopul Utils banner

Szkopul Utils

19 devlogs
47h 44m 48s

A collection of different QOL improvements and additional features for the site szkopul.edu.pl!

Demo Repository

Loading README...

adamd

Shipped this project!

Hours: 4.21
Cookies: 🍪 58
Multiplier: 11.47 cookies/hr

Hope this ship counts with the missing 30 hrs!

adamd

Hii! hyper-blahaj-spining

Today I made a lot of chore-pr-like improvements including:

  • translating all strings that were previously left out or added as placeholders
  • fixed the headers css so all look the same
  • fixed the css for the TODO table so it looks similar to the one for virtual contest tasks

and

  • added an ‘Add this site’ button in the TODO list tab in the popup – it was a nice opportunity to learn the chrome’s tabs permission functions <- Im wandering if it would be useful to add it to the table for virtual contest as well… (?)

I will be submitting the new versions for review and we will se how much time it will take for mozilla to cop on! See ya wave-inside-out-joy

Attachment
0
adamd

BIG UPDATE!! parrotcop

HUGE NEWS!!!! hyper-blahaj-spining

Mozilla finally reviewed the extension!1!! It was, indeed an automated screening, and I dont know why but it seems like the extension wasnt properly registered and couldnt be analyzed by their system until a human intervention or something… Good thing is it is here. I hope the updates will be a lot quicker!


Thank you all for voting, its really nice to read the comments and feedback! And I know that this projects target group is very specific and small, but Im trying my best to show my path and what Im doing and trying to improve for this sites community, through some reverse-engineering and tinkering with the source.


Also, the devlog… right…

So today I fixed the ‘pinned contests’ card not being displayed on mobile devices. It turns out that the mobile version and the desktop version are two separate, massive divs with almost the same content lol. That would partially explain the enormous loading times…

I decided we dont need the stats card because it would bring up only clutter, as you dont usually use szkopuł on a phone. The contest links are an exception because they are for convenience.

See ya next time! wave-wx

Attachment
0
adamd

Shipped this project!

Hours: 13.92
Cookies: 🍪 144
Multiplier: 10.37 cookies/hr

Reship because the previous one was bugged and didn’t queue for voting!

adamd

Another day, another devlog

I spent most of today’s time trying to make some kind of dynamic pinning system (I wanted the extension icon pinned or shown in the toolbar only when the user is on the szkopuł site), but that didn’t quite work out because the feature allowing this was removed both from firefox and chromium some time ago (and by some time I mean like 6 years). But that’s okay, only the user will have to deal with it.

From other updates – Mozilla still hasnt reviewed the first version of the extension :))) Love you mozilla!!

I will need to actually do some tasks on the site to test out the extension… See ya! wave-wx

Attachment
0
adamd

Hellooo

I caught myself jumping from project to project (my two projects on ft specifically), but thats not that bad right? Im kinda stuck waiting anyway because it looks like this one (the ship 4 devlogs ago) didnt enter the voting queue yet sad-dino.

Anyway, today I improved the task archive functionality by:

  • adding a ‘for all’ text for clarity (the buttons there werent even intentional – it comes from this site questionable architecture, but I guess its okay)
  • adding title attributes to buttons also for clarity and
  • adding a ‘virtual contest from those task’ button. It does what you think it does. Just adds those tasks to the virtual contest tasks list. It was also quite simple to code.

I also fixed the emitTaskSolved function which I wrote about some time ago. From other updates – Mozilla still hasnt reviewed the first version of the extension :))) Love you mozilla!!

See ya next time wink-hole

Attachment
0
adamd

Hello, another quick update. What you are seeing here on the screenshot is the task archive tab. It displays tasks grouped by categories and by contests. I removed unnecessary UI and added the shuffle icon button. It opens a random task from the category or the whole contest (on top). Like I wrote before, the system does not provide any kind of API so everything is scraped from the HTML. This one was relatively easy - it was just <li> elements under each div. See you next time!

BTW: It works with the filters (built into the site, you can filter for example from just one stage and the random button will pick from the filtered results)!

Attachment
0
adamd

Heeeelooo

Another screenshot of the home page – today I added the pinned contests mechanic. You can pin a contest from the contests tab or from the home page to display on top.

From other updates: still no votes and still not reply from mozilla cryin

Attachment
0
adamd

Oooooookay! Shipped the 1.0 version, but still no votes 3d-sad-emoji and firefox still hasnt reviewed the listing! I might have to send them an email to check if its not bugged or anything or if I have to send something else to them.

Anyway, here is the new landing page! The pinned contests are in progress, but I think it looks much much better than before!

Attachment
0
adamd

As you can see, Ive implemented a nice dashboard or summary on the main page of szkopul. It shows blank data now because this is a new account and the extension storage resets every time I reload the package, so you need to trust me it works on this one! And with this I think Im ready to ship!

Attachment
0
adamd

Today I added the ‘reveal score’ button that shows in the menu when you have the hideScores option enabled, and the task has been submitted. Here is a gif of how it works:

Attachment
0
adamd

Woah! Those two hours were quite productive. Ive implemented two features – inline task statements and on-same-page task statements as I call it. It works by embedding the statement links. I am a little worried about cashing on those ’s (sometimes the PDFs are updated very dynamically), but I will fix that when someone or I actually find the issue.

Attachment
Attachment
0
adamd

Today I redesigned the options page and made the export/import/erase data buttons work again! With FT being extended (ive read the message yesterday, so happy :) i may even have the change for a mac mini!

0
adamd

Chrome accepted my extension! I uploaded the first version yesterday and it got published!

Right now Im working on making the extension options better – I added a struct and a ‘default options’ object like for the virtual contest options because it worked well! I added options.ts with those objects and functions to get and save the options. Im seeing more and more files in the project that I intended to do in like 2 days…

Well, its not that bad and I hope some people (more than just me and the people that will vote) are actually going to use it. We will see. Look to commits history for more, and see you next time!

Attachment
0
adamd

Moving on to the main function of my extension, Im building the panel which will display the tasks and the left time and the score counting system.

On the screen here is a ‘block unrelated subpages during virtual round’ setting working!

Attachment
0
adamd

Another day of fighting with Bootstrap CSS!

Today I fixed adding problems to a virtual contest (had to get rid of the animation for now :(( cuz if was bugged af), made functions to get and update the virtual contest options and made the ui save the settings.

Right now I have a loadSettings() async function that gets the object from the extension storage and sets the switches state accordingly. I should probably switch from await to .then() for it to be faster, but I want to get this working first. Remind me of that when I do!!

See you next time!

0
adamd

And its done!

I mean, not fully done, but I did what I wanted to do today – that is: the ability to add and remove problems to a virtual contest from the problemset and rendering the table (name + link + delete button). Im saving this data in the extension storage like previously, but this time in an array of a specified type (imma need to fix the todo later so its more organised and more like this).

So next up is contest-specific settings (those will override the ones set in ‘options’ that apply normally), drawing a nice panel with the tasks during the contest and finally - the functionality! (maybe I should have started from that? It seems like the most import… eh whatever). See you next time!

Attachment
0
adamd

Again, sorry for the Polish… I will try to do the rest in English using the translations (those are only hard-coded placeholder examples, so thats why)

On the screen you can see the virtual contest setup view – the main feature. I want to finish it first, preferably even today if I’ll be able to! Right now, Im rendering the tabs with lit and filling the placeholders when the data from browser.storage is downloaded – I also need to think of some way to cache those so its faster.

Conclusions from today: bootstrap is clumpy and much harder to use then just some tailwind plugins…

Attachment
0
adamd

Biggest change today: Extension data management upgrades!

You can delete, export and import all the extension data (i.e. todos, current settings, language and more in the future). Export button just downloads a JSON blob from all the browser.storage items for the user, and import loads them (replaces current data).

Also, the popup if fully translated now and the language switch works!

Attachment
0
adamd

Making up for the previous 10hrs logged as one devlog:

Today (this one hour) I focused on translations – I added a dropdown in the options page in the popup to change language. I have Polish and English available.

I also fixed some typos and styling issues.

Here is my overall plan of features:

  • Notes for each tasks (already done that)
  • TODO list of tasks (on it)
  • Virtual contests
  • misc fixes (styling, QOL, more on that later)

One more thing that I would really want to add are comments under each task (with firebase or some other serverless db). But that is more complicated so Im marking it as an additional ‘maybe will come in the future’ thing in the end.

0
adamd

First devlog, 10hrs, but that’s because I originally thought that this project wouldn’t be going on Flavortown. I thought that, because it is a browser extension and it is for a Polish site for oi (szkopul.edu.pl). I don’t expect many (or any people at all) that will vote to use the site. Anyways, some guy told me it was okay, so if youre a shipwriht reviewing this project, blame it on him :)


During this project, I will be learning the web extension development process :). I already know js and stuff and moreover I know how the site Im modifying works internally (its open-sourse, sio2project/oioioi on github), but it still requires some tinkering to go from making my site to trying to reverse-engineer someone else’s site.


So far I’ve created the popup’s HTML (screen 2) and menu injector (screen 1), more info and plans in the next posts – see you there!

Attachment
Attachment
0