Skip to content

Make the example screen runnable and verify it in CI (#13) - #16

Merged
cchacs merged 1 commit into
mainfrom
pullfrog/13-runnable-example-screen
Oct 13, 2026
Merged

cchacs merged 1 commit into
mainfrom
pullfrog/13-runnable-example-screen

Conversation

@pullfrog

@pullfrog pullfrog Bot commented Oct 13, 2026

Copy link
Copy Markdown
Contributor

Problem

At audited main, my-plugin/plugin.json declared a nav entry and script but no top-level screen key, and the repo had no screen.html. The Host only creates the plugin-my-plugin container when the manifest declares screen, so screen.js's root resolved to null and the advertised counter/settings demo never mounted. README still called it a complete working example, and custom-checks.yml passed without exercising any of it.

Changes

  • my-plugin/screen.html — new screen markup (counter + persisted-color display) exposing the data-role hooks screen.js queries.
  • my-plugin/plugin.json — adds "screen": "screen.html" and changes type from "visualization" to "utility" (the example is a settings screen, not a setRenderer note-highway renderer).
  • tests/ + requirements-dev.txt — pytest suite covering the manifest/screen mount contract and the settings routes: GET defaults, valid-subset POST + persistence to config_dir, invalid and unknown values (including bool rejected where int expected), non-object and malformed JSON bodies, and the 16 KiB body limit via both the Content-Length fast path and the chunked-stream guard. Tests discover the plugin by scanning for plugin.json, so they survive a rename.
  • custom-checks.yml — now fails when required screen markup or manifest references are missing (declared files exist, screen == "screen.html" because the shipped Host hardcodes that fetch path, nav.screen == "plugin-<id>"), and runs pytest.
  • Docs — READMEs, AGENTS.md, CLAUDE.md, and CHANGELOG.md updated with exact verification commands, the corrected mount contract, and rename instructions that now call out every hard-coded PLUGIN_ID.
  • .gitignore — ignore Python bytecode and pytest caches.

Verification

pip install -r requirements-dev.txt
pytest -q   # 19 passed

The screen contract was verified against the shipped Host source (plugins/__init__.py has_screen gate and static/js/plugin-loader.js hardcoded /api/plugins/<id>/screen.html fetch) and the spec in get-flashbacks/feedback-plugin-spec.

Pullfrog  | View workflow run | via Pullfrog | Using big-pickle (free) | 𝕏

@kilo-code-bot

kilo-code-bot Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Files Reviewed (13 files)
  • .github/workflows/custom-checks.yml
  • .gitignore
  • AGENTS.md
  • CHANGELOG.md
  • CLAUDE.md
  • README.md
  • my-plugin/README.md
  • my-plugin/plugin.json
  • my-plugin/screen.html
  • requirements-dev.txt
  • tests/conftest.py
  • tests/test_manifest_screen.py
  • tests/test_settings_routes.py

Reviewed by efficient · Input: 90K · Output: 7.6K · Cached: 180K

@cchacs
cchacs merged commit 7c0e1d6 into main Oct 13, 2026
9 checks passed
@cchacs
cchacs deleted the pullfrog/13-runnable-example-screen branch October 13, 2026 13:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant