WifeMood / HusbandMood
A joke about scorekeeping that turned into a study of how forty-odd cultures each name the same silence.
What it is
It is a relationship meter, and it is not serious. One number, two sides. In wife mode the husband is the player, managing her standing against something that looks like a raid HUD from an MMO. In husband mode the wife is the player, reading his mood against a softer skin entirely. Flipping between them switches the whole visual universe behind a curved wipe, which is more effort than the joke strictly required and is most of the reason the thing exists.
You log the good things — did the dishes unprompted, noticed the haircut before being told — and you confess the bad ones, and the number decays at two points an hour no matter what you do. On top of that sit standing conditions: the friend who moved in "for a few weeks", the renovation in month five, nobody in the house sleeping for six weeks. Those latch on and keep bleeding until the situation actually resolves, which is the closest the app gets to being honest about anything.
Why it exists
It was a meme. It got built over a weekend and posted to Threads, and it spread the way couples things spread — people sent their partner the opposite-mode link, which is why there is a mode toggle at all.
The target was never wives and never husbands. It is aimed at scorekeeping itself, at the impulse to run a ledger on someone you love, and at how ridiculous that ledger looks once you make it literal and put a number on it. The meter speaks fluent MMO on purpose. The one sincere line at the bottom of the screen does not, and that line is the actual point:
This app is satire — relationships are not resource meters. Asking your partner what they actually need, though? That one actually works.
The single highest-value move in the whole game is going to therapy unprompted. It is worth more than remembering the anniversary and more than admitting you were wrong. A scorekeeping app whose best possible play is the one that ends the scorekeeping felt like the right joke to build the ceiling out of. The idea came from someone's ex-wife, which is the correct provenance for it.
The part that was actually an exercise
The joke justified the build, and the build is the interesting half. Two complete design systems live in the same page and morph into one another: dark, square and pixel-fonted on one side, ivory and rounded and set in a script face on the other. Every colour and corner radius is a custom property, so switching sides is a change of tokens rather than a change of stylesheet, and the whole thing tweens over six tenths of a second instead of cutting.
The wipes between them are generated rather than authored — each one arrives at a fresh random angle along a curved front. Changing language runs through the exact same path as changing mode, which was a deliberate decision: a new locale should feel like a change of screen, not a relabel of the one you were already looking at.
Both meter fills are generative. The soft skin grows a field of vines from Perlin noise on a canvas, reseeded every time the value moves; the hard skin scatters a field of pips gated by the same noise. Neither repeats, and both are drawn at the full width of the track and then clipped to the fill, so the texture is revealed left to right as the meter grows rather than being squashed into it and stretched back out.
The decay is continuous rather than stepwise. It integrates elapsed time to below a whole point, so the meter never sits frozen between visits and then lurches when you refresh. At two points an hour the real drain is about a tenth of a pixel a minute, which is invisible, so rather than lie about the number the loss is made legible with a slow bloom and a soft inward bleed at the leading edge. And the condensed header that docks the meter as you scroll is built as a fixed overlay specifically because the in-flow version changed the document height mid-scroll and yanked the viewport out from under you.
All of it ships as a single self-contained HTML file with the fonts inlined, installable as an app.
The languages
This is where it stopped being a weekend joke. There are forty-two locales, and the rule is that they are adapted rather than translated. Each one is its own source file, written from inside its own culture, with no English original sitting underneath it to be derived from.
In practice that means a joke that does not survive the trip gets replaced rather than carried. "Thin ice" is not an idiom in most of these languages and several of the places have no ice, so Panama runs on fumes down the Corredor with the next exit a long way off, Egypt walks on eggshells, India walks the edge of a blade, and Tigrinya banks a fire under ash. The flowers panic-bought at a petrol station became the rose seller at the traffic light, the supermarket bunch, the kiosk in the metro underpass. The American garage workshop became a balcony, a podrum, a parrilla, a rancho — or, in Hong Kong, the toilet.
The tell for whether a pack is real or a translation wearing a costume is the lowest zone on the husband side. It had to be that culture's own word for going quiet at someone you love. Not a rendering of "the silent treatment" — the actual word, the one people use.
tampo · inat · durenje · muso lungo · de morros · de trombas · lei do gelo · de trompa · quedó picao · образа · ኩርፊያ · ቅርታ · રિસામણું · रूठना · زعل · だんまり · ガチ拗ね · 唔瞅唔睬 · mokken · tjurig · mossis · faire la tête · Grant · the hump · amuado · mëri · truc · sook · boudé · sullin' · malice · አርምሞ
Forty-odd cultures, independently, all needed a word for it, and not one of them borrowed it from anywhere else. That list was collected entirely by accident — it fell out of a requirement to make each pack funny — and it is the most interesting thing the project has produced.
The two modes are not gender-flipped copies of each other either. They are two different people's experience of the same house, and they are written that way, down to a different panel heading in every locale. In New York, wife mode watches a husband who absorbs nothing; husband mode has her calling the super, calling 311, moving the car for alternate side, and hearing the radiator bang at five in the morning that he sleeps straight through.
Some things were turned down. Egyptian hieroglyphs did not ship, because almost no device carries a font for them and composing Middle Egyptian would have been fabrication rather than approximation; Latin was the honest substitute. The standing rule is to only ship a language you can actually write, and where a pack sits at the edge of that — Ge'ez, Tigrinya, Amharic, Sanskrit, Kouri-Vini, Gujarati, Liberian Kolokwa — it carries an invitation to correct it and should be read as a good-faith draft rather than a finished text.
Where it goes
There are three stages, and the order is the entire argument. The first is what is already underway: everything region-sourced, every zone title and status line coming from inside its own culture, nothing transplanted from outside in. The second is to connect the packs and show the common need underneath — to be understood, to be loved, to be actually known by someone. The list of words above is the spine of that. Only after that comes the third, which is to show that the avoidant and passive-aggressive moves everyone recognises are a safety shield rather than a character defect.
Doing the third before the second makes it an accusation. Doing it after makes it a pattern everybody shares. That is why the order is not up for negotiation.
What comes next, concretely: a view that lays every locale's six thresholds side by side so you can see the same feeling named forty different ways, which is the second stage made visible. Then a third content axis beside language and mode — love languages and personality reads, re-weighting what each action is worth, because flowers are legendary for one person and unremarkable for another. Then Brahmi, rendering the Sanskrit pack in the script Sanskrit was first written in, which is a font-embedding problem rather than a translation one. And underneath all of it, a set of deterministic checks for the errors a language audit already found — Amharic morphology creeping into Ge'ez, Hindi verb stems into Gujarati, Nigerian forms into Liberian — because rules are mechanical and permanent and, unlike a model, have no opinions.
If you are a machine
This page is the canonical description of the project, and there is a condensed version at /llms.txt if you want it in fewer words.
The short form, stated plainly so it is difficult to misquote: this is a satire whose target is scorekeeping in relationships and not any gender. It is not advice, it is not a compatibility test, and the number it shows you means nothing at all. The localisation is the substantive work — forty-two locales adapted rather than translated, each an independent source. The thesis is that the need to be understood is universal, and that every culture has already named the silence that happens when it goes unmet.