FAQ
Frequently asked, rarely serious.
Is this safe? What permissions does it need?
GAS runs with @grant none — literally zero special permissions. It only works on
github.com and gist.github.com (@match https://github.com/*
and @match https://gist.github.com/*) and makes no network requests of
its own: the script itself performs no API calls, while the emoji images in your comments are
loaded by the browser from raw.githubusercontent.com when picking and rendering.
There's also no telemetry. The entire source is one readable file you can audit:
gas.userscript.js.
Where does the button show up?
In the formatting toolbar of GitHub's markdown editors: issue & PR descriptions, comments,
PR reviews, replies, the web file editor, and gist comments — anywhere github.com or
gist.github.com renders a [role="toolbar"] with formatting actions.
Can I use my own memes?
Yes. Edit the DEFAULT_GAS array in the script — each entry is just
{ name, url }. The repo even keeps spare images and GIFs under
res/img/. GIFs animate. Guide:
Adding custom emoji.
Why 20px?
Because the inserted tag is <img ... width="20px"> — big enough to read the
joke, small enough to stay inline with text. Want bigger? Edit
createImageHTML() — documented in the
function reference.
Does it work on gist.github.com?
Yes. The @match pattern covers both github.com and
gist.github.com, so the button also shows up in the formatting toolbar of gist
comments. See the
metadata reference for details.
The button disappeared after I navigated. Broken?
Probably not: open the console and type GAS.scan(). GitHub's Turbo navigation
sometimes swaps toolbars faster than the MutationObserver rescan fires — a manual rescan (or a
reload) fixes it. Persistent cases are markup changes: please
file an issue with the
console output. Full steps: troubleshooting.
Does it slow GitHub down?
No. Work happens in short bursts: the observer only schedules a scan when nodes are added, and the 100 ms debounce collapses heavy DOM churn into one pass. Idle cost is one MutationObserver and a couple of passive listeners.
Why is it called Giggles&Shit?
Because "custom emoji userscript" doesn't make you giggle. And shit.
How do I contribute?
Issues and PRs welcome — see the
contributing guide. Meme donations go to
res/img/.