chore: 调整 Dark Reader 依赖跟踪并修复验证脚本
This commit is contained in:
@@ -1,7 +0,0 @@
|
||||
* text=auto
|
||||
|
||||
*.* text eol=lf
|
||||
src/config/*.json text eol=crlf
|
||||
|
||||
*.png binary
|
||||
*.ttf binary
|
||||
-1
@@ -1 +0,0 @@
|
||||
open_collective: darkreader
|
||||
@@ -1,76 +0,0 @@
|
||||
name: Broken Website Report
|
||||
description: Create a report about a website issue you experienced while using Dark Reader.
|
||||
title: "[Broken Website] Replace with title"
|
||||
labels: ["Broken Website"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Place a brief description in the title of this report.
|
||||
|
||||
Thank you for taking the time to report this website issue.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Prerequisites
|
||||
options:
|
||||
- label: I [searched for any existing report](https://github.com/darkreader/darkreader/issues?q=is%3Aissue) about this website issue to avoid opening a duplicate.
|
||||
required: true
|
||||
- label: I can reproduce this website issue in a new, unmodified web browser profile with Dark Reader installed as the only extension.
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Website Issue Description
|
||||
description: Provide a clear and concise description of this website issue.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Website Address
|
||||
description: Provide the website address.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps To Reproduce
|
||||
description: Provide steps to reproduce this website issue.
|
||||
placeholder: |
|
||||
1. [First Step]
|
||||
2. [Second Step]
|
||||
3. [and so on...]
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: Add screenshots to help explain this website issue, if applicable.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating System
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Web Browser name and version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Dark Reader version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: Provide any additional information about this website issue.
|
||||
validations:
|
||||
required: false
|
||||
@@ -1,92 +0,0 @@
|
||||
name: Bug Report
|
||||
description: Create a report about a bug you experienced while using Dark Reader.
|
||||
title: "[Bug] Replace with title"
|
||||
labels: ["bug"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Place a brief description in the title of this report.
|
||||
|
||||
Thank you for taking the time to report this bug.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Prerequisites
|
||||
options:
|
||||
- label: I [searched for any existing report](https://github.com/darkreader/darkreader/issues?q=is%3Aissue) about this bug to avoid opening a duplicate.
|
||||
required: true
|
||||
- label: I can reproduce this bug in a new, unmodified web browser profile with Dark Reader installed as the only extension.
|
||||
required: true
|
||||
- label: I understand I need to use the [Broken Website Report template](https://github.com/darkreader/darkreader/issues/new?assignees=&labels=Broken+Website&template=broken-website-report.yml&title=%5BBroken+Website%5D+Replace+with+title) if this bug I am reporting occurs on a single website.
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Bug Description
|
||||
description: Provide a clear and concise description of this bug.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Website Address
|
||||
description: Provide the website address.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps To Reproduce
|
||||
description: Provide steps to reproduce this bug.
|
||||
placeholder: |
|
||||
1. [First Step]
|
||||
2. [Second Step]
|
||||
3. [and so on...]
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected Behavior
|
||||
description: Provide a clear and concise description of what you expected to happen.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Actual Behavior
|
||||
description: Provide a clear and concise description of what happened.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: Add screenshots to help explain this bug, if applicable.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating System
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Web Browser name and version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Dark Reader version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: Provide any additional information about this bug.
|
||||
validations:
|
||||
required: false
|
||||
@@ -1,5 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Questions
|
||||
url: https://github.com/darkreader/darkreader/discussions
|
||||
about: Ask a question about Dark Reader.
|
||||
@@ -1,47 +0,0 @@
|
||||
name: Feature Request
|
||||
description: Create a feature request to enhance the experience using Dark Reader.
|
||||
title: "[Feature Request] Replace with title"
|
||||
labels: ["enhancement"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Place a brief description in the title of this feature request.
|
||||
|
||||
Thank you for taking the time to create this feature request.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Prerequisites
|
||||
options:
|
||||
- label: I [searched for any existing report](https://github.com/darkreader/darkreader/issues?q=is%3Aissue) about this feature request to avoid opening a duplicate.
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Is this feature request related to a problem?
|
||||
options:
|
||||
- "Yes"
|
||||
- "No"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Feature Request Description
|
||||
description: Provide a clear and concise description of this feature request with any problems and solutions.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: Add screenshots to help explain this feature request, if applicable.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: Provide any additional information about this feature request.
|
||||
validations:
|
||||
required: false
|
||||
@@ -1,103 +0,0 @@
|
||||
name: Performance Issue Report
|
||||
description: Create a report about a performance issue you experienced while using Dark Reader.
|
||||
title: "[Performance Issue] Replace with title"
|
||||
labels: ["Performance Issue"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Place a brief description in the title of this report.
|
||||
|
||||
Thank you for taking the time to report this performance issue.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Prerequisites
|
||||
options:
|
||||
- label: I [searched for any existing report](https://github.com/darkreader/darkreader/issues?q=is%3Aissue) about this performance issue to avoid opening a duplicate.
|
||||
required: true
|
||||
- label: I have restarted the web browser to check if that resolved this performance issue.
|
||||
required: true
|
||||
- label: I can reproduce this performance issue in a new, unmodified web browser profile with Dark Reader installed as the only extension.
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Performance Issue Description
|
||||
description: Provide a clear and concise description of this performance issue.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Website Address
|
||||
description: Provide the website address.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps To Reproduce
|
||||
description: Provide steps to reproduce this performance issue.
|
||||
placeholder: |
|
||||
1. [First Step]
|
||||
2. [Second Step]
|
||||
3. [and so on...]
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Performance Profile
|
||||
description: Provide a link to a [Chromium](https://developer.chrome.com/docs/devtools/evaluate-performance/reference/) or [Firefox](https://profiler.firefox.com/) profile.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Screenshots
|
||||
description: Add screenshots to help explain this performance issue, if applicable.
|
||||
validations:
|
||||
required: false
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating System
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Web Browser name and version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: input
|
||||
attributes:
|
||||
label: Dark Reader version
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Does this happen when Dark Reader is disabled?
|
||||
options:
|
||||
- "Yes"
|
||||
- "No"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Does this happen in other web browsers?
|
||||
options:
|
||||
- "Yes"
|
||||
- "No"
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: Provide any additional information about this performance issue.
|
||||
validations:
|
||||
required: false
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "monthly"
|
||||
groups:
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*"
|
||||
@@ -1,48 +0,0 @@
|
||||
name: Create binary for release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- "v*"
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
retention_days:
|
||||
description: 'Retention duration (in days)'
|
||||
required: true
|
||||
default: '1'
|
||||
node_version:
|
||||
description: 'NodeJS version'
|
||||
required: true
|
||||
default: '22.x'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ inputs.node_version || '22.x' }}
|
||||
cache: npm
|
||||
|
||||
- name: Install npm dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Build the extension
|
||||
run: npm run release
|
||||
|
||||
- name: Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
with:
|
||||
files: |
|
||||
build/release/darkreader-*
|
||||
|
||||
- name: Upload built artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
path: build/release/darkreader-*
|
||||
retention-days: ${{ inputs.retention_days }}
|
||||
@@ -1,123 +0,0 @@
|
||||
name: Run browser tests
|
||||
|
||||
on:
|
||||
# Runs for pushes, pull requests, and manual triggers.
|
||||
# (Dooes not run when only some config is changed.)
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths-ignore:
|
||||
- 'src/config/*'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- reopened
|
||||
- ready_for_review
|
||||
paths-ignore:
|
||||
- 'src/config/**'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
test_results_retention_days:
|
||||
description: 'Test results retention (in days)'
|
||||
required: true
|
||||
default: '7'
|
||||
node_version:
|
||||
description: 'NodeJS version'
|
||||
required: true
|
||||
default: '22.x'
|
||||
|
||||
jobs:
|
||||
test-browser:
|
||||
name: Run browser tests
|
||||
timeout-minutes: 10
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
|
||||
# Extended support releases
|
||||
- channel: esr
|
||||
firefox: latest-esr
|
||||
|
||||
# Stable releases
|
||||
- channel: stable
|
||||
chrome: stable
|
||||
firefox: latest
|
||||
coverage: true
|
||||
|
||||
# Beta releases
|
||||
- channel: beta
|
||||
chrome: beta
|
||||
firefox: latest-beta
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Check out code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Chrome
|
||||
if: ${{ matrix.chrome }}
|
||||
uses: browser-actions/setup-chrome@latest
|
||||
with:
|
||||
chrome-version: ${{ matrix.chrome }}
|
||||
|
||||
- name: Configure Karma with path to Chrome executable
|
||||
if: ${{ matrix.chrome }}
|
||||
run: |
|
||||
chrome --version
|
||||
{ echo CHROME_BIN="$(which chrome)"; echo CHROME_TEST=1; } | tee -a "$GITHUB_ENV"
|
||||
|
||||
- name: Install Firefox
|
||||
if: ${{ matrix.firefox }}
|
||||
uses: browser-actions/setup-firefox@latest
|
||||
with:
|
||||
firefox-version: ${{ matrix.firefox }}
|
||||
- name: Configure Karma with path to Firefox executable
|
||||
if: ${{ matrix.firefox }}
|
||||
run: |
|
||||
firefox --version
|
||||
{ echo FIREFOX_BIN="$(which firefox)"; echo FIREFOX_TEST=1; } | tee -a "$GITHUB_ENV"
|
||||
|
||||
- name: Node setup
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ inputs.node_version || '22.x' }}
|
||||
cache: npm
|
||||
|
||||
- name: Install NPM dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Deps
|
||||
run: cat package-lock.json
|
||||
|
||||
- name: Run injection tests
|
||||
run: npm run test:inject -- --ci --json --outputFile=test-results-inject.json
|
||||
|
||||
- name: Run browser tests on Chromium MV2 build
|
||||
if: ${{ matrix.chrome }}
|
||||
uses: coactions/setup-xvfb@v1
|
||||
with:
|
||||
run: npm run test:chrome -- --json --outputFile=test-results-chrome.json
|
||||
|
||||
- name: Run browser tests on Chromium MV3 build
|
||||
if: ${{ matrix.chrome }}
|
||||
uses: coactions/setup-xvfb@v1
|
||||
with:
|
||||
run: npm run test:chrome-mv3 -- --json --outputFile=test-results-chrome-mv3.json
|
||||
|
||||
- name: Run browser tests on Firefox MV2 build
|
||||
if: ${{ matrix.firefox }}
|
||||
uses: coactions/setup-xvfb@v1
|
||||
with:
|
||||
run: npm run test:firefox -- --json --outputFile=test-results-firefox-mv2.json
|
||||
|
||||
- name: Upload test results
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-results-chrome-${{ matrix.chrome }}-firefox-${{ matrix.firefox }}-coverage-${{ matrix.coverage }}
|
||||
path: test-results-*
|
||||
retention-days: ${{ inputs.test_results_retention_days }}
|
||||
@@ -1,57 +0,0 @@
|
||||
name: Run code tests on Pull Request or Push
|
||||
|
||||
on:
|
||||
# Runs for pushes and pull requests,
|
||||
# but don't run these when only some config is changed.
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths-ignore:
|
||||
- 'src/config/*'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- reopened
|
||||
- ready_for_review
|
||||
paths-ignore:
|
||||
- 'src/config/**'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
node_version:
|
||||
description: 'NodeJS version'
|
||||
required: true
|
||||
default: '22.x'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Run tests
|
||||
timeout-minutes: 5
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Node setup
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ inputs.node_version || '22.x' }}
|
||||
cache: npm
|
||||
|
||||
- name: Install npm dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Deps
|
||||
run: cat package-lock.json
|
||||
|
||||
- name: Lint code for code-style errors
|
||||
run: npm run lint
|
||||
|
||||
- name: Check for compatibility issues
|
||||
run: npm run lint:bundle
|
||||
|
||||
- name: Check NPM dependencies
|
||||
run: node tests/dependencies.js
|
||||
@@ -1,53 +0,0 @@
|
||||
name: Unit tests on Pull Request or Push
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
types:
|
||||
- opened
|
||||
- synchronize
|
||||
- reopened
|
||||
- ready_for_review
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
test_results_retention_days:
|
||||
description: 'Test results retention (in days)'
|
||||
required: true
|
||||
default: '7'
|
||||
node_version:
|
||||
description: 'NodeJS version'
|
||||
required: true
|
||||
default: '22.x'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Run tests
|
||||
timeout-minutes: 2
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Clone repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Node setup
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ inputs.node_version || '22.x' }}
|
||||
cache: npm
|
||||
|
||||
- name: Install npm dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Run test against code
|
||||
run: npm run test:unit -- --json --outputFile=test-results-unit.json
|
||||
|
||||
- name: Upload test results
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-results-unit
|
||||
path: test-results-unit.json
|
||||
retention-days: ${{ inputs.test_results_retention_days }}
|
||||
@@ -1,46 +0,0 @@
|
||||
# Build files
|
||||
#-----------------------------------
|
||||
build/
|
||||
darkreader.js
|
||||
darkreader.mjs
|
||||
debug.log
|
||||
src/plus
|
||||
|
||||
# Node.js modules
|
||||
#-----------------------------------
|
||||
node_modules/
|
||||
|
||||
# Test results
|
||||
#-----------------------------------
|
||||
test-results-*.json
|
||||
|
||||
# Code coverage reports
|
||||
#-----------------------------------
|
||||
tests/coverage/
|
||||
tests/browser/coverage/
|
||||
tests/inject/coverage/
|
||||
coverage/
|
||||
|
||||
# IDE and editor configs
|
||||
#-----------------------------------
|
||||
.idea/
|
||||
.vscode/
|
||||
.log/
|
||||
*.code-workspace
|
||||
|
||||
# Cache files
|
||||
#-----------------------------------
|
||||
.eslintcache
|
||||
|
||||
# V8 Profiler logs
|
||||
#-----------------------------------
|
||||
isolate-*-v8.log
|
||||
|
||||
# Deno
|
||||
#-----------------------------------
|
||||
deno.lock
|
||||
deno.json
|
||||
|
||||
# System files
|
||||
#-----------------------------------
|
||||
.DS_Store
|
||||
Vendored
-5
@@ -1,5 +0,0 @@
|
||||
*
|
||||
|
||||
!darkreader.js
|
||||
!darkreader.mjs
|
||||
!index.d.ts
|
||||
Vendored
-643
@@ -1,643 +0,0 @@
|
||||
# 4.9.129 (July 14, 2026)
|
||||
|
||||
- Improved performance when handling variables references.
|
||||
- Improved image inversion, color and inline style caching.
|
||||
- Fixed high CPU usage when doing unnecessary variable matching (ChatGPT issue).
|
||||
- Fixed circular @import references.
|
||||
|
||||
# 4.9.128 (June 19, 2026)
|
||||
|
||||
- Firefox: Improved adopted style sheets handling performance.
|
||||
- Fixed high CPU usage when handling inline background image variables.
|
||||
- Firefox: Fixed saving Dev Tools changes.
|
||||
- Fixed empty background attribute handling.
|
||||
|
||||
# 4.9.127 (June 5, 2026)
|
||||
|
||||
- Fixed high CPU usage for inline style background image variables.
|
||||
|
||||
# 4.9.126 (June 3, 2026)
|
||||
|
||||
- Optimized image inversion.
|
||||
- Improved dark theme detection.
|
||||
- Chrome: Fixed affecting Picture-in-Picture mode.
|
||||
- Firefox: Fixed adopted style sheets performance (Reddit issue).
|
||||
|
||||
# 4.9.125 (April 28, 2026)
|
||||
|
||||
- Detector Hints editor in Dev Tools.
|
||||
- Per-site editors for all Dev Tools configs.
|
||||
- Dev Tool fix templates.
|
||||
- Fixed Dev Tools fixes not being applied after restart.
|
||||
- Fixed handling border "none" style values.
|
||||
- Fixed dark mode detection for raw text file content.
|
||||
- Fixed removing image sprites in light mode.
|
||||
- Fixed searching for site fixes with ports and RegExps.
|
||||
- Fixed site toggle in Firefox Nightly on Android.
|
||||
- Updated experimental design for Microsoft Edge.
|
||||
|
||||
# 4.9.124 (April 1, 2026)
|
||||
|
||||
- Fixed PDF inversion in Dynamic mode.
|
||||
- Fixed Picture-in-Picture mode icons.
|
||||
- Fixed Google Chats icons.
|
||||
- Fixed text stroke in Filter mode.
|
||||
|
||||
# 4.9.123 (March 1, 2026)
|
||||
|
||||
- Firefox: Disable white flash prevention in iframes (FF 148 issue in Google Docs, CKEditor and others).
|
||||
|
||||
# 4.9.122 (February 27, 2026)
|
||||
|
||||
- Chrome: Fixed PDF inversion in Dynamic mode.
|
||||
- Firefox: Fixed pasting text in Google Docs.
|
||||
- Improved mask image handling.
|
||||
|
||||
# 4.9.121 (February 10, 2026)
|
||||
|
||||
- Fixed sites fixes indexing.
|
||||
|
||||
# 4.9.120 (February 9, 2026)
|
||||
|
||||
- IGNORE CSS URL config property.
|
||||
- Optimized site list search.
|
||||
- Optimized fixes search.
|
||||
- Optimized color parsing.
|
||||
- Optimized PDF URL check.
|
||||
- Fixed overriding background size and position.
|
||||
- Fixed analyzing images with URL encoding.
|
||||
- Fixed analyzing SVG icons with unset size.
|
||||
|
||||
# 4.9.119 (January 14, 2026)
|
||||
|
||||
- Optimized inline style changes.
|
||||
- Support Shadow DOM created from HTML templates.
|
||||
- Fixed Google Maps satellite view.
|
||||
- Fixed SVG icons with unset size or inherited colors.
|
||||
- Fixed font element color attribute values.
|
||||
|
||||
# 4.9.118 (December 8, 2025)
|
||||
|
||||
- Improved RGB colors support in CSS variables.
|
||||
- Extended cross-origin request limitations.
|
||||
|
||||
# 4.9.117 (December 3, 2025)
|
||||
|
||||
- Improved dark theme detection.
|
||||
- Optimized SVG image analysis.
|
||||
- CSS variables support improvements.
|
||||
- Applied cross-origin request limitations.
|
||||
|
||||
# 4.9.116 (November 22, 2025)
|
||||
|
||||
- Improved dark theme detection.
|
||||
- Prevent high CPU usage due to inline style conflicts.
|
||||
- Fixed error messages in Firefox.
|
||||
- Fixed eBay buttons.
|
||||
|
||||
# 4.9.115 (November 14, 2025)
|
||||
|
||||
- Fixed eBay issue (transparent color for unresolved variables).
|
||||
- Improved dark theme detection.
|
||||
|
||||
# 4.9.114 (November 12, 2025)
|
||||
|
||||
- Fixed compatibility with Chrome 144.
|
||||
- Fixed handling CSS for deprecated media.
|
||||
- Fixed breaking on ::picker selector.
|
||||
|
||||
# 4.9.113 (November 4, 2025)
|
||||
|
||||
- Fixed processing unresolved nested CSS variables fallbacks.
|
||||
- Fixed handling same CSS rules inside different @layer rules.
|
||||
- Fixed mobile user interface in Edge.
|
||||
- Fixed Firefox build in different timezones.
|
||||
|
||||
# 4.9.112 (October 15, 2025)
|
||||
|
||||
- Fixed handling fallback values of undefined CSS variables.
|
||||
- Fixed error when Dark Reader styles were removed.
|
||||
- Simplified mobile user interface for Edge.
|
||||
- One-click activation for new UI in Edge.
|
||||
|
||||
# 4.9.110 (July 16, 2025)
|
||||
|
||||
- Fixed breaking certain websites (Bloomberg).
|
||||
- Fixed Google Maps inversion.
|
||||
|
||||
# 4.9.109 (July 7, 2025)
|
||||
|
||||
- Fixed API bundle error.
|
||||
|
||||
# 4.9.108 (July 3, 2025)
|
||||
|
||||
- Fixed crash when parsing invalid complex colors (Linkedin issue).
|
||||
- Fixed breaking when CSS @import can't be loaded.
|
||||
- Fixed compatibility with certain extensions.
|
||||
- Fixed processing background with variables defined later.
|
||||
- Detect dark theme in certain iframes.
|
||||
- Ability to hide payment messages.
|
||||
|
||||
# 4.9.106 (May 6, 2025)
|
||||
|
||||
- Google Docs: use Filter mode instead of Filter+ by default.
|
||||
- Added support for nested CSS rules.
|
||||
- Fixed duplicate CSS files requests.
|
||||
- Fixed ShadowDOM static style injection.
|
||||
- Fixed style injection causing freeze for certain websites.
|
||||
- Fixed handling "initial" CSS color value.
|
||||
|
||||
# 4.9.105 (February 25, 2025)
|
||||
|
||||
- API: Fixed breaking ES5 builds.
|
||||
|
||||
# 4.9.104 (February 19, 2025)
|
||||
|
||||
- API: ES Module bundle.
|
||||
|
||||
# 4.9.103 (February 17, 2025)
|
||||
|
||||
- Added support for more color spaces (Tailwind 4 issues).
|
||||
- Support variables in shorthand border properties of inline styles.
|
||||
- Fixed colors after style overrides were removed (Pinterest issue).
|
||||
- Fixed dark theme detection in background tabs.
|
||||
- Fixed numeric color variables.
|
||||
- Fixed same-origin CSS loading optimization.
|
||||
|
||||
# 4.9.102 (February 10, 2025)
|
||||
|
||||
- MV3: Fixed background cache performance.
|
||||
|
||||
# 4.9.101 (February 7, 2025)
|
||||
|
||||
- Fixed processing stylesheets with multiple CSS imports.
|
||||
|
||||
# 4.9.100 (January 29, 2025)
|
||||
|
||||
- Improved performace of checking available background images.
|
||||
- Optimized image analysis caching.
|
||||
- Fixed processing style sheets with incorrect imports.
|
||||
- Fixed image analysis when extension is re-enabled.
|
||||
- Fixed theme update optimization.
|
||||
|
||||
# 4.9.99 (December 13, 2024)
|
||||
|
||||
- Firefox: Fixed console error.
|
||||
|
||||
# 4.9.98 (December 13, 2024)
|
||||
|
||||
- Firefox: Fixed custom browser theme.
|
||||
|
||||
# 4.9.97 (December 10, 2024)
|
||||
|
||||
- Analyze only background images present on a web page.
|
||||
- Optimized rebuilding theme after configuration changes.
|
||||
- Cache image analysis results and CSS requests.
|
||||
- Improved relative CSS colors support.
|
||||
- Fixed handling custom CSS properties in inline SVGs.
|
||||
- Firefox: Optimized adopted style sheets workaround (Reddit issue).
|
||||
|
||||
# 4.9.96 (October 29, 2024)
|
||||
|
||||
- Dark theme detection improvements.
|
||||
- Fixed overriding styles in Shadow DOM of built-in elements.
|
||||
- Firefox: Fix breaking Microsoft Teams.
|
||||
- Prevent dark content flashes for disabled websites.
|
||||
- Fixed loading styles with imports from same domain.
|
||||
|
||||
# 4.9.95 (October 2, 2024)
|
||||
|
||||
- Fixed Google Calendar scroll bars.
|
||||
- Fixed automation panel.
|
||||
- Added links to mobile apps.
|
||||
|
||||
# 4.9.94 (September 24, 2024)
|
||||
|
||||
- API: Fixed TypeScript builds.
|
||||
- Updated experimental design for Microsoft Edge for Android.
|
||||
|
||||
# 4.9.93 (September 20, 2024)
|
||||
|
||||
- Experimental design for Microsoft Edge for Android.
|
||||
|
||||
# 4.9.92 (September 10, 2024)
|
||||
|
||||
- Detect website's dark theme by default.
|
||||
- Use Filter mode for particular websites by default (Google Docs, Microsoft Office).
|
||||
- Restored scrollbar colors.
|
||||
- Fixed breaking on default selection color.
|
||||
|
||||
# 4.9.90 (September 1, 2024)
|
||||
|
||||
- Fixed "Aw, Snap" in Google Search (Chrome and Edge on Windows).
|
||||
|
||||
# 4.9.89 (August 23, 2024)
|
||||
|
||||
- Removed www part from website URLs.
|
||||
- Enabled automation and dark theme detection by default for mobile version.
|
||||
- Fixed colors for static site fixes.
|
||||
- Apply ignored image selectors for gradients.
|
||||
|
||||
# 4.9.88 (July 11, 2024)
|
||||
|
||||
- Fixed breaking browser panels.
|
||||
|
||||
# 4.9.87 (June 27, 2024)
|
||||
|
||||
- Added link to Settings page.
|
||||
- Fixed CSS editor layout.
|
||||
- Fixed delay when opening settings.
|
||||
- Fixed warnings for protected pages.
|
||||
- Fixed conflicts with Dark Reader based scripts.
|
||||
- Improved fallback color support in CSS variables.
|
||||
- Japanese Help page translation.
|
||||
|
||||
# 4.9.86 (May 30, 2024)
|
||||
|
||||
- CSS variables performance optimizations.
|
||||
- Fixed Manifest V3 bugs.
|
||||
- Fixed loosing control over tabs after update.
|
||||
|
||||
# 4.9.85 (May 14, 2024)
|
||||
|
||||
- Bulgarian translation.
|
||||
- Improved color variables support.
|
||||
- Fixed handling styles with embedded SVGs.
|
||||
- Fixed Inversion Dev Tools.
|
||||
- Fixed inline SVG image analysis.
|
||||
- Fixed overriding icon fonts.
|
||||
|
||||
# 4.9.84 (April 25, 2024)
|
||||
|
||||
- Improved Dev Tools (per site editor).
|
||||
- Improved SVG logos analysis.
|
||||
- Improved large background image analysis.
|
||||
- Fixed IPv6 URL support.
|
||||
- Fixed Mark elements' colors.
|
||||
- Check for CSS @layer support.
|
||||
|
||||
# 4.9.83 (April 10, 2024)
|
||||
|
||||
- Reduced memory consumption.
|
||||
- Fixed iframes background colors.
|
||||
- Optimized CSS @import loading.
|
||||
|
||||
# 4.9.82 (April 5, 2024)
|
||||
|
||||
- Fixed performance issue when detecting @layer and @supports rules.
|
||||
- Improved border colors with CSS variables.
|
||||
- Leave iframes unchanged when dark theme is detected on a web page.
|
||||
|
||||
## 4.9.81 (March 29, 2024)
|
||||
|
||||
- Fixed performance degradation when computer wakes up from sleep mode.
|
||||
- Improved dark theme detection.
|
||||
- Support for CSS layers.
|
||||
- Support for color mixing functions.
|
||||
- Override author's scrollbar colors.
|
||||
- Override color-scheme CSS property.
|
||||
- Fixes for backgrounds with variable colors.
|
||||
- Dynamic mode bug fixes and performance optimizations.
|
||||
|
||||
## 4.9.80 (March 13, 2024)
|
||||
|
||||
- Analyze inline background images for root elements.
|
||||
- Support for "background" attribute.
|
||||
- Fixed performance for asynchronously resolved inline styles.
|
||||
- Fixed freezes and incorrect work on several websites.
|
||||
- Dev Tools: Formatting of CSS fixes.
|
||||
|
||||
## 4.9.79 (February 29, 2024)
|
||||
|
||||
- Use ES2020 for API bundle.
|
||||
|
||||
## 4.9.78 (February 29, 2024)
|
||||
|
||||
- Optimized Adopted Style Sheets changes handling.
|
||||
- Fixed watching for style/link element position changes.
|
||||
- Fixed processing large style elements loaded by chunks.
|
||||
- Fixed enabling the extension with a hotkey after it was disabled automatically.
|
||||
- Fixed sliders in mobile UI.
|
||||
|
||||
## 4.9.77 (February 7, 2024)
|
||||
|
||||
- Firefox: Fixed errors when Adopted Style Sheets were not present.
|
||||
- Fixed breaking on ::view-transition selectors (Airbnb issue).
|
||||
|
||||
## 4.9.76 (January 17, 2024)
|
||||
|
||||
- Improved dark theme detection.
|
||||
- Dynamic mode bug fixes.
|
||||
|
||||
## 4.9.75 (January 12, 2024)
|
||||
|
||||
- Fixed CSS variables processing in inline styles.
|
||||
- Chrome: Improved Adopted Style Sheets support (Bing AI and Copilot issues).
|
||||
- Firefox: Adopted Style Sheets support.
|
||||
- Firefox: Fixed issues with Filter+ mode.
|
||||
- Improved Constructed Style Sheets changes handling.
|
||||
|
||||
## 4.9.74 (January 3, 2024)
|
||||
|
||||
- Improved image analysis performance.
|
||||
- Improved dark theme detection.
|
||||
- Fixed 404 errors when loading images with relative paths.
|
||||
- v5 Preview: Moved settings into a separate page.
|
||||
|
||||
## 4.9.73 (December 6, 2023)
|
||||
|
||||
- Fixed URL subdomain handling.
|
||||
|
||||
## 4.9.72 (December 5, 2023)
|
||||
|
||||
- Fixed Salesforce and Excel Online issues.
|
||||
|
||||
## 4.9.71 (December 5, 2023)
|
||||
|
||||
- Improved subdomain handling in Site List.
|
||||
- Improved dark theme detection.
|
||||
- Fixed page crashes (Slack issue).
|
||||
- Fixed Site List migration.
|
||||
- Reduced image analysis memory usage.
|
||||
|
||||
## 4.9.70 (November 22, 2023)
|
||||
|
||||
- Fixed clearing site lists when synchronization is disabled.
|
||||
|
||||
## 4.9.69 (November 21, 2023)
|
||||
|
||||
- Separated Enabled and Disabled site lists.
|
||||
- Regular expressions support in Site List.
|
||||
- Fixed automation after computer waking up.
|
||||
|
||||
## 4.9.68 (November 13, 2023)
|
||||
|
||||
- Fixed incorrect CSS comment handling (Reddit issue #11583).
|
||||
- Fixed working on domains containing `constructor` part (#11877).
|
||||
|
||||
## 4.9.67 (October 1, 2023)
|
||||
|
||||
- Fixed Site List when there is any URL with port.
|
||||
|
||||
## 4.9.66 (September 25, 2023)
|
||||
|
||||
- Dynamic mode fixes.
|
||||
- UI improvements.
|
||||
|
||||
## 4.9.65 (August 7, 2023)
|
||||
|
||||
- Optimize inline style handling (fixes DuckDuckGo issue).
|
||||
- Added an option to enable/disable the extension for all websites by default.
|
||||
|
||||
## 4.9.64 (June 21, 2023)
|
||||
|
||||
- Using passive event listeners (#11047)
|
||||
- Fixed System Automation on Firefox (#10237)
|
||||
- Fixed News section.
|
||||
|
||||
## 4.9.63 (Apr 10, 2023)
|
||||
|
||||
- Site toggle panel (detect dark theme and shortcut).
|
||||
- App toggle panel (automation and shortcut).
|
||||
- Improved Site List indexing.
|
||||
|
||||
## 4.9.62 (Jan 8, 2023)
|
||||
|
||||
- Fixed a edge case with extracting color numbers, it's now able to extract `rgb(0 0 0/0.04)`. (#10565)
|
||||
- Improved IPv6 check. (#10564)
|
||||
- Faster UI loading. (#10589)
|
||||
|
||||
## 4.9.61 (Jan 2, 2023)
|
||||
|
||||
- Only invert PDFs on mail.google.com and drive.google.com, if the setting for PDF inversion has been enabled. (#10310)
|
||||
- Show in the new UI design when a page is disabled, because it's protected by the browser. (#10338)
|
||||
- Improved restoring Dark Reader elements, when the whole DOM is being overwritten. (#10372)
|
||||
|
||||
## 4.9.60 (Oct 27, 2022)
|
||||
|
||||
- Fixed broken hotkeys.
|
||||
- Improved IP v6 address support.
|
||||
|
||||
## 4.9.59 (Oct 23, 2022)
|
||||
|
||||
- Fixes a issue where `darkreader-fallback` wasn't removed from the DOM, when Dark Reader finds a `<meta name="darkreader-lock">` element.
|
||||
- Be stricter when the user specifies a last slash for a URL in the Site List.
|
||||
- Display a warning that "System" Automation might not work properly in Chromium on Linux and Kiwi on Android.
|
||||
- Workaround for Kiwi file download during settings import, fix opening Dark Reader DevTools.
|
||||
- A button to clear the Site List (v5 Preview UI).
|
||||
|
||||
## 4.9.58 (Sep 22, 2022)
|
||||
|
||||
- Remove newlines from CSS URL values, before handling them.
|
||||
- Better detection for text color property in variables.
|
||||
- es-419 (Latin America & Caribbean Spanish) translation.
|
||||
- Updates to Hebrew and Portuguese (Brazilian) translations.
|
||||
|
||||
## 4.9.57 (Aug 23, 2022)
|
||||
|
||||
- Fix iframes not getting modified when settings were changed.
|
||||
- Fixed registering system automation handlers multiple times.
|
||||
|
||||
## 4.9.56 (Aug 16, 2022)
|
||||
|
||||
- Fix browser theme not changing when automation + scheme behavior was enabled.
|
||||
|
||||
## 4.9.55 (Aug 10, 2022)
|
||||
|
||||
- Fix Google calendar.
|
||||
- Fix Opera/Vivaldi sidebar's getting modified.
|
||||
- Fix incorrect inline background colors when `mask` is explicitly disabled.
|
||||
- Fixed breaking for some old browser versions.
|
||||
|
||||
## 4.9.54 (Aug 10, 2022)
|
||||
|
||||
- Fixed System automation.
|
||||
|
||||
## 4.9.53 (Aug 9, 2022)
|
||||
|
||||
- Don't manage styles that have an empty `href` attribute.
|
||||
- Use `navigator.UserAgentData` when possible.
|
||||
- Add a `<meta name="darkreader-lock">` detector, to disable Dark Reader when detected (only dynamic theme).
|
||||
- Fix filter theme for Firefox v102+
|
||||
- Correctly open static theme editor on Mobile.
|
||||
- Migrate automation settings to its own object.
|
||||
- Correctly handle empty URL's in `background-image` property.
|
||||
- Make color parsing use cache.
|
||||
- Send updates only to affected tabs when toggling sites.
|
||||
- Fixed images with masks (Gmail icons issue).
|
||||
- Background page refactoring.
|
||||
|
||||
## 4.9.52 (June 28, 2022)
|
||||
|
||||
- Correctly handle escaped characters in CSS `url(...)` values.
|
||||
|
||||
## 4.9.51 (May 27, 2022)
|
||||
|
||||
Dynamic mode improvements:
|
||||
|
||||
- Fixed CSS imports that contain `url(...)` and end with `screen`.
|
||||
- Send network responses to correct frames in tabs.
|
||||
- Improved `calc(...)` color handling by using [Shunting Yard algorithm](https://en.wikipedia.org/wiki/Shunting_yard_algorithm).
|
||||
|
||||
New translations:
|
||||
|
||||
- Malay translation.
|
||||
- Telugu translation.
|
||||
|
||||
Other:
|
||||
|
||||
- UI improvements.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.50 (May 1, 2022)
|
||||
|
||||
- Fix working in Firefox Nightly 101.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.48 (Apr 18, 2022)
|
||||
|
||||
- Fix PDF inversion when Auto-detect dark theme option was enabled.
|
||||
- Fix Jira's background.
|
||||
- User's settings validation.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.47 (Mar 14, 2022)
|
||||
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.46 (Mar 10, 2022)
|
||||
|
||||
- v5 Preview: Auto-detect dark theme on websites.
|
||||
- v5 Preview: Option for running dark theme on hidden tabs immediately.
|
||||
- Dynamic mode bug fixes.
|
||||
- Translation improvements.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.45 (Feb 5, 2022)
|
||||
|
||||
- Revert reducing brightness for images (due to some performance issues).
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.44 (Feb 4, 2022)
|
||||
|
||||
- Dynamic mode improvements.
|
||||
- v5 preview: Ability to automate dark/light scheme.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.43 (Dec 7, 2021)
|
||||
|
||||
- Dynamic mode bug fixes.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.42 (Nov 6, 2021)
|
||||
|
||||
- Fixed slow performance on some websites.
|
||||
- Fixed broken UI for some users.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.41 (Nov 5, 2021)
|
||||
|
||||
- Fixed white flash when page starts loading.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.40 (Nov 3, 2021)
|
||||
|
||||
- Dynamic mode fixes.
|
||||
- Filipino translation (thanks to @IverCoder).
|
||||
- Serbian translation (thanks to Nemanja @nebocoder).
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.39 (Oct 1, 2021)
|
||||
|
||||
- Fixed settings not being saved.
|
||||
- Fixed not working popup for some users.
|
||||
- Dynamic mode performance improvements.
|
||||
- v5 Preview design update.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.37.1 (Sep 23, 2021)
|
||||
|
||||
- Fixed error when applying settings after some time.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.36 (Sep 21, 2021)
|
||||
|
||||
- Fixed regression bugs after 4.9.35 release (hotkeys, Dev Tools, sunrise/sunset).
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.35 (Sep 19, 2021)
|
||||
|
||||
- Preparing the app for work in non-persistent background context.
|
||||
- Dynamic mode bug fixes and performance improvements.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.34 (Jul 7, 2021)
|
||||
|
||||
- Dynamic mode bug fixes and performance improvements.
|
||||
- Minor UI improvements.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.33 (May 28, 2021)
|
||||
|
||||
- Fixed disability to switch on sites in Global Dark List.
|
||||
- Bug fixes.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.32 (Apr 21, 2021)
|
||||
|
||||
- Dynamic mode bug fixes.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.31 (Apr 5, 2021)
|
||||
|
||||
- Fixed performance bottleneck for websites with CSS variables.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.30 (Apr 1, 2021)
|
||||
|
||||
- Improved CSS Variables support.
|
||||
- Dynamic mode bug fixes.
|
||||
- Fixed toggle shortcut keys for PDFs.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.29 (Feb 22, 2021)
|
||||
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.27 (Jan 21, 2021)
|
||||
|
||||
- Dynamic mode improvements.
|
||||
- Thunderbird support.
|
||||
- Users' fixes for websites.
|
||||
- Users' translation improvements.
|
||||
|
||||
## 4.9.26 (Nov 26, 2020)
|
||||
|
||||
- Dynamic mode bug fixes.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.25 (Nov 25, 2020)
|
||||
|
||||
- Dynamic mode bug fixes.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.24 (Nov 19, 2020)
|
||||
|
||||
- Dynamic mode fixes and performance improvements.
|
||||
- Updates for Dutch translation.
|
||||
- Users' fixes for websites.
|
||||
- Reduced assets size.
|
||||
|
||||
## 4.9.23 (Oct 26, 2020)
|
||||
|
||||
- Fixed missing images on some websites.
|
||||
|
||||
## 4.9.22 (Oct 26, 2020)
|
||||
|
||||
- Fixed high CPU usage caused by conflict with some websites.
|
||||
- Dynamic mode bug fixes.
|
||||
- Users' fixes for websites.
|
||||
|
||||
## 4.9.21 (Sep 26, 2020)
|
||||
|
||||
- Fixed wrongly displaying pages where the extension is disabled.
|
||||
-129
@@ -1,129 +0,0 @@
|
||||
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
darkreaderapp@gmail.com.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
<https://www.contributor-covenant.org/version/2/0/code_of_conduct.html>.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/inclusion).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
<https://www.contributor-covenant.org/faq>. Translations are available at
|
||||
<https://www.contributor-covenant.org/translations>.
|
||||
-262
@@ -1,262 +0,0 @@
|
||||
<h2 align="center">Contributions</h2>
|
||||
|
||||
<p align="center">You can contribute to and help Dark Reader in many ways. Continue reading to learn how, and thank you in advance!</p>
|
||||
|
||||
## Sponsor
|
||||
|
||||
<a href="https://opencollective.com/darkreader/donate" target="_blank" rel="noreferrer noopener"> <img src="https://opencollective.com/darkreader/donate/button@2x.png?color=blue" width=300 /></a>
|
||||
|
||||
Please sponsor the development of Dark Reader.
|
||||
|
||||
## Translation
|
||||
|
||||
[Improve or suggest](https://github.com/darkreader/darkreader/tree/main/src/_locales) a translation. See the list of [language codes](https://developer.chrome.com/webstore/i18n#localeTable) that we can support.
|
||||
|
||||
## Disabling Dark Reader on your site
|
||||
|
||||
Website pages can request Dark Reader to disable itself by embedding a "Dark Reader lock". The "lock" is a `<meta>` tag with `name` attribute set to `darkreader-lock` which is a child of `<head>` tag in the document.
|
||||
|
||||
### Disabling Dark Reader statically
|
||||
|
||||
Add `<meta name="darkreader-lock">` within your HTML document in `<head>` like so:
|
||||
```html
|
||||
<head>
|
||||
<meta name="darkreader-lock">
|
||||
</head>
|
||||
```
|
||||
|
||||
### Disabling Dark Reader dynamically
|
||||
|
||||
Add the "lock" dynamically like so (assuming browser already parsed enough of the document to create a `head` attribute):
|
||||
```js
|
||||
const lock = document.createElement('meta');
|
||||
lock.name = 'darkreader-lock';
|
||||
document.head.appendChild(lock);
|
||||
```
|
||||
|
||||
## Adding a website that is already dark
|
||||
|
||||
If a website is **already dark** and meets the following requirements:
|
||||
|
||||
- The entire website - including all subpages - is dark by default, regardless of the system's preferred color scheme.
|
||||
- The URL is the actual website address. No redirects of any kind are allowed.
|
||||
- The website is complete and finished. Any website in the design or development phase or any other incomplete status is not permitted. These statuses can include any placeholder web pages or verbiage about coming soon, the website being under construction, the website having moved, etc.
|
||||
|
||||
Then you can **add it to the [dark-sites.config](https://github.com/darkreader/darkreader/blob/main/src/config/dark-sites.config) file**.
|
||||
|
||||
**Please maintain the alphabetical order of the websites listed in this file.**
|
||||
|
||||
## Fixing incorrect inversions
|
||||
|
||||
If any **element** on a web page is **not inverted or styled correctly**, you can fix it by specifying the appropriate [**CSS selector**](https://developer.mozilla.org/docs/Web/CSS/CSS_Selectors). Use the [**dynamic-theme-fixes.config**](https://github.com/darkreader/darkreader/blob/main/src/config/dynamic-theme-fixes.config) file for Dynamic Theme mode and the [**inversion-fixes.config**](https://github.com/darkreader/darkreader/blob/main/src/config/inversion-fixes.config) file for Filter and Filter+ modes.
|
||||
|
||||
**Please maintain the alphabetical order of the websites listed, use short selectors, and preserve the code style in these files.**
|
||||
|
||||
You can learn how to create a fix for the appropriate Dark Reader mode below.
|
||||
|
||||
## How to use the Dev Tools
|
||||
|
||||
Dark Reader includes its own developer tools, allowing easier modification of its rules and quicker previews. The Dev Tools help you **fix minor issues** on a web page. These can include a dark icon on a dark background, removing a bright background, adding a white background to a transparent image, etc.
|
||||
|
||||
Common use cases:
|
||||
|
||||
In **Dynamic mode**, if the page looks partially dark and bright, it is considered a bug. Individual elements or containers might need to be tweaked.
|
||||
|
||||
In **Filter mode**, it is a common practice to invert elements on the page that are already dark.
|
||||
|
||||
The Dev Tools can help you fix these and other rule bugs.
|
||||
|
||||
### Navigating to the Dark Reader Dev Tools
|
||||
|
||||
#### Video walkthrough:
|
||||
https://github.com/user-attachments/assets/76a5d9bc-7553-4e50-acf5-5a9051cec152
|
||||
|
||||
#### Step-by-step instructions:
|
||||
- Open **Chrome Dev Tools** (`F12`) in Chrome or "Inspector" (`Ctrl+Shift+C`) in Firefox.
|
||||
- Click on **element picker** (top-left corner). It is enabled automatically in Firefox.
|
||||
- Pick an incorrectly inverted element.
|
||||
- Choose a **[selector](https://developer.mozilla.org/docs/Web/CSS/CSS_Selectors)** for that element or all similar elements (for example, if it has `class="icon small"`, the selector may look like `.icon`).
|
||||
- Click the **Dark Reader icon** to open the extension's popup window.
|
||||
- Switch to the **More** tab.
|
||||
- Click the **⛭ All settings** button at the bottom.
|
||||
- Switch to the **Advanced** section on the left.
|
||||
- Click the **🛠️ Dev tools** button at the bottom.
|
||||
- (Optional but helpful) Switch to the **Per Site Editor** tab at the bottom and type in the domain name you wish to update or add.
|
||||
- Edit or add a block containing the URL and selectors to invert, using the [rules below](#editor--rule-syntax).
|
||||
- Click **Apply**.
|
||||
- Check how the site looks both in **Light** and **Dark** modes.
|
||||
- If the **fix works**, open **[dynamic-theme-fixes.config](https://github.com/darkreader/darkreader/blob/main/src/config/dynamic-theme-fixes.config)** or **[inversion-fixes.config](https://github.com/darkreader/darkreader/blob/main/src/config/inversion-fixes.config)**.
|
||||
- Click **Edit** (requires being logged in to GitHub).
|
||||
- **Insert your fix** there (copying and pasting it from the Dev Tools). Preserve **alphabetic order** by URL.
|
||||
- Provide a **short description** of what you have done.
|
||||
- Click **Propose file change**.
|
||||
- Review your changes. Click **Create pull request**.
|
||||
- Once you create the pull request, GitHub Actions will run tests behind the scenes to ensure your submission has the right code style. This will take a few minutes.
|
||||
- If you see a **red cross**, click **Details** to see what is wrong and edit the existing Pull Request.
|
||||
- When you see a **green checkmark**, then everything is fine.
|
||||
- A Dark Reader developer will **review** and merge your changes, making them available to all Dark Reader users.
|
||||
|
||||
|
||||
## Editor & Rule Syntax
|
||||
|
||||
```CSS
|
||||
dynamic-theme-fixes.config
|
||||
================================
|
||||
|
||||
example.com
|
||||
|
||||
INVERT
|
||||
.icon
|
||||
|
||||
CSS
|
||||
.wrong-element-colors {
|
||||
background-color: ${white} !important;
|
||||
color: ${black} !important;
|
||||
}
|
||||
|
||||
IGNORE INLINE STYLE
|
||||
.color-picker
|
||||
|
||||
IGNORE IMAGE ANALYSIS
|
||||
.logo
|
||||
```
|
||||
|
||||
### URL
|
||||
|
||||
The fix starts with the domain name, like `example.com`. The `www` part should be ommited.
|
||||
|
||||
If the fix affects a particular subdomain, this exact subdomain should be specified like `sub.domain.com`.
|
||||
|
||||
Some websites have different top level domains depending on the user's location. A `*` can be used like `example.*`.
|
||||
|
||||
If the same fix applies to a website (or similar websites) that can have multiple domain names or subdomains,
|
||||
they can be listed on separate lines, starting with the most popular one:
|
||||
```
|
||||
example.com
|
||||
sub.example.com
|
||||
example.mirror.com
|
||||
```
|
||||
|
||||
The use of `*` wildcard is discouraged; it can only be used as the last resort.
|
||||
|
||||
For
|
||||
|
||||
| Rule | Description | Notes / Examples |
|
||||
|---|---|---|
|
||||
| **INVERT** | Inverts specified elements. | **Dynamic Mode**: INVERT only for dark images that are invisible on dark backgrounds. |
|
||||
| **CSS** | Adds custom CSS to a web page. | `!important` keyword should be specified for each CSS property to prevent overrides by other stylesheets.<br>**Dynamic mode** supports `${COLOR}` template, where `COLOR` is a color value before the inversion. <br>*Example*: `${white}` will become `${black}` in dark mode. |
|
||||
| **IGNORE INLINE STYLE** | Prevents inline style analysis of matched elements. | *Example*: `<p style="color: red">` element's style attribute will not be changed. |
|
||||
| **IGNORE IMAGE ANALYSIS** | Prevents background images from being analyzed for matched selectors. | |
|
||||
|
||||
## Dynamic variables
|
||||
|
||||
When making a fix for background or text colors, instead of using hardcoded colors (like `#fff`, `#000`, `black` or `white`), please use CSS variables that are generated based on the user's settings:
|
||||
|
||||
```CSS
|
||||
dynamic-theme-fixes.config
|
||||
================================
|
||||
example.com
|
||||
|
||||
CSS
|
||||
.logo {
|
||||
background-color: var(--darkreader-neutral-background) !important;
|
||||
}
|
||||
.footer > p {
|
||||
color: var(--darkreader-neutral-text) !important;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Here is a full table of available CSS variables:
|
||||
|
||||
| Variable | Description | Use |
|
||||
|---|---|---|
|
||||
| **`--darkreader-neutral-background`** | Neutral background color that <br>corresponds to the user's settings. | Mostly used for elements that have <br>the wrong background color. |
|
||||
| **`--darkreader-neutral-text`** | Neutral text color that <br>corresponds to the user's settings. | Used for elements with the wrong text color. |
|
||||
| **`--darkreader-selection-background`** | The background color setting <br>defined by the user. | The user's Background Color setting. |
|
||||
| **`--darkreader-selection-text`** | The text color setting <br>defined by the user. | The user's Text Color setting. |
|
||||
|
||||
## Fixes for Filter and Filter+ mode
|
||||
|
||||
```CSS
|
||||
inversion-fixes.config
|
||||
================================
|
||||
|
||||
example.com
|
||||
|
||||
INVERT
|
||||
.icon
|
||||
.button
|
||||
#player
|
||||
|
||||
NO INVERT
|
||||
#player *
|
||||
|
||||
REMOVE BG
|
||||
.bg-photo
|
||||
|
||||
CSS
|
||||
.overlay {
|
||||
background: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
```
|
||||
|
||||
- Filter and Filter+ work by inverting the entire web page and reverting necessary elements (images, videos, etc.) listed in the `INVERT` section.
|
||||
- If an inverted element contains images or other content that becomes incorrectly displayed, use the `NO INVERT` rule.
|
||||
- `REMOVE BG` removes the background image from an element and forces a black background.
|
||||
|
||||
## Adding new features or fixing bugs
|
||||
|
||||
If you would like to **add a new feature** to Dark Reader or **fix a bug**, please **submit an issue** in GitHub (if there is no existing one), **discuss** it with active contributors, and wait for **approval**.
|
||||
|
||||
To build and debug the extension, **install the [Node.js](https://nodejs.org/)** LTS version.
|
||||
Install development dependencies by running `npm install` in the project's root folder.
|
||||
Then execute `npm run debug`.
|
||||
|
||||
#### Chrome and Edge
|
||||
|
||||
- Open the `chrome://extensions` page.
|
||||
- Disable the official Dark Reader version.
|
||||
- Enable the **Developer mode**.
|
||||
- Click **Load unpacked extension** button.
|
||||
- Navigate to the project's `build/debug/chrome` folder.
|
||||
|
||||
#### Firefox
|
||||
|
||||
- Open the `about:addons` page.
|
||||
- Disable the official Dark Reader version.
|
||||
- Open the `about:debugging#addons` page.
|
||||
- Click the **Load Temporary Add-on** button.
|
||||
- Open the `build/debug/firefox/manifest.json` file.
|
||||
|
||||
If you execute `npm run debug:watch` instead of `npm run debug`, it will automatically recompile the extension after making any code changes.
|
||||
|
||||
## Rules and recommendations
|
||||
|
||||
If a change requires more than **10 lines of code**,
|
||||
please submit an issue on GitHub (if there is no existing one),
|
||||
and **discuss your solution and approach** with active contributors,
|
||||
before performing further changes.
|
||||
|
||||
**Keep the changes simple**.
|
||||
Please use as little code as possible.
|
||||
A single pull request should have a single purpose.
|
||||
|
||||
**Low effort contributions** are not allowed.
|
||||
A contributor should ensure the changes work and solve a real problem.
|
||||
|
||||
Code changes predominantly **generated with AI are not allowed**.
|
||||
All comments and conversations must be held by humans.
|
||||
|
||||
**The following changes are STRICTLY FORBIDDEN**
|
||||
- adding external dependencies
|
||||
- changing the build process
|
||||
- modifying `package.json` and `package-lock.json`
|
||||
|
||||
You can use any text editor or web IDE (for example, [Visual Studio Code](https://code.visualstudio.com/) or [WebStorm](https://www.jetbrains.com/webstorm/)) to edit the code.
|
||||
|
||||
**Please preserve the code style** (e.g. whitespaces). It can be performed automatically by executing `npm run code-style`.
|
||||
|
||||
Run tests by executing `npm test` to verify your changes will pass.
|
||||
|
||||
If your code is ready to be reviewed and merged, please submit a **pull request** and wait for a **review**.
|
||||
Vendored
-225
@@ -1,225 +0,0 @@
|
||||
<p align="center"><a href="https://darkreader.org" target="_blank" rel="noreferrer noopener"><img width="250" alt="Dark Reader's mascot" src="https://raw.githubusercontent.com/darkreader/darkreader.github.io/master/images/darkreader-mascot.svg"></a></p>
|
||||
<p align="center">Dark Reader <strong>analyzes</strong> web pages and aims to <strong>reduce eyestrain</strong> while browsing the web.</p>
|
||||
<br/>
|
||||
<p align="center"><a rel="noreferrer noopener" href="https://chromewebstore.google.com/detail/dark-reader/eimadpbcbfnmbkopoojfekhnkhdbieeh"><img alt="Chrome Web Store" src="https://img.shields.io/badge/Chrome-141e24.svg?&style=for-the-badge&logo=google-chrome&logoColor=white"></a> <a rel="noreferrer noopener" href="https://addons.mozilla.org/firefox/addon/darkreader/"><img alt="Firefox Add-ons" src="https://img.shields.io/badge/Firefox-141e24.svg?&style=for-the-badge&logo=firefox-browser&logoColor=white"></a> <a rel="noreferrer noopener" href="https://darkreader.org/safari/"><img alt="Apple App Store" src="https://img.shields.io/badge/Safari-141e24.svg?&style=for-the-badge&logo=safari&logoColor=white"></a> <a rel="noreferrer noopener" href="https://microsoftedge.microsoft.com/addons/detail/dark-reader/ifoakfbpdcdoeenechcleahebpibofpc/"><img alt="Edge Addons" src="https://img.shields.io/badge/Edge-141e24.svg?&style=for-the-badge&logo=microsoft-edge&logoColor=white"></a> <a el="noreferrer noopener" href="https://addons.thunderbird.net/thunderbird/addon/darkreader"><img alt="Thunderbird" src="https://img.shields.io/badge/Thunderbird-141e24.svg?&style=for-the-badge&logo=thunderbird&logoColor=white"></a>
|
||||
|
||||
<h2 align="center">Dark Reader</h2>
|
||||
<br/>
|
||||
<p align="center">Dark Reader is an <strong>open-source</strong> MIT-licensed <strong>browser extension</strong> designed to analyze web pages. Dark Reader will generate a dark mode that aims to <strong>reduce the eyestrain</strong> of the user. Dark Reader is <strong>feature-rich</strong> and is customizable in many ways throughout the UI.</p>
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
## Questions
|
||||
|
||||
Most questions can be answered by reading the [help page](https://darkreader.org/help/).
|
||||
If the help page doesn't answer your question, open up a new [discussion](https://github.com/darkreader/darkreader/discussions).
|
||||
|
||||
## How to contribute
|
||||
|
||||
Read more about contributing to Dark Reader in [CONTRIBUTING.md](https://github.com/darkreader/darkreader/blob/main/CONTRIBUTING.md).
|
||||
|
||||
## Building for use
|
||||
|
||||
Dark Reader build script requires a JavaScript runtime, either NodeJS or Deno. We recommend using NodeJS, Deno support is experimental.
|
||||
|
||||
### Building with NodeJS
|
||||
|
||||
You can install the extension from a file.
|
||||
Install [Node.js](https://nodejs.org/) (we recommend LTS or higher, but any version at or above 15 will work). Download the source code (or check out from git).
|
||||
Open the terminal in the root folder and run:
|
||||
|
||||
- `npm install`
|
||||
- `npm run build` or `npm run build [-- flags]`
|
||||
|
||||
This will create a `build/release/darkreader-chrome.zip` file for use in a Chromium-based browser and a `build/release/darkreader-firefox.xpi` file for use in Firefox.
|
||||
|
||||
You can customize the build process by passing flags to build script. To see all flags, run `npm run build -- --help`.
|
||||
|
||||
### Building with Deno
|
||||
|
||||
You can build Dark Reader with an alternative runtime called [Deno](https://deno.land/). For this run `deno:bootstrap` script (e.g., via `npm run deno:bootstrap` or manually copy the command from `package.json`). Then run the same commands described above.
|
||||
|
||||
Please note that if you encounter the error `Too many open files (os error 24)`, then you should use the newer version of Deno (preferably built from source or canary).
|
||||
|
||||
### Bundling with official Firefox store signatures (experimental)
|
||||
|
||||
Before publication, extension stores provide digital signatures for extensions. These digital signatures certify the integrity of the archive (that the extension bundle did not get corrupted or bit-rotted) and that the extension store performed very basic extension validation.
|
||||
|
||||
Dark Reader repository contains these digital signatures and you can add them to the extension bundle. The following will build Dark Reader for Firefox version 4.9.63:
|
||||
```
|
||||
npm run build -- --firefox --version=4.9.63
|
||||
```
|
||||
|
||||
Please note that only Firefox Add-ons store signatures are present in the repository right now. Also, due to NodeJS and TypeScript version compatibility, one might have to first check out the old revision (commit), then build the extension files, then check out the recent commit and create the bundle (by running only `signature` and `zip` steps).
|
||||
|
||||
## Using Dark Reader on a website
|
||||
|
||||
You can use Dark Reader to enable dark mode on your website!
|
||||
|
||||
- Install the package from NPM (`npm install darkreader`)
|
||||
- or build from the source code (`npm run api`)
|
||||
- or include the script via a CDN such as [unpkg](https://unpkg.com/darkreader/) or [jsDelivr](https://www.jsdelivr.com/package/npm/darkreader)
|
||||
|
||||
Then you can use the following code to control Dark Reader's API:
|
||||
```javascript
|
||||
DarkReader.enable({
|
||||
brightness: 100,
|
||||
contrast: 90,
|
||||
sepia: 10
|
||||
});
|
||||
|
||||
DarkReader.disable();
|
||||
|
||||
// Enable when the system color scheme is dark.
|
||||
DarkReader.auto({
|
||||
brightness: 100,
|
||||
contrast: 90,
|
||||
sepia: 10
|
||||
});
|
||||
|
||||
// Stop watching for the system color scheme.
|
||||
DarkReader.auto(false);
|
||||
|
||||
// Get the generated CSS of Dark Reader returned as a string.
|
||||
const CSS = await DarkReader.exportGeneratedCSS();
|
||||
|
||||
// Check if Dark Reader is enabled.
|
||||
const isEnabled = DarkReader.isEnabled();
|
||||
```
|
||||
|
||||
... or if you are using ES modules:
|
||||
|
||||
```javascript
|
||||
import {
|
||||
enable as enableDarkMode,
|
||||
disable as disableDarkMode,
|
||||
auto as followSystemColorScheme,
|
||||
exportGeneratedCSS as collectCSS,
|
||||
isEnabled as isDarkReaderEnabled
|
||||
} from 'darkreader';
|
||||
|
||||
enableDarkMode({
|
||||
brightness: 100,
|
||||
contrast: 90,
|
||||
sepia: 10,
|
||||
});
|
||||
|
||||
disableDarkMode();
|
||||
|
||||
followSystemColorScheme();
|
||||
|
||||
const CSS = await collectCSS();
|
||||
|
||||
const isEnabled = isDarkReaderEnabled();
|
||||
```
|
||||
|
||||
Be aware that Dark Reader will add the `chrome` object onto the `window` object. These are to stub certain functions that the code will use. They originate from the webextension-api.
|
||||
|
||||
## Site fixes
|
||||
|
||||
Automatically syncing the site fixes for every Dark Reader user was disabled because the GitHub team does not allow using GitHub as a content delivery network (CDN). The storage of these files would be expensive, and making requests to other resources would look suspicious. Each new release of Dark Reader will include the new changes.
|
||||
|
||||
However, this can be manually enabled with the following steps:
|
||||
|
||||
1. Click on the Dark Reader extension icon.
|
||||
2. Click on the `Dev tools` button (in the bottom-right corner).
|
||||
3. Go to `Advanced` and click on the `Preview new design` button.
|
||||
4. Close the developer tools window and click on the Dark Reader extension icon again.
|
||||
5. Go to `Settings` -> `Advanced` and enable the `Synchronize sites fixes` setting.
|
||||
|
||||
To force a synchronization of the sites fixes (when the corresponding setting is enabled), perform the following steps:
|
||||
|
||||
1. Click on the Dark Reader extension icon.
|
||||
2. Go to `Settings` -> `Advanced` -> `Dev tools`.
|
||||
3. For each "Editor" section, click on `Reset changes`, confirm with `OK`, and then click on `Apply`. Afterwards, close the developer tools window and reload the desired page(s).
|
||||
|
||||
## Enable Dark Reader on restricted pages on Mozilla Firefox
|
||||
|
||||
By default, Dark Reader does not work on some websites due to **security restrictions** enforced by Mozilla.
|
||||
|
||||
The following instructions will guide you on how to disable those restrictions.
|
||||
|
||||
**Proceed with caution. This exposes you to a security risk if you do not know what you are doing.**
|
||||
|
||||
**Be sure that you do not have any suspicious or malicious-looking extension installed before proceeding.**
|
||||
|
||||
**These settings will apply to all extensions, and not just Dark Reader.**
|
||||
|
||||
Step 1: change Dark Reader's settings.
|
||||
|
||||
1. Click on the Dark Reader extension icon.
|
||||
2. Click on the `Dev tools` button (in the bottom-right corner).
|
||||
3. Go to `Advanced` and click on the `Preview new design` button.
|
||||
4. Close the developer tools window and click on the Dark Reader extension icon again.
|
||||
5. Go to `Settings` -> `Advanced` and enable the `Enable on restricted pages` setting.
|
||||
|
||||
Step 2: change Firefox's settings.
|
||||
|
||||
- Type `about:config` in the address bar and press Enter.
|
||||
- A warning page may appear. Click `Accept the Risk and Continue` to proceed.
|
||||
- Search for and set `extensions.webextensions.restrictedDomains` to an empty value (if the preference does not exist, create it with `String` as the type).
|
||||
- Set `privacy.resistFingerprinting.block_mozAddonManager` to `true` (if the preference does not exist, create it with `Boolean` as the type).
|
||||
|
||||
After changing the necessary settings for both Dark Reader and Firefox, reload the desired page(s).
|
||||
|
||||
**If you had previously changed any of the following preferences, please reset them to their default values as they are only related to security and are not necessary for Dark Reader to work on restricted websites.**
|
||||
To reset them, click on the reset (or delete icon, if present) icon at the most-right corner of the preference line in `about:config`.
|
||||
- `extensions.webextensions.addons-restricted-domains@mozilla.com.disabled`
|
||||
- `extensions.quarantinedDomains.enabled`
|
||||
- `extensions.quarantinedDomains.list`
|
||||
|
||||
### Clarification about quarantined domains ("Run on sites with restrictions" option)
|
||||
<details><summary>Quarantined domains and Dark Reader — an explanation</summary>
|
||||
|
||||
The option "Run on sites with restrictions", present for some extensions, is only related to quarantined domains and is not needed for Dark Reader to work on restricted websites. In the context of Firefox's source code, "restricted domains" and "quarantined domains" are two separate things.
|
||||
|
||||
**The "restricted domains" list** (controlled by the preference `extensions.webextensions.restrictedDomains`) is the same for all users. It will restrict *all* user-installed extensions (without exceptions) from running on the specified websites. The list is controlled by Mozilla, and, as of December 2024, the list only contains Mozilla-owned domains. Sites that are not on that list will not be affected by those restrictions (meaning that the extensions will be able to run normally).
|
||||
|
||||
**The "quarantined domains" list** (controlled by the preferences `extensions.quarantinedDomains.enabled` and `extensions.quarantinedDomains.list`) contains domains that will run extensions normally, but if Firefox detects suspicious activity from a particular extension it will block that extension on those specific websites. The list is controlled by Mozilla, and, as of December 2024, the list only contains domains related to Internet banking in Brazil. For more information about quarantined domains, see "[Why are some add-ons not allowed on sites restricted by Mozilla?](https://support.mozilla.org/en-US/kb/quarantined-domains)".
|
||||
|
||||
For Dark Reader, the option "Run on sites with restrictions" is not shown because Dark Reader is a [Recommended](https://support.mozilla.org/en-US/kb/recommended-extensions-program) extension by Mozilla. (The "Recommended" status is only relevant for "quarantined domains", and does not affect "restricted domains".)
|
||||
|
||||
The fact that it is a Recommended extension means that it meets the "highest standards of security, functionality, and user experience". The quarantined domains are only related to extension security. Because Dark Reader is considered secure by Mozilla, that option is not shown, meaning **it will always run even on quarantined domains** (but will still obey the "restricted domains" list if it is not empty).
|
||||
|
||||
Regarding quarantined domains specifically, there is this [comment from Firefox's source code](https://searchfox.org/mozilla-central/rev/1838f847aa3bf909c3d34a94a8f0cd7e37fca086/toolkit/components/extensions/Extension.sys.mjs#3470-3471):
|
||||
|
||||
```
|
||||
// Privileged extensions and any extensions with a recommendation state are
|
||||
// exempt from the quarantined domains.
|
||||
```
|
||||
|
||||
A simple way to recapitulate all this information is: "restricted domains" exist to protect Mozilla-owned sites (no user-installed extension will run on them, without exceptions), while "quarantined domains" are meant to protect users from malicious extensions (and it doesn't apply to Dark Reader because it is a Recommended extension).
|
||||
|
||||
</details>
|
||||
|
||||
<h2 align="center">Contributors</h2>
|
||||
<br/>
|
||||
<h3 align="center"><strong>Thank you to all our contributors! Dark Reader exists thanks to you.</strong></h3>
|
||||
<br/>
|
||||
<br/>
|
||||
<p align="center"><a rel="noreferrer noopener" href="https://github.com/darkreader/darkreader/graphs/contributors/"><img src="https://opencollective.com/darkreader/contributors.svg?width=890&button=false"/></a></p>
|
||||
|
||||
<h2 align="center">Backers</h2>
|
||||
<br/>
|
||||
<h3 align="center"><strong>Thank you to all our generous backers! </strong>Support Dark Reader by <a rel="noreferrer noopener" href="https://opencollective.com/darkreader" target="_blank">becoming a backer</a>.</h3>
|
||||
<br/>
|
||||
<br/>
|
||||
<p align="center"><a rel="noreferrer noopener" href="https://opencollective.com/darkreader#backers" target="_blank"><img src="https://opencollective.com/darkreader/backers.svg?width=890&limit=1000"></a></p>
|
||||
|
||||
<h2 align="center">Sponsors</h2>
|
||||
<p>Does your company use Dark Reader? Please ask your manager or the marketing team if your company would be interested in supporting our project. Your support will allow the maintainers to dedicate more time to maintenance and creating new features for everyone. Also, your company's logo will show on <a rel="noreferrer noopener" href="https://github.com/darkreader/darkreader#sponsors" target="_blank">GitHub</a>. Who doesn't want a little extra exposure? <a rel="noreferrer noopener" href="https://opencollective.com/darkreader" target="_blank">Here's the info</a>.</p>
|
||||
|
||||
<h3 align="center"><strong>Thank you to all our wonderful sponsors!</strong></h3>
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/0/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/0/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/1/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/1/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/2/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/2/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/3/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/3/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/4/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/4/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/5/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/5/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/6/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/6/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/7/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/7/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/8/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/8/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/9/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/9/avatar.svg"></a>
|
||||
<a href="https://opencollective.com/darkreader/sponsor/10/website" target="_blank" rel="noreferrer noopener"><img src="https://opencollective.com/darkreader/sponsor/10/avatar.svg"></a>
|
||||
Vendored
-11
@@ -1,11 +0,0 @@
|
||||
# Security Policy
|
||||
|
||||
Any security vulnerability discovered in Dark Reader will be fixed as soon as possible with as minimal impact as possible when reported.
|
||||
|
||||
Please ensure you are always running the [latest version available](https://github.com/darkreader/darkreader/releases).
|
||||
|
||||
Some web browser extension stores may have an older version currently published.
|
||||
|
||||
## Security Vulnerability Report
|
||||
|
||||
If you have discovered a security vulnerability, please email us at <darkreaderapp@gmail.com> immediately.
|
||||
Vendored
+9366
File diff suppressed because it is too large
Load Diff
+9048
File diff suppressed because it is too large
Load Diff
@@ -1,51 +0,0 @@
|
||||
This _small_ document to outline the specification of the src/config/color-schemes.drconf
|
||||
which doesn't really follow the standard for other files.
|
||||
|
||||
Spec:
|
||||
- A section is a unique defined colorscheme following the syntax rules.
|
||||
- The file must begin with a section, with the name of "Default" which has both a light and dark variant.
|
||||
- A separator must be placed between new sections, the separator is `'='.repeat(32)`.
|
||||
- A new line must be placed before and after the separator.
|
||||
- All but not the first section should start with a new line(this is the same new line after the separator).
|
||||
- The first keyword in the section(after the possible new line) should be a unique colorscheme name.
|
||||
- After 2 new lines of the first keyword should either be "DARK" or "LIGHT", at least 1 variant should be defined.
|
||||
- If a color scheme has both variants the order should start with "DARK" and then "LIGHT" for consistency.
|
||||
- Within the variants a background color and text color can be defined, both are required.
|
||||
- The syntax of defining background-color and text color should be `{background,text}: #6-or-3-length-hex-color` each on a new line.
|
||||
- The order should start with background-color and then text color for consistency.
|
||||
- The parser will, if found, return the first error, not all of them.
|
||||
- The file always ends with a new line.
|
||||
|
||||
|
||||
Example:
|
||||
```
|
||||
Default
|
||||
|
||||
DARK
|
||||
background: #181a1b
|
||||
text: #e8e6e3
|
||||
|
||||
LIGHT
|
||||
background: #181a1b
|
||||
text: #e8e6e3
|
||||
|
||||
================================
|
||||
|
||||
Dracula
|
||||
|
||||
DARK
|
||||
background: #282b36
|
||||
|
||||
================================
|
||||
|
||||
Nord
|
||||
|
||||
DARK
|
||||
background: #2e3440
|
||||
text: #eceff4
|
||||
|
||||
LIGHT
|
||||
background: #eceff4
|
||||
text: 3b4252
|
||||
|
||||
```
|
||||
-38
@@ -1,38 +0,0 @@
|
||||
// @ts-check
|
||||
|
||||
/**
|
||||
* @type {{[ruleName: string]: import('eslint').Rule.RuleModule}}
|
||||
*/
|
||||
export const localRules = {
|
||||
'jsx-uses-m-pragma': {
|
||||
create(context) {
|
||||
const pragma = 'm';
|
||||
const usePragma = () => context.markVariableAsUsed(pragma);
|
||||
return {
|
||||
JSXOpeningElement: usePragma,
|
||||
JSXOpeningFragment: usePragma,
|
||||
};
|
||||
},
|
||||
},
|
||||
'jsx-uses-vars': {
|
||||
create(context) {
|
||||
return {
|
||||
/**
|
||||
* @param {{ name: any; }} node
|
||||
*/
|
||||
JSXOpeningElement(node) {
|
||||
let variable;
|
||||
const jsxTag = node.name;
|
||||
if (jsxTag.type === 'JSXIdentifier') {
|
||||
variable = jsxTag.name;
|
||||
} else if (jsxTag.type === 'JSXMemberExpression') {
|
||||
variable = jsxTag.object.name;
|
||||
} else {
|
||||
console.warn('Unsupported JSX identifier', jsxTag);
|
||||
}
|
||||
context.markVariableAsUsed(variable);
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
};
|
||||
-265
@@ -1,265 +0,0 @@
|
||||
// @ts-check
|
||||
|
||||
import {fixupPluginRules} from '@eslint/compat';
|
||||
import eslint from '@eslint/js';
|
||||
import stylistic from '@stylistic/eslint-plugin';
|
||||
import * as eslintPluginCompat from 'eslint-plugin-compat';
|
||||
import * as eslintPluginImport from 'eslint-plugin-import';
|
||||
import globals from 'globals';
|
||||
import tslint from 'typescript-eslint';
|
||||
import {localRules} from './eslint-plugin-local.js';
|
||||
|
||||
export default tslint.config({
|
||||
files: [
|
||||
'**/*.js',
|
||||
'**/*.ts',
|
||||
'**/*.tsx',
|
||||
],
|
||||
ignores: [
|
||||
'build/**',
|
||||
'darkreader.js',
|
||||
'darkreader.mjs',
|
||||
'node_modules/**',
|
||||
'tests/coverage/**',
|
||||
'**/compatibility.js',
|
||||
],
|
||||
extends: [
|
||||
eslint.configs.recommended,
|
||||
tslint.configs.recommended,
|
||||
eslintPluginImport.flatConfigs?.recommended,
|
||||
eslintPluginImport.flatConfigs?.typescript,
|
||||
],
|
||||
plugins: {
|
||||
'@stylistic': stylistic,
|
||||
local: fixupPluginRules({
|
||||
rules: localRules,
|
||||
}),
|
||||
},
|
||||
settings: {
|
||||
'import/resolver': {
|
||||
node: {
|
||||
extensions: ['.js', '.jsx', '.ts', '.tsx'],
|
||||
},
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
'array-bracket-spacing': ['error', 'never'],
|
||||
'arrow-parens': ['error', 'always'],
|
||||
'block-spacing': ['error', 'always'],
|
||||
'brace-style': 'error',
|
||||
'comma-spacing': 'error',
|
||||
curly: 'error',
|
||||
'eol-last': ['error', 'always'],
|
||||
eqeqeq: ['error', 'smart'],
|
||||
|
||||
indent: ['error', 4, {
|
||||
SwitchCase: 1,
|
||||
}],
|
||||
|
||||
'jsx-quotes': ['error', 'prefer-double'],
|
||||
'keyword-spacing': 'error',
|
||||
'object-curly-spacing': ['error', 'never'],
|
||||
'operator-assignment': ['error', 'always'],
|
||||
'prefer-template': 'error',
|
||||
'no-debugger': 'error',
|
||||
'no-else-return': 'error',
|
||||
'no-empty': ['error', {allowEmptyCatch: true}],
|
||||
'no-empty-pattern': 'off',
|
||||
'no-cond-assign': 'error',
|
||||
'no-lonely-if': 'error',
|
||||
'no-multiple-empty-lines': 'error',
|
||||
'no-multi-spaces': 'error',
|
||||
'no-implicit-coercion': 'error',
|
||||
'no-prototype-builtins': 'off',
|
||||
'no-redeclare': 'error',
|
||||
'no-useless-concat': 'error',
|
||||
'no-useless-escape': 'off',
|
||||
'no-useless-return': 'error',
|
||||
'no-trailing-spaces': 'error',
|
||||
'no-whitespace-before-property': 'error',
|
||||
'padded-blocks': ['error', 'never'],
|
||||
|
||||
'padding-line-between-statements': ['error', {
|
||||
blankLine: 'always',
|
||||
prev: 'function',
|
||||
next: 'function',
|
||||
}],
|
||||
|
||||
'prefer-exponentiation-operator': 'error',
|
||||
'prefer-regex-literals': 'error',
|
||||
semi: 'error',
|
||||
|
||||
'space-before-function-paren': ['error', {
|
||||
anonymous: 'always',
|
||||
asyncArrow: 'always',
|
||||
named: 'never',
|
||||
}],
|
||||
|
||||
'space-in-parens': ['error', 'never'],
|
||||
'space-infix-ops': 'error',
|
||||
|
||||
'spaced-comment': ['error', 'always', {
|
||||
exceptions: ['-'],
|
||||
}],
|
||||
|
||||
'@typescript-eslint/array-type': ['error', {
|
||||
default: 'array-simple',
|
||||
}],
|
||||
|
||||
yoda: ['error', 'never'],
|
||||
'@stylistic/brace-style': 'error',
|
||||
|
||||
'@stylistic/comma-dangle': ['error', {
|
||||
arrays: 'always-multiline',
|
||||
objects: 'always-multiline',
|
||||
imports: 'always-multiline',
|
||||
exports: 'always-multiline',
|
||||
functions: 'only-multiline',
|
||||
}],
|
||||
|
||||
'@stylistic/comma-spacing': ['error', {
|
||||
before: false,
|
||||
after: true,
|
||||
}],
|
||||
|
||||
'@typescript-eslint/consistent-type-assertions': 'error',
|
||||
'@typescript-eslint/consistent-type-imports': 'error',
|
||||
'@typescript-eslint/explicit-module-boundary-types': 'off',
|
||||
'@stylistic/function-call-spacing': ['error', 'never'],
|
||||
'@stylistic/keyword-spacing': ['error', {
|
||||
after: true,
|
||||
before: true,
|
||||
}],
|
||||
|
||||
'@stylistic/member-delimiter-style': 'error',
|
||||
'@typescript-eslint/no-empty-object-type': 'off',
|
||||
'@typescript-eslint/no-explicit-any': 'off',
|
||||
'@typescript-eslint/no-non-null-assertion': 'off',
|
||||
'@typescript-eslint/no-redeclare': 'error',
|
||||
'@typescript-eslint/no-unused-expressions': 'off',
|
||||
'@typescript-eslint/no-unused-vars': ['error', {caughtErrors: 'none', argsIgnorePattern: '^_'}],
|
||||
'@stylistic/semi': ['error', 'always'],
|
||||
|
||||
'@stylistic/quotes': ['error', 'single', {
|
||||
allowTemplateLiterals: 'always',
|
||||
avoidEscape: true,
|
||||
}],
|
||||
|
||||
'import/no-duplicates': 'error',
|
||||
|
||||
/*
|
||||
'import/no-unresolved': ['error', {
|
||||
ignore: [
|
||||
'^generators\/',
|
||||
'^malevic\/',
|
||||
'^plus\/',
|
||||
'^ui\/',
|
||||
'^utils\/',
|
||||
],
|
||||
}],
|
||||
*/
|
||||
'import/no-unresolved': 'off',
|
||||
|
||||
'import/no-restricted-paths': ['error', {
|
||||
zones: [{
|
||||
target: './src/inject/',
|
||||
from: './src/background/',
|
||||
}, {
|
||||
target: './src/inject/',
|
||||
from: './src/ui/',
|
||||
}, {
|
||||
target: './src/inject/',
|
||||
from: './src/api/',
|
||||
}, {
|
||||
target: './src/inject/',
|
||||
from: './tests/',
|
||||
}, {
|
||||
target: './src/background/',
|
||||
from: './src/ui/',
|
||||
}, {
|
||||
target: './src/background/',
|
||||
from: './tests/',
|
||||
}, {
|
||||
target: './src/ui/',
|
||||
from: './src/inject/',
|
||||
}, {
|
||||
target: './src/ui/',
|
||||
from: './src/background/',
|
||||
}, {
|
||||
target: './src/ui/',
|
||||
from: './tests/',
|
||||
}, {
|
||||
target: './src/generators/',
|
||||
from: './src/inject/',
|
||||
}, {
|
||||
target: './src/generators/',
|
||||
from: './src/background/',
|
||||
}, {
|
||||
target: './src/generators/',
|
||||
from: './src/ui/',
|
||||
}],
|
||||
}],
|
||||
|
||||
'local/jsx-uses-m-pragma': 'error',
|
||||
'local/jsx-uses-vars': 'error',
|
||||
},
|
||||
}, {
|
||||
files: [
|
||||
'**/darkreader.js',
|
||||
'**/darkreader.mjs',
|
||||
],
|
||||
extends: [
|
||||
eslintPluginCompat.config['flat/recommended'],
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
ecmaVersion: 2020,
|
||||
sourceType: 'module',
|
||||
},
|
||||
settings: {
|
||||
polyfills: [
|
||||
'navigator.deviceMemory',
|
||||
'navigator.userAgentData',
|
||||
],
|
||||
},
|
||||
rules: {
|
||||
'compat/compat': ['error', [
|
||||
'>0.5% and supports es5 and supports promises and supports url',
|
||||
'not Explorer > 0',
|
||||
].join(', ')],
|
||||
},
|
||||
}, {
|
||||
files: [
|
||||
'build/debug/chrome/**/*.js',
|
||||
],
|
||||
extends: [
|
||||
eslintPluginCompat.config['flat/recommended'],
|
||||
],
|
||||
languageOptions: {
|
||||
globals: {
|
||||
...globals.browser,
|
||||
},
|
||||
ecmaVersion: 2020,
|
||||
sourceType: 'module',
|
||||
},
|
||||
settings: {
|
||||
polyfills: [
|
||||
'navigator.deviceMemory',
|
||||
'navigator.userAgentData',
|
||||
],
|
||||
},
|
||||
rules: {
|
||||
'compat/compat': ['error', [
|
||||
'> 0.5% and supports es5',
|
||||
'Firefox ESR',
|
||||
'last 2 FirefoxAndroid versions',
|
||||
'not Explorer > 0',
|
||||
'not Safari > 0',
|
||||
'not iOS > 0',
|
||||
'not ChromeAndroid > 0',
|
||||
'not OperaMini all',
|
||||
].join(', ')],
|
||||
},
|
||||
});
|
||||
-10
@@ -1,10 +0,0 @@
|
||||
# Digital signature files
|
||||
|
||||
This directory contains digital signature files provided by Firefox Add-ons store and bits of metadata necessary for creating a valid signed release file. Currently only Firefox files are provided.
|
||||
|
||||
This information is sufficient for creating release files which are accepted by Firefox, but these files may differ from the ones published on Firefox Add-ons store. Specifically the following information is omitted because it is not checked during installation:
|
||||
- Files which we pack are always valid. Older official releases may fail to be unpacked by streaming zip readers, since archives can contain contradictory metadata about file contents (the index at the end of archive is considered authoritative in this case). Apparently Mozilla used to create slightly broken bundles, but no longer does.
|
||||
- Archives contain a timestamp field and permission flags for each file. These are not checked, make no sense in the context of released extension, and therefore omitted.
|
||||
- Archives can have different levels of compression. Firefox validates the decompressed contents, so this information is also omitted. In practice, users may want to pick different levels of compression (e.g., almost no compression for building locally, and loading a single file into Firefox on the same machine, or highly compressed file for uploading to file hosting).
|
||||
|
||||
Only Firefox archives are supported right now.
|
||||
@@ -1,3 +0,0 @@
|
||||
cose.sig binary
|
||||
mozilla.rsa binary
|
||||
mozilla-recommendation.json binary
|
||||
@@ -1 +0,0 @@
|
||||
{"type":0,"manifest":{"indent":4},"order":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,23,24,17,18,19,20,21,22,25,26,27,28,29,30,31,32,33]}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":0,"manifest":{"indent":4},"order":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,23,24,17,18,19,20,21,22,25,26,27,28,29,30,31,32,33]}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
@@ -1 +0,0 @@
|
||||
{"type":1,"manifest":{"indent":4}}
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user