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
41 changes: 41 additions & 0 deletions .github/workflows/release-themes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,13 @@ jobs:
- name: Package Home Assistant
run: cp themes/warm-burnout.yaml warm-burnout-home-assistant.yaml

- name: Package Obsidian
run: |
cd obsidian
zip -j ../warm-burnout-obsidian.zip \
theme.css \
manifest.json

- name: Package JetBrains
run: |
cd jetbrains
Expand All @@ -137,6 +144,7 @@ jobs:
warm-burnout-tmux.zip
warm-burnout-eza.zip
warm-burnout-home-assistant.yaml
warm-burnout-obsidian.zip
jetbrains/warm-burnout-theme.jar

- name: Publish to JetBrains Marketplace
Expand All @@ -149,3 +157,36 @@ jobs:
https://plugins.jetbrains.com/api/updates/upload
env:
JETBRAINS_TOKEN: ${{ secrets.JETBRAINS_TOKEN }}

sync-obsidian-mirror:
needs: [validate]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Sync to mirror repo
env:
MIRROR_DEPLOY_KEY: ${{ secrets.OBSIDIAN_MIRROR_DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh
echo "$MIRROR_DEPLOY_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key
export GIT_SSH_COMMAND="ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no"

git clone [email protected]:felipefdl/warm-burnout-obsidian.git mirror
cp obsidian/theme.css mirror/
cp obsidian/manifest.json mirror/
cp obsidian/README.md mirror/
cp LICENSE mirror/

cd mirror
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A
if git diff --cached --quiet; then
echo "No changes to sync"
else
git commit -m "Sync from warm-burnout ${GITHUB_REF_NAME}"
git tag "${GITHUB_REF_NAME}"
git push origin main --tags
fi
6 changes: 6 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ warm-burnout/
windows_terminal.rs # Windows Terminal theme validation tests
tmux.rs # tmux theme validation tests
zsh.rs # Zsh theme validation tests
obsidian.rs # Obsidian theme validation tests
.github/workflows/
validate.yml # CI: run theme validation on push/PR
release-vscode.yml # VS Code extension release workflow
Expand Down Expand Up @@ -133,6 +134,11 @@ warm-burnout/
light.yml # Light variant
README.md # eza install instructions
AGENTS.md # eza-specific agent rules
obsidian/ # Obsidian community theme
theme.css # Dark + light variants (CSS custom properties)
manifest.json # Community theme manifest
README.md # Obsidian install instructions
AGENTS.md # Obsidian-specific agent rules
screenshots/ # Theme preview screenshots
AGENTS.md # Screenshot-specific agent rules
generate.mjs # Playwright script to render HTML -> PNG
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ Inspired by materials that age well. Unlike your eyes.
| Zsh | Available | [`zsh/`](zsh/) |
| Home Assistant | Available | [`home-assistant/`](home-assistant/) |
| eza | Available | [`eza/`](eza/) |
| Obsidian | Available | [`obsidian/`](obsidian/) |

Each platform lives in its own directory with its own README, build process, and release workflow.

Expand Down
54 changes: 54 additions & 0 deletions obsidian/AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Obsidian -- Agent Instructions

## Platform Reference

See the root [`AGENTS.md`](../AGENTS.md) for the canonical palette, design principles, and brand rules. Do not duplicate palette tables here.

## Obsidian Theme Format

- Obsidian community themes consist of `theme.css` and `manifest.json` at the repo/directory root.
- Both dark and light variants live in a single `theme.css`, switched via `.theme-dark` / `.theme-light` body class selectors.
- `manifest.json` contains name, version, minAppVersion, author, and optional authorUrl.

## CSS Architecture

The theme uses a four-layer CSS custom property system:

1. **Palette layer** (`--wb-*`): Canonical hex values inside `.theme-dark` / `.theme-light`. Only place raw hex appears. Test harness reads from these.
2. **Base mapping**: Maps `--wb-*` into Obsidian's `--color-base-*` ramp (13 steps) and `--color-*` extended colors.
3. **Code syntax**: `--code-*` variables mapped to `--wb-*` for both CodeMirror 6 and Prism.js. Additional `.token.*` rules for reading view.
4. **Warmth tweaks**: Warm shadows, scrollbar tints, softer radii. No layout changes.

## Color Variable Extraction

The test harness uses `obsidian_color(src, variant, key)` to extract `--wb-{key}: #hex;` from inside the `.theme-{variant}` block. When adding new palette colors, add them as `--wb-*` declarations in both variant blocks.

## Surface Ramp

The `--color-base-*` scale uses 13 steps (00, 05, 10, 20, 25, 30, 35, 40, 50, 60, 70, 100). All intermediates carry a warm undertone. In dark mode, 00 = deepest surface, 100 = primary text. In light mode, 00 = lightest surface, 100 = primary text.

## Heading Colors

H1 through H6 are mapped to palette materials by visual weight: amber, burnt orange, aged brass, terra cotta, steel patina, warm stone. Set via `--h1-color` through `--h6-color` in each variant block.

## Distribution

The theme is distributed via a mirror repo (`felipefdl/warm-burnout-obsidian`) that CI syncs on tag push. The Obsidian community directory pulls from that mirror. Source of truth is always this monorepo.

## File Structure

```
obsidian/
theme.css # Single CSS file, both dark + light variants
manifest.json # Obsidian theme manifest
README.md # Install instructions
AGENTS.md # This file
```

## Rules

1. Every hex value in `--wb-*` declarations must come from the canonical palette. No approximations.
2. Surface ramp intermediates must carry warm undertone (R > G > B in hex channels).
3. Do not add blues outside of the steel patina type accent.
4. Keep both `.theme-dark` and `.theme-light` blocks in sync: same `--wb-*` variable set, different values.
5. Test changes with `cargo test --test obsidian`.
38 changes: 38 additions & 0 deletions obsidian/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Warm Burnout for Obsidian

Your second brain was running on factory-default colors. Cold blues, harsh whites, zero consideration for 2am rabbit holes through your note graph. Fixed.

Full community theme for Obsidian with dark and light variants. Warm palette, contrast-audited, zero blues in the chrome. Headings follow a natural energy gradient from amber down to warm stone.

## Install

### Community Themes (recommended)

1. Open Settings > Appearance > Themes
2. Click "Manage" and search for **Warm Burnout**
3. Install and activate

### Manual

1. Download `theme.css` and `manifest.json` from the [latest release](https://github.com/felipefdl/warm-burnout/releases)
2. Create a folder called `Warm Burnout` inside your vault's `.obsidian/themes/` directory
3. Place both files in that folder
4. Open Settings > Appearance > Themes and select **Warm Burnout**

## What This Themes

- **Surface hierarchy**: 13-step warm ramp from deep brown-black to warm cream. No neutral grays anywhere.
- **Headings**: H1 through H6 mapped to palette materials (amber, burnt orange, aged brass, terra cotta, steel patina, warm stone). Visual weight decreases naturally.
- **Code blocks**: Full syntax palette in both editing and reading views. Functions = amber, keywords = burnt orange, strings = dried sage, types = steel patina.
- **Accent**: Copper rust on all interactive elements, links, and active states.
- **Warm tweaks**: Tinted shadows, warm scrollbar tracks, soft selection highlights. No layout changes.

## Palette

Both variants derive from the canonical Warm Burnout palette defined in the root [`AGENTS.md`](../AGENTS.md).

Dark background: `#1a1510`. Light background: `#F5EDE0`. Accent: `#b8522e` (copper rust).

## Requirements

Obsidian 1.0.0 or later.
7 changes: 7 additions & 0 deletions obsidian/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"name": "Warm Burnout",
"version": "1.4.2",
"minAppVersion": "1.0.0",
"author": "Felipe Lima",
"authorUrl": "https://warmburnout.com"
}
Loading