日志暂以英文提供 · the log is in English for now

传输日志/2026-08-25v0.1.7

0.1.7 — instruments join the room, and send becomes a fact

   ·  ✦   ·        ╭──────────────╮       ·   ✦
 ✦    ·      ·     │  0 . 1 . 7   │  ·        ·
   ·    ✦          ╰──────────────╯     ✦   ·

One story this release finally tells, and one promise it makes unbreakable.

🌡 Instruments are participants now. A space can hold more than people: a sensor joins the room the way a device does — with its own keys, a declaration of what it measures, and readings that appear in the Instruments panel of every member. The plane they speak on is sealed to the space and carried beside the conversation, never inside it: your messages and your greenhouse’s temperature are different kinds of speech, and relays can read neither. Rotations reach instruments the same way they reach devices — someone leaves, the instrument reseals with everyone else. A virtual greenhouse ships with every node as the reference: attach it to any space you own and watch the panel breathe.

🔌 And a microcontroller can be one — developer preview. The QuietInstrument SDK turns an ESP32 sketch into a full instrument: the board holds its own keys, signs its own enrollment, seals its own readings — byte-compatible with the node, checked by an interop gate in CI. A sketch is a dozen lines; one command builds, flashes and watches the serial monitor, and the guide walks a LilyGo T3-S3 with a DHT22 from zero to readings in the panel. Preview means what it says: today a board reaches a space through a USB dev stand beside a node; the radio and network bearers that make it stand alone are the next decision, and the guide is honest about which side of that line everything sits on.

📨 Send is a fact, not a promise. A field report shaped this one: press send, “nothing happens”, the text is gone — press again — the message arrives twice. Both sends had worked; the screen never said so. Now the button answers in the same keystroke, every time, on any network:

  • Your words are written to a durable outbox on the device before any network is touched — the box clears because the text is already safe.
  • A pending bubble appears immediately, says “sending…”, and says honestly when the network is gone: no connection — will keep trying. Retries back off and keep order; closing or reloading the app loses nothing — the queue picks up where it stood.
  • Retrying is safe because sending is now idempotent: every request carries a reference the node deduplicates on, so a retry — or an impatient double-press — can never mint a second copy.
  • The one thing never retried is a refusal: if the space will not take your words, they come back to you in a banner with the reason and a one-tap way to restore the text. Words do not vanish. That is the whole doctrine.
  • And your own send always scrolls into view — stillness is for reading; you just spoke.

🕰 The feed knows what day it is. A quiet line between days — Today, Yesterday, then the date — and the time in the corner of every bubble, with the full date on hover. A conversation picked up after a week no longer reads as one endless evening.

Smaller honesties that rode along:

  • A frozen-feed class is closed: API answers now forbid HTTP caching outright, so a webview can never serve yesterday’s room while every poll “succeeds”.
  • Six interface strings that showed their placeholders — {who} asking for a conversation, {site} in the play consent — now show the name.
  • A first pass of the interface’s colour re-grade: colour leaves the surfaces and becomes meaning.
  • A sent message wakes the courier at once instead of sitting out the rest of a sync tick.

Update both sides for the instrument plane: readings travel in envelopes only 0.1.6+ carries, and the panel is new in this build. Everything about sending needs nobody else to update — your device, your outbox.

🐛 Broken, or claiming more than it can prove? → Field notes.

在 github 上的发布 ↗下载构建 →