George Boole Has Entered The Chat — terminal version
The third sibling to web/ (adenosine, browser) and wii/ (magnolia, C99).
Runs entirely in a shell — no graphics, just characters — in the tradition of
AsciiPatrol, Cataclysm:DDA and the rest of the command-line-only canon.
pipx install magmacrunch-george-boole
george-boole
pipx rather than pip because it puts the command on your PATH in
its own virtualenv; plain pip install only reaches your PATH inside an
activated venv. It is also a cabinet in the
magmacrunch arcade — pipx install magmacrunch
gets this and the other two — and plays identically either way.
For working on it:
pip install -e ".[dev]"
python -m boole # or the installed `george-boole` command
Published as magmacrunch-george-boole — prefixed because PyPI has no
scoping like the npm @magmacrunch/… packages, and unprefixed names get
taken (adenosine and magnolia both already belong to someone else there).
The import package stays plain boole.
That opens the title screen, where you pick one of the eight modes. Naming a
mode is an instruction to play it, so --mode skips straight into a game:
python -m boole --mode gauntlet
python -m boole --mode byte --seed 42 # a reproducible run
How to play is the last row of the mode list, or H from anywhere on the
title screen. It carries the browser build's quick rules and a gate table —
the gates are in the HUD during a game, but the HUD is not where you go to
find out what they mean. It scrolls, because the rules are longer than a
standard terminal is tall.
On the title screen
| key | |
|---|---|
| ↑ ↓ / W S | choose a mode |
| Enter | start |
2–8, G |
jump straight to a mode |
Q |
quit |
In a game
| key | |
|---|---|
| arrows / WASD | move |
R |
restart this mode |
Esc |
back to the mode menu |
Q |
quit |
Best scores are kept per mode for as long as the process runs, and shown on both screens.
Needs a terminal at least 59x20 for the board, 44x18 for the menu. Below that it says so rather than drawing a clipped screen. Truecolor is used for the value ramp but not required.
Launchable by an arcade
The game declares itself through an entry point, so anything enumerating
magmacrunch.games finds it:
[project.entry-points."magmacrunch.games"]
george-boole = "boole.arcade:GAME"
It does not own the terminal. A texastoast.core.tui_host.TuiHost does, and
BooleApp is handed one — which is what lets the same code run as its own
command and be seated by a launcher without knowing which happened. Esc from
the mode menu ends a standalone session and returns to the arcade menu under a
launcher, and the game does not have to know the difference: it pops a scene
and the host decides what that means.
How it is built
The engine is texastoast with its terminal backend
(pip install "texastoast[tui]", which this package depends on). The game
draws through texastoast's Renderer/UISurface protocols and never touches a
terminal library directly, so the planned hand-written ANSI backend will be a
swap rather than a rewrite.
boole/
board.py the Boolean rules — pure Python, no engine, no terminal
modes.py bit modes and their tuning tables
theme.py palette and layout, in character cells
scenes.py MenuScene and GameScene — the two screens
app.py wiring: the game, the renderer, the scene stack
tests/
test_board.py the rule set, pinned
test_app.py the screens, driven headlessly
board.py and modes.py import nothing outside the standard library. That is
enforced by a test, and it is what lets the rules be checked in under a second.
Modality is the stack, not a flag. MenuScene sits at the bottom of a
SceneStack; choosing a mode pushes a GameScene on top, and Esc pops back.
Nothing anywhere holds an in_menu boolean — a game that has been popped
stops receiving frames because the stack does not call it, which is the rule
the engine's scene.py exists to enforce.
The mode menu is the engine's own texastoast.ui.Menu, given layout metrics
in cells instead of its pixel defaults. Navigation, selection and the callbacks
are the widget's; only the numbers and the palette are the game's.
The rules came from wii/, not web/
wii/source/board.c is the version of these rules already separated from its
renderer, and it was checked against the web game's own assertions when it was
written. web/js/game.js has the same rules tangled through ~25 document.*
call sites and a constructor that caches DOM nodes, so porting from it would
have meant extracting the logic first.
tests/test_board.py is wii/tests/test_board.c's assertion table, ported.
All three builds have to agree on every one of these or the same game plays
differently in three places, and that divergence is invisible until a player
notices.
One known difference from web/
The web build has a gold "personal best" tile (personalBestBoard in
game.js, 14 references). The Wii build does not have it, and neither does
this one — it was not in the source these rules were ported from. That is a
pre-existing divergence between web/ and wii/, not something introduced
here; per the repo's AGENTS.md rule that a gameplay change lands in every
version, it is worth resolving in one direction or the other.
The rainbow tile — the tile that earned a Gauntlet promotion — is in both
web/ and wii/, and is here too.
Not ported
board_move() on the Wii also fills in a TileMove list recording where every
tile came from, so the renderer can slide tiles instead of teleporting them. It
is written but never read by the rules, and a terminal redrawing a 4x4 grid
does not animate, so it is omitted. Omitting it cannot change behaviour.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file magmacrunch_george_boole-0.2.0.tar.gz.
File metadata
- Download URL: magmacrunch_george_boole-0.2.0.tar.gz
- Upload date:
- Size: 35.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04017151823f24a8637907e20421d278539e7c7a93ac2677f0a74306ab7ad9e8
|
|
| MD5 |
8979192c5b2c5846161776df85167733
|
|
| BLAKE2b-256 |
6446f92f5b998eb6e408243923c24c33066ac365242f29e9430d08abd21afd8e
|
Provenance
The following attestation bundles were made for magmacrunch_george_boole-0.2.0.tar.gz:
Publisher:
release.yml on magmacrunchmedia/george-boole
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
magmacrunch_george_boole-0.2.0.tar.gz -
Subject digest:
04017151823f24a8637907e20421d278539e7c7a93ac2677f0a74306ab7ad9e8 - Sigstore transparency entry: 2621255221
- Sigstore integration time:
-
Permalink:
magmacrunchmedia/george-boole@00443e8716bf4b6d26303a5e42ebb6520b1c7abe -
Branch / Tag:
refs/tags/tui-v0.2.0 - Owner: https://github.com/magmacrunchmedia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@00443e8716bf4b6d26303a5e42ebb6520b1c7abe -
Trigger Event:
push
-
Statement type:
File details
Details for the file magmacrunch_george_boole-0.2.0-py3-none-any.whl.
File metadata
- Download URL: magmacrunch_george_boole-0.2.0-py3-none-any.whl
- Upload date:
- Size: 27.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e600f56bb4f64ecc27ec9fc4544fd89810ce9c7b429b2d88c034af09d762b011
|
|
| MD5 |
85f26f55593130b3280a6ff2586bb6a5
|
|
| BLAKE2b-256 |
cbdc0748a69bdb6bc6ba00fe91cfb8107d551234beb96b02da6806ae35d6e478
|
Provenance
The following attestation bundles were made for magmacrunch_george_boole-0.2.0-py3-none-any.whl:
Publisher:
release.yml on magmacrunchmedia/george-boole
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
magmacrunch_george_boole-0.2.0-py3-none-any.whl -
Subject digest:
e600f56bb4f64ecc27ec9fc4544fd89810ce9c7b429b2d88c034af09d762b011 - Sigstore transparency entry: 2621255417
- Sigstore integration time:
-
Permalink:
magmacrunchmedia/george-boole@00443e8716bf4b6d26303a5e42ebb6520b1c7abe -
Branch / Tag:
refs/tags/tui-v0.2.0 - Owner: https://github.com/magmacrunchmedia
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@00443e8716bf4b6d26303a5e42ebb6520b1c7abe -
Trigger Event:
push
-
Statement type: