Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 13 additions & 4 deletions docs/_layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -92,10 +92,11 @@
<p class="tagline">{{ site.tagline }}</p>
<nav class="nav" aria-label="Primary">
<a href="{{ '/' | relative_url }}">Overview</a>
<a href="{{ '/getting-started' | relative_url }}">Getting started</a>
<a href="{{ '/development' | relative_url }}">Development</a>
<a href="{{ '/community' | relative_url }}">Community</a>
<a href="{{ '/privacy' | relative_url }}">Privacy</a>
<a href="{{ '/features' | relative_url }}">Features</a>
<a href="{{ '/google-sheets-dark-mode' | relative_url }}">Dark mode guide</a>
<a href="{{ '/getting-started' | relative_url }}">Install</a>
<a href="{{ '/faq' | relative_url }}">FAQ</a>
<a href="{{ '/troubleshooting' | relative_url }}">Troubleshooting</a>
<a class="ext" href="https://github.com/crypto-frog/darkkle">GitHub</a>
</nav>
</div>
Expand All @@ -107,6 +108,14 @@

<footer class="footer" role="contentinfo">
<div class="wrap">
<nav class="footnav" aria-label="Secondary">
<a href="{{ '/about' | relative_url }}">About</a>
<a href="{{ '/community' | relative_url }}">Community</a>
<a href="{{ '/development' | relative_url }}">Development</a>
<a href="{{ '/privacy' | relative_url }}">Privacy</a>
<a href="https://github.com/crypto-frog/darkkle/releases">Releases</a>
<a href="https://github.com/crypto-frog/darkkle/discussions">Discussions</a>
</nav>
<p>Darkkle is free software under the <a href="https://github.com/crypto-frog/darkkle/blob/main/LICENSE">Mozilla Public License 2.0</a>. Maintained by volunteers; no support, compatibility, or release schedule is promised.</p>
<p>Darkkle is not affiliated with, endorsed by, or sponsored by Google. Google Sheets is a trademark of Google LLC, referenced only to describe compatibility.</p>
</div>
Expand Down
84 changes: 84 additions & 0 deletions docs/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
layout: default
title: About the project
description: >-
What Darkkle is, how it is built, how it is licensed and governed, how it is
distributed, and what its limitations are. An independent, volunteer-run open
source project, not affiliated with Google.
---

# About the project

Darkkle is an independent, open-source browser extension that gives the Google Sheets web app a true-black, configurable dark theme.

## What it is

Darkkle began as a practical attempt to make long spreadsheet sessions more comfortable. It has grown into a configurable theming layer with coordinated tints, grid and border controls, per-spreadsheet profiles, settings backup and restore, a pinned settings panel, and specialised handling for the canvas-rendered grid.

The current release is **2.3.0**.

## How it is built

Darkkle is deliberately lightweight:

- plain JavaScript, HTML, and CSS;
- **no runtime package dependencies**;
- no bundler;
- **no remotely hosted executable code**;
- a small Node-based validation and packaging toolchain used only for development.

