fix(node): use compact guideline copy and plain setup checkmarks

This commit is contained in:
DCCONSTRUCTIONS
2026-09-06 00:44:23 +03:00
parent 22d69107ba
commit 429b4681fe
5 changed files with 25 additions and 4 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ import sys
from build_deb import build, VERSION, BRAND_SHA256
ROOT = Path(__file__).resolve().parents[1]
DG_COMMIT = "be6463fd596ae2a1a96409d2cee84edc90e7167f"
DG_COMMIT = "3adeb33b1b300bf7add342a5c3a863fda15dc8a6"
def guideline_sources():
+1 -1
View File
@@ -13,7 +13,7 @@ import tarfile
ROOT = Path(__file__).resolve().parents[1]
VERSION = "0.6.8"
VERSION = "0.6.9"
BRAND_SHA256 = "8bfee8ca9f98e0db48d98aae3af4b32493b8593e18b064a0239d513d824182af"
+1 -1
View File
@@ -22,7 +22,7 @@ export function EnvironmentView({environment,failure,success}: {environment:Retu
<ResourceList aria-label="Этапы настройки окружения">{value.profile.steps.map(specification=>{
const step=value.run?.steps.find(item=>item.id===specification.id);
const state=step?.state??"pending";
return <li key={specification.id}><ResourceRow icon={state==="running"?<ActivityIndicator size="compact" />:<Icon name={state==="error"?"alert":"circle"} />} title={specification.label} description={specification.description} metadata={step?.detail} status={<StatusBadge tone={state==="complete"?"success":state==="error"?"warning":"neutral"}>{state==="complete"?<Icon name="check" label="Этап завершён" />:labels[state]??"Неизвестно"}</StatusBadge>} /></li>;
return <li key={specification.id}><ResourceRow icon={state==="running"?<ActivityIndicator size="compact" />:<Icon name={state==="error"?"alert":"circle"} />} title={specification.label} description={specification.description} metadata={step?.detail} status={state==="complete"?<Icon name="check" label="Этап завершён" />:<StatusBadge tone={state==="error"?"warning":"neutral"}>{labels[state]??"Неизвестно"}</StatusBadge>} /></li>;
})}</ResourceList>
{value.run&&!running&&value.run.updated_at>0&&<p className="node-note">Результат проверки от {new Date(value.run.updated_at*1000).toLocaleString("ru-RU")}.</p>}
{complete&&!running&&<p className="node-note">Системные этапы завершены. Ниже проверьте вход в Tailscale и доверенный ключ для SSH.</p>}
@@ -183,3 +183,24 @@ START с предыдущим сеансом отвергаются. Втора
отмечает недоступность БК и запрещает аппаратные команды до свежего подтверждения.
Физические unplug/replug и смена USB-порта требуют отдельной аппаратной приёмки;
автоматическое пересоздание sandbox IIO при смене путей пока не подтверждено.
## Приёмка 0.6.8 и типографика 0.6.9
На подготовленном Mini 0.6.8 через Node UI проверены: отсутствие download после
перезапуска, единственная лампочка, повторная подготовка из настроек с успешной
SDK-проверкой, имя Node → Core → Node, исходная запись шести потоков и STOP.
Короткая запись завершена: 596246528 байт, SQLite quick_check=ok, 12999 сообщений;
SHA-256 2b7d213d2126edbb7e031c17634e2750956bbf7d4205549bbe1d8b155d9c4108.
Во время финализации UI продолжал отвечать. Реальные кадры остались на БК.
Владелец физически отключил USB: в списках обоих интерфейсов строка исчезла,
в уже открытом просмотре появилось сообщение об отключении, START недоступен.
Время реакции от физического события инструментально не измерялось.
Повторное подключение и захват без подготовки ещё ожидают аппаратной проверки.
Уточнение UI 06.09.2026: SettingsCard и пустые списки используют компактные
заголовки md (13 px), описания sm (12 px). Правило закреплено в Design Guideline
`docs/OPERATIONAL_TYPOGRAPHY.md` и registry; локального увеличения заголовков нет.
Завершённый этап настройки окружения показывает только Icon check, без плашки
StatusBadge. Убрано дублирование сообщения об отключении в просмотре камеры.
+1 -1
View File
@@ -14,7 +14,7 @@ export function SensorDetail({device,transport,back,refresh,failure,enabled=true
const currentOption=detail?.options?.find(v=>v.id===option);const active=device.snapshot.acquisition==='streaming'||device.snapshot.acquisition==='starting'||device.snapshot.acquisition==='stopping';
return <div className="sensor-content"><div><Button onClick={back}>К устройствам</Button></div>
<SettingsCard title={device.name} description={`${device.model} · USB ${device.usb}${device.firmware?' · '+device.firmware:''}`}>
{!device.online&&<p>Камера отключена от БК.</p>}
{!device.online&&!device.snapshot.message&&<p>Камера отключена от БК.</p>}
{device.snapshot.message&&<p>{device.snapshot.message}</p>}
<div className="sensor-actions"><Button disabled={!enabled||pending||!detail||active||!device.online} onClick={()=>void act('start',{profiles:Object.values(selected).filter(Boolean),record:false})}>Начать просмотр</Button><Button disabled={!enabled||pending||!detail||active||!device.online} onClick={()=>void act('start',{profiles:Object.values(selected).filter(Boolean),record:true})}>Начать запись</Button><Button disabled={!enabled||pending||(!active&&device.snapshot.acquisition!=='failed')} onClick={()=>void act('stop')}>{device.playback_id?'Закрыть запись':'Остановить захват'}</Button>{pending&&<ActivityIndicator label="Выполняем команду камеры"/>}</div>
{device.playback_id&&<p>Просмотр исходной записи · повтор. Камера для него не запускается.</p>}