feat: initial scaffold and generator

- Complete project structure with directories for all target platforms
- Template system for CLI tools with color placeholder replacement
- Working generator that processes templates for 6 theme variants
- GitHub workflows for build, snapshots, commitlint, and cli-verify
- Installer and verifier scripts for CLI tool deployment
- Comprehensive documentation and specifications
- Biome 2.x linting and formatting setup
- Husky git hooks for pre-commit validation
This commit is contained in:
2025-09-05 23:06:12 +03:00
commit 11baabe545
53 changed files with 2890 additions and 0 deletions

253
meta/filetree.md Normal file
View File

@@ -0,0 +1,253 @@
# Everforest Resources — File Tree
This file tree lists all directories and filenames defined in the consolidated spec. It represents the canonical layout of the github.com/ivuorinen/everforest-resources repository.
## Root
README.md
CONTRIBUTING.md
Makefile
package.json
commitlint.config.js
## Palettes
palettes/
everforest.json
everforest.yaml
## Scripts
scripts/
generate-themes.mjs
## Terminals
terminals/
wezterm/
everforest-dark-hard.toml
everforest-dark-medium.toml
everforest-dark-soft.toml
everforest-light-hard.toml
everforest-light-medium.toml
everforest-light-soft.toml
alacritty/
everforest-dark-hard.yml
everforest-dark-medium.yml
everforest-dark-soft.yml
everforest-light-hard.yml
everforest-light-medium.yml
everforest-light-soft.yml
kitty/
everforest-dark-hard.conf
everforest-dark-medium.conf
everforest-dark-soft.conf
everforest-light-hard.conf
everforest-light-medium.conf
everforest-light-soft.conf
ghostty/
everforest-dark-hard.conf
everforest-dark-medium.conf
everforest-dark-soft.conf
everforest-light-hard.conf
everforest-light-medium.conf
everforest-light-soft.conf
windows-terminal/
everforest-dark-hard.json
everforest-dark-medium.json
everforest-dark-soft.json
everforest-light-hard.json
everforest-light-medium.json
everforest-light-soft.json
## Web
web/
css/
everforest.css
demo/
index.html
style.css
demo.js
## CLI
cli/
ls_colors/
template.txt
everforest.sh
dircolors
README.md
eza/
template.txt
everforest.sh
README.md
htop/
template.txt
htoprc.everforest
README.md
ripgrep/
template.txt
ripgreprc
README.md
fzf/
template.txt
everforest.sh
README.md
delta/
template.txt
gitconfig.delta
README.md
bat/
template.txt
bat.conf
README.md
starship/
template.txt
starship.toml
README.md
zsh/
pure-template.txt
p10k-template.txt
pure.zsh
p10k.zsh
README.md
fish/
colors-template.txt
prompt-template.txt
tide-template.txt
everforest-dark-hard.fish
everforest-dark-medium.fish
everforest-dark-soft.fish
everforest-light-hard.fish
everforest-light-medium.fish
everforest-light-soft.fish
fish_prompt.fish
tide-preset.fish
README.md
tmux/
template.txt
everforest.tmux.conf
README.md
btop/
template.txt
everforest.conf
README.md
bottom/
template.txt
everforest.toml
README.md
glances/
template.txt
everforest.conf
README.md
neofetch/
template.txt
everforest.conf
README.md
ranger/
template.txt
everforest.py
README.md
lf/
template.txt
lfrc.everforest
README.md
mc/
template.txt
everforest.ini
README.md
lazygit/
template.txt
everforest.yml
README.md
gitui/
template.txt
everforest.ron
README.md
tig/
template.txt
everforest.tigrc
README.md
fd/
template.txt
everforest.sh
README.md
jq/
template.txt
everforest.sh
README.md
less/
template.txt
everforest.sh
README.md
zoxide/
template.txt
everforest.sh
README.md
atuin/
template.txt
everforest.toml
README.md
install.sh
## Editors
editors/
vim-nvim/
colors/
everforest_minimal.lua
vscode/
package.json
README.md
themes/
everforest-dark-hard.json
everforest-dark-medium.json
everforest-dark-soft.json
everforest-light-hard.json
everforest-light-medium.json
everforest-light-soft.json
jetbrains/
everforest-dark-hard.icls
everforest-dark-medium.icls
everforest-dark-soft.icls
everforest-light-hard.icls
everforest-light-medium.icls
everforest-light-soft.icls
README.md
zed/
everforest-dark-hard.json
everforest-dark-medium.json
everforest-dark-soft.json
everforest-light-hard.json
everforest-light-medium.json
everforest-light-soft.json
README.md
sublime/
everforest-dark-hard.sublime-color-scheme
everforest-dark-medium.sublime-color-scheme
everforest-dark-soft.sublime-color-scheme
everforest-light-hard.sublime-color-scheme
everforest-light-medium.sublime-color-scheme
everforest-light-soft.sublime-color-scheme
README.md
## Docs
docs/
CLI.md
## Verify
verify/
verify.sh
## GitHub
.github/
workflows/
build.yml
snapshots.yml
commitlint.yml
cli-verify.yml
CODEOWNERS

