· ✦ · ╭────────────────────╮ · ✦
✦ · · │ 1 . 0 . 0 · beta │ · ·
· ✦ ╰────────────────────╯ ✦ ·
Номер сменился на целый разряд, поэтому первым делом — что это вам даёт. И это не полировка.
Всё, что пишет эта сборка, откроет каждая будущая 1.x. Ваш лог, ваш бэкап, отчеканенные вами пропуска, бандлы, которые вы носили на флешке, сертификаты, впускающие ваши устройства. Здесь нет сервера, который вас смигрирует, а значит формат — это либо обещание, либо ловушка: лог, записанный сегодня, открывает сборка, выпущенная через два года, на устройстве, которое всё это время с нами не разговаривало, — возможно, донесённая туда незнакомцем по радио. С этого релиза это обязательство, а не намерение: девяносто подписанных схем, конверт, раскладка на диске, контейнер бэкапа, провод реле, радиопрофиль.
А что не заморожено — записано так же прямо, потому что обещание с размытым краем позже тихо перетолковывают: локальный HTTP API (это способ сборки говорить с собственным интерфейсом, на loopback, за токеном — он никогда не был публичным API), сам интерфейс, проекции, которые устройство считает для себя, и то, что всегда можно запросить заново, — тайлы карт, превью ссылок. Правило под всем этим: что ездит между устройствами или переживает перезапуск — заморожено; что устройство решает для себя — свободно. Всё это в ADR-033.
Бета — не оговорка ни к чему из этого. Форматы заморожены сегодня. «Бета» отмечает дальность наших доказательств: это доказано конструкцией — тестами, измерениями, живыми стендами — и ежедневным использованием на собственных устройствах, но ещё не множеством незнакомцев на железе, которого мы никогда не видели. Это настоящая разница, и ей место в имени.
С 0.1.7 пространство стало ещё и местом, где живёт работа.
🔧 Вещи с историей. Станок, плата, насос — каждый это объект с ревизиями, задачами и наблюдениями, и запись о том, что с ним происходило, остаётся при нём. Чат может указывать на объект: «ленточная пила» в разговоре — та самая пила с той самой историей. → объекты
🎛 Работы, версии и заметки на таймкоде. Релизы держат треки, треки держат сессии; каждый загруженный микс — версия, сменяющая предыдущую без стирания, ★ отмечает то, что вы сейчас слушаете, а заметка может стоять на 2:14, а не просто рядом.
🧭 Field — карта заявлений. Места и сектора, маршруты, маркеры, чек-ины — и позиции, которые честно стареют у вас на глазах: live, потом stale, потом unknown, потому что альтернатива — карта, говорящая, что человек где-то есть, когда всё, что у кого-либо на руках, — заявление сорокаминутной давности. Делиться позицией — явное действие с подписанным сроком, и переключатель говорит ровно то, что делает. SOS едет по собственной полосе. → field
Каждое событие field помещается в один кадр LoRa — не по предположению, а по измерению: граница длины маршрута — то, что реально влезает в настоящую ревизию, написанную Field, и тест пиннит константу так, что при расхождении проигрывает константа.
🗺 Настоящие карты под этим, offline-first. OpenStreetMap, перекрашенный в тёмную, кэшируется зашифрованным на вашем устройстве — места, на которые вы смотрели, работают вообще без сети. По умолчанию выключено, и переключатель говорит почему: запрос тайлов сообщает серверу, какая часть мира у вас на экране. Ваш выбор связности главнее: офлайн значит офлайн, и карта откатывается на собственную «бумагу», а не на спиннер.
🌱 Сенсор может говорить публично. Инструменты вошли в приватные пространства ещё в 0.1.7; теперь теплица может публиковать в broadcast-пространство, где показания едут открыто, как всё остальное там, — привязанная как заверенный писатель до первого кадра и честно помеченная, когда это симуляция.
🔔 А спящий телефон может разбудить реле, которое знает лишь, что что-то пришло, — и никогда что.
Известные нам края по-прежнему названы в README: LoRa доказана на двух платах и ещё молода, общего multi-hop mesh нет, десктопные сборки не подписаны никаким авторитетом. Это края продукта. Они не оговорки ни к чему из сказанного выше.
🐛 Сломалось или обещает больше, чем может доказать? → Полевые заметки.