{"id":48728915,"url":"https://github.com/sysadmindoc/astra-deck","last_synced_at":"2026-05-10T16:18:22.216Z","repository":{"id":304416882,"uuid":"1018728818","full_name":"SysAdminDoc/Astra-Deck","owner":"SysAdminDoc","description":"Astra Deck — Premium YouTube enhancement extension for Chrome \u0026 Firefox. 150+ features: theater split, DeArrow, downloads, transcript viewer, video/channel hiding, and deep playback controls.","archived":false,"fork":false,"pushed_at":"2026-04-18T20:36:15.000Z","size":6927,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-18T20:36:34.233Z","etag":null,"topics":["ad-free","dark-theme","javascript","userscript","youtube"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SysAdminDoc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP-COMPLETED.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-12T22:52:46.000Z","updated_at":"2026-04-18T20:36:19.000Z","dependencies_parsed_at":"2025-07-13T01:09:17.824Z","dependency_job_id":"dd22146f-14e0-4f3d-96ea-581a02766bb1","html_url":"https://github.com/SysAdminDoc/Astra-Deck","commit_stats":null,"previous_names":["sysadmindoc/youtube_customization_suite","sysadmindoc/ytkit","sysadmindoc/youtube-kit","sysadmindoc/astra-deck"],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/SysAdminDoc/Astra-Deck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FAstra-Deck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FAstra-Deck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FAstra-Deck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FAstra-Deck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SysAdminDoc","download_url":"https://codeload.github.com/SysAdminDoc/Astra-Deck/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SysAdminDoc%2FAstra-Deck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32165201,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T02:19:40.750Z","status":"ssl_error","status_checked_at":"2026-04-23T02:17:55.737Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["ad-free","dark-theme","javascript","userscript","youtube"],"created_at":"2026-04-12T00:30:44.014Z","updated_at":"2026-05-10T16:18:22.209Z","avatar_url":"https://github.com/SysAdminDoc.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"logo.png\" alt=\"Astra Deck\" width=\"100\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eAstra Deck\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/version-3.20.5-ff4e45?style=flat-square\" alt=\"Version\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/license-MIT-22c55e?style=flat-square\" alt=\"License\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/manifest-V3-blue?style=flat-square\" alt=\"Manifest V3\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/YouTube-Desktop-ff0000?style=flat-square\u0026logo=youtube\u0026logoColor=white\" alt=\"YouTube\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Premium YouTube enhancement extension for Chrome and Firefox with 150+ features — theater split, DeArrow, downloads with format/quality controls, transcript viewer, video/channel hiding, and deep playback customization.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/SysAdminDoc/Astra-Deck/releases/latest\"\u003e\u003cstrong\u003eDownload Latest Release\u003c/strong\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Installation\n\n### Chrome / Edge / Brave\n\n**Option A — CRX sideload:**\n1. Download `astra-deck-chrome-v*.crx` from the [latest release](https://github.com/SysAdminDoc/Astra-Deck/releases/latest)\n2. Open `chrome://extensions/`, enable **Developer mode**\n3. Drag and drop the `.crx` file onto the page\n\n**Option B — Unpacked:**\n1. Download or clone the `extension/` folder\n2. Open `chrome://extensions/`, enable **Developer mode**\n3. Click **Load unpacked** and select the `extension/` folder\n\n### Firefox\n\n1. Download `astra-deck-firefox-v*.xpi` from the [latest release](https://github.com/SysAdminDoc/Astra-Deck/releases/latest)\n2. Open `about:addons`, click the gear icon, select **Install Add-on From File**\n3. Select the `.xpi` file\n\nRequires Firefox 128+.\n\n### Userscript (Tampermonkey / Violentmonkey)\n\nA userscript build is also available. Install [Tampermonkey](https://www.tampermonkey.net/) or [Violentmonkey](https://violentmonkey.github.io/), then **[click here to install](https://github.com/SysAdminDoc/Astra-Deck/raw/refs/heads/main/YTKit.user.js)**.\n\n\u003e Some features (SharedAudio, Return YouTube Dislike, SponsorBlock per-category, Cobalt downloads) are only available in the userscript. The extension uses a MediaDL-only download path.\n\n---\n\n## Features\n\n### Core\n\n| Feature | Default |\n|---------|---------|\n| Theater Split — fullscreen video, scroll to reveal comments side-by-side | On |\n| Video Hider — hide videos/channels from feeds with X buttons, keyword filter, regex, duration filter | On |\n| Video Context Menu — right-click player for downloads, VLC/MPV streaming, transcript, screenshot | On |\n| Settings Panel — searchable, categorized, instant-apply, export/import/reset | On |\n| Comment Search — filter watch-page comments inline | Off |\n| DeArrow — replace clickbait titles/thumbnails via crowdsourced database | Off |\n\n### Interface\n\n| Feature | Default |\n|---------|---------|\n| Logo Quick Links — hover dropdown with History, Watch Later, Playlists, Liked, Subs | On |\n| Hide Sidebar / Hide Shorts / Hide Related / Hide Description | On |\n| Subscriptions Grid / Homepage Grid Align / Videos Per Row | On |\n| Styled Filter Chips / Compact Layout / Thin Scrollbar | On |\n| Square Search Bar / Square Avatars | On |\n| Compact Unfixed Header / Force Dark Everywhere | Off |\n\n### Watch Page\n\n| Feature | Default |\n|---------|---------|\n| Watch Page Restyle — glassmorphism accents, refined metadata | On |\n| Native Comments Layout — keep YouTube comments clean without extension restyling | On |\n| Expand Video Width / Disable Ambient Mode | On |\n| Hide Merch, AI Summary, Hashtags, Pinned Comments, Info Panels | On |\n| Clean Share URLs — strip tracking params | On |\n| Auto-Expand Description / Sticky Chat / Scroll to Player | Off |\n\n### Video Player\n\n| Feature | Default |\n|---------|---------|\n| Always Best Quality — picks highest available stream, prefers 1080p Premium when offered | On |\n| Auto-Resume Position (configurable threshold) | On |\n| Custom Progress Bar Color (color picker) | Off |\n| Remaining Time Display / Time in Tab Title | Off |\n| A-B Loop / Fine Speed Control / Persistent Speed / Per-Channel Speed | Off |\n| Codec Selector (H.264/VP9/AV1) / Force Standard FPS | Off |\n| Video Screenshot / Video Zoom (Ctrl+scroll, up to 5x) | Off |\n| Cinema Ambient Glow / Nyan Cat Progress Bar | Off |\n| Speed Indicator Overlay / Custom Speed Buttons (0.5x-3x) | Off |\n| Pop-Out Player (Document PiP) / PiP Button / Fullscreen on Double-Click | Off |\n\n### Content Filtering\n\n| Feature | Default |\n|---------|---------|\n| Remove Shorts / Redirect Shorts to Regular Player | On |\n| Channels open on Videos Tab | On |\n| Hide Collaborations / News / Playlists / Playables / Members Only | On |\n| Hide Watched Videos (dim or hide) / Grayscale Thumbnails | Off |\n| Anti-Translate / Not Interested Button / Open in New Tab | Off |\n| Disable Infinite Scroll / Disable SPA Navigation | Off |\n\n### Downloads\n\n| Feature | Default |\n|---------|---------|\n| Download Options Popup — format, quality, and save directory per download | On |\n| Video Formats — MP4, MKV, WebM | MP4 |\n| Audio Formats — MP3, M4A, Opus, FLAC, WAV | MP3 |\n| Quality Selector — Best, 4K, 1440p, 1080p, 720p, 480p | Best |\n| Custom Save Directory — override per download or set globally | Downloads |\n| Context Menu — quick \"Download Video\" and \"Download Audio\" on right-click | On |\n| Auto-Download on Visit | Off |\n| Download Thumbnail (maxres) | Off |\n\n\u003e Downloads use Astra Downloader, the bundled local yt-dlp + ffmpeg companion. The extension probes `9751` plus fallback ports (`9761`, `9771`, `9781`, `9791`, `9851`) and only accepts health responses that identify as the Astra downloader service.\n\n### Comments\n\n| Feature | Default |\n|---------|---------|\n| Sort Comments Newest First | Off |\n| Creator Comment Highlight | Off |\n| Comment Handle Revealer — show original channel name next to @handle | Off |\n| Preload Comments | Off |\n\n### Live Chat\n\n| Feature | Default |\n|---------|---------|\n| Premium Live Chat styling | On |\n| Configurable element hiding (header, emoji, super chats, polls, etc.) | On |\n| Chat Keyword Filter | Off |\n| Adaptive Live Layout | Off |\n\n### Automation \u0026 Behavior\n\n| Feature | Default |\n|---------|---------|\n| Auto-Dismiss \"Still Watching?\" | Off |\n| Auto Theater Mode / Auto Subtitles / Auto-Like Subscribed | Off |\n| Auto-Pause on Tab Switch / Pause Other Tabs | Off |\n| Auto-Open Chapters / Auto-Open Transcript | Off |\n| Auto-Close Popups (cookie/survey/premium) | Off |\n| Prevent Autoplay / Disable Autoplay Next | Off |\n| Redirect Home to Subscriptions | Off |\n| Remember Volume / Persistent Speed | Off |\n\n### Power User\n\n| Feature | Default |\n|---------|---------|\n| Resume Playback (500-entry cap, 15s save interval) | Off |\n| Mini Player Bar (floating progress/play/pause on scroll-past) | Off |\n| Playback Stats Overlay (codec, resolution, dropped frames, bandwidth) | Off |\n| Watch Time Tracker (90-day retention) + Analytics Dashboard | Off |\n| Timestamp Bookmarks (inline notes, persistent storage) | Off |\n| Transcript Viewer (sidebar with clickable timestamps) + Export | Off |\n| AI Video Summary (OpenAI / Anthropic / Gemini / Ollama, BYO key) | Off |\n| Subtitle Styling (font, size, color, background, position) | Off |\n| Blue Light Filter (adjustable 10-80%) | Off |\n| Focused Mode (hide everything except video + comments) | Off |\n| Custom CSS Injection | Off |\n| CPU Tamer (background tab timer throttling) | Off |\n| Settings Profiles / Statistics Dashboard / Debug Mode | Off |\n| Fit Player to Window | Off |\n\n### Configurable Element Managers\n\nToggle individual elements on/off through the settings panel:\n\n- **Action Buttons** — Like, Dislike, Share, Ask/AI, Clip, Thanks, Save, Sponsor, More Actions\n- **Player Controls** — Next, Autoplay, Subtitles, Captions, Miniplayer, PiP, Theater, Fullscreen\n- **Watch Elements** — Join Button, Ask Button, Save Button, Ask AI Section, Podcast Section, Transcript Section\n- **Chat Elements** — Header, Menu, Popout, Reactions, Timestamps, Polls, Ticker, Leaderboard, Super Chats, Emoji, Bots\n\n---\n\n## Settings Panel\n\nClick the gear icon in the YouTube masthead or player controls, or press **Ctrl+Shift+Y**.\n\n- Searchable sidebar with categorized feature groups\n- Toggle switches with instant apply\n- Sub-feature controls for granular element hiding\n- Textarea editors for keyword filters, quick links, custom CSS\n- Export / Import / Reset\n- Conflict detection (auto-disables conflicting features with toast notification)\n\nThe extension also has a standalone **Options Page** (`chrome://extensions` \u003e Astra Deck \u003e Details \u003e Extension options) with storage stats, backup/restore, and a full settings editor modal.\n\n---\n\n## Architecture\n\n```\ndocument_start\n  early.css          Anti-FOUC CSS (scoped to feature body classes)\n  ytkit-main.js      MAIN world — canPlayType patching for codec/format filtering\n\ndocument_idle\n  core/*.js          ISOLATED world — env, storage, styles, url, page, navigation, player\n  ytkit.js           ISOLATED world — all features, DOM manipulation, settings UI\n  background.js      Service worker — fetch proxy, downloads, cookie bridge\n```\n\n- **Split-context model** — MAIN world for page API interception, ISOLATED world for extension APIs and DOM\n- **SPA-aware** — hooks `yt-navigate-finish`, `yt-page-data-updated`, `popstate`, and `video-id` attribute changes\n- **Tiered feature init** — critical features load synchronously, normal features in `requestAnimationFrame`, lazy features in `requestIdleCallback`\n- **Crash recovery** — features that crash 3 times auto-disable with console warning\n- **Conflict map** — 6 conflict pairs enforced at both toggle and init time\n- **Trusted Types compliant** — all innerHTML via `TrustedHTML` policy wrapper\n- **Safe mode** — append `?ytkit=safe` to any YouTube URL, or `ytkit.unsafe()` in console to exit\n\n---\n\n## Security\n\n- **EXT_FETCH proxy** uses domain allowlist — blocks SSRF to private networks\n- Request/response headers filtered (`Cookie`, `Set-Cookie`, etc. stripped globally; `Authorization` only forwarded to explicit BYO-key/local service origins such as OpenAI/Anthropic/Ollama/MediaDL)\n- Response body capped at 10 MB, fetch timeout capped at 60s\n- HTTP methods validated, download URLs protocol-checked (HTTP/S only)\n- Quick Links blocks `javascript:`, `data:`, and `vbscript:` URIs\n- Explicit CSP: `script-src 'self'; object-src 'self'`\n\n---\n\n## Compatibility\n\n| Browser | Method | Status |\n|---------|--------|--------|\n| Chrome / Edge / Brave | Extension (MV3) | Fully supported |\n| Firefox 128+ | Extension (MV3) | Fully supported |\n| Chrome / Firefox | Tampermonkey / Violentmonkey | Supported (userscript) |\n| Safari | Userscripts app | Limited |\n\n**Not supported:** Mobile browsers, YouTube Music, YouTube Studio, embedded players.\n\n---\n\n## Building\n\n```bash\nnpm ci\nnpm test\nnpm run check\nnpm run build                             # Build at current version\nnpm run build:userscript                  # Include userscript artifact\nnode build-extension.js --bump patch      # Bump and build\nnode build-extension.js --bump minor --with-userscript\n```\n\nOutputs in `build/`:\n- `astra-deck-chrome-v*.zip` + `.crx` (CRX3 signed with `ytkit.pem`)\n- `astra-deck-firefox-v*.zip` + `.xpi`\n- `ytkit-v*.user.js` (with `--with-userscript`)\n\nRequires Node 22+ (the `crx3` packager dependency needs it).\n\n---\n\n## Related\n\n| Project | Description |\n|---------|-------------|\n| [MediaDL](https://github.com/SysAdminDoc/MediaDL) | Local download server (yt-dlp + ffmpeg) with one-click installer |\n| [YoutubeAdblock](https://github.com/SysAdminDoc/YoutubeAdblock) | Standalone aggressive ad blocker with deeper proxy hooks |\n| [Chapterizer](https://github.com/SysAdminDoc/Chapterizer) | Offline AI chapter generation via NLP |\n\n---\n\n## License\n\n[MIT](LICENSE) — Matthew Parker\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysadmindoc%2Fastra-deck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsysadmindoc%2Fastra-deck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsysadmindoc%2Fastra-deck/lists"}