Shimmering Focus is written in vanilla CSS and welcomes contributions from the community. Whether you want to patch a bug, add styling for a new plugin, or improve the mobile experience, the source is well-organized and the build process is fully automated via GitHub Actions — so getting started requires nothing more than a text editor and a GitHub account.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/chrisgrieser/shimmering-focus/llms.txt
Use this file to discover all available pages before exploring further.
Contribution Scope
Welcome Contributions
- Bug fixes for existing styling
- Support for additional community plugins
- Mobile display improvements
- Color scheme additions (submitted via GitHub Discussions)
Discuss First
Entirely new features should be proposed before implementation. Open a Draft PR or a GitHub Issue to align on scope before writing code.
Source Structure
All CSS source files live in thesource/ directory of the repository. Do not edit theme.css at the repo root directly — it is compiled output and will be overwritten by the GitHub Action on every push.
Style Settings YAML
When adding new user-facing customization options, editsource/style-settings.yaml. This file is appended to the compiled theme.css inside a /* @settings … */ block so that the Style Settings plugin can parse it.
Build Process
The theme useslightning-css for syntax lowering, which means you can write modern CSS in the source files and the compiled output remains compatible with older Obsidian installer versions.
Modern CSS features you can use freely in source files:
- CSS Nesting —
lightning-csslowers it for compatibility :has()selector — supported from Obsidian installer version 1.1.9+
chrome 108 (corresponding to Obsidian installer 1.1.9).
The GitHub Actions workflow (build-and-bump.yml) runs on every push to main that touches the source/ directory and performs the following steps automatically:
- Concatenates all
source/**/*.cssfiles in alphabetical (numbered) order - Runs
lightning-css --minify --browserslistfor syntax lowering and minification - Writes a
/* header */comment block fromsource/header.txt, then appends the minified CSS - Appends the Style Settings YAML block from
source/style-settings.yamlinside a/* @settings … */block - Runs
doiuseto check for unsupported CSS features against the browser target - Bumps the patch version in
manifest.json - Updates the download count badge in
README.md - Regenerates
Changelog.mdfrom the git log - Commits the updated
theme.css,manifest.json,README.md, andChangelog.mdback tomain
Development Workflow
Fork and clone the repository
Fork chrisgrieser/shimmering-focus on GitHub and clone your fork locally.
Install dependencies (optional, for local checks)
The two dev dependencies are
lightningcss-cli (the compiler) and doiuse (CSS compatibility checker). They are only needed if you want to run a local build or lint check.Edit CSS source files
Make your changes inside the appropriate subdirectory of
source/. For example, to fix a plugin styling issue, edit source/6-plugins/community_plugins.css. To add a Style Settings option, also update source/style-settings.yaml.Local build and hot-reload (optional)
If you have a local Obsidian vault configured, you can use the There is also a formatter task for non-CSS files (uses
just task runner to build and hot-reload without pushing to GitHub. The personal-build-and-reload task concatenates all source CSS and copies the result into every vault listed in ~/.config/perma-repos.csv.biome):The local build task uses
zsh-style globbing and is intended for macOS development. The canonical build runs on GitHub Actions (which uses bash). Both produce identical output because CSS files are stored exactly two levels deep inside source/.Commit with a semantic commit message
Commit messages must follow the Conventional Commits format. PR titles are validated automatically by the
semantic-pr-title workflow. Allowed types are:| Type | Use for |
|---|---|
fix | Bug fixes |
feat | New styling features |
improv | Improvements to existing styling |
refactor | Code reorganization without behavioral change |
chore | Maintenance tasks |
docs | Documentation updates |
break | Breaking changes (removed settings, etc.) |
revert | Reverting a previous commit |
Push and open a Pull Request
Push your branch to your fork and open a Pull Request against
main. If you are proposing a new feature rather than a bug fix, open it as a Draft PR first so the scope can be discussed before review.Once the PR is merged, the GitHub Action compiles the source automatically and commits the updated theme.css — no manual build step is required.Tooling Reference
lightning-css
CSS compiler and minifier. Handles syntax lowering of modern CSS (nesting,
:has()) to the chrome 108 browser target. Configured via BROWSERSLIST environment variable in the workflow.doiuse
CSS compatibility checker. Validates
theme.css against the browser target after compilation. Ignored rules are listed in .doiuse-ignore.json (css-text-indent, text-decoration).biome
Code formatter for non-CSS files (YAML, JSON, Markdown). Configured in
biome.jsonc. Excludes theme.css from formatting. Run locally with just biome-check-and-format.GitHub Actions
Four workflows:
build-and-bump (main build), rumdl-lint (Markdown linting), semantic-pr-title (PR title validation), and stale-bot (auto-closes issues inactive for ~6 months).Filing Issues and Feature Requests
For questions, bug reports, or feature requests, please open an issue on GitHub using one of the provided issue templates. Issue templates are located in.github/ISSUE_TEMPLATE/.
Due to the volume of messages received, inquiries made outside of GitHub (e.g. via email or social media) cannot be responded to. GitHub Issues is the only supported channel.