Adds a few useful enhancements to Satori Online Judge website.

Latest Version

Version
2.0
Update
November 4, 2024
Size
545KiB
Developer
Category
Users
524
Rating
5 ★
Manifest Version
3
Web Store Status
Languages Support
English
See more
Permissions
Storage
Notifications
DeclarativeNetRequestWithHostAccess
Cookies
Scripting
Offscreen
See more

Satori Enhancements Extension

Satori Enhancements is an unofficial extension built for Jagiellonian University's Satori Online Judge (https://satori.tcs.uj.edu.pl) website. The main goal is to improve usability, ease of use and add some useful features.

Currently supported features:
- General:
- Removing UI clutter
- Replacing some image assets (e.g. Satori Premium logo) with an option to configure what are they changed to
- Improving styles (e.g. using more distinctive link color)
- Adding tab-order in forms for quicker navigation
- Auto-redirect to the recent contest when opening homepage URL
- Maintain login state between browsing sessions
- Problems:
- \"Results\" link for each problem
- Highlighting problems according to their best status (OK/ANS or other error)
- Ability to hide particular problems and remembering hidden problem groups
- Contest selector as a popup instead of a separate page
- Ranking:
- Ability to sort ranking tables by given column
- Search box to filter rows
- Sticking the table header and two leftmost columns (Rank/Lp and Name) when scrolling so they're always visible
- Submit:
- Allow pasting code instead of selecting local file when submitting
- Auto-redirect to the latest results page after submitting a solution
- Results:
- Auto-refreshing results page and notifying about problem status changes
- Syntax highlighting with configurable style

The extension is an open source software (MIT license) and its source code can be found on GitHub: https://github.com/m4tx/satori-enhancements
Read more

Source Manifest.json

{"update_url": "https://clients2.google.com/service/update2/crx", "manifest_version": 3, "name": "Satori Enhancements", "description": "Adds a few useful enhancements to Satori Online Judge website.", "version": "2.0", "minimum_chrome_version": "130", "browser_specific_settings": { "gecko": { "id": {a7a2f4f4-8648-4221-8e88-af047e0fe5ca}, "strict_min_version": "132.0" } }, "icons": { "16": "icon16.png", "48": "icon48.png", "128": "icon128.png" }, "options_ui": { "page": "options.html" }, "permissions": [ "storage", "notifications", "declarativeNetRequestWithHostAccess", "cookies", "scripting", "offscreen" ], "host_permissions": ["*://satori.tcs.uj.edu.pl/*"], "action": { "default_icon": "icon128.png", "default_title": "Satori Enhancements" }, "background": { "service_worker": "js/background.js", "scripts": [ "vendor/browser-polyfill.js", "js/config.js", "vendor/bower/jquery.min.js", "js/common.js", "js/background.js" ] }, "web_accessible_resources": [ { "resources": ["images/*.png", "images/*.svg"], "matches": ["*://satori.tcs.uj.edu.pl/*"] } ], "content_scripts": [ { "matches": ["*://satori.tcs.uj.edu.pl/*"], "js": [ "vendor/browser-polyfill.js", "vendor/bower/jquery.min.js", "js/config.js", "js/general.js" ], "run_at": "document_end", "css": ["css/general.css"] }, { "matches": ["*://satori.tcs.uj.edu.pl/contest/select"], "js": [ "vendor/browser-polyfill.js", "vendor/bower/jquery.min.js", "js/contest-select.js" ], "run_at": "document_end" }, { "matches": ["*://satori.tcs.uj.edu.pl/contest/*/*"], "exclude_matches": ["*://satori.tcs.uj.edu.pl/contest/apply/*"], "js": [ "vendor/browser-polyfill.js", "vendor/bower/jquery.min.js", "js/contest.js" ], "run_at": "document_end", "css": ["css/contest.css"] }, { "matches": ["*://satori.tcs.uj.edu.pl/*/ranking/*"], "js": [ "vendor/bower/jquery.min.js", "vendor/bower/jquery.dataTables.min.js", "vendor/bower/dataTables.fixedColumns.min.js", "vendor/bower/diacritics-neutralise.js", "vendor/bower/intl.js", "js/ranking.js" ], "run_at": "document_end", "css": [ "vendor/bower/jquery.dataTables.min.css", "vendor/bower/fixedColumns.dataTables.min.css", "css/ranking.css" ] }, { "matches": [ "*://satori.tcs.uj.edu.pl/contest/*/problems", "*://satori.tcs.uj.edu.pl/contest/*/problems?*" ], "js": [ "vendor/browser-polyfill.js", "vendor/bower/jquery.min.js", "js/common.js", "js/problems.js" ], "run_at": "document_end", "css": ["css/problems.css"] }, { "matches": ["*://satori.tcs.uj.edu.pl/contest/*/problems/*"], "js": [ "vendor/browser-polyfill.js", "vendor/bower/jquery.min.js", "js/common.js", "js/problem.js" ], "run_at": "document_end", "css": ["css/problem.css"] }, { "matches": [ "*://satori.tcs.uj.edu.pl/contest/*/results", "*://satori.tcs.uj.edu.pl/contest/*/results?*" ], "js": [ "vendor/browser-polyfill.js", "vendor/bower/jquery.min.js", "js/common.js", "js/results-list.js" ], "run_at": "document_end" }, { "matches": ["*://satori.tcs.uj.edu.pl/contest/*/results/*"], "js": [ "vendor/browser-polyfill.js", "vendor/bower/jquery.min.js", "vendor/bower/highlight.pack.min.js", "vendor/bower/highlightjs-line-numbers.min.js", "js/common.js", "js/results.js" ], "run_at": "document_end", "css": ["vendor/bower/7-three-bounce.css", "css/results.css"] }, { "matches": ["*://satori.tcs.uj.edu.pl/contest/*/submit*"], "js": [ "vendor/browser-polyfill.js", "vendor/bower/jquery.min.js", "js/common.js", "js/submit.js" ], "run_at": "document_end", "css": ["css/submit.css"] } ]}
Read more