The technically distinctive part is `canvas-hook.js`, which runs early in the page and wraps selected canvas drawing operations. That is what allows the grid itself to be recoloured rather than only the surrounding interface. The [architecture document](https://github.com/crypto-frog/darkkle/blob/main/ARCHITECTURE.md) explains the design.

## Licence

Darkkle is distributed under the **Mozilla Public License 2.0**. In practical terms the licence permits use, modification, redistribution, and commercial distribution, while requiring that distributed modifications to MPL-covered source files remain available under the MPL. The licence text controls if this summary differs from it.

Project names and logos are addressed separately in [TRADEMARKS.md](https://github.com/crypto-frog/darkkle/blob/main/TRADEMARKS.md).

## Governance and maintenance

Darkkle uses transparent, volunteer governance. Maintainer roles can be granted to contributors who demonstrate sound judgment, respectful conduct, reliable testing, and sustained useful work. Access begins at the lowest level needed and expands only with demonstrated contribution history.

**The project is honest about its limits.** The repository owner retains administrative control but does not undertake to maintain Darkkle regularly. There is no promised response time, fix, compatibility guarantee, or release schedule. A delay is not a rejection.

This is stated openly rather than hidden behind optimistic language, so that anyone deciding whether to rely on Darkkle can make that decision with accurate information.

Read [GOVERNANCE.md](https://github.com/crypto-frog/darkkle/blob/main/GOVERNANCE.md), [MAINTENANCE.md](https://github.com/crypto-frog/darkkle/blob/main/MAINTENANCE.md), and [CODE_OF_CONDUCT.md](https://github.com/crypto-frog/darkkle/blob/main/CODE_OF_CONDUCT.md).

## Distribution

Darkkle is distributed as an extension ZIP through [GitHub Releases](https://github.com/crypto-frog/darkkle/releases) and installed unpacked. Every release ships a SHA-256 checksum file so the archive can be verified before installing.

Releases are labelled. A release marked **Pre-release** has not completed the browser test checklist; its notes state exactly what was and was not verified.

## Privacy stance

Darkkle has no developer-operated server, no account system, no analytics, no advertising, and no remote code loader. It requests only the `storage` permission plus narrow host access to the spreadsheet web app.

Adding telemetry, remote configuration, broad permissions, or new network destinations requires explicit public privacy and security review before it can be merged. That is a documented rule, not an informal preference.

See the [privacy summary]({{ '/privacy' | relative_url }}) and [PRIVACY.md](https://github.com/crypto-frog/darkkle/blob/main/PRIVACY.md).

## Known limitations

Stated plainly:

- The spreadsheet's canvas behaviour is **private and undocumented**, so a Google interface update can break theming without warning.
- **Firefox compatibility has not been established** and is not claimed. Darkkle targets Chromium-based browsers.
- Row and column header highlighting is the most fragile area and needs regression testing after browser or interface updates.
- Highly desaturated custom cell colours can be hard to distinguish from interface greys.

[KNOWN_ISSUES.md](https://github.com/crypto-frog/darkkle/blob/main/KNOWN_ISSUES.md) is kept current.

## Independence

Darkkle is **not affiliated with, endorsed by, or sponsored by Google**. Google Sheets is a trademark of Google LLC and is referenced only to describe compatibility. Darkkle is not a Google product and does not represent Google in any capacity.

## Contribute

Darkkle is intended to outgrow dependence on any one person. Bug reproduction, release testing, documentation, accessibility work, code review, and future maintainers are all welcome.

- [Community guide]({{ '/community' | relative_url }})
- [Development overview]({{ '/development' | relative_url }})
- [Contribution guide](https://github.com/crypto-frog/darkkle/blob/main/CONTRIBUTING.md)
- [Roadmap](https://github.com/crypto-frog/darkkle/blob/main/ROADMAP.md)
5 changes: 5 additions & 0 deletions docs/assets/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,8 @@ img { max-width: 100%; height: auto; }
@media (prefers-reduced-motion: reduce) {
* { animation: none !important; transition: none !important; }
}

/* Secondary navigation in the footer */
.footnav { display: flex; flex-wrap: wrap; gap: .25rem 1.1rem; margin-bottom: 1rem; }
.footnav a { color: var(--ink-dim); text-decoration: none; font-size: .9rem; }
.footnav a:hover { color: var(--accent); text-decoration: underline; }
86 changes: 86 additions & 0 deletions docs/faq.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
layout: default
title: Frequently asked questions
description: >-
Answers about Darkkle: what it costs, which browsers it supports, whether it
collects data, how it differs from generic dark-mode extensions, why it is not
on the Chrome Web Store, and who maintains it.
faq:
- q: What is Darkkle?
a: >-
Darkkle is a free, open-source Manifest V3 browser extension that applies a
true-black, configurable dark theme to the Google Sheets web app, including
the canvas-rendered grid itself. It is licensed under the Mozilla Public
License 2.0 and maintained by volunteers.
- q: Does Darkkle cost anything?
a: >-
No. Darkkle is free and open source. There is no paid tier, subscription,
account, trial, or upsell.
- q: Which browsers does Darkkle support?
a: >-
Darkkle targets Chromium-based browsers and declares a minimum of Chrome
111, which covers Google Chrome and Microsoft Edge. Firefox compatibility
has not been established and is not claimed. Community testing across
browser versions is still in progress.
- q: Does Darkkle read or send my spreadsheet data?
a: >-
No. Darkkle has no developer-operated server, account system, analytics
SDK, advertising SDK, or remote code loader. It requests only the storage
permission plus narrow host access to the spreadsheet web app. Settings
stay in your own browser. Because the rendering hook runs inside the page
and observes canvas drawing, it may encounter rendered text during normal
execution, but the project does not retain or transmit that content.
- q: Why is Darkkle not on the Chrome Web Store?
a: >-
Darkkle is currently distributed as an unpacked extension ZIP through
GitHub Releases. A store listing is not promised. Installing means enabling
Developer mode in the browser and using Load unpacked.
- q: How is Darkkle different from a generic dark mode extension?
a: >-
Generic dark-mode extensions restyle HTML elements. The Google Sheets grid
is painted onto an HTML canvas, which those extensions cannot restyle, so
the sheet usually stays white while the menus turn dark. Darkkle hooks the
canvas drawing operations themselves, which is what allows the grid, the
selection, and the row and column headers to be recoloured.
- q: Will Darkkle change my data or formatting?
a: >-
No. Darkkle changes rendering only. It does not modify formulas, values,
comments, or stored spreadsheet formatting. Turning it off restores the
normal appearance.
- q: Does Darkkle work on Google Docs or Slides?
a: >-
No. Darkkle targets the Google Sheets web app. It also applies interface
styling to Calendar, Keep, Contacts, and Tasks companion panels when they
appear inside the spreadsheet workspace.
- q: Why do my settings not sync between Chrome and Edge?
a: >-
Chrome and Microsoft Edge use separate browser-account sync services that
do not exchange data. Use the export and import feature to move profiles
between them.
- q: Who maintains Darkkle and is it actively supported?
a: >-
Darkkle is maintained by volunteers. The repository owner may be
unavailable for extended periods and does not promise response times,
fixes, compatibility, or release dates. Contributors, testers, and future
maintainers are welcome.
- q: Is Darkkle affiliated with Google?
a: >-
No. Darkkle is independent software, not affiliated with, endorsed by, or
sponsored by Google. Google Sheets is a trademark of Google LLC and is
referenced only to describe compatibility.
---

# Frequently asked questions

{% for item in page.faq %}
## {{ item.q }}

{{ item.a }}
{% endfor %}

## Still stuck?

- [Troubleshooting]({{ '/troubleshooting' | relative_url }}) covers specific symptoms step by step.
- [Discussions](https://github.com/crypto-frog/darkkle/discussions) has a Q&A area for usage questions.
- [Issues](https://github.com/crypto-frog/darkkle/issues/new/choose) is for reproducible defects, using the structured forms.
- Security problems should use GitHub's [private vulnerability reporting](https://github.com/crypto-frog/darkkle/security) rather than a public issue.
90 changes: 90 additions & 0 deletions docs/features.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
layout: default
title: Features
description: >-
What Darkkle does: true-black and soft-black themes, coordinated tints, canvas
aware row and column header highlighting, per-spreadsheet profiles, portable
settings backup, and a pinned settings panel.
---

# Features

Darkkle is a dark theme for the Google Sheets web app. Everything below runs locally in your browser.

## Appearance

### Backgrounds and text

Choose **pure black** or **soft black** for the sheet background, and **white** or **soft white** for text. Pure black suits OLED displays and very dim rooms. Soft black reduces the contrast step between the sheet and the surrounding interface.

Greys have three strengths — **subtle**, **normal**, and **strong** — controlling how far neutral interface greys move.

### Coordinated theme tints

Picking a theme tint links four things at once: the selection colour, the row and column header highlight, the faint cell lines, and a coordinated drawn-border colour. Twelve tints are available, and every individual part can still be overridden afterwards.

The two quick styles, **Simple Dark** and **Tinted**, are starting points rather than locked modes. Any detailed control you change overrides them.

### Cell lines and borders

Cell lines can be **faint**, **grey**, or **bright**, using either the theme colour or a custom colour. Borders you drew yourself can be rendered white, matched to the theme, or set to a custom colour.

### Your colours are preserved

This is the design rule that matters most. Darkkle transforms **neutral** interface colours and leaves **non-neutral** colours you chose yourself as they are. A cell you filled amber stays amber. Conditional formatting keeps its meaning.

The trade-off is honest: a highly desaturated custom colour can be hard to distinguish from an interface grey, because it genuinely is close to one.

## Canvas-aware header highlighting

When you select cells, the spreadsheet highlights the matching row numbers and column letters. Doing that correctly on a dark background is the hardest part of theming a canvas grid.

Version 2.3.0 carries a substantial repair covering:

- selected row numbers and column letters staying readable rather than being painted over;
- one consistent highlight colour across both headers;
- no compressed or stranded highlight left at a viewport edge after scrolling;
- no stale geometry reapplied to a retained canvas layer;
- correct behaviour across single cells, ranges, whole rows and columns, shift-extended selections, and multi-range selections.

This area remains sensitive to spreadsheet interface changes. See [Known issues](https://github.com/crypto-frog/darkkle/blob/main/KNOWN_ISSUES.md).

## Per-spreadsheet profiles

Settings are saved **per spreadsheet**, not globally. A dense financial model can use strong greys and bright lines while a simple list uses a softer look, and each reopens the way you left it.

Profiles are mirrored to local and browser-sync storage where the browser supports it, with a page-local recovery copy.

## Settings backup and restore

Export a portable JSON backup of all settings and import it elsewhere. This is the dependable way to move profiles between Chrome and Edge, because those browsers use separate sync services that do not talk to each other.

Backups contain settings and spreadsheet identifiers. Review a backup before sharing it.

## Pinned settings panel

Selecting the toolbar icon opens the settings panel **pinned beside the spreadsheet** rather than as a popup that closes when you click away. You can adjust settings and watch the sheet change without the panel disappearing.

Most changes preview immediately. After a change, click once in the grid; that focus handoff completes any retained-canvas update.

## Keyboard shortcut

`Alt+Shift+N` toggles the theme, when the combination is not already claimed by the operating system or another extension.

## What Darkkle does not do

Deliberate omissions:

- No developer-operated server, account, or login.
- No analytics, telemetry, advertising, or usage tracking.
- No remotely loaded code.
- No access to browsing history, downloads, clipboard, cookies, or other websites.
- No modification of your formulas, values, comments, or stored formatting — it changes rendering only.

The full declaration is in [Permissions](https://github.com/crypto-frog/darkkle/blob/main/PERMISSIONS.md) and the [privacy summary]({{ '/privacy' | relative_url }}).

## Next

- [How to get dark mode in Google Sheets]({{ '/google-sheets-dark-mode' | relative_url }})
- [Install guide]({{ '/getting-started' | relative_url }})
- [Troubleshooting]({{ '/troubleshooting' | relative_url }})
Loading