Adds a few useful enhancements to Satori Online Judge website.
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
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
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