{"id":37313288,"url":"https://github.com/kpulka247/dark-connect","last_synced_at":"2026-04-13T23:06:47.037Z","repository":{"id":271454446,"uuid":"913446393","full_name":"kpulka247/dark-connect","owner":"kpulka247","description":"Simple dark mode browser extension for Garmin Connect website. 🌙🏃‍♂️✨","archived":false,"fork":false,"pushed_at":"2026-03-21T01:40:14.000Z","size":3819,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-21T09:44:09.176Z","etag":null,"topics":["chrome-extension","dark-mode","dark-theme","firefox-addon","garmin","garmin-connect","web-extension"],"latest_commit_sha":null,"homepage":"","language":"CSS","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/kpulka247.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":null,"dco":null,"cla":null}},"created_at":"2025-01-07T17:42:48.000Z","updated_at":"2026-03-21T01:30:55.000Z","dependencies_parsed_at":"2025-01-29T12:25:14.050Z","dependency_job_id":"a4964b78-e6e9-4c8d-a002-6549c9b2904c","html_url":"https://github.com/kpulka247/dark-connect","commit_stats":null,"previous_names":["kpulka247/dark-connect"],"tags_count":54,"template":false,"template_full_name":null,"purl":"pkg:github/kpulka247/dark-connect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpulka247%2Fdark-connect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpulka247%2Fdark-connect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpulka247%2Fdark-connect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpulka247%2Fdark-connect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kpulka247","download_url":"https://codeload.github.com/kpulka247/dark-connect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpulka247%2Fdark-connect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31774555,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T20:17:16.280Z","status":"ssl_error","status_checked_at":"2026-04-13T20:17:08.216Z","response_time":93,"last_error":"SSL_read: 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":["chrome-extension","dark-mode","dark-theme","firefox-addon","garmin","garmin-connect","web-extension"],"created_at":"2026-01-16T03:04:16.777Z","updated_at":"2026-04-13T23:06:47.032Z","avatar_url":"https://github.com/kpulka247.png","language":"CSS","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n![banner](static/images/banner.png)\n\n\u003ca href=\"https://github.com/kpulka247/dark-connect/actions\" title=\"GitHub Actions Workflow Status\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/kpulka247/dark-connect/release.yml\"\u003e\u003c/a\u003e\n\u003ca title=\"Chrome Web Store Size\"\u003e\u003cimg src=\"https://img.shields.io/chrome-web-store/size/nadhhgppikppmjacnkebagbgcibnfnob\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kpulka247/dark-connect/releases\" title=\"GitHub Release\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/kpulka247/dark-connect?logo=github\u0026logoColor=white\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/kpulka247/dark-connect/blob/main/LICENSE\" title=\"GitHub License\"\u003e\u003cimg src=\"https://img.shields.io/github/license/kpulka247/dark-connect?color=%23252525\"\u003e\u003c/a\u003e\n\n\u003ca href=\"https://chromewebstore.google.com/detail/dark-connect/nadhhgppikppmjacnkebagbgcibnfnob\" title=\"Chrome Web Store Users\"\u003e\u003cimg src=\"https://img.shields.io/chrome-web-store/users/nadhhgppikppmjacnkebagbgcibnfnob?logo=Google%20Chrome\u0026logoColor=white\u0026color=goldenrod\"\u003e\u003c/a\u003e\n\u003ca href=\"https://chromewebstore.google.com/detail/dark-connect/nadhhgppikppmjacnkebagbgcibnfnob\" title=\"Chrome Web Store Rating\"\u003e\u003cimg src=\"https://img.shields.io/chrome-web-store/rating/nadhhgppikppmjacnkebagbgcibnfnob\"\u003e\u003c/a\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003ca href=\"https://addons.mozilla.org/pl/firefox/addon/dark-connect/\" title=\"Mozilla Add-on Users\"\u003e\u003cimg src=\"https://img.shields.io/amo/users/dark-connect?logo=Firefox\u0026logoColor=white\u0026color=goldenrod\"\u003e\u003c/a\u003e\n\u003ca href=\"https://addons.mozilla.org/pl/firefox/addon/dark-connect/\" title=\"Mozilla Add-on Rating\"\u003e\u003cimg src=\"https://img.shields.io/amo/rating/dark-connect\"\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\n## Overview\n\nThis is a simple browser extension designed to turn the Garmin Connect website into dark mode. Frustrated by the lack of a dark mode feature on Garmin Connect, I created this extension to enhance the browsing experience for users who prefer a darker interface, especially during nighttime use. The extension is lightweight, easy to install, and only affects Garmin Connect domains, leaving all other websites untouched.\n\n## Features\n\n- 🌙 **Dark Mode for Garmin Connect** — Applies a clean, modern dark theme.\n- 🎨 **Preserves brand identity** — Original Garmin colors and charts remain intact for visual consistency.\n- 🚫 **Scope-limited** — Affects only `connect.garmin.com`, `livetrack.garmin.com`, and `live.garmin.com`.\n- ⚡ **Automatic updates** — New versions are published directly via GitHub Actions to Chrome Web Store and Firefox Add-ons.\n- 🛠️ **Modular and maintainable styles** — Powered by organized CSS modules with support for variables.\n\n## Screenshots\n\nHere are some screenshots of the extension in action:\n\n![screenshot1](static/images/screenshot1.png)\n\n![screenshot2](static/images/screenshot2.png)\n\n![screenshot3](static/images/screenshot3.png)\n\n![screenshot4](static/images/screenshot4.png)\n\n## Installation\n\n\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://chromewebstore.google.com/detail/dark-connect/nadhhgppikppmjacnkebagbgcibnfnob\" title=\"Chrome Web Store Version\"\u003e\u003cimg src=\"https://img.shields.io/chrome-web-store/v/nadhhgppikppmjacnkebagbgcibnfnob?style=for-the-badge\u0026logo=google%20chrome\u0026logoColor=white\u0026labelColor=%23252525\"\u003e\u003c/a\u003e\n\u003ca href=\"https://addons.mozilla.org/pl/firefox/addon/dark-connect/\" title=\"Mozilla Add-on Version\"\u003e\u003cimg src=\"https://img.shields.io/amo/v/dark-connect?style=for-the-badge\u0026logo=firefox\u0026logoColor=white\u0026labelColor=%23252525\u0026color=red\"\u003e\u003c/a\u003e\n\n\u003c/div\u003e\n\nTo install the extension, click on your browser store and then add the extension to your browser. For 🦁 Brave, 🔴 Opera or 🌀 Microsoft Edge select Chrome Web Store.\n\n## Usage\n\nOnce installed, the extension will immediately apply dark mode to any visit to Garmin Connect website. You don’t need to enable or disable it manually — it works automatically whenever you visit the site. If you have suggestions for improvements or have found any bugs, feel free to report them through the issues form.\n\n## Development \u0026 Build\n\nThis project uses Node.js for its build system and leverages Conventional Commits with `semantic-release` for automated versioning, packaging and publishing.\n\n### 🚀 Getting started\n\nMake sure you have:\n\n- [Node.js](https://nodejs.org) (LTS version recommended) installed on your system\n- [pnpm](https://pnpm.io/) (can be installed via `npm install -g pnpm`)\n- [Git](https://git-scm.com/) for version control\n\nThen install dependencies:\n\n```bash\npnpm install\n```\n\n### 🔧 How to build the extension\n\nThe extension is built using Webpack, managed via pnpm scripts:\n\n```bash\n# Build both Chrome and Firefox versions for production (minified, no source maps, with ZIPs)\npnpm build\n\n# Build both Chrome and Firefox versions for development (unminified, with source maps, no ZIPs)\npnpm dev\n```\n\n- Generates browser-specific unpacked builds in the `dist/darkconnect-chrome/` and `dist/darkconnect-firefox/` directories.\n- Processes css:\n  - Resolves `@import` statements (via `css-loader`).\n  - Minifies CSS in production mode (via `css-minimizer-webpack-plugin`).\n  - Extracts CSS into a single `styles/main.css` file for each browser build.\n- Copies necessary files like `manifest.json` (browser-specific), `background.js`, and icons.\n- In production mode (`pnpm build`), packs the builds into `.zip` files located in the `dist/` directory (e.g., `dist/darkconnect-2.1.0-chrome.zip`, `dist/darkconnect-2.1.0-firefox.zip`).\n\n### 🧪 Local testing (e.g. in Chrome)\n\nTo test the extension locally in a browser:\n\n1. Run `pnpm dev` - this will build the extension and watch for file changes\n2. Open Chrome and navigate to `chrome://extensions`\n3. Enable \"Developer mode\" (usually a toggle in the top-right corner)\n4. Click \"Load unpacked\"\n5. Select the `dist/darkconnect-chrome/` folder generated in step 1\n6. The extension will now appear in your list and function on the relevant Garmin pages\n\n### 🏷️ Versioning and Releases (Automated)\n\nThis project uses [semantic-release](https://github.com/semantic-release/semantic-release) and [Conventional Commits](https://www.conventionalcommits.org/) for automated version management and release publishing.\n\n- **How it works:** When commits following the Conventional Commits specification (e.g., `feat: ...`, `fix: ...`, `perf: ...`, commits with `BREAKING CHANGE: ...`) are merged into the `main` branch, a GitHub Actions workflow automatically:\n  1. Analyzes the commits since the last release\n  2. Determines the next semantic version number (patch, minor, or major)\n  3. Updates the `version` in `package.json` and `manifest.*.json` files\n  4. Generates/updates the `CHANGELOG.md` file\n  5. Commits these updated files\n  6. Creates a Git tag for the new version (e.g., `v2.1.0`)\n  7. Creates a GitHub Release with changelog notes and attaches .zip assets\n  8. Publishes the new Chrome build directly to the Chrome Web Store\n  9. Publishes the new Firefox build directly to Mozilla Add-ons (AMO) via automated signing/upload\n\n- **Developers generally do not need to manually bump versions** using `pnpm version` for standard releases. The automation handles it based on commit messages.\n\n## Development Notes\n\n### 🗂️ Manifests\n\n- `manifest.chrome.json` / `manifest.firefox.json`: These are the source manifest files located in the root of the project.\n  - They are updated with the correct version number by `semantic-release` during the release process.\n  - The Webpack build process copies the appropriate source manifest (e.g., `manifest.chrome.json`) to `dist/darkconnect-chrome/manifest.json` for each build.\n  - These manifests should reference the single, compiled `styles/main.css` and `background.js`.\n\n### 🧰 Tools \u0026 Scripts\n\n- `webpack.config.js`: Configures the Webpack build process, handling CSS compilation, minification, file copying, and ZIP packaging.\n- `scripts/update-manifest-version.js`: Replaces placeholders in manifests with the current version.\n- `.releaserc.json`: Configures `semantic-release` pipeline.\n- `release.yml`: GitHub Actions workflow to run the release pipeline automatically.\n\n## Contributing\n\n\u003e **Contributions are highly welcome!** 💖 Whether you want to fix a bug, suggest a new feature, or optimize the existing code, your help is appreciated.\n\nIf you have ideas on how to make the code faster, cleaner, or more reliable, please feel free to open a Pull Request. 🚀\n\n👉 To get started, please read our **[CONTRIBUTING.md](./CONTRIBUTING.md)** which explains how to set up the project locally, the target branch (`dev`), and the required Pull Request naming conventions.\n\n## Changelog\n\nChanges for each release are automatically documented in the [CHANGELOG.md](./CHANGELOG.md) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkpulka247%2Fdark-connect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkpulka247%2Fdark-connect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkpulka247%2Fdark-connect/lists"}