Wizardposts return
The last wizardpost said it would be the final wizardpost, because my wizard died. As it turns out, I was wrong. The character is still dead, but the grimoire refused to stay on the shelf.
The problem at the table
If you have played D&D, you know the spell lookup problem. Your character has a list of prepared spells, and the details for them are spread across a few hundred pages of rulebooks. So everyone ends up with a phone face-down on their character sheet, and staring at a phone kind of ruins the mood.
Spellcard is my answer. It is a D&D spell card that is a physical object: a tiny cheap chip called an ESP32, driving an e-ink panel that shows one spell at a time. Turn a knob, get the next prepared spell. E-ink is the same screen a Kindle has, so it is readable in ambient light at any angle, and it keeps showing the card with the power off.
It is a sibling project to Quorrespondence: the same philosophy of a quiet object first, and it shares the C rendering code that project wrote for its own ESP32 port.
The grimoire, digitized
Back in the grimoire post, I invented a notation system for a handwritten spellbook: number threads, duration threads, distance threads that end in a star, symbols for the eight schools of magic, and marks for spell components. Spellcard renders its stat blocks in that notation. The school sits in a circle in the corner, the range is a thread, concentration is a wave in the duration line, and the components are a mouth, a figure, and a pouch. The spell's actual text stays text.

This part went surprisingly fast, because I pointed Claude at the grimoire blog post and had it implement the notation from my own writeup. The blog post was basically the spec. Getting the glyphs exactly right still took my eyes though: at various points the Verbal mark was a letter G instead of a mouth, the 100 mark was drawn backwards, and Conjuration and Illusion were two ovals you could not tell apart.
It runs on a laptop
Like Quorrespondence, the whole device develops on a laptop with no hardware attached. Every card renders to a PNG file, and looking at the output is the real test. The spell data comes from the SRD, the chunk of the official rules that Wizards of the Coast publishes under a free license. All 339 spells from the 2024 rules render, paginated, plus a contact sheet of the entire set.

Characters
The card holds several characters, not one spell list. The class rules come from the SRD's own tables: a wizard scribes a spellbook from the 218-spell wizard list and prepares 9 of them at level 5, while a cleric gets the whole 109-spell cleric list and narrows it down from there. There are checklist screens for scribing and preparing, driven from the card's own inputs. The rules are advisory on purpose: the class tables suggest, but they never refuse. If your DM says your wizard knows a cleric spell, the card is not going to argue.

The phone is the keyboard
Homebrew spells come from a companion phone app. You write the spell on the phone, and it pushes to the card over Bluetooth, where it gets stored and rendered like any other spell. The phone sends spell data, never images: there is exactly one renderer, and it lives on the card. Homebrew also stays private. The public repo only contains the SRD spells, and your DM's custom invocation lives in your phone and your card and nowhere else.

The push loop already works end to end: type a spell on the phone, and it lands on the simulated glass.
What's left
Nothing has run on a real ESP32 yet. There is no panel driver, no Bluetooth, no battery, and no enclosure - the whole thing is still PNG files and a simulator. There was already one hardware scare on paper: the first round of math said the image of the card did not fit in the chip's memory, and packing the pixels differently is what bought it back. The next step is not more code. It is picking a panel and putting one on a bench.
That is exactly where Quorrespondence was two months ago, so this time I have a head start and a C renderer that already works. Stay on the lookout for the next wizardpost, where hopefully this thing exists in the real world.