Commit History
-
fix(tinybard): add background pre-warming of Kokoro TTS on server startup
Hermes BotUnverified signature56efccd -
fix(tinybard): add libespeak-ng-dev and show_error=True for better HF error reporting
Hermes BotUnverified signature8554bb2 -
fix(tinybard): add system packages and pip requirements for TTS
Hermes BotUnverified signature2d0d11e -
fix(tinybard): unlock and reuse browser audio context to bypass autoplay block
Hermes BotUnverified signature7334f33 -
feat(tinybard): strip progress and mood tags in clean_llm_story
Hermes BotUnverified signature6940b2d -
feat(tinybard): improve pacing with five-sentence directive and step awareness
Hermes BotUnverified signature04fc4f8 -
docs: translate PRD into DOX hierarchy
Hermes Bot +1: OzUnverified signatureRewrite root llms.txt from flat PRD format to DOX structure with Purpose, Ownership, Local Contracts, Work Guidance, Verification, TODO, and Child DOX Index sections. Create child DOX files: - projects/llms.txt — three-app overview - projects/crittercalm/llms.txt — Backyard AI app - projects/focusfriend/llms.txt — Focus companion - projects/tinybard/llms.txt — Text adventure generator - shared/llms.txt — Inference client + aesthetic tokens Co-Authored-By: Oz <oz-agent@warp.dev>70d0be3 -
feat(tinybard): add Kokoro TTS audio with custom voices & option prefixes
Hermes BotUnverified signature0dcae3c -
Merge branch 'develop'
Hermes BotUnverified signature# Conflicts: # projects/tinybard/app.py94d7081 -
feat: context-aware generation — verb-based choices, history-aware story, LLM health delta
Hermes BotUnverified signature- _parse_messages: include last 6 history entries as context for coherent narrative - generate_llm_choices: verb-based action choices with history context, bare-line output format - _llm_health_delta: LLM rates risk of player action (-15/0/+10), falls back to random - _run_turn: player choice feeds into story instruction, history passed to choices - _parse_choices: strip numbering, handle bare-line format - api_start_game/api_make_choice: pass history to choices generator0d8861d -
fix(tinybard): use correct logger name (log not logger)
Hermes BotUnverified signaturee78038c -
fix(tinybard): simplify choice prompt for 1.5B model
Hermes BotUnverified signature- System prompt now asks for bare lines (no numbering, no pipes) - 1.5B model generates better with simple newline format - Temperature lowered 0.8→0.6 for structured output - Added debug logging for raw LLM output and parsed choices - Parser unchanged — already handles bare newline format3169187 -
fix(tinybard): robust choice parsing — 3 strategies + fallback padding
Hermes BotUnverified signature- Increased max_new_tokens 80→200 for choice generation - _parse_choices now handles pipe, newline, comma, and bare formats - Regex strips leading numbering (1. / 1) / 1:) - Always returns exactly 3 choices (pads with procedural fallbacks) - Eliminates 1-or-2 choice issue on live HF Space74b0484 -
Merge branch 'develop'
Hermes BotUnverified signature# Conflicts: # shared/inference_client.pyf5ed009 -
fix: LLM inference uniqueness — force-clear cooldown, deduplicate click handlers, Nanaboozhoo narrator
Hermes BotUnverified signature- Force-clear cooldown in generate_llm_story() and generate_llm_choices() so story+choices always use LLM, never fall back to procedural due to cooldown - Merge duplicate click handlers (api_start_game + handle_start_game) into single handler per button with api_name for MCP - Remove cooldown short-circuit from _run_turn() — always attempt LLM first - Update system prompt: Nanaboozhoo trickster narrator with 'Be unpredictable' - Default INFERENCE_PROVIDER to featherless-ai (supports small instruct models)1a9d5be -
fix: pin huggingface_hub>=0.36 to avoid old router endpoint
Hermes BotUnverified signature1420fd3 -
Merge branch 'develop'
Hermes BotUnverified signature# Conflicts: # projects/tinybard/app.pyb1b7ff5 -
feat: Anishinaabe Solarpunk Gradio UI with choice input, save/load, and CRT aesthetic
Hermes BotUnverified signature62071c9 -
fix: skip uvicorn on HF Spaces, use demo.launch() instead
Hermes BotUnverified signature49bd205 -
fix: import BaseModel from pydantic for UserConfig class
Hermes BotUnverified signaturebca6cbf -
feat: add hf-cli + ml-intern skills; fix tinybard None genre crash
Hermes BotUnverified signature- Install HF CLI skill (.agents/skills/hf-cli/) from huggingface_hub - Create ml-intern skill (.agents/skills/ml-intern/) for ML workflow orchestration - Fix tinybard: genre_input default to 'fantasy', defensive None guards in api_start_game and api_make_choiceef7cb65
-
fix: launch Gradio on default port, let HF reverse proxy handle PORT
Hermes BotUnverified signature9f51363 -
fix: keep process alive on HF Spaces with sleep loop
Hermes BotUnverified signature90bae34 -
fix: call demo.launch() on HF Spaces to keep process alive
Hermes BotUnverified signature32d7eb9 -
fix: skip uvicorn on HF Spaces — Gradio launcher handles serving
Hermes BotUnverified signature350b6c0 -
fix: import BaseModel from pydantic for UserConfig class
Hermes BotUnverified signatured73d9a6 -
merge: develop → main — TinyBard wire-models + save/exit + inference wiring
Hermes BotUnverified signature93627ea -
feat(tinybard): infinite play, save/load, exit button
Hermes BotUnverified signature- Remove step >= 4 win condition; adventure cycles infinitely via step % 3 - Add genre field to all API response dicts - Add 4 save/load endpoints (POST save, GET saves, POST load, DELETE save) - Saves stored as JSON in projects/tinybard/saves/ - Add X exit button with save dialog (Save & Exit / Exit Without Saving / Cancel) - Add SAVES dropdown listing server + localStorage saves - Add RESUME buttons on genre selector for recent saves - Add localStorage backup for persistence across server restarts - All new UI follows cedar-copper solarpunk CRT aesthetica1847c4 -
merge: feat/wire-models-to-hf-spaces — wire TinyBard/CritterCalm/FocusFriend to HF Spaces + inference wiring
Hermes BotUnverified signaturea5a0af7 -
feat(tinybard): infinite play, save/load, exit button
Hermes BotUnverified signature- Remove step >= 4 win condition; adventure cycles infinitely via step % 3 - Add genre field to all API response dicts - Add 4 save/load endpoints (POST save, GET saves, POST load, DELETE save) - Saves stored as JSON in projects/tinybard/saves/ - Add X exit button with save dialog (Save & Exit / Exit Without Saving / Cancel) - Add SAVES dropdown listing server + localStorage saves - Add RESUME buttons on genre selector for recent saves - Add localStorage backup for persistence across server restarts - All new UI follows cedar-copper solarpunk CRT aesthetic050cec5 -
feat: add projects/tinybard/modal_inference.py and update llms.txt
Hermes BotUnverified signature6f876a9 -
feat: add support for custom OpenAI-compatible endpoints in TinyBard
Hermes BotUnverified signature- Update shared/inference_client.py to support custom endpoints via httpx - Support token, model, and custom_endpoint overrides in generate() - Add custom endpoint configuration field in CONFIG modal UI - Save and reload config in localStorage - Fallback to Qwen 1.5B default, or procedural if inference fails4d181c9 -
feat: LLM-driven infinite adventure loop
Hermes BotUnverified signature- Replace story+choices two-call pattern with single generate_llm_turn() - Each turn now produces story, 3 choices, and health delta from the model - Remove fixed 4-step win/lose cap; game continues until health <= 0 - Procedural fallback remains when inference is in cooldown or failsceada34 -
feat: add user-configurable HF token + model override
Hermes BotUnverified signature- Add /api/config GET/POST endpoints for BYO HF token + model id - Token stored in-memory only, never written to disk - UI: config button + modal in CRT terminal footer - Frontend: localStorage-free, all state server-side per-session - Procedural fallback always active when inference fails or cooldown hitsecc79cb -
chore: sync tinybard files from standalone repo; remove Optional import
Hermes BotUnverified signature9494965 -
fix: remove invalid provider kwarg from HF Inference client
Hermes BotUnverified signatureThe huggingface_hub InferenceClient.chat_completion() on the current version (0.36.2) errors with 'Model not supported by provider hf-inference' when a provider is passed. The free HF Inference API works correctly with the default provider, so we now omit it to restore working inference and disable the persistent warning. Also: cleanup blank line from prior edit.1485f5b -
fix: export app at module level to prevent double-launch on HF Spaces
Hermes Bot +1: NanoboozhooUnverified signatureRoot cause of RUNTIME_ERROR on tinybard: the __main__ block started uvicorn.run() while the HF Spaces Gradio SDK ALSO auto-launches a server on the same PORT. Two servers = Errno 98 port in use. Fix across all 3 projects: - Remove if __name__ == '__main__': uvicorn.run()/app.launch() - Export app = <app_object> at module level - HF Spaces SDK imports the module and launches exactly one server Co-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>fcb36ef -
fix: lazy-import soundfile + graceful fallback when missing
Hermes Bot +1: NanoboozhooUnverified signatureCritterCalm was crashing on HF Spaces because soundfile was a hard import but not in requirements.txt. Now: - soundfile is in requirements.txt - imports are wrapped in try/except (SOUNDFILE_AVAILABLE flag) - voice_cloning + audio_utils imports are lazy - Kokoro TTS fallback still works without soundfile Also: replace 'Claude Opus 4.8 <noreply@anthropic.com>' trailer with 'Nanoboozhoo <nanoboozhoo@git-aaaki>' across all commits. Co-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>84715a7 -
Hermes BotCo-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>648bf8b -
feat: wire all 3 apps to HF Inference API + cooldowns
Hermes Bot +1: NanoboozhooMigration from local llama-cpp-python (heavy build) to serverless HF Inference API with project-scoped cooldowns. HF Spaces can now build and serve apps without compile steps. New shared module: - shared/inference_client.py — chat completions via InferenceClient, per-project cooldown registry (6s tinybard, 10s focusfriend, 12s crittercalm), always-fallback when cooldown active or call fails. Per-project changes: - TinyBard: replaced GGUF loader with InferenceClient. End-to-end game loop unchanged on procedural fallback; new model is Qwen2.5-1.5B via /api/game/{start,choice} (also exposed as MCP tool at /gradio). - FocusFriend: inference/llm.py rewritten to use the shared client. Streaming preserved (chunked word-by-word). - CritterCalm: content/script_generator.py uses shared client for calming script generation. Voice cloning still uses local OmniVoice (heavy, requires local install). Build: - All 3 requirements.txt files: removed llama-cpp-python (the cause of the …a9f90f6
-
Hermes BotCo-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>827c851 -
feat: Anishinaabe-Solarpunk aesthetic across all 3 apps
Hermes Bot +1: Nanoboozhoo- shared/anishinaabe_solarpunk.py: design tokens module (palette, syllabics, symbols) - TinyBard: cedar-copper CRT cabinet, sun-amber phosphor, bilingual Anishinaabe labels - FocusFriend: pip shrine with sun-amber gradients, sky-water banner, Anishinaabe greeting - CritterCalm: maanamewin banner, solarpunk theme, science section in serif - All READMEs + llms.txt updated to v0.4.0 Cedar Edition Gradio 6.0 compatibility fixes: - Move css/head/theme from gr.Blocks() to app.launch() - Chatbot history format: {role, content} dicts (was tuples) - HF Spaces metadata: colorTo must be in [red, yellow, green, blue, indigo, purple, pink, gray] - TinyBard: added clean FastAPI /api/game/{start,choice} endpoints (MCP still available at /gradio) Verified end-to-end: - TinyBard 7861: CRT renders, game loop works (start → choose → next scene) - FocusFriend 7862: chat with Pip works, all 4 modes accessible - CritterCalm 7863: voice cloning tab, calm tab, about tab all render Co-Authored-By: Nanoboozh…08f45f2 -
Hermes BotCo-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>9132bed -
feat: TinyBard — Micro Interactive Text Adventure Generator
Hermes Bot +1: Nanoboozhoogradio Blocks + mount_gradio_app (Gradio 6.0 compatible). Custom CRT terminal frontend (HTML/CSS/JS). 3 genres: Fantasy, Sci-Fi, Cyberpunk. LLM-powered (VibeThinker 1.5B) with procedural fallback. MCP server mode enabled (start_game, make_choice tools). GitHub: github.com/nbiish/tinybard HF Space: huggingface.co/spaces/nbiish/tinybard All 3 HF Spaces created and deployed. Co-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>25449be -
Hermes BotCo-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>ff8048e -
restructure: monorepo with both projects under projects/
Hermes Bot +1: NanoboozhooMove CritterCalm root files → projects/crittercalm/ Add FocusFriend → projects/focusfriend/ New root README with coordination overview. All code coordinated from single repo for further iteration. Co-Authored-By: Nanoboozhoo <nanoboozhoo@git-aaaki>4aa219b