diff --git a/.gemini/skills/antivibe/SKILL.md b/.gemini/skills/antivibe/SKILL.md new file mode 100644 index 0000000..59de6cf --- /dev/null +++ b/.gemini/skills/antivibe/SKILL.md @@ -0,0 +1,17 @@ +--- +name: antivibe +description: Doro-cli tailored Anti-vibecoding skill. Generates focused, educational explanations of AI-written code without bloated documentation. +triggers: + - phrase: "/antivibe" + - phrase: "deep dive" +--- + +# AntiVibe (doro-cli edition) + +When triggered, generate a concise learning guide for recently modified or AI-generated code. Save output to `deep-dive/[component]-YYYY-MM-DD.md`. + +## Guidelines +1. **Explain the Why**: Focus on design logic and architecture decisions, not just reciting the code. +2. **Contextualize**: Relate explanations to `doro-cli`'s keyboard-first `neo-blessed` UI and state machine constraints. +3. **Be Direct**: Strip away generic fluff. Point directly to CS concepts, TypeScript features, or relevant TUI patterns utilized. +4. **Resources**: Include at most 1 or 2 highly specific reference links (no generic tutorials). diff --git a/.opencode/plans/NOISSUE-papadoro-cli.md b/.opencode/plans/NOISSUE-papadoro-cli.md deleted file mode 100644 index ab0c564..0000000 --- a/.opencode/plans/NOISSUE-papadoro-cli.md +++ /dev/null @@ -1,43 +0,0 @@ -## Context - -- Build new CLI project `papadoro` from empty repository. -- Provide simple pleasant full-screen terminal UI. -- Support keyboard shortcuts and mouse confirmation behavior. -- Add lightweight 8-bit style audio cues. - -## Goal - -- Deliver runnable `papadoro` command implementing requested timer flows and controls. - -## Non-goals - -- No daemon/background service mode. -- No persistence/config file editing UI. -- No CI/CD or release automation setup. - -## Phases - -1. Scaffold Node + TypeScript CLI package and scripts. -2. Implement timer state machine and flow rules. -3. Implement blessed-based TUI and input handling. -4. Implement WAV synth + OS playback fallback. -5. Add focused unit tests. -6. Run quality gates. - -## Progress Log - -- [x] Created feature branch `feature/NOISSUE-papadoro-cli`. -- [x] Scaffold project files and dependencies. -- [x] Implement timer/state logic. -- [x] Implement TUI and controls. -- [x] Implement audio generation/playback. -- [x] Add tests. -- [x] Run quality gates. -- [x] Tune audio loudness down and soften wave. -- [x] Auto-start timer on launch. -- [x] Simplify UI details and add playful mode backgrounds. -- [x] Stabilize terminal rendering with compatibility-focused UI rewrite. -- [x] Refine UI to cleaner layout, softer colors, and title-only timer. -- [x] Fix low-contrast long break status stripe with explicit per-mode band colors. -- [x] Prevent overlapping audio by interrupting active clip on mode switches. -- [x] Play short reset beep instead of full mode melody on reset. diff --git a/.opencode/plans/chore_investigate_artifact_size.md b/.opencode/plans/chore_investigate_artifact_size.md deleted file mode 100644 index 9b4cd9e..0000000 --- a/.opencode/plans/chore_investigate_artifact_size.md +++ /dev/null @@ -1,51 +0,0 @@ -# Investigation: Optimize Binary Artifact Sizes - -## Goal - -To understand the root causes of large binary artifact sizes generated by `pkg` and explore strategies to reduce them, or identify alternative packaging/distribution methods if necessary. - -## Steps: - -1. **Research `pkg` Size Optimization:** - - Investigate `pkg` documentation for flags or configuration options that could reduce binary size (e.g., stripping debug symbols, optimizing Node.js runtime inclusion). - - Explore options for including only necessary Node.js modules or features. - -2. **Explore Alternative Bundling Tools:** - - Research Node.js bundlers like `esbuild`, `ncc`, `webpack` (with Node.js targets), or others known for producing smaller bundles or executables. - - Evaluate their suitability for creating single-file executables for `doro-cli`. - - Perform proof-of-concept builds with promising alternatives and compare artifact sizes. - -3. **Analyze Homebrew Packaging:** - - Research how Node.js CLI tools are typically packaged for Homebrew. - - Determine if Homebrew installation inherently leads to smaller user installations compared to standalone `pkg` binaries. - - Understand the effort involved in creating and maintaining a Homebrew formula for `doro-cli`. - -4. **Re-evaluate Distribution Strategy:** - - Based on the findings from steps 1-3, determine the most viable distribution strategy: - - **Option A**: Continue with `pkg` binaries, applying any found optimizations. - - **Option B**: Distribute primarily as a standard npm package. - - **Option C**: Use an alternative bundling tool that produces smaller executables. - - **Option D**: Rely on Homebrew for distribution, potentially alongside npm. - - Consider the trade-offs for each option (user experience, maintenance effort, size). - -## Verification: - -- Document the findings from each research step, including comparative artifact sizes (if possible) and implementation effort. -- Present a clear recommendation for the optimal packaging and distribution strategy for `doro-cli`. - -## Findings and Recommendation - -### Key Findings: - -1. **`pkg` (vercel/pkg):** Is deprecated. Optimization efforts for it are no longer recommended. -2. **Node.js SEA (Single Executable Applications):** Official Node.js feature for creating standalone binaries (35-80MB). Recommended replacement for `pkg` for Node.js projects. -3. **Bun/Deno:** Offer smaller executables (40-90MB), but involve switching runtimes, which is outside the scope of this optimization for an existing Node.js project. -4. **Homebrew:** Standard packaging for Node.js CLIs via `Language::Node` (relying on Homebrew-managed Node.js) is robust for macOS. Standalone binaries are possible for third-party taps, but not `homebrew-core`. - -### Recommended Distribution Strategy: - -To balance user experience, artifact size, and maintenance: - -- **Primary:** Distribute as a **standard npm package**. (Lowest effort, typical for Node.js CLIs). -- **Enhanced (Standalone):** Offer **Node.js SEA-generated binaries**. (Replaces `pkg` for users preferring single executables). -- **Enhanced (macOS):** Create a **Homebrew formula** using the standard `Language::Node` approach. (Integrates with macOS package management). diff --git a/.opencode/skills/antivibe/SKILL.md b/.opencode/skills/antivibe/SKILL.md new file mode 100644 index 0000000..59de6cf --- /dev/null +++ b/.opencode/skills/antivibe/SKILL.md @@ -0,0 +1,17 @@ +--- +name: antivibe +description: Doro-cli tailored Anti-vibecoding skill. Generates focused, educational explanations of AI-written code without bloated documentation. +triggers: + - phrase: "/antivibe" + - phrase: "deep dive" +--- + +# AntiVibe (doro-cli edition) + +When triggered, generate a concise learning guide for recently modified or AI-generated code. Save output to `deep-dive/[component]-YYYY-MM-DD.md`. + +## Guidelines +1. **Explain the Why**: Focus on design logic and architecture decisions, not just reciting the code. +2. **Contextualize**: Relate explanations to `doro-cli`'s keyboard-first `neo-blessed` UI and state machine constraints. +3. **Be Direct**: Strip away generic fluff. Point directly to CS concepts, TypeScript features, or relevant TUI patterns utilized. +4. **Resources**: Include at most 1 or 2 highly specific reference links (no generic tutorials). diff --git a/AGENTS.md b/AGENTS.md index 5953be1..7fed2f6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,3 +24,8 @@ Minimal terminal Pomodoro timer (Node.js, TypeScript, blessed TUI). ## CI/CD - When investigating CI/CD failures on GitHub-hosted repositories, agents should first attempt to retrieve logs from the failed run using the `gh` CLI before attempting to reproduce locally. + +## AntiVibe + +- **Triggers**: `/antivibe` or "deep dive". +- **Action**: Act as an Explainer Agent to help the user understand recently generated code. Save a concise learning guide to `deep-dive/[component]-YYYY-MM-DD.md`. Focus on *why* design decisions were made, tailored to the project's unique architecture (TUI, strict state machines), as defined in `.opencode/skills/antivibe/SKILL.md`. diff --git a/CHANGELOG.md b/CHANGELOG.md index de7f826..4a1da11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [Unreleased] + +### Added +- Integrated a tailored `antivibe` AI code learning skill to help explain AI-generated code. +- Configured OpenCode to explicitly allow the `antivibe` skill. + +## [1.1.0] - 2026-04-25 + +### Added +- Replaced synthetic 8-bit audio cues with curated classical Austrian composer snippets. + +### Changed +- Transitioned to `release-it` for a standardized and automated package publishing workflow. + +## [1.0.0] - 2026-04-24 + +### Added +- Automated NPM publishing pipeline via GitHub Actions using Trusted Publishing (OIDC). +- Added robust local release scripts with pre-release safety checks. +- Included package metadata and graphical assets for the NPM registry. + +### Changed +- Excluded test files and unnecessary artifacts from the published NPM package. +- Consolidated development dependencies via Dependabot. +- Fixed multiple CI workflow issues related to Node versions and build steps. + ## [0.1.0] - 2026-04-24 ### Added diff --git a/opencode.json b/opencode.json index d11b408..570ed3b 100644 --- a/opencode.json +++ b/opencode.json @@ -22,6 +22,9 @@ "git push *": "allow", "git push": "allow", "gh *": "allow" + }, + "skill": { + "antivibe": "allow" } } }