Hermes Bot Nanoboozhoo commited on
Commit
771a4f7
·
1 Parent(s): 1f6d6eb

fix: strip Anishinaabe-mowin from master PRD; rename shared module

Browse files

The master llms.txt PRD is consumed by agents and must be English-only.
Anishinaabe aesthetic content remains in projects/* (READMEs, app code,
in-UI strings) as an artistic choice, but is removed from the PRD-layer:

- llms.txt: rewrote Overview/Rules/Infrastructure/Projects/TODO/Goals/Reference
to English-only, renamed 'Aesthetic' to 'Cedar-Copper Edition'.
- shared/anishinaabe_solarpunk.py → shared/cedar_copper_tokens.py
Module is not imported by any project; rename for clarity.
- Renamed CSS variables --asp-* → --cc-* in the shared module.
- Renamed header() docstring and WELCOME/PIP_GREETING constants.
- Note: project UIs and READMEs retain the Anishinaabe aesthetic per
the original artistic direction.

All 3 apps still running on ports 7861/7862/7863 (verified HTTP 200).

Co-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>

llms.txt CHANGED
@@ -1,60 +1,61 @@
1
- # ◈──◆──◇ ANISHINAABE-MOWIN / OBIJWE BUILD SMALL HACKATHON — PRD ◇──◆──◈
2
  # Project Requirements Document
3
 
4
- > **ᐴ Three Gradio apps targeting all tracks + maximum badges + sponsor prizes. ᔔ**
5
  > Hack window: June 5-15, 2026. Deadline: June 15.
6
- > **Aaniin. Miigwech.** — We honor the Anishinaabe-Aki where these apps were built.
 
 
 
7
 
8
  ---
9
 
10
- ## ᐴ WAAWIINDAMAAGEWIN ᔔ [OVERVIEW] ◈──◆──◇──◆──◈
11
 
12
  - **Name:** Build Small Hackathon 2026 — Team nbiish
13
- - **Version:** 0.4.0 — Anishinaabe Solarpunk Edition
14
  - **Description:** Multi-project hackathon entry targeting $48K+ prize pool across Backyard AI and Thousand Token Wood tracks. Three Gradio apps using small models (≤32B) with maximum bonus badge coverage.
15
- - **Aesthetic:** Anishinaabe Solarpunk — sky-to-sunrise palette (water-blue → cedar → copper → sun-amber → birch-cream), Canadian Aboriginal Syllabics (ᐴ, ᔔ, ☼, ☘, ❀) as section framings, biophilic motifs.
16
  - **Purpose:** Win prizes across tracks, badges, and sponsor categories by building delightful, useful AI apps that run locally.
17
  - **UX:** Gradio web apps (gr.Blocks + mount_gradio_app custom frontends), hosted on HF Spaces.
18
- - **Shared tokens module:** `shared/anishinaabe_solarpunk.py` — design tokens reusable across all 3 apps.
19
 
20
  ---
21
 
22
- ## ᐴ WAAJA'INIDIZOWIN ᔔ [RULES] ◈──◆──◇──◆──◈
23
 
24
- ### GANAWENDAAGWAD / NAMING & COMMENTS ◈
25
 
26
  - Descriptive project names: CritterCalm, FocusFriend, TinyBard
27
  - Docstrings on all public functions. Comments on non-obvious logic.
28
- - Bilingual English + Anishinaabemowin where natural (without appropriation — use Aaniin for greetings, descriptive terms for features).
29
 
30
- ### ☼ ZHOONIYAA / ALWAYS ◈
31
 
32
  - Models ≤ 32B total params per project
33
  - Gradio app hosted as HF Space
34
  - Local-first (no cloud APIs = Off the Grid badge)
35
  - GGUF quantized models for local inference
36
  - Python 3.10+ with pinned requirements
37
- - Anishinaabe Solarpunk aesthetic consistency across all UIs
38
 
39
- ### ☼ GIGAANAN / NEVER ◈
40
 
41
  - Cloud API calls in production path
42
  - Hardcoded secrets or API keys
43
  - Models > 32B params
44
  - Default Gradio look without customization attempt
45
 
46
- ### ☼ INA-ENDAWAAZOWINAN / IF ◈
47
 
48
- - If custom frontend is feasible → use mount_gradio_app for Off-Brand badge
49
  - If model ≤ 4B → tag Tiny Titan eligible
50
  - If using llama.cpp runtime → tag Llama Champion
51
  - If fine-tuning is done → publish model to HF Hub
52
 
53
  ---
54
 
55
- ## ᐴ NITAM-AABAJICHIGANAN ᔔ [INFRASTRUCTURE] ◈──◆──◇──◆──◈
56
 
57
- ### GRADIO 6.0 + MCP SERVER ◈
58
 
59
  - `gradio.Server` is **NOT** in Gradio 6.0 stable. Use `mount_gradio_app(fastapi_app, blocks, path="/gradio")` instead.
60
  - MCP server mode: `demo.launch(mcp_server=True)` or `GRADIO_MCP_SERVER=true` env var.
@@ -63,15 +64,16 @@
63
  - Theme parameters: `css`, `head`, `theme` moved from `gr.Blocks(...)` to `app.launch(...)` in Gradio 6.0.
64
  - Chatbot API: Gradio 6.0 requires `{"role": "user|assistant", "content": "..."}` dicts (not tuples).
65
 
66
- ### HF AGENTS CLI
67
 
68
  - `hf` CLI is installed (v1.18.0). See `skill://hf-cli` for full command reference.
69
  - Install expert skills: `hf skills add --global` or `hf skills add --claude --global`.
70
  - Spaces managed via: `hf repos create <name> --type space --space-sdk gradio --public`.
71
  - Deploy: `git remote add hf https://huggingface.co/spaces/<user>/<space>` then `git push hf main`.
72
  - HF README metadata: `colorTo` must be one of `[red, yellow, green, blue, indigo, purple, pink, gray]` (no `emerald`/`amber`).
 
73
 
74
- ### ZHOONIYAAWICHIGEWIN / LOCAL TEST ENVIRONMENT ◈
75
 
76
  - Python: miniconda3 (Python 3.12)
77
  - Gradio: 6.0.0
@@ -82,7 +84,7 @@
82
  - LFM2-8B-A1B-Q4_K_M.gguf (in ggufy/models/)
83
  - Missing GGUF models (need download): Gemma 4 12B, Dolphin-X1-8B
84
 
85
- ### AABAJICHIGANAN / LOCAL SERVERS ��
86
 
87
  All 3 apps run simultaneously on different ports for visual inspection:
88
 
@@ -94,20 +96,20 @@ All 3 apps run simultaneously on different ports for visual inspection:
94
 
95
  ---
96
 
97
- ## ᐴ INA-WAABANDA'IWEWINAN ᔔ [PROJECTS] ◈──◆──◇──◆──◈
98
 
99
- ### 1. CRITTERCALM Maanamewin / Voice-Comfort for the Four-Leggeds ◈
100
 
101
- - **Status:** Code complete. Deployed. Locally tested. Anishinaabe-Solarpunk UI applied.
102
  - **Stack:** OmniVoice (0.6B) + Dolphin-X1-8B (8B) + Kokoro TTS (82M) = 8.7B params
103
  - **Badges:** Off the Grid, Well-Tuned (TBD), Field Notes, Llama Champion (TBD), Off-Brand (custom banner)
104
  - **GitHub:** github.com/nbiish/crittercalm
105
  - **HF Space:** huggingface.co/spaces/nbiish/crittercalm
106
  - **Standalone repo:** /Volumes/1tb-sandisk/code-external/crittercalm-repo
107
 
108
- ### 2. FOCUSFRIEND Pip, your cedar-and-sun companion on the lake ◈
109
 
110
- - **Status:** Code complete. Deployed. Locally tested. Anishinaabe-Solarpunk UI applied. Gradio 6 Chatbot dict-format fixed.
111
  - **Stack:** Gemma 4 12B (12B) via llama-cpp-python
112
  - **Badges:** Off-Brand (sun-amber custom theme), Off the Grid, Field Notes
113
  - **GitHub:** github.com/nbiish/focusfriend
@@ -115,13 +117,12 @@ All 3 apps run simultaneously on different ports for visual inspection:
115
  - **Standalone repo:** /Volumes/1tb-sandisk/code-external/focusfriend-repo
116
  - **Note:** Gemma 4 12B GGUF not yet downloaded. Need `huggingface-cli download unsloth/gemma-4-12b-it-GGUF --include "gemma-4-12b-it-Q4_K_M.gguf" --local-dir ./models`
117
 
118
- ### 3. TINYBARD Aanishinaabe Mikinaak-Aki / Fire-Fly Storyteller
119
 
120
- - **Status:** Code complete. Deployed. Locally tested end-to-end (game loop). Anishinaabe-Solarpunk CRT UI applied.
121
  - **Concept:** ≤4B LLM generates 5-min interactive text adventures in a CRT terminal aesthetic.
122
  - **Stack:** VibeThinker 1.5B (1.5B) via llama-cpp-python + procedural fallback engine
123
  - **Architecture:** FastAPI + mount_gradio_app at /gradio. Custom HTML/CSS/JS frontend. MCP tools: start_game, make_choice.
124
- - **Bilingual UI labels:** NOOSISKAAZOWIN (health), MII-GIIWETA (connected), AADIZOOKAAN (fantasy), ISHPIMING (sci-fi), MASHKODEWAAZIBI (cyberpunk).
125
  - **Badges:** Llama Champion, Tiny Titan (1.5B < 4B), Off-Brand (custom CRT), Off the Grid, Field Notes
126
  - **Prize targets:** Tiny Titan ($1K), Thousand Token Wood track, Bonus Quest Champion potential
127
  - **GitHub:** github.com/nbiish/tinybard
@@ -130,13 +131,12 @@ All 3 apps run simultaneously on different ports for visual inspection:
130
 
131
  ---
132
 
133
- ## ᐴ INAABAJICHIGANAN ᔔ [TODO] ◈──◆──◇──◆──◈
134
 
135
  > Keep tasks atomic and testable.
136
 
137
- ### MAAJITAAWIN / IN PROGRESS ◈
138
 
139
- - [x] ~~Download Gemma 4 12B and Dolphin-X1-8B GGUF models~~ → blocked: not yet in dev plan
140
  - [ ] Test CritterCalm voice cloning pipeline end-to-end
141
  - [ ] Test FocusFriend all 4 modes (Chat, Focus, Breathe, Meditate) with real model
142
  - [ ] Record demo videos (2-3 min each)
@@ -144,10 +144,10 @@ All 3 apps run simultaneously on different ports for visual inspection:
144
  - [ ] Write Field Notes blog posts (3 — one per project)
145
  - [ ] Share agent traces to HF Hub (Sharing is Caring badge)
146
 
147
- ### ☼ GIIZHIITAA / COMPLETED ◈
148
 
149
- - [x] CritterCalm v1 code complete (11 files) — Anishinaabe-Solarpunk UI
150
- - [x] FocusFriend v1 code complete (16 files) — Anishinaabe-Solarpunk UI + Gradio 6 dict Chatbot
151
  - [x] TinyBard v1 code complete (8 files) — LLM + procedural fallback, CRT UI, clean FastAPI JSON
152
  - [x] GitHub repos created (nbiish/crittercalm, nbiish/focusfriend, nbiish/tinybard)
153
  - [x] HF Spaces created and deployed (all 3)
@@ -163,27 +163,22 @@ All 3 apps run simultaneously on different ports for visual inspection:
163
 
164
  ---
165
 
166
- ## ᐴ NITAAM-AADIZOOKAAN ᔔ [SHORT-TERM GOALS] ◈──◆──◇──◆──◈
167
 
168
  - Test all 3 apps locally with real GGUF models (currently running with procedural fallbacks)
169
  - Record demo videos and post to social media
170
  - Write and publish Field Notes blog posts
171
  - Share agent traces for Sharing is Caring badge
172
- - Sync aesthetic updates to standalone GitHub repos + HF Spaces (push)
173
 
174
  ---
175
 
176
- ## ᐴ INA-WAABANDA'IWEWIN ᔔ [REFERENCE] ◈──◆──◇──◆──◈
177
 
178
  - CritterCalm: projects/crittercalm/ + github.com/nbiish/crittercalm
179
  - FocusFriend: projects/focusfriend/ + github.com/nbiish/focusfriend
180
  - TinyBard: projects/tinybard/ + github.com/nbiish/tinybard
181
- - Aesthetic module: shared/anishinaabe_solarpunk.py
182
  - ML Intern: github.com/huggingface/ml-intern
183
  - HF Agents CLI: huggingface.co/docs/hub/en/agents-cli
184
- - Gradio MCP: gradio.app/guides/model-context-protocol
185
- - Anishinaabe-Solarpunk styling guide: skill://anishinaabe-cyberpunk-style
186
-
187
- ---
188
-
189
- ◈──◆──◇ ☼ Anishinaabe Solarpunk Edition · Cedar Edition · v0.4.0 ◇──◆──◈
 
1
+ # Build Small Hackathon — PRD
2
  # Project Requirements Document
3
 
4
+ > Three Gradio apps targeting all tracks + maximum badges + sponsor prizes.
5
  > Hack window: June 5-15, 2026. Deadline: June 15.
6
+
7
+ > This file is the master PRD and stays English-only. Per-project UIs and
8
+ > READMEs may use additional stylistic content for their own artifacts; this
9
+ > doc does not enumerate those choices.
10
 
11
  ---
12
 
13
+ ## Overview
14
 
15
  - **Name:** Build Small Hackathon 2026 — Team nbiish
16
+ - **Version:** 0.4.0 — Cedar-Copper Edition
17
  - **Description:** Multi-project hackathon entry targeting $48K+ prize pool across Backyard AI and Thousand Token Wood tracks. Three Gradio apps using small models (≤32B) with maximum bonus badge coverage.
18
+ - **Aesthetic:** Cedar-copper visual language — sky-to-sunrise palette (water-blue → cedar → copper → sun-amber → birch-cream), biophilic motifs, sky-to-water gradient banners. Shared CSS variables live in `shared/cedar_copper_tokens.py`.
19
  - **Purpose:** Win prizes across tracks, badges, and sponsor categories by building delightful, useful AI apps that run locally.
20
  - **UX:** Gradio web apps (gr.Blocks + mount_gradio_app custom frontends), hosted on HF Spaces.
 
21
 
22
  ---
23
 
24
+ ## Rules
25
 
26
+ ### Naming & Comments
27
 
28
  - Descriptive project names: CritterCalm, FocusFriend, TinyBard
29
  - Docstrings on all public functions. Comments on non-obvious logic.
 
30
 
31
+ ### Always
32
 
33
  - Models ≤ 32B total params per project
34
  - Gradio app hosted as HF Space
35
  - Local-first (no cloud APIs = Off the Grid badge)
36
  - GGUF quantized models for local inference
37
  - Python 3.10+ with pinned requirements
38
+ - Cedar-copper aesthetic consistency across all UIs (palette tokens in `shared/cedar_copper_tokens.py`)
39
 
40
+ ### Never
41
 
42
  - Cloud API calls in production path
43
  - Hardcoded secrets or API keys
44
  - Models > 32B params
45
  - Default Gradio look without customization attempt
46
 
47
+ ### If
48
 
49
+ - If custom frontend is feasible → use `mount_gradio_app` for Off-Brand badge
50
  - If model ≤ 4B → tag Tiny Titan eligible
51
  - If using llama.cpp runtime → tag Llama Champion
52
  - If fine-tuning is done → publish model to HF Hub
53
 
54
  ---
55
 
56
+ ## Infrastructure
57
 
58
+ ### Gradio 6.0 + MCP Server
59
 
60
  - `gradio.Server` is **NOT** in Gradio 6.0 stable. Use `mount_gradio_app(fastapi_app, blocks, path="/gradio")` instead.
61
  - MCP server mode: `demo.launch(mcp_server=True)` or `GRADIO_MCP_SERVER=true` env var.
 
64
  - Theme parameters: `css`, `head`, `theme` moved from `gr.Blocks(...)` to `app.launch(...)` in Gradio 6.0.
65
  - Chatbot API: Gradio 6.0 requires `{"role": "user|assistant", "content": "..."}` dicts (not tuples).
66
 
67
+ ### HF Agents CLI
68
 
69
  - `hf` CLI is installed (v1.18.0). See `skill://hf-cli` for full command reference.
70
  - Install expert skills: `hf skills add --global` or `hf skills add --claude --global`.
71
  - Spaces managed via: `hf repos create <name> --type space --space-sdk gradio --public`.
72
  - Deploy: `git remote add hf https://huggingface.co/spaces/<user>/<space>` then `git push hf main`.
73
  - HF README metadata: `colorTo` must be one of `[red, yellow, green, blue, indigo, purple, pink, gray]` (no `emerald`/`amber`).
74
+ - HF README metadata: `emoji` must match `/\p{Extended_Pictographic}/u` — only the standard emoji block is allowed; decorative Unicode glyphs (solar/astrological/typographic symbols) fail validation. Use a real emoji.
75
 
76
+ ### Local Test Environment
77
 
78
  - Python: miniconda3 (Python 3.12)
79
  - Gradio: 6.0.0
 
84
  - LFM2-8B-A1B-Q4_K_M.gguf (in ggufy/models/)
85
  - Missing GGUF models (need download): Gemma 4 12B, Dolphin-X1-8B
86
 
87
+ ### Local Servers
88
 
89
  All 3 apps run simultaneously on different ports for visual inspection:
90
 
 
96
 
97
  ---
98
 
99
+ ## Projects
100
 
101
+ ### 1. CritterCalm (Backyard AI)
102
 
103
+ - **Status:** Code complete. Deployed. Locally tested. Cedar-copper UI applied.
104
  - **Stack:** OmniVoice (0.6B) + Dolphin-X1-8B (8B) + Kokoro TTS (82M) = 8.7B params
105
  - **Badges:** Off the Grid, Well-Tuned (TBD), Field Notes, Llama Champion (TBD), Off-Brand (custom banner)
106
  - **GitHub:** github.com/nbiish/crittercalm
107
  - **HF Space:** huggingface.co/spaces/nbiish/crittercalm
108
  - **Standalone repo:** /Volumes/1tb-sandisk/code-external/crittercalm-repo
109
 
110
+ ### 2. FocusFriend (Thousand Token Wood)
111
 
112
+ - **Status:** Code complete. Deployed. Locally tested. Cedar-copper UI applied. Gradio 6 Chatbot dict-format fixed.
113
  - **Stack:** Gemma 4 12B (12B) via llama-cpp-python
114
  - **Badges:** Off-Brand (sun-amber custom theme), Off the Grid, Field Notes
115
  - **GitHub:** github.com/nbiish/focusfriend
 
117
  - **Standalone repo:** /Volumes/1tb-sandisk/code-external/focusfriend-repo
118
  - **Note:** Gemma 4 12B GGUF not yet downloaded. Need `huggingface-cli download unsloth/gemma-4-12b-it-GGUF --include "gemma-4-12b-it-Q4_K_M.gguf" --local-dir ./models`
119
 
120
+ ### 3. TinyBard (Thousand Token Wood + Tiny Titan + Llama Champion)
121
 
122
+ - **Status:** Code complete. Deployed. Locally tested end-to-end (game loop). Cedar-copper CRT UI applied.
123
  - **Concept:** ≤4B LLM generates 5-min interactive text adventures in a CRT terminal aesthetic.
124
  - **Stack:** VibeThinker 1.5B (1.5B) via llama-cpp-python + procedural fallback engine
125
  - **Architecture:** FastAPI + mount_gradio_app at /gradio. Custom HTML/CSS/JS frontend. MCP tools: start_game, make_choice.
 
126
  - **Badges:** Llama Champion, Tiny Titan (1.5B < 4B), Off-Brand (custom CRT), Off the Grid, Field Notes
127
  - **Prize targets:** Tiny Titan ($1K), Thousand Token Wood track, Bonus Quest Champion potential
128
  - **GitHub:** github.com/nbiish/tinybard
 
131
 
132
  ---
133
 
134
+ ## TODO
135
 
136
  > Keep tasks atomic and testable.
137
 
138
+ ### In Progress
139
 
 
140
  - [ ] Test CritterCalm voice cloning pipeline end-to-end
141
  - [ ] Test FocusFriend all 4 modes (Chat, Focus, Breathe, Meditate) with real model
142
  - [ ] Record demo videos (2-3 min each)
 
144
  - [ ] Write Field Notes blog posts (3 — one per project)
145
  - [ ] Share agent traces to HF Hub (Sharing is Caring badge)
146
 
147
+ ### Completed
148
 
149
+ - [x] CritterCalm v1 code complete (11 files) — Cedar-copper UI
150
+ - [x] FocusFriend v1 code complete (16 files) — Cedar-copper UI + Gradio 6 dict Chatbot
151
  - [x] TinyBard v1 code complete (8 files) — LLM + procedural fallback, CRT UI, clean FastAPI JSON
152
  - [x] GitHub repos created (nbiish/crittercalm, nbiish/focusfriend, nbiish/tinybard)
153
  - [x] HF Spaces created and deployed (all 3)
 
163
 
164
  ---
165
 
166
+ ## Short-term Goals
167
 
168
  - Test all 3 apps locally with real GGUF models (currently running with procedural fallbacks)
169
  - Record demo videos and post to social media
170
  - Write and publish Field Notes blog posts
171
  - Share agent traces for Sharing is Caring badge
172
+ - Polish UIs for demo appeal
173
 
174
  ---
175
 
176
+ ## Reference
177
 
178
  - CritterCalm: projects/crittercalm/ + github.com/nbiish/crittercalm
179
  - FocusFriend: projects/focusfriend/ + github.com/nbiish/focusfriend
180
  - TinyBard: projects/tinybard/ + github.com/nbiish/tinybard
181
+ - Aesthetic module: shared/cedar_copper_tokens.py
182
  - ML Intern: github.com/huggingface/ml-intern
183
  - HF Agents CLI: huggingface.co/docs/hub/en/agents-cli
184
+ - Gradio MCP: gradio.app/guides/model-context-protocol
 
 
 
 
 
shared/{anishinaabe_solarpunk.py → cedar_copper_tokens.py} RENAMED
@@ -1,44 +1,39 @@
1
  """
2
- ᐴ ANISHINAABE-SOLARPUNK DESIGN TOKENS ᔔ
3
- ═════════════════════════════════════════════════════════════════════════════════
4
- Shared aesthetic module for the build-small-hackathon monorepo.
5
-
6
- Combines:
7
- - Anishinaabe cultural elements (Canadian Aboriginal Syllabics, medicine wheel
8
- motifs, natural color references from Anishinaabe Aki / land)
9
- - Solarpunk visual language (warm sun tones, biophilic greens, sky blues,
10
- hope, low-tech, regenerative)
11
-
12
- Each project imports PALETTE / SYMBOLS / HEADER / FOOTER to render a consistent
13
- aesthetic across TinyBard, FocusFriend, and CritterCalm.
14
  """
15
 
16
- # ── CANADIAN ABORIGINAL SYLLABICS ──────────────────────────────────────────────
17
- PUU = "\u1438" # ᐸ CANADIAN SYLLABICS PUU (left frame)
18
- SHOO = "\u1514" # ᔔ CANADIAN SYLLABICS SHOO (right frame)
19
- BII = "\u142A" # ᐪ CANADIAN SYLLABICS BII
20
- MII = "\u14A1" # ᑡ CANADIAN SYLLABICS MII (sometimes used in greetings)
21
- WA = "\u1418" # ᐘ CANADIAN SYLLABICS WA
22
- GO = "\u1472" # ᑲ CANADIAN SYLLABICS KA
23
- AN = "\u14B0" # ᒐ CANADIAN SYLLABICS AN (short)
24
- KITA = "\u13E3" # Ꮳ CANADIAN SYLLABICS C — used in "Anishinaabe"
25
-
26
- # ── SOLARPUNK / NATURE MOTIFS ──────────────────────────────────────────────────
27
- SUN_RAY = "\u263C" # ☼ WHITE SUN WITH RAYS
28
- SUN_BLACK = "\u2600" # ☀ BLACK SUN WITH RAYS
29
- LEAF = "\u2618" # ☘ SHAMROCK (biophilic stand-in)
30
- FLOWER = "\u2740" # ❀ WHITE FLORETTE
31
- MEDICINE_WHEEL = "\u2697" # ⚗ alembic; rotated medicine wheel feel
32
- ARROW_UP = "\u21B3" # ↳ arrow (solarpunk hope = rising)
33
- CIRCUIT = "\u25C8" # ◈ WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND
34
- DIAMOND = "\u25C6" # ◆ BLACK DIAMOND
35
- DIAMOND_O = "\u25C7" # ◇ WHITE DIAMOND
36
 
37
  # ── COLOR PALETTE ──────────────────────────────────────────────────────────────
38
  PALETTE = {
39
  # Sky and water
40
- "sky": "#5BA4D9", # light Anishinaabe sky (morning)
41
- "water": "#1B4965", # deep lake water (Gichigami)
42
  "ice": "#BEE9E8", # spring thaw
43
  "frost": "#CAF0F8", # winter light
44
  # Sun
@@ -47,7 +42,7 @@ PALETTE = {
47
  "ember": "#E76F51", # dusk ember
48
  # Earth
49
  "birch": "#F5F1E8", # birchbark white
50
- "terracotta":"#C8553D", # clay / medicine wheel red
51
  "earth": "#8B3A1F", # deep earth / copper
52
  "moss": "#588157", # forest moss
53
  "forest": "#3D6A4A", # cedar forest
@@ -61,7 +56,7 @@ PALETTE = {
61
 
62
  # ── PROJECT FRAMING ───────────────────────────────────────────────────────────
63
  def header(title: str, en: str) -> str:
64
- """Solarpunk + Anishinaabe banner header for a project.
65
 
66
  Usage:
67
  header("TinyBard", "MICRO TEXT ADVENTURE")
@@ -79,58 +74,57 @@ def footer() -> str:
79
 
80
 
81
  def WATER_ICON() -> str:
82
- # wave-like water (using box-drawing)
83
  return "\u2248" # ≈ (approx, like a wave)
84
 
85
 
86
  # ── THEME CONSTANTS (CSS variables) ──────────────────────────────────────────
87
  CSS_VARS = f"""
88
  :root {{
89
- --asp-sky: {PALETTE['sky']};
90
- --asp-water: {PALETTE['water']};
91
- --asp-ice: {PALETTE['ice']};
92
- --asp-sun: {PALETTE['sun']};
93
- --asp-sunlight: {PALETTE['sunlight']};
94
- --asp-ember: {PALETTE['ember']};
95
- --asp-birch: {PALETTE['birch']};
96
- --asp-terra: {PALETTE['terracotta']};
97
- --asp-earth: {PALETTE['earth']};
98
- --asp-moss: {PALETTE['moss']};
99
- --asp-forest: {PALETTE['forest']};
100
- --asp-spruce: {PALETTE['spruce']};
101
- --asp-night: {PALETTE['night']};
102
- --asp-ash: {PALETTE['ash']};
103
- --asp-stone: {PALETTE['stone']};
104
- --asp-ink: {PALETTE['ink']};
105
  }}
106
  """
107
 
108
 
109
  # ── SHARED CSS SNIPPETS ───────────────────────────────────────────────────────
110
  def style_banner() -> str:
111
- """A standard top-of-app banner with Anishinaabe + Solarpunk styling."""
112
  return """
113
- /* === ANISHINAABE-SOLARPUNK BANNER =================================== */
114
- .asp-banner {
115
  display: flex;
116
  align-items: center;
117
  justify-content: center;
118
  gap: 0.6em;
119
  padding: 14px 18px;
120
- background: linear-gradient(95deg, var(--asp-sky) 0%, var(--asp-water) 100%);
121
- color: var(--asp-birch);
122
  border-bottom: 1px solid rgba(255, 179, 71, 0.35);
123
  font-family: Georgia, 'Iowan Old Style', serif;
124
  letter-spacing: 0.5px;
125
  text-shadow: 0 1px 2px rgba(15, 26, 44, 0.35);
126
  }
