Releases: pyronlaboratory/typequake
Releases · pyronlaboratory/typequake
v1.0.2
Maintenance Release
Added
- New Branding: Introduced a refined
logo.svgand updated the project identity across README and documentation. - Support: Added a Ko-fi support link to the README.
- NPM Metadata: Enhanced
package.jsonwith relevant keywords for better discoverability. - Documentation: Initial setup for GitHub Pages using the Jekyll
modernisttheme.
Updated
- Enhanced Release Workflow: GitHub Release notes now automatically include a link to the full changelog/diff between versions.
Full Changelog: v1.0.1...v1.0.2
v1.0.1
Initial Release
typequake v1.0.0
Initial public release · May 9, 2025
What's new
Core analysis pipeline
- Type surface extraction via the TypeScript compiler API. Captures every exported symbol (interfaces, type aliases, classes, enums, functions, and variables) from a package's entry point, including properties, optional flags, call signatures, and type strings.
- Semantic diff engine with five mutation classes:
BREAKING: Indicates an incompatible API change, such as adding or removing a required property, converting an optional property to required, or modifying a function signature in a way that changes its required parameters.REMOVED: Indicates that an exported symbol has been removed entirely.NARROWING: Indicates that a type has become more restrictive, such as removing members from a union type or making previously optional fields required.WIDENING: Indicates that a type has become less restrictive, such as adding members to a union type or making required fields optional.ADDITIVE: Indicates a non-breaking extension to the public API, such as introducing a new export or adding optional properties.
- Workspace-aware dependency graph built from each package's
dependenciesanddevDependencies. Supports transitive traversal so changes in a shared utility package surface impact in every downstream consumer. - Import site resolution using the TypeScript compiler. Locates every
import/exportstatement (named, namespace, type-only, re-exports, wildcard re-exports) that references a mutated symbol, recording the file path, line, column, local alias, and usage count.
Workspace manager support
- pnpm: Resolves workspace topology via
pnpm-workspace.yaml. - Bun: Extracts workspace configurations from
bun.lockb,bun.lock, or thepackage.jsonworkspaces field. - Yarn: Parses
yarn.lockand thepackage.jsonworkspaces field for dependency resolution. - npm / generic: Utilizes the standard
package.jsonworkspaces field. - Custom glob patterns: Supports patterns like
packages/*,apps/**, orlibs/react-*through a native recursive glob walker, eliminating external dependencies.
CLI
typequake <base-ref>: Primary analysis command that accepts any git ref, including branch names, tags, relative refs (HEAD~1), or full SHAs.typequake install-hook: Installs apre-pushgit hook. Safely aborts to avoid overwriting existing hooks not managed by typequake.--json: Emits structured JSON output to stdout using schemaversion: 1.--ci: Returns exit code1upon detectingBREAKINGmutations. Automatically activates if theCIenvironment variable is set totrue.--no-cache: Forces a fresh analysis by bypassing the local disk cache.--verbose: Streams pipeline logs to stderr, covering changed packages, diff statuses, and report counts.--timing: Displays a performance metrics table (extraction, diff, traversal, total) on stderr post-run.-v, --version: Displays the current installed version.
Output
- Terminal renderer built with Ink. Reports grouped by consumer package, then by mutation class. Features include color-coded severity and OSC 8 clickable file links in supported terminals.
- JSON renderer using stable, deterministic key ordering for reliable snapshot tests and
git diff. - GitHub Actions annotations enabled via
GITHUB_ACTIONS=trueenvironment variable. Emits::errorannotations forBREAKINGmutations and::warningannotations for all others, linking directly to the affected file and line.
Caching
- Disk cache stored under
.typequake/cache/at the repository root. - Cache key derived from the git SHA and a hash of the package's
tsconfig.jsoncontent, ensuring stale entries are never served after compiler config changes. - Cache is skipped entirely for packages with a dirty working tree (no stable SHA to key against).
Performance
PerformanceTrackerutility wraps synchronous and async pipeline stages, accumulating time per metric name (extraction,diff,traversal,total).- TypeScript
ts.Programinstances are cached per entry point within a run to avoid redundant parsing across multiple consumer packages.
Built by @pyronlaboratory