{"id":50782002,"url":"https://github.com/chatenhancer/youtube-chat-qol","last_synced_at":"2026-06-12T04:02:46.170Z","repository":{"id":358360425,"uuid":"1241011791","full_name":"chatenhancer/youtube-chat-qol","owner":"chatenhancer","description":"Suite of enhancements that make YouTube live chat easier to follow and participate in.","archived":false,"fork":false,"pushed_at":"2026-06-06T20:39:50.000Z","size":168687,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-06T22:10:14.226Z","etag":null,"topics":["chrome","extension","firefox","live-chat","translation","youtube"],"latest_commit_sha":null,"homepage":"https://www.chatenhancer.com","language":"TypeScript","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/chatenhancer.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":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-16T21:14:29.000Z","updated_at":"2026-06-06T20:39:54.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chatenhancer/youtube-chat-qol","commit_stats":null,"previous_names":["chat-enhancer-yt/youtube-chat-qol","chatenhancer/youtube-chat-qol"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/chatenhancer/youtube-chat-qol","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chatenhancer%2Fyoutube-chat-qol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chatenhancer%2Fyoutube-chat-qol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chatenhancer%2Fyoutube-chat-qol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chatenhancer%2Fyoutube-chat-qol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chatenhancer","download_url":"https://codeload.github.com/chatenhancer/youtube-chat-qol/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chatenhancer%2Fyoutube-chat-qol/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34228098,"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-06-12T02:00:06.859Z","response_time":109,"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":["chrome","extension","firefox","live-chat","translation","youtube"],"created_at":"2026-06-12T04:02:45.398Z","updated_at":"2026-06-12T04:02:46.162Z","avatar_url":"https://github.com/chatenhancer.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp\u003e\n  \u003cimg src=\"src/assets/icons/icon-128.png\" alt=\"Chat Enhancer for YouTube icon\" width=\"96\" height=\"96\"\u003e\n\u003c/p\u003e\n\n# Chat Enhancer for YouTube\n\n\u003cp\u003e\n  \u003ca href=\"https://www.chatenhancer.com/chrome\"\u003e\u003cimg alt=\"chrome\" src=\"https://img.shields.io/chrome-web-store/v/pkhaaipeppfpakofgpdpcpkflangpghf?label=chrome\u0026color=4285f4\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.chatenhancer.com/firefox\"\u003e\u003cimg alt=\"firefox\" src=\"https://img.shields.io/amo/v/chat-enhancer-for-youtube?label=firefox\u0026color=ff7139\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"release\" src=\"https://img.shields.io/github/v/release/chat-enhancer-yt/youtube-chat-qol?label=release\u0026color=fd0032\"\u003e\n  \u003ca href=\"https://github.com/chat-enhancer-yt/youtube-chat-qol/actions/workflows/ci.yml\"\u003e\u003cimg alt=\"CI\" src=\"https://img.shields.io/github/actions/workflow/status/chat-enhancer-yt/youtube-chat-qol/ci.yml?label=ci\"\u003e\u003c/a\u003e\n  \u003cimg alt=\"coverage\" src=\"https://img.shields.io/endpoint?url=https%3A%2F%2Fwww.chatenhancer.com%2Fbadges%2Funit-coverage.json\"\u003e\n  \u003cimg alt=\"manifest v3\" src=\"https://img.shields.io/badge/manifest-v3-6b7280\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg alt=\"license\" src=\"https://img.shields.io/badge/license-GPL--3.0%2B-2da44e\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nSuite of enhancements that make YouTube live chat easier to follow and participate in.\n\nNot affiliated with YouTube or Google.\n\n[Website](https://www.chatenhancer.com) · [Chrome Web Store](https://www.chatenhancer.com/chrome) · [Firefox Add-ons](https://www.chatenhancer.com/firefox)\n\n## Features\n\n### \u003cimg src=\"assets/readme/icons/translation.svg\" alt=\"\" width=\"20\" height=\"20\" align=\"absmiddle\"\u003e \u0026nbsp;Translation\n\n- Translate live chat messages, with translation off by default.\n- Choose whether translations replace the original message or appear below it.\n- Translate the message you're typing before sending it, while keeping mentions and emojis intact.\n\n### \u003cimg src=\"assets/readme/icons/reply-context.svg\" alt=\"\" width=\"20\" height=\"20\" align=\"absmiddle\"\u003e \u0026nbsp;Reply and context\n\n- Mention or quote messages from YouTube's existing message menu.\n- Click an author name to mention them.\n- Alt/Option-click an author name to quote their message.\n- Use Focus mode to keep one conversation visible while you reply.\n- Recover unsent drafts after refreshing the same stream.\n- Bookmark users with a colored avatar ring.\n- Click an avatar to see that user's recent messages and open their channel.\n\n### \u003cimg src=\"assets/readme/icons/inbox.svg\" alt=\"\" width=\"20\" height=\"20\" align=\"absmiddle\"\u003e \u0026nbsp;Inbox\n\n- Keep a local inbox for messages that mention your handle or match watched keywords/phrases.\n- Highlight mentions and watched keywords in chat and in the inbox.\n- Jump back to saved messages while they are still visible in chat.\n- Optionally play a subtle sound and show tab alerts for new inbox messages.\n\n### \u003cimg src=\"assets/readme/icons/emoji-commands.svg\" alt=\"\" width=\"20\" height=\"20\" align=\"absmiddle\"\u003e \u0026nbsp;Emoji and commands\n\n- Reuse your most-used emojis from a local row in the emoji picker.\n- Use Tab-expanded chat commands and autocomplete for mentions, quotes, time helpers, translations, inbox watches, and settings.\n\n### \u003cimg src=\"assets/readme/icons/popup-status.svg\" alt=\"\" width=\"20\" height=\"20\" align=\"absmiddle\"\u003e \u0026nbsp;Popup and status\n\n- See whether the extension is active in this tab or other open live chat tabs.\n- Manage extension settings and clear local extension data from the popup.\n- Opt in to Playground experiments. The current beta can connect users in the same stream for chess games.\n\n### \u003cimg src=\"assets/readme/icons/privacy.svg\" alt=\"\" width=\"20\" height=\"20\" align=\"absmiddle\"\u003e \u0026nbsp;Privacy\n\n- The extension does not replace YouTube chat.\n- The extension does not run analytics.\n- Except for opt-in Playground games, the extension does not send data to an extension-owned server.\n- Bookmarked users are stored locally so avatar rings can appear across streams.\n- When a translation feature is enabled, incoming message text or draft text you choose to translate is sent to Google Translate so it can be translated.\n\n## Screenshots\n\n![Chat Enhancer for YouTube screenshots](assets/readme/showcase.png)\n\n## Development\n\nInstall dependencies:\n\n```sh\nnpm install\n```\n\nBuild the extension:\n\n```sh\nnpm run build\n```\n\nLoad it in Chrome, Edge, Brave, Vivaldi, Arc, or another Chromium browser:\n\n1. Open `chrome://extensions`.\n2. Enable Developer mode.\n3. Click `Load unpacked`.\n4. Select `dist/extension-chrome`.\n\nAfter source changes, run `npm run build` again and reload the unpacked extension.\n\nFor Firefox 140+ development, build the Firefox package and load `dist/extension-firefox` from `about:debugging#/runtime/this-firefox`:\n\n```sh\nnpm run build:firefox\n```\n\n## Scripts\n\n- `npm run typecheck` checks TypeScript.\n- `npm run lint` runs ESLint.\n- `npm run check` runs typecheck and lint.\n- `npm run test` runs the Vitest unit tests.\n- `npm run verify` runs `check`, unit tests, the full extension build, localized docs build, mock browser tests, and logged-out live browser smoke tests.\n- `npm run docs:build` regenerates the ignored `dist/docs` Pages output when docs change.\n- `npm run docs:screenshots` regenerates README/site showcase images and localized store screenshots when needed.\n- `npm run build` writes Chrome, Edge, and Firefox unpacked extension folders.\n- `npm run build:chrome`, `npm run build:edge`, and `npm run build:firefox` write one browser's unpacked extension folder.\n- `npm run zip` runs `verify`, then writes Chrome, Edge, Firefox, and tracked source release archives to `dist/release/`.\n\n## Release\n\n1. Update `version` in `package.json`.\n2. Run `npm run verify`.\n3. Commit the version bump and create a tag such as `v0.7.6`.\n4. Push the commit and tag.\n\nThe release workflow builds Chrome, Edge, Firefox, and source archives, then attaches them to a GitHub Release.\nStore submission only runs for exact `vX.Y.Z` tags that match the `package.json` version.\n\nStore submission is automatic on tags when maintainer store credentials are configured. If store credentials are missing, the workflow still produces release zips and skips store submission.\n\n## License\n\nGPL-3.0-or-later. See [LICENSE](LICENSE).\n\nThird-party icon and font notices are listed in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).\n\nThe `Chat Enhancer for YouTube` name, logo, and store listing assets are not licensed for use in a way that suggests an official release or endorsement.\n\n## Project layout\n\n- `src/content/` wires features into YouTube live chat.\n- `src/features/` contains chat actions, drafts, commands, translation, emoji, focus mode, profile cards, inbox, and sound features.\n- `src/youtube/` contains YouTube DOM adapters and selectors.\n- `src/shared/` contains shared options, language data, state, and helpers.\n- `src/background/` contains the translation bridge, toolbar status, active-chat keepalive, and Playground transport service worker modules.\n- `src/popup/` contains the extension action popup.\n- `cloudflare/` contains the language redirect and opt-in Playground backend workers.\n- `scripts/` contains build, icon, and release packaging scripts.\n\nSee [PRIVACY.md](PRIVACY.md) for the current data-use disclosure.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchatenhancer%2Fyoutube-chat-qol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchatenhancer%2Fyoutube-chat-qol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchatenhancer%2Fyoutube-chat-qol/lists"}