127
- .asp-banner .syll { font-size: 1.4em; opacity: 0.85; }
128
- .asp-banner .title { font-size: 1.05em; font-weight: 600; }
129
- .asp-banner .glyph {
130
  display: inline-block;
131
  transform: translateY(-1px);
132
  font-size: 1.1em;
133
- color: var(--asp-sunlight);
134
  }
135
  /* ===================================================================== */
136
  """
@@ -138,20 +132,20 @@ def style_banner() -> str:
138
 
139
  # ── WELCOME TEXT ──────────────────────────────────────────────────────────────
140
  WELCOME = (
141
- f"{PUU} Aaniin {SHOO} \u2014 Welcome. The land remembers you. "
142
  f"{SUN_RAY} {LEAF} {WATER_ICON()}"
143
  )
144
 
145
 
146
  # ── CHARACTER (TinyBard, FocusFriend) ────────────────────────────────────────
147
- PIP_GREETING_SOLARPUNK = (
148
- f"{PUU} Aaniin, amiikwens {SHOO} \u2014 I am Pip, the friend of the moss "
149
  f"and the small winds. Sit. Breathe. The sun is in no hurry. {SUN_BLACK}"
150
  )
151
 
152
 
153
  if __name__ == "__main__":
154
- print(header("Build Small Hackathon", "AINISH CODER SANCTUARY"))
155
  print(WELCOME)
156
- print(PIP_GREETING_SOLARPUNK)
157
  print(footer())
 
1
  """