View File

@@ -0,0 +1,105 @@
Implementation Checklist — Everforest Resources
Ordered steps to bring the repository from empty → working, following the Full Consolidated Spec. All steps MUST be executed in this order unless noted. LLM AGENTS SHALL NOT DEVIATE FROM THE THEME SPEC.
0) Initialize repository
git init
git remote add origin git@github.com:ivuorinen/everforest-resources.git
1) Scaffold files & structure
- Create file tree exactly as specified in “Everforest Resources — File Tree”.
- Add empty placeholder files where content will be generated (e.g., terminals/*, editors/*, cli/*, web/css/everforest.css).
- Create template.txt files in each CLI tool directory with color placeholders (e.g., {{bg}}, {{fg}}, {{red}}).
2) package.json & tooling
- Add npm scripts: generate, validate, ci, snapshots, prepare.
- Add devDependencies: husky, @commitlint/config-conventional, @playwright/test.
- Add commitlint.config.js.
- Run: npm i && npm run prepare (installs Husky).
3) GitHub setup
- Add .github/workflows: build.yml, snapshots.yml, commitlint.yml, cli-verify.yml.
- Add .github/CODEOWNERS with @ivuorinen.
- In repo settings: enable branch protection → require all four checks.
4) Generator core (scripts/generate-themes.mjs)
- Implement palette loader (JSON/YAML).
- Implement template system: read template.txt files and replace color placeholders with palette values.
- Implement writers for terminals: WezTerm, Alacritty, Kitty, Windows Terminal, Ghostty.
- Implement web CSS writer (media queries + forced themes + contrast attributes).
- Implement CLI template processors for: ls_colors, dircolors, eza/exa, ripgrep, fzf, delta, bat, htop, starship, zsh (pure/p10k), fish (colors + prompts), tmux, btop, bottom, glances, neofetch, ranger, lf, mc, lazygit, gitui, tig, fd, jq, less, zoxide, atuin.
- Implement editors: Neovim minimal with options, VS Code 6 variants + package.json, Zed, Sublime Text.
- Implement JetBrains .icls generator (save for last due to complexity).
- Ensure all writers are called in main() and produce all six variants where applicable.
5) No-raw-hex guard & pre-commit
- Add scripts/no-raw-hex.mjs (block hex outside palettes, terminals, web/css).
- Add .husky/pre-commit to run: no-raw-hex → generate → validate.
- Add .husky/commit-msg to run commitlint.
6) Web demo & snapshots
- Create web/demo with index.html (variant/contrast switcher), style.css, demo.js.
- Add Playwright test web/demo/snapshot.spec.js.
- Verify: npm run snapshots → artifacts.
7) Installer & verifier
- Add cli/install.sh (symlink/copy all configs; load dircolors).
- Add verify/verify.sh (build Debian container; check tools; fish sourcing).
- Integrate cli-verify job in CI (temp HOME, installer, then verifier).
8) Documentation
- README.md: TL;DR, Required checks (merge gating), terminal/web/CLI/editor usage summaries.
- CONTRIBUTING.md: rules, workflow, PR checklist, Conventional Commits.
- docs/CLI.md: onepager; ensure all examples use **indented code blocks**.
- Enforce documentation rule: no triple backticks; only indented code blocks.
9) Palette population
- Add palettes/everforest.json (and/or .yaml) with canonical values.
- Validate: npm run generate produces deterministic outputs.
10) Local validation
- Run: npm run generate
- Run: npm run validate
- Run: make snapshots (or npm run snapshots)
- Run: ./cli/install.sh then ENGINE=docker ./verify/verify.sh
11) First commit & PR
git add -A
git commit -m "feat: initial scaffold and generator"
git push -u origin main
- Open PR (if using a dev branch) → ensure all checks pass.
12) Post-merge tasks
- Tag v0.1.0
- (Optional) Build VS Code VSIX (vsce) and attach to release.
- Announce repository as the canonical Everforest resource hub.
Ongoing maintenance
- Palette-only changes → regenerate → validate → commit.
- Add new targets by extending the generator (never hand-edit outputs).
- Keep docs and CI in lockstep with generator capabilities.
Non-negotiable rules
- Indented code blocks only in docs (no triple backticks).
- No raw hex in CLI configs; GUI hex only from generator.
- LLM AGENTS SHALL NOT DEVIATE FROM THE THEME SPEC.