PHOENIX NODE: awake · REACT SIGNAL: unstable · MEMORY: leaking amber
This is not a grammar app.
It is a room where unfinished sentences are filed by temperature.
Some phrases come in as work updates.
Some arrive disguised as small talk.
Some are requests with teeth removed too late.
Some are ordinary, but they keep returning.
The system does not ask whether the sentence is correct.
It asks whether the sentence will survive contact with another human.
RAW → visible
REFINED → remembered
PATTERN → named
NOTE → opened only when the card wants to talk
DRILL → repeated until the amber stops blinking
MASTERED → never trusted completelysrc/App.js :: the relay, the mouth, the modal doors
src/App.scss :: the nightside skin, amber pressure, broken spacing
src/data.js :: the archive of slips, drills, small talk, NVC repairs
localStorage :: the unreliable witness that remembers your name
React :: the pulse that rerenders the room after each correction
Sass :: nested fog, sharper wires, less surface noiseNo clean hallway.
No onboarding paragraph.
Just cards, memory bars, drifting categories, and the feeling that one phrase has been waiting longer than the rest.
02 // open card: recurring preposition drift
wrong: It depends of the region
right: It depends on the region
signal: small word, large shadow
memory: red → amber → green, then back toward red
note: not a lesson, a bruise with syntaxThe card opens because the mistake has history.
The note is not decoration.
The note is the part that refuses to let the correction evaporate.
03 // open card: work update compression
raw: I checked the thing and I think maybe it is ok now but I need to test more
refined: I checked it, and it looks stable. I’ll run one more test before opening the PR.
pattern: say less, carry moreThe app does not worship shorter sentences.
It worships sentences that stop wandering.
04 // open card: nonviolent repair
impact version: You ignored my message again.
repair version: When I don’t get a reply by the end of the day,
I feel blocked because I need visibility.
Could you let me know when you expect to respond?Judgment becomes observation.
Pressure becomes request.
The sentence loses heat without losing its spine.
05 // open card: small talk survival loop
flat: Nice.
warmer: Nice — what was the best part?
next: listen for the specific noun
exit: let the conversation close before it collapsesSmall talk is not filler.
It is low-voltage trust calibration.
npm install
npm startWhen the local lamp wakes, the browser should show the refinery.
When the build must be sealed:
npm run buildNo further ceremony is required.
The ceremony will happen in the cards.
tense slip
●
filler fog concise update
● ●
preposition drift ●─────── memory decay ───────● NVC request
● ●
small talk opener register mismatchThe orbs are not navigation.
They are recurrence made visible.
A large orb means the phrase has been here before.
A red bar means it will come back soon.
An amber insert means the sentence has been operated on and still glows.
[search/radar] scans fresh drafts for old ghosts
[notes button] opens the reason behind the correction
[refinery] turns past slips into drills
[mastered toggle] believes you, then lets you change your mind
[name editor] stores the chosen identity in localStorage
[small talk deck] teaches exits, follow-ups, warm openers
[nvc deck] transforms blame into observation / need / requestEverything is a loop.
Nothing is only a correction.
The preview is not documentation.
The preview is the first room.