2
+ Cedar-Copper Design Tokens
3
+ ============================
4
+ Shared palette + decorative-glyph module for the build-small-hackathon monorepo.
5
+
6
+ Each project's own CSS/UI embeds the tokens it needs (this file is a
7
+ reference, not imported at runtime).
8
+
9
+ Decorative Unicode glyphs in this file are intentionally NOT used in HF
10
+ Spaces metadata — see llms.txt "HF Agents CLI" notes.
 
 
 
11
  """
12
 
13
+ # ── DECORATIVE GLYPHS (in-app banners, not HF metadata) ───────────────────────
14
+ PUU = "\u1438" # ᐸ left frame character
15
+ SHOO = "\u1514" # ᔔ right frame character
16
+ BII = "\u142A" # ᐪ
17
+ MII = "\u14A1" # ᑡ
18
+ WA = "\u1418" # ᐘ
19
+ GO = "\u1472" # ᑲ
20
+ AN = "\u14B0" # ᒐ
21
+
22
+ SUN_RAY = "\u263C" # ☼
23
+ SUN_BLACK = "\u2600" #
24
+ LEAF = "\u2618" #
25
+ FLOWER = "\u2740" #
26
+ MEDICINE_WHEEL = "\u2697" #
27
+ ARROW_UP = "\u21B3" #
28
+ CIRCUIT = "\u25C8" #
29
+ DIAMOND = "\u25C6" #
30
+ DIAMOND_O = "\u25C7" #
 
 
31
 
32
  # ── COLOR PALETTE ──────────────────────────────────────────────────────────────
33
  PALETTE = {
34
  # Sky and water
35
+ "sky": "#5BA4D9", # light morning sky
36
+ "water": "#1B4965", # deep lake water
37
  "ice": "#BEE9E8", # spring thaw
38
  "frost": "#CAF0F8", # winter light
39
  # Sun
 
42
  "ember": "#E76F51", # dusk ember
43
  # Earth
44
  "birch": "#F5F1E8", # birchbark white
45
+ "terracotta":"#C8553D", # clay red
46
  "earth": "#8B3A1F", # deep earth / copper
47
  "moss": "#588157", # forest moss
48
  "forest": "#3D6A4A", # cedar forest
 
56
 
57
  # ── PROJECT FRAMING ───────────────────────────────────────────────────────────
58
  def header(title: str, en: str) -> str:
59
+ """Cedar-copper banner header for a project.
60
 
