A fast, modern Tetris-like played in your terminal. Built with React + Ink for the UI and a simple TypeScript game engine. Ships as a single npm package (gridfall).
- Global:
npm i -g gridfallthen rungridfall - One-off:
npx gridfall@latest
Requires Node.js 18+.
- Play from source:
bun run play - Build all:
bun run build
- Follow Conventional Commits when merging to
main; CI runs commitlint on pull requests. - Every push to
mainrunssemantic-release, which builds the CLI, updatespackages/cli/package.json+CHANGELOG.md, tagsvX.Y.Z, publishes to npm via Trusted Publishing, and opens a GitHub Release. - The published version is driven entirely by commit history; do not edit versions or the changelog manually. Use
bun run release:dry-runlocally to preview the next release (GitHub release steps are skipped unlessGITHUB_TOKEN/GH_TOKENis set). - Release bumps follow semantic-release defaults:
fix(...)→ patch,feat(...)→ minor, commits with!orBREAKING CHANGE:→ major. Other types are ignored. - Trusted publishing is configured for GitHub Actions; make sure changes land on
mainbefore expecting npm to update automatically. - Releases always run from the tip of
main, so avoid force-pushes or manual tags that skip CI. (This line verifies release pipeline.) - Maintainers can also configure an
NPM_TOKENsecret; CI prefers OIDC, but uses the token as a fallback if needed. (Publish reliability confirmed)
- Left/Right: move
- Down: soft drop
- Up/Space: hard drop
- Z/X: rotate CCW/CW
- C: hold
- P: pause, S: settings, U: toggle unicode, ?: help, Q/Esc: quit
GRIDFALL_ASCII=1force ASCII charactersGRIDFALL_UNICODE=1force Unicode charactersGRIDFALL_REDUCED_MOTION=1minimize animations
MIT — see LICENSE.