{"id":18472923,"url":"https://github.com/drakerossman/hackernews-userscript","last_synced_at":"2025-10-06T06:09:03.602Z","repository":{"id":220677142,"uuid":"749474374","full_name":"drakerossman/hackernews-userscript","owner":"drakerossman","description":"Hackernews Userscript wirtten in Rust WASM featuring regex-based filtering and softhide","archived":false,"fork":false,"pushed_at":"2024-02-03T15:07:38.000Z","size":1614,"stargazers_count":10,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T04:12:42.120Z","etag":null,"topics":["addon","addons-mozilla-org","chrome","chrome-extension","extension","extension-chrome","firefox","firefox-addon","firefox-extension","hacker-news","hackernews","regex","regexp","rust","userscript","wasm"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/drakerossman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support-on-liberapay.png","governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-01-28T17:31:36.000Z","updated_at":"2024-09-05T16:38:53.000Z","dependencies_parsed_at":"2024-02-03T15:45:24.500Z","dependency_job_id":null,"html_url":"https://github.com/drakerossman/hackernews-userscript","commit_stats":null,"previous_names":["drakerossman/hackernews-userscript"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drakerossman%2Fhackernews-userscript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drakerossman%2Fhackernews-userscript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drakerossman%2Fhackernews-userscript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/drakerossman%2Fhackernews-userscript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/drakerossman","download_url":"https://codeload.github.com/drakerossman/hackernews-userscript/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249184683,"owners_count":21226436,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["addon","addons-mozilla-org","chrome","chrome-extension","extension","extension-chrome","firefox","firefox-addon","firefox-extension","hacker-news","hackernews","regex","regexp","rust","userscript","wasm"],"created_at":"2024-11-06T10:23:02.178Z","updated_at":"2025-10-06T06:09:03.505Z","avatar_url":"https://github.com/drakerossman.png","language":"Rust","funding_links":["https://liberapay.com/drakerossman/donate","https://patreon.com/DrakeRossman"],"categories":[],"sub_categories":[],"readme":"Available for Firefox and Chrome:\n\n[![Firefox Add-Onn](./firefox-store.webp)](https://addons.mozilla.org/en-US/firefox/addon/hackernews-userscript) [![Chrome Extension](./chrome-store.webp)](https://chromewebstore.google.com/detail/hackernews-userscript/ifhpcnanpbmjddhbmdjigdmkcliehdeo?hl=en\u0026authuser=0)\n\n# Description\nHacker News Userscript - a Browser Extension to Play Hide and Seek!\n\nThe Usescript is written in Rust with Web Assembly compile target. Based on the [Mubelotix's Wasm Extension Template](https://github.com/Mubelotix/wasm-extension-template).\n\nThe extension provides features, which allow users to filter submissions based on a text or a regular expression:\n- Filter submissions by text in title or link\n- Filter comments by text\n- Hide submissions and comments from a specific user\n- Get visual feedback on how many items were hidden by a particular filter\n- Toggle hide of all the children for a hidden parent comment\n- Show `[hidden]` placeholder in place of hidden items\n- Hide an individual submission, without auto-loading the next one. You can hide everything on the page, and it will stay blank!\n\nUses [Rust's Regex](https://github.com/rust-lang/regex) to enable expression matching. Regardless of regex usage, matches by text as a substring in an item\n\nAll the filtering data and settings are stored in the localstorage.\n\nSee the videos below for the features showcase!\n\n# Features Showcase\nhttps://github.com/drakerossman/hackernews-userscript/assets/97120319/0cbbf697-d617-49f7-a157-35f0fb3e7eba\n\nhttps://github.com/drakerossman/hackernews-userscript/assets/97120319/fc6d9e68-b897-4f78-b2e0-172dce9f8e6b\n\nhttps://github.com/drakerossman/hackernews-userscript/assets/97120319/0a18c470-61aa-43ca-bdd5-e9079af97375\n\n# Local Development and Installation\nFor the local development, a convenient `flake.nix` with devshell is provided.\n\n1. Clone the repo:\n```sh\ngit clone https://github.com/drakerossman/hackernews-userscript\n```\n\n2. If not already, install the nix package manager via Determinate Systems' nix installer:\n```sh\ncurl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install\n```\nIt will walk you through the installation process via easy-to-follow prompts. You will also be prompted for sudo.\n\n3. Navigate to the cloned repo's directory and invoke the devshell:\n```sh\ncd hackernews-userscript\nnix --extra-experimental-features 'nix-command flakes' develop\n```\n\nAfter fetching the files, all the tools required for compilation and development should be made ready-available in the new shell.\n\n4. Build the extension for chrome and firefox:\n```sh\n./build.sh\n```\n\nTo load extension in Chrome:\n- navigate to [chrome://extensions/](chrome://extensions/)\n- enable Developer Mode by clicking the toggle switch next to Developer mode.\n- use Load unpacked and select the extension directory - pkg/chrome\n\nTo load extension in Firefox:\n- navigate to [about:debugging](about:debugging)\n- click \"This Firefox\"\n- use Load Temporary Add-on, navigate to the extension directory, and select any file from the root of the directory - pkg/firefox/background-worker.js\n\n# For Contributors\nPRs are always welcome, especially if:\n- you can make the interface prettier and more erogonomic\n- you know how to optimize regex so it won't spend a full second on parsing one\n- you are eager to refactor the codebase\n\nPlease mind, that I have been developing this extension on NixOS via the provided devShell in `flake.nix`.\n\nFor whatever reason, should you also use NixOS, and should the path to the folder of this project contain spaces, the compilation via `build.sh` would fail with the following error:\n```shell\nerror: linking with `cc` failed: exit status: 1\n```\n\n# Coming Soon\n- [ ] Highlighting by topic\n- [ ] Endless scrolling\n- [ ] Thread auto-update\n- [ ] Background thread watcher\n- [ ] Codebase refactoring\n- [ ] Replies, subscriptions\n- [ ] Group items by topics\n- [ ] Chronological comments with reply links\n- [ ] Easy point-and-click to filter an item\n- [ ] Collapsible sidebar\n- [ ] Better UI\n- [ ] Favorites functionality\n- [ ] Automatically mark already-read submissions and comments\n- [ ] Export and import filters and settings\n- [ ] Infotips on hover\n\n# In the Future\n- [ ] Safari support, mobile support\n- [ ] Local-first cloud sync between devices\n- [ ] Support for other websites\n- [ ] Social collaborative filtering\n\n# Sponsor This Project\nYou can sponsor this work, as well as other projects of mine via Liberapay and Patreon:\n\n\u003ca href=\"https://liberapay.com/drakerossman/donate\"\u003e\u003cimg alt=\"Donate using Liberapay\" src=\"https://liberapay.com/assets/widgets/donate.svg\" style=\"height: 2rem;\"\u003e\u003c/a\u003e \u003ca href=\"https://patreon.com/DrakeRossman\"\u003e\u003cimg alt=\"Donate using Patreon\" src=\"./support-on-patreon.png\" style=\"height: 2rem;\"\u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrakerossman%2Fhackernews-userscript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrakerossman%2Fhackernews-userscript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrakerossman%2Fhackernews-userscript/lists"}