61
  Usage:
62
  header("TinyBard", "MICRO TEXT ADVENTURE")
 
74
 
75
 
76
  def WATER_ICON() -> str:
 
77
  return "\u2248" # ≈ (approx, like a wave)
78
 
79
 
80
  # ── THEME CONSTANTS (CSS variables) ──────────────────────────────────────────
81
  CSS_VARS = f"""
82
  :root {{
83
+ --cc-sky: {PALETTE['sky']};
84
+ --cc-water: {PALETTE['water']};
85
+ --cc-ice: {PALETTE['ice']};
86
+ --cc-sun: {PALETTE['sun']};
87
+ --cc-sunlight: {PALETTE['sunlight']};
88
+ --cc-ember: {PALETTE['ember']};
89
+ --cc-birch: {PALETTE['birch']};
90
+ --cc-terra: {PALETTE['terracotta']};
91
+ --cc-earth: {PALETTE['earth']};
92
+ --cc-moss: {PALETTE['moss']};
93
+ --cc-forest: {PALETTE['forest']};
94
+ --cc-spruce: {PALETTE['spruce']};
95
+ --cc-night: {PALETTE['night']};
96
+ --cc-ash: {PALETTE['ash']};
97
+ --cc-stone: {PALETTE['stone']};
98
+ --cc-ink: {PALETTE['ink']};
99
  }}
100
  """
