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
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Theme Change Checklist

- [ ] I edited source-of-truth inputs under `color-system/*` and/or generator logic under `scripts/*` (not hand-editing generated artifacts only).
- [ ] I ran `pnpm run sync` and included all generated updates (`themes`, `public/themes`, `extension/themes`, `obsidian/themes`, `obsidian/app-theme`, `src/data/tokens.ts`, `src/styles/theme-vars.css`, `docs/theme-baseline.md`, `docs/color-language-report.md`, `reports/color-language-consistency.json`).
- [ ] I ran `pnpm run sync` and included all generated updates (`themes`, `public/themes`, `extension/themes`, `obsidian/themes`, `obsidian/app-theme`, `zed/extension`, `src/data/tokens.ts`, `src/styles/theme-vars.css`, `docs/theme-baseline.md`, `docs/color-language-report.md`, `reports/color-language-consistency.json`).
- [ ] I ran `pnpm run audit:generated-origin` and confirmed generated outputs are source-linked (`color-system/` or `scripts/` changed together).
- [ ] I ran `pnpm run audit:all`.
- [ ] I ran `pnpm run build`.
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,17 @@ jobs:
- name: Run audits
run: pnpm run audit:all

- name: Validate generated Zed themes against the official schema
run: |
schema_path="$RUNNER_TEMP/zed-theme-v0.2.0.json"
curl --fail --silent --show-error --location \
https://zed.dev/schema/themes/v0.2.0.json \
--output "$schema_path"
pnpm dlx ajv-cli@5 validate \
--spec=draft7 \
-s "$schema_path" \
-d 'zed/extension/themes/*.json'

- name: Audit dependencies
run: pnpm run audit:deps

Expand Down Expand Up @@ -506,6 +517,40 @@ jobs:
--release
--no-generate

publish-zed-mirror:
runs-on: ubuntu-latest
needs: verify
env:
ZED_PUBLISH_TOKEN: ${{ secrets.ZED_PUBLISH_TOKEN }}
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0

- uses: pnpm/action-setup@v6

- uses: actions/setup-node@v6
with:
node-version: '22'
cache: 'pnpm'

- name: Install dependencies
run: pnpm install --frozen-lockfile

- name: Skip publish (no Zed token)
if: ${{ env.ZED_PUBLISH_TOKEN == '' }}
run: echo "ZED_PUBLISH_TOKEN is missing. Skipping Zed mirror publish."

# The Registry consumes a dedicated, minimal public repository as a Git
# submodule. HearthTheme remains the source; this job only mirrors the
# committed extension.toml, theme JSON, README, and license.
- name: Publish to Zed mirror
if: ${{ env.ZED_PUBLISH_TOKEN != '' }}
run: >
node scripts/pack-zed-publish.mjs
--repo hearth-code/hearthcode-zed
--no-generate

release-github:
runs-on: ubuntu-latest
permissions:
Expand Down
5 changes: 4 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This repository is source-of-truth driven. Treat generated artifacts as outputs
- Active product: `products/active-product.json`.
- Active scheme: `color-system/active-scheme.json`.
- Primary source inputs live under `color-system/schemes/*` and `color-system/framework/*`.
- Generated outputs include `themes/*`, `public/themes/*`, `extension/themes/*`, `obsidian/*`, `terminal/{warp,windows-terminal,kitty,alacritty,iterm2}/*`, `src/data/tokens.ts`, `src/styles/theme-vars.css`, `docs/theme-baseline.md`, and selected `reports/*`.
- Generated outputs include `themes/*`, `public/themes/*`, `extension/themes/*`, `obsidian/*`, `terminal/{warp,windows-terminal,kitty,alacritty,iterm2}/*`, `zed/extension/*`, `src/data/tokens.ts`, `src/styles/theme-vars.css`, `docs/theme-baseline.md`, and selected `reports/*`.

## Safe Change Workflow

Expand Down Expand Up @@ -42,3 +42,6 @@ If extension payload changes, keep these aligned:
- top section of `extension/CHANGELOG.md`

Never leave placeholder release notes in a publishable change.

