Development
Darkkle uses plain JavaScript, HTML, and CSS. The extension has no bundled runtime library and no bundler requirement. Node.js is used only for repository validation and deterministic release packaging.
Important files
canvas-hook.jsintercepts selected canvas operations in the page’s MAIN world.content.jsapplies interface theming and coordinates the pinned panel.color.jscontains shared colour transformations.storage.jshandles per-spreadsheet profiles, migration, backup, and restore.popup.*implements the settings interface.theme.cssprovides early static interface styling.background.jshandles migration, the keyboard shortcut, and restricted stylesheet fetching.
Local checks
From the repository root:
npm run check
This validates the repository and builds the installable release ZIP under dist/.
Automated checks do not establish that spreadsheet rendering is correct. Use a blank or fabricated spreadsheet and complete the relevant sections of the project’s browser test checklist.
High-risk areas
The spreadsheet grid relies on private canvas behaviour that can change without notice. Changes to header and selection handling should be tested across scrolling, zoom, frozen panes, multi-cell and multi-range selections, focus changes, and retained canvas layers.
Storage migrations are also high risk. Historical backup identifiers and internal storage prefixes remain for compatibility. Do not rename them without a migration and regression tests.
Pull requests
Keep changes focused. Explain privacy, permission, networking, performance, and compatibility effects. State the exact browser versions and operating systems tested. AI-assisted code is welcome only when the contributor understands and tests it.