Releases: apolenkov/feynman
Releases · apolenkov/feynman
Release list
2.1.1
Fixed
- Native skill settings invoke only an already installed local CLI. They do not
use a remote package runner, install or update code, or write state directly. - Manual publishing rejects a release tag that points to a different source
commit before changing a GitHub release or publishing to npm.
2.1.0
Fixed
- SessionStart bookkeeping cannot overwrite a concurrent preference change.
The advisory injection counter is stored separately from user preferences. - Settings and state writes preserve the previous file when a staged write or
rename fails. Install backs up corrupt state and rejects malformed hook shapes. - Install and uninstall preserve unrelated hooks with similar script names.
- Generated hook commands treat paths with quotes, spaces and dollar signs
literally, including after bootstrap export and repeated installation. - Bootstrap exports the complete CLI and core runtime.
--forceonly replaces
owned exports and refuses symlinks and protected directories. - Autofix preserves text in damaged frames instead of deleting unbordered
content. Frames with ambiguous non-empty rows are left for manual repair,
including when L11/L15 conversion or fenced processing is requested. - Invalid state commands no longer bootstrap or repair state before failing.
- Unknown output styles cannot resolve inherited object properties.
- SessionStart ignores malformed event shapes before creating local state.
- ASCII explanations retain relation types, direction, conditions, explicit
absences, uncertainty and exhaustive scope. Compact layouts preserve complete
labels, aligned table columns and readable hierarchy branches. - Native skill loading uses the exact catalog path, including repeated directory
components, without filesystem discovery or setup actions.
Changed
- The native skill explains structures directly from its packaged instructions;
CLI state operations apply only to explicit settings requests. - Core input contracts are readonly. Core lint checks use TypeScript type
information and reject outer dependencies, dynamic loading and ambient I/O. - Type-aware lint now covers CLI, hooks, automation and tests as well as core
modules; warnings fail the gate. - A pinned Prettier version enforces source/configuration formatting in local
CI and GitHub Actions. Diagram strings and Markdown spacing are preserved. - Workflow actions use verified commit pins, release rehearsals have read-only
permissions, and publication reuses the artifact validated by CI. - The complete local gate also runs in CI on Node 22, 24 and 26; it now compares
two clean package builds and reports production files missing from LCOV. - ASCII evaluation records a frozen 67-call suite, including native skill,
installed-hook and baseline arms, settings and suppression cases. Independent
readers reconstruct diagrams before receiving hidden questions and source
facts; tool activity and rendered alignment have separate acceptance gates. - The mixed-script rule no longer loads package metadata during module import;
regression tests preserve acceptance of all published package identifiers.
2.0.0
Breaking changes
- feynman is now Codex-only. Retired client adapters, hook manifests, skills,
and target-selection commands are no longer shipped. Usefeynman stateor
feynman statusto manage the one supported local runtime.
Changed
- Codex ships as a native marketplace skill; the explicit installer remains the
supported way to register itsSessionStarthook. - Native-plugin metadata and the skill description now cover visual
architecture, flows, trees, comparisons, priorities, and status. The skill
invokes the packaged CLI throughnpx, so it has no global-binary
prerequisite. - The supported Node.js baseline is now 22.18 or newer, matching Node's stable
built-in TypeScript support and the current ESLint runtime requirement. - Development tooling was refreshed to current compatible releases. TypeScript
stays on 6.0.x untiltypescript-eslintofficially supports TypeScript 7. - CI is read-only, no longer self-merges pull requests, and retains package and
coverage artifacts instead of committing generated badge data. The coverage
gate measures application source rather than optional test-harness probes.
Fixed
- Package builds accept both npm 11 and npm 12
npm pack --jsonoutput. - Release smoke checks use an isolated npm configuration, so workstation-level
npm policies cannot invalidate a clean-consumer verification. SessionStartnow increments only a valid local injection counter and
recovers safely from malformed counter values.- Release bumping requires explicit
--commit,--tag, and--pushflags. - Changelog generation promotes a maintained
[Unreleased]section instead of
duplicating history when legacy git tags are incomplete. - npm publication now uses GitHub OIDC Trusted Publishing rather than a
long-lived repository token.
feynman v0.2.0
feynman v0.2.0 Release Notes
Summary
v0.2.0 turns feynman from a working hook prototype into a production-ready
open-source plugin for Claude Code and Codex.
What's New
- First-class Codex support:
npx @albinocrabs/feynman install --target codexnpx @albinocrabs/feynman uninstall --target codexnpx @albinocrabs/feynman doctor --target codex
- Dual-client install:
--target claude--target codex--target both
- Codex plugin metadata:
.codex-plugin/plugin.json- repo-root
hooks.json
- Claude Code plugin hook metadata:
hooks/hooks.json
FEYNMAN_HOMEruntime selector so the same hook script can use
~/.claudeor~/.codexstate without duplicating code.- Diagram linter:
feynman lint <file>feynman-lint <file>- L01-L08 structural rules
- Stop-hook correction path
- Documentation:
- rewritten README
- architecture docs
- lint rules reference
- visual patterns guide
- six domain examples
- self-improvement loop design for v0.3.0
Fixed
- Install logic is idempotent and no longer duplicates hook entries.
- Bash installer delegates to the Node CLI so install behavior has one source
of truth. uninstall.shremoves hook entries while preserving user state.- Runtime state uses
injectionsinstead of the misleading legacycount. - Plugin manifests and npm package metadata now match the v0.2.0 release.
Breaking Changes
None expected for normal users.
The state schema now uses:
{
"enabled": true,
"intensity": "full",
"injections": 0
}The hook still reads legacy count once and migrates it to injections.
Migration From v0.1
Run the installer again:
npx @albinocrabs/feynman install --target claudeFor Codex:
npx @albinocrabs/feynman install --target codexFor both:
npx @albinocrabs/feynman install --target bothThen restart Claude Code or Codex.
Verification
npm test: 190 tests passingnpm run coverage: 96.98% line coverage- Public docs/examples lint: passing
npm pack --dry-run: package includes Claude Code and Codex plugin metadata- Isolated tarball install:
install --target bothplus both doctor targets pass
Release Notes
- npm package name:
@albinocrabs/feynman - CLI binaries remain
feynmanandfeynman-lint - Git tag and GitHub release should be cut after npm publish succeeds.