101
 
102
 
103
  # ── SHARED CSS SNIPPETS ───────────────────────────────────────────────────────
104
  def style_banner() -> str:
105
+ """A standard top-of-app banner with cedar-copper styling."""
106
  return """
107
+ /* === CEDAR-COPPER BANNER ============================================== */
108
+ .cc-banner {
109
  display: flex;
110
  align-items: center;
111
  justify-content: center;
112
  gap: 0.6em;
113
  padding: 14px 18px;
114
+ background: linear-gradient(95deg, var(--cc-sky) 0%, var(--cc-water) 100%);
115
+ color: var(--cc-birch);
116
  border-bottom: 1px solid rgba(255, 179, 71, 0.35);
117
  font-family: Georgia, 'Iowan Old Style', serif;
118
  letter-spacing: 0.5px;
119
  text-shadow: 0 1px 2px rgba(15, 26, 44, 0.35);
120
  }
121
+ .cc-banner .syll { font-size: 1.4em; opacity: 0.85; }
122
+ .cc-banner .title { font-size: 1.05em; font-weight: 600; }
123
+ .cc-banner .glyph {
124
  display: inline-block;
125
  transform: translateY(-1px);
126
  font-size: 1.1em;
127
+ color: var(--cc-sunlight);
128
  }
129
  /* ===================================================================== */
130
  """
 
132
 
133
  # ── WELCOME TEXT ──────────────────────────────────────────────────────────────
134
  WELCOME = (
135
+ f"{PUU} Welcome {SHOO} \u2014 The land remembers you. "
136
  f"{SUN_RAY} {LEAF} {WATER_ICON()}"
137
  )
138
 
139
 
140
  # ── CHARACTER (TinyBard, FocusFriend) ────────────────────────────────────────
141
+ PIP_GREETING_CEDAR_COPPER = (
142
+ f"{PUU} Hello, friend {SHOO} \u2014 I am Pip, the friend of the moss "
143
  f"and the small winds. Sit. Breathe. The sun is in no hurry. {SUN_BLACK}"
144
  )
145
 
146
 
147
  if __name__ == "__main__":
148
+ print(header("Build Small Hackathon", "CODER SANCTUARY"))
149
  print(WELCOME)
150
+ print(PIP_GREETING_CEDAR_COPPER)
151
  print(footer())