{"id":50446169,"url":"https://github.com/jakubn11/kick-fullscreen-chat","last_synced_at":"2026-05-31T21:32:37.937Z","repository":{"id":357934339,"uuid":"1239188809","full_name":"jakubn11/kick-fullscreen-chat","owner":"jakubn11","description":"Twitch-style side-by-side fullscreen + chat for Kick.com — single-file userscript, native styling, zero network.","archived":false,"fork":false,"pushed_at":"2026-05-28T19:26:06.000Z","size":516,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T19:26:57.377Z","etag":null,"topics":["browser-extension","chat","dom","fullscreen","gpl-v3","javascript","kick","kick-com","kickcom","livestream","no-dependencies","safari-userscripts","single-file","streaming","tampermonkey","userscript","violentmonkey"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jakubn11.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-14T21:11:50.000Z","updated_at":"2026-05-28T19:26:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jakubn11/kick-fullscreen-chat","commit_stats":null,"previous_names":["jakubn11/kick-fullscreen-chat"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/jakubn11/kick-fullscreen-chat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-fullscreen-chat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-fullscreen-chat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-fullscreen-chat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-fullscreen-chat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jakubn11","download_url":"https://codeload.github.com/jakubn11/kick-fullscreen-chat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jakubn11%2Fkick-fullscreen-chat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33750474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["browser-extension","chat","dom","fullscreen","gpl-v3","javascript","kick","kick-com","kickcom","livestream","no-dependencies","safari-userscripts","single-file","streaming","tampermonkey","userscript","violentmonkey"],"created_at":"2026-05-31T21:32:36.985Z","updated_at":"2026-05-31T21:32:37.932Z","avatar_url":"https://github.com/jakubn11.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"icon.svg\" width=\"108\" height=\"108\" alt=\"Kick Fullscreen Chat\"\u003e\n\n\u003ch1\u003eKick Fullscreen Chat\u003c/h1\u003e\n\n\u003cp\u003e\n  Twitch-style side-by-side fullscreen-with-chat for Kick.com.\u003cbr\u003e\n  Clean overlay button · Auto teardown · Zero network requests.\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003cimg alt=\"Userscript\" src=\"https://img.shields.io/badge/Userscript-Any%20Manager-22c55e?style=flat-square\u0026labelColor=101013\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"License GPLv3\" src=\"https://img.shields.io/badge/license-GPLv3-55d2ce?style=flat-square\u0026labelColor=555555\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"Tested on Safari\" src=\"https://img.shields.io/badge/Tested%20on-Safari-22c55e?style=flat-square\u0026logo=safari\u0026logoColor=fff\u0026labelColor=101013\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"No network\" src=\"https://img.shields.io/badge/Network-None-22c55e?style=flat-square\u0026labelColor=101013\"\u003e\n  \u0026nbsp;\n  \u003cimg alt=\"Single file\" src=\"https://img.shields.io/badge/Footprint-Single%20file-22c55e?style=flat-square\u0026labelColor=101013\"\u003e\n\u003c/p\u003e\n\n\u003c/div\u003e\n\n## Features\n\n- Adds a **Chat** toggle button in the top-right of the fullscreen Kick player\n- Twitch-style streamer info overlay (avatar / name / title / game / viewer count) in the top-left of the fullscreen player, fading in and out with Kick's own controls/timeline; overlay text is selectable and profile/category links remain clickable\n- Click the button to shrink the video and dock the chat panel on the right (340px wide by default)\n- **Resizable chat:** drag the divider between the video and chat to set the panel width\n- **Dock left or right:** a setting moves the chat panel (and divider) to either edge; the video, controls, and stream-info overlay shift to clear it\n- **Overlay mode:** a layout toggle switches between side-by-side (video shrinks) and chat floating semi-transparently over the full-width video, Twitch-style\n- **Show/hide stream info:** a toggle hides or shows the streamer-info overlay for a cleaner picture\n- **Fullscreen settings:** a gear button opens controls for overlay opacity, stream-info backdrop opacity, width presets, hide delay, chat dock side, userscript control auto-hide, overlay auto-hide, default overlay opening, auto-opening chat on fullscreen entry, and resetting to defaults\n- **Settings persist:** preferences are saved to `localStorage` and restored on the next page load (no network, no `GM_*` grants)\n- A clean dark glass control set with green icon accents, matching the sibling [kick-emotes](https://github.com/jakubn11/kick-emotes) userscript's design language\n- Hides itself when chat is open — Kick's native **Hide chat** button inside the chat panel takes over\n- Auto-fades after a configurable delay of mouse inactivity (2–8s, default 4s), kept in sync with Kick's own controls/timeline; reappears instantly on mouse movement\n- Auto-teardown: clicking Kick's native **Hide chat** restores fullscreen video and re-shows the **Chat** button so chat can be re-opened\n- Disables the **Chat** button while the player is reloading (quality change, seek, \"go to live\") with a short grace period after the video reports ready, so a click can never land mid-reload and trigger Kick's 404 page\n- Leaves Kick's player nodes parented to the fullscreen element and shrinks them with a CSS marker, so background React refreshes (e.g. while the stream plays on a background macOS Space) can reconcile without 404-ing the page\n- Forces a containing block on the marked player layers so Kick's `position: fixed` video and timeline / controls stay inside the shrunken video area instead of overlapping the chat\n- Restores the original DOM on exit — chat returns to its original location, no leftover wrappers\n- No network requests and no `GM_*` permissions — the only persistence is a single `localStorage` key (`kfc-settings`) holding your UI preferences\n\n## Requirements\n\nThe script works with any userscript manager (Tampermonkey, Violentmonkey, Greasemonkey, ScriptCat or other) but is developed and tested on **Safari + Userscripts** only. Other browsers and managers may work but are untested.\n\n**Recommended setup:**\n- macOS with Safari\n- [Userscripts](https://apps.apple.com/app/userscripts/id1463298887) extension (free, by Justin Wasack)\n\n## Installation\n\nSee [INSTALL.md](INSTALL.md) for step-by-step instructions.\n\n**Safari (recommended):**\n1. Install the **[Userscripts](https://apps.apple.com/app/userscripts/id1463298887)** extension from the Mac App Store\n2. Configure a scripts folder in the extension settings\n3. Copy `kick-fullscreen-chat.user.js` into that folder\n\n**Other browsers (untested):**\n1. Install [Tampermonkey](https://www.tampermonkey.net), [Violentmonkey](https://violentmonkey.github.io), [Greasemonkey](https://www.greasespot.net), [ScriptCat](https://scriptcat.org) or other\n2. Open `kick-fullscreen-chat.user.js` and paste it into a new script, or drag the file into the extension dashboard\n\n**Updates:** The script carries `@updateURL` / `@downloadURL` pointing at this repo, so managers that support remote updates (Tampermonkey, Violentmonkey, ScriptCat, …) pick up new versions automatically — no reinstall needed. Safari's Userscripts extension runs from a local folder and does **not** auto-update; re-copy the latest `kick-fullscreen-chat.user.js` to update there.\n\nSee [INSTALL.md](INSTALL.md) for full per-manager steps.\n\n## Usage\n\nOpen any Kick channel and enter fullscreen with the player's fullscreen icon. The **Chat** button appears in the top-right corner.\n\n| Action | Result |\n|--------|--------|\n| Click **Chat** | Video shrinks to the left, chat panel docks on the right (340px) |\n| Drag the divider between video and chat | Resizes the chat panel (260–640px, capped at 60% of the screen); width is saved and restored on the next visit |\n| Double-click the divider | Resets chat width to 340px |\n| Click the layout-mode toggle (top-right, while chat is open) | Switches between side-by-side and overlay (chat floats over the video) |\n| Click the info toggle (top-right) | Hides or shows the streamer-info overlay |\n| Click the settings gear (top-right) | Opens fullscreen settings for overlay opacity, stream-info backdrop opacity, width presets, hide delay, chat dock side (left/right), userscript control auto-hide, overlay auto-hide, default overlay opening, auto-open chat on fullscreen, and resetting to defaults |\n| Click Kick's native **Hide chat** inside the chat panel | Split layout tears down, fullscreen video restored, **Chat** button reappears |\n| Change stream quality / seek / \"Go to live\" | Side chat tears down automatically; **Chat** button is disabled until the player finishes reloading |\n| Exit fullscreen | DOM restored to its original state — chat returns to its original location |\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---------|-----|\n| Button never appears in fullscreen | Open DevTools → Console and look for `[KickFullscreenChat]` log lines. If absent, check that the userscript is enabled for `kick.com` and that `@match https://kick.com/*` is present in the metadata block. |\n| Button appears, clicking it does nothing | The chat selector did not match Kick's current DOM. You will see `chat container not found` in the console. Inspect the chat panel in DevTools and add its selector to `CHAT_SELECTORS` near the top of the userscript. |\n| Re-opening chat shows an empty dark panel | Update to **0.5.0+** — the script now sets `data-chat=\"true\"` before moving the chat, which prevents Kick's CSS from hiding the moved chat. |\n| Timeline shrinks but video still sits behind chat | Update to **0.9.6+** — the script now constrains both direct video layers and Kick's inner video wrapper chain. |\n| Stream becomes blurred/loading and controls cannot be clicked after sitting in the background | Update to **0.9.7+** — the script avoids marking Kick's transient loading overlays and lets clicks pass through the video surface to the controls. |\n| Emote-name tooltips don't appear when hovering chat emotes in fullscreen | Update to **0.9.8+** — the script now reparents Kick's body-portaled popovers into the fullscreen element while side chat is active, so the Fullscreen API can display them. |\n| Double-clicking the video to exit fullscreen does nothing while side chat is open | Update to **0.9.9+** — the script attaches its own dblclick → exit-fullscreen handler on the fullscreen element while side chat is active, since the side-chat layout sets `pointer-events: none` on the video and blocks Kick's native double-click handler. |\n| Streamer info overlay doesn't appear in fullscreen | The streamer-card selector did not match Kick's current DOM. Inspect the channel-info card in DevTools and add its selector to `STREAMER_INFO_SELECTORS` near the top of the userscript. |\n| Video doesn't fill the left side / timeline overlaps chat | Update to **0.6.0+** — the video slot now creates a containing block for Kick's `position: fixed` player layers. |\n| Changing stream quality navigates Kick to a 404 page | Update to **0.7.0+** — the script tears the side-chat layout down at the first sign of a player reload to avoid React reconciliation conflicts. |\n| Clicking **Chat** right after a quality change / seek still 404s | Update to **0.8.3+** — the **Chat** button is now disabled while the player is reloading and stays disabled for a short grace period after the video reports ready. |\n| Kick 404s after the side chat sits open in fullscreen for a while (background tab / virtual screen) | Update to **0.9.2+** — the script no longer wraps Kick's player nodes in its own slot, so background React refreshes can reconcile without throwing into Kick's error boundary. |\n| Layout breaks after a Kick update | Kick may have changed the chat container class or the `data-chat` attribute. Open an issue with the relevant class names from the browser inspector. |\n\n## License\n\nLicensed under the GNU General Public License v3.0. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubn11%2Fkick-fullscreen-chat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjakubn11%2Fkick-fullscreen-chat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjakubn11%2Fkick-fullscreen-chat/lists"}