---
package: "@webjsdev/cli"
version: 0.7.0
date: 2026-05-21T04:25:09+05:30
commit_count: 9
---
## Features

- **webjs check --rules shows enabled/disabled state per project** [`ff0adcb`](https://github.com/webjsdev/webjs/commit/ff0adcb)
  Reads the project's overrides via loadConventionOverrides(), then
  annotates each rule line as [enabled] or [disabled by override].
  Header text states the default-on invariant explicitly so AI
  agents reading the output cannot misinterpret it.
- **nudge-uncommitted hook ships in every scaffolded app** [`fd600ca`](https://github.com/webjsdev/webjs/commit/fd600ca)
  Mirrors the framework-repo hook into the scaffold templates so
  end-user webjs apps inherit the same commit-frequency
  enforcement out of the box. Three pieces:
- **pre-commit runs webjs test + webjs check** [`11068f7`](https://github.com/webjsdev/webjs/commit/11068f7)
  Tool-agnostic git-level enforcement. Fires on every commit
  regardless of agent (Claude, Cursor, Windsurf, Copilot, human).
  Blocks commits that fail tests or convention checks.
- **Gemini CLI nudge-uncommitted hook** [`4c21aa8`](https://github.com/webjsdev/webjs/commit/4c21aa8)
  Adds the same commit-frequency enforcement to scaffolded apps for
  Gemini CLI users. The hook output shape (hookSpecificOutput.
  additionalContext) is identical to Claude Code's, so the body is
  nearly a copy of the Claude version.
- **Cursor nudge-uncommitted hook** [`5eb459c`](https://github.com/webjsdev/webjs/commit/5eb459c)
  Cursor 1.7+ ships a hooks system at .cursor/hooks.json. The
  afterFileEdit event fires after Cursor's edit/write tools and
  accepts a top-level additional_context field (snake_case) to
  inject a soft reminder into the agent's context.
- **block-prose-punctuation hook ships in every scaffolded app** [`c63dacb`](https://github.com/webjsdev/webjs/commit/c63dacb)
  Mirrors the framework-repo prose hook into scaffolded apps so end
  users get the same enforcement of AGENTS.md invariant 11 (no
  em-dashes, no hyphen-as-pause, no semicolon-as-pause, no
  xyz():-then-prose). The rule is already documented in
- **OpenCode commit-nudge plugin** [`2ee5e15`](https://github.com/webjsdev/webjs/commit/2ee5e15)
  OpenCode does not have shell-script hooks; it uses TS plugin
  modules loaded as-is by Bun. This plugin is the counterpart of
  the .claude/, .gemini/, .cursor/ hooks already in the scaffold.
- **Tier-2 components -> WebComponent + render() + <slot> (rebased)** ([#28](https://github.com/webjsdev/webjs/pull/28)) [`09a296e`](https://github.com/webjsdev/webjs/commit/09a296e)
  * refactor(ui): toggle.ts -> WebComponent + render() + <slot>
  
  First Tier-2 component converted from extends Base to extends
  WebComponent. This is the pattern-locking conversion; remaining

## Fixes

- **drop guard-main-merge hook so end users can merge to main locally** [`9b878a4`](https://github.com/webjsdev/webjs/commit/9b878a4)
  This hook prompted on every 'git merge' and every 'git push ... main'
  through Claude's Bash tool. That matches the framework dev's preference
  for a strict GitHub-PR-only workflow, but it is the wrong default for
  end users. Scaffolded webjs apps may use GitLab, Bitbucket, plain git,