The Zed extension manifest version is generated from `releases/color-language.json`.
Keep `products/hearthcode/channels.zed` false until the Registry entry is live.
8 changes: 7 additions & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Thanks for helping improve HearthTheme.
- Generators and audits: `scripts/*`
- Version source: `releases/color-language.json`

Generated outputs (`themes/*`, `public/themes/*`, `extension/themes/*`, `obsidian/*`, `terminal/{warp,windows-terminal,kitty,alacritty,iterm2}/*`, reports/docs snapshots) should be produced by scripts, not hand-maintained alone.
Generated outputs (`themes/*`, `public/themes/*`, `extension/themes/*`, `obsidian/*`, `terminal/{warp,windows-terminal,kitty,alacritty,iterm2}/*`, `zed/extension/*`, reports/docs snapshots) should be produced by scripts, not hand-maintained alone.

## Local Setup

Expand All @@ -23,6 +23,9 @@ Generated outputs (`themes/*`, `public/themes/*`, `extension/themes/*`, `obsidia
1. Edit source-of-truth files (`color-system/*`) and/or generator logic (`scripts/*`).
2. Run `pnpm run sync`.
3. If previews changed, run `pnpm run preview:generate`.
If the marketing matrix, layouts, or channel assets changed, run
`pnpm run marketing:generate` instead; it synchronizes themes and force-renders
every declared size.
4. Run:
- `pnpm run check:sync`
- `pnpm run check:preview`
Expand All @@ -31,6 +34,9 @@ Generated outputs (`themes/*`, `public/themes/*`, `extension/themes/*`, `obsidia
- `pnpm run build`
5. Commit source + generated outputs in one change set.

For Zed changes, also run `pnpm run audit:zed`. Install `zed/extension` as a
development extension before publishing its generated mirror.

## Release Notes Requirement

If your PR changes extension release payload (`extension/themes/*`, `extension/package.json`, `extension/CHANGELOG.md`, `extension/icon.png`):
Expand Down
22 changes: 14 additions & 8 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
[![VS Code Marketplace Version](https://vsmarketplacebadges.dev/version/hearth-code.hearth-theme.svg)](https://marketplace.visualstudio.com/items?itemName=hearth-code.hearth-theme)
[![Start on theme.hearthcode.dev](https://img.shields.io/badge/start%20on-theme.hearthcode.dev-8b6b4d)](https://theme.hearthcode.dev)

HearthCode はコードUI向けのテーマファミリーです。核になる方向は Ember Moss の 2 つだけで、それぞれに Dark と Light を用意し、VS Code、Open VSX 互換エディタ、5 種類のターミナル形式で使えます。Obsidian 版は現在 Moss のみです
**温もりか、構造か。意味は明瞭なまま。** HearthCode は校正されたコード UI 向けテーマファミリーです。Ember は暖かくやわらかく、Moss はドライで構造的。異なる質感でも、読むリズムは同じです。どちらも Dark と Light VS Code、Open VSX 互換エディタ、Zed、5 種類のターミナル形式で提供し、Obsidian では Moss の Dark と Light を提供します

![HearthCode Theme Preview](./extension/images/preview-contrast-v2.png)
![HearthCode Theme Preview](./extension/images/family-overview.png)

## まずはここから

Expand All @@ -18,25 +18,29 @@ HearthCode はコードUI向けのテーマファミリーです。核になる
- `Dark`: 混在照明と長時間コーディング向けの基準点。
- `Light`: 昼光や文書作業が多い日に向くライト版。

![Ember と Moss の方向性アトラス](./docs/marketing/direction-atlas.png)

## Moss について

`Moss` は GruvDark テーマファミリーから方向的な着想を受けています。特にチャコールと紙のバランス、そして分離のはっきりした構文レーンを参照していますが、HearthCode 独自のセマンティック設計と校正ルールを通して再構成しており、1:1 の複製ではありません。

## Obsidian

HearthCode は本格的な Obsidian テーマでもあります。同じカラーランゲージを機能的な Markdown に適用し、種類分けされたコールアウト、取り消し線付きの完了タスク、階層化されたリストマーカー、フラットなコードと引用面、タグのピルを、編集ビューと閲覧ビューで一貫して表示します。
Obsidian では現在 Moss 方向の Dark と Light のみを提供します。同じカラーランゲージを機能的な Markdown に適用し、種類分けされたコールアウト、取り消し線付きの完了タスク、階層化されたリストマーカー、フラットなコードと引用面、タグのピルを、編集ビューと閲覧ビューで一貫して表示します。

Style Settings プラグインにも対応しています。タイポグラフィ(等幅ノート・コメントの直立表示・可読行幅)、コールアウトの濃さ、そしてコントラスト検証済みのアクセント(Moss / Amber / Slate)を調整できます。いずれも校正済みのパレットには手を加えません。

![HearthCode for Obsidian](./docs/marketing/obsidian-hero.png)

## インストール

1. VS Code Marketplace: <https://marketplace.visualstudio.com/items?itemName=hearth-code.hearth-theme>
2. Open VSX 互換エディタ: <https://open-vsx.org/extension/hearth-code/hearth-theme>
3. VS Code Quick Open: `ext install hearth-code.hearth-theme`
4. Obsidian: <https://community.obsidian.md/themes/hearthcode> — またはアプリ内の **設定 → 外観 → テーマ → 管理** から **HearthCode** を検索。
5. ターミナル: [Warp、Windows Terminal、Kitty、Alacritty、iTerm2 用テーマ](./terminal/README.md)。最初は `HearthCode Moss Dark` を推奨します。
- VS Code: [Marketplace](https://marketplace.visualstudio.com/items?itemName=hearth-code.hearth-theme)、または Quick Open で `ext install hearth-code.hearth-theme`。
- Open VSX 互換エディタ: [Open VSX](https://open-vsx.org/extension/hearth-code/hearth-theme)。
- Zed: [Zed Extensions](https://zed.dev/extensions/hearthcode-theme)。
- Obsidian: [Community Themes](https://community.obsidian.md/themes/hearthcode)、または **設定 → 外観 → テーマ → 管理** から **HearthCode** を検索。
- ターミナル: [Warp、Windows Terminal、Kitty、Alacritty、iTerm2 用テーマ](./terminal/README.md)。最初は `HearthCode Moss Dark` を推奨します。

![HearthCode platform availability](./docs/marketing/platform-coverage.png)

## 公開中のテーマ

Expand All @@ -47,6 +51,8 @@ Style Settings プラグインにも対応しています。タイポグラフ

## Theme Forge

![Theme Forge のワークフロー](./extension/images/theme-forge-workflow.png)

プライマリカラーを変えたいときは、**HearthCode: Open Theme Forge** を実行してパネルを開き、色を選ぶと、テーマ全体——構文**および**エディタのクローム(ステータスバー、サイド / アクティビティ / タイトルバー、各サーフェス)——がダーク / ライトの並列プレビューでリアルタイムに染め直されます。**Apply** は結果を theme-scoped color customizations として書き込み(即時反映、リロード不要)、アクティブな HearthCode スキームのダークとライトの 2 バリアントだけを塗り替え、もう一方のスキームには手を触れません——先に Moss か Ember のバリアントへ切り替えてください。**HearthCode: Reset Theme Forge** は Forge が書き込んだものだけを正確に取り除きます。品質は構築時に担保されます。Forge は公開テーマと同じ品質コントラクトに縛られており、構文レーンはまとめて回転して役割の分離を保ち、彩度は安全な帯域にクランプされ、クロームの色みはコントラスト検証を通してエディタ文字を AA に保ち、機能色(ターミナル・エラー・git・diff)はそれぞれの意味を保ちます。

## イタリックを無効にしたい場合
Expand Down
22 changes: 14 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@
[![VS Code Marketplace Version](https://vsmarketplacebadges.dev/version/hearth-code.hearth-theme.svg)](https://marketplace.visualstudio.com/items?itemName=hearth-code.hearth-theme)
[![Start on theme.hearthcode.dev](https://img.shields.io/badge/start%20on-theme.hearthcode.dev-8b6b4d)](https://theme.hearthcode.dev)

HearthCode is a theme family for code interfaces with two design directions: Ember and Moss. Each direction ships Dark and Light for VS Code, Open VSX-compatible editors, and five terminal formats; Moss is also available for Obsidian.
**Warmth or structure. Meaning stays clear.** HearthCode is a calibrated theme family for code interfaces: Ember brings warm softness, while Moss brings dry structure. Different material, same reading rhythm. Both ship in Dark and Light for VS Code, Open VSX-compatible editors, Zed, and five terminal formats; Obsidian ships Moss in Dark and Light.

![HearthCode Theme Preview](./extension/images/preview-contrast-v2.png)
![HearthCode Theme Preview](./extension/images/family-overview.png)

## Start Here

Expand All @@ -18,25 +18,29 @@ HearthCode is a theme family for code interfaces with two design directions: Emb
- `Dark`: balanced default for mixed light and long coding sessions.
- `Light`: bright-room and docs-heavy version.

![Ember and Moss direction atlas](./docs/marketing/direction-atlas.png)

## Note On Moss

`Moss` takes directional inspiration from the GruvDark theme family, especially its charcoal-and-paper balance and clearer split syntax lanes. It is translated through HearthCode's own semantic system and calibration rules rather than copied one-to-one.

## Obsidian

HearthCode is a first-class Obsidian theme too — the same color language applied to functional Markdown: typed callouts, task states with a struck-through done state, layered list markers, flat code and quote surfaces, and tag pills, kept consistent across edit and reading views.
Obsidian carries the Moss direction only, in Dark and Light — the same color language applied to functional Markdown: typed callouts, task states with a struck-through done state, layered list markers, flat code and quote surfaces, and tag pills, kept consistent across edit and reading views.

It also integrates with the Style Settings plugin: tune typography (monospace notes, upright comment italics, readable line length), callout intensity, and a contrast-vetted accent (Moss / Amber / Slate) — all without touching the calibrated palette.

![HearthCode for Obsidian](./docs/marketing/obsidian-hero.png)

## Install

1. VS Code Marketplace: <https://marketplace.visualstudio.com/items?itemName=hearth-code.hearth-theme>
2. Open VSX-compatible editors: <https://open-vsx.org/extension/hearth-code/hearth-theme>
3. VS Code Quick Open: `ext install hearth-code.hearth-theme`
4. Obsidian: <https://community.obsidian.md/themes/hearthcode> — or in-app **Settings → Appearance → Themes → Manage**, then search **HearthCode**.
5. Terminal: [Warp, Windows Terminal, Kitty, Alacritty, and iTerm2 files](./terminal/README.md). Start with `HearthCode Moss Dark`.
- VS Code: [Marketplace](https://marketplace.visualstudio.com/items?itemName=hearth-code.hearth-theme) or Quick Open with `ext install hearth-code.hearth-theme`.
- Open VSX-compatible editors: [Open VSX](https://open-vsx.org/extension/hearth-code/hearth-theme).
- Zed: [Zed Extensions](https://zed.dev/extensions/hearthcode-theme).
- Obsidian: [Community Themes](https://community.obsidian.md/themes/hearthcode) — or search **HearthCode** under **Settings → Appearance → Themes → Manage**.
- Terminals: [Warp, Windows Terminal, Kitty, Alacritty, and iTerm2 files](./terminal/README.md). Start with `HearthCode Moss Dark`.

![HearthCode platform availability](./docs/marketing/platform-coverage.png)

## Shipped Themes

Expand All @@ -47,6 +51,8 @@ It also integrates with the Style Settings plugin: tune typography (monospace no

## Theme Forge

![Theme Forge workflow](./extension/images/theme-forge-workflow.png)

Want a different primary color? Run **HearthCode: Open Theme Forge** to open a panel, pick a color, and watch the whole theme — syntax **and** editor chrome (status bar, side/activity/title bars, and surfaces) — recolor live in a side-by-side dark/light preview. **Apply** writes the result as theme-scoped color customizations (live, no reload), painting only your active HearthCode scheme's dark and light variants and leaving the other scheme untouched — switch to a Moss or Ember variant first. **HearthCode: Reset Theme Forge** removes exactly what Forge wrote. Quality holds by construction: Forge is bound by the same quality contract as the shipped themes — the syntax lanes rotate together so role separation holds, saturation is clamped to a safe band, the chrome tint is contrast-checked so editor text stays at AA, and functional colors (terminal, errors, git, diff) keep their meaning.

## Prefer No Italics?
Expand Down
Loading