385 lines
28 KiB
HTML
385 lines
28 KiB
HTML
<!doctype html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<meta name="color-scheme" content="dark">
|
||
<meta name="theme-color" content="#101714">
|
||
<title>Домовой — консоль создателя</title>
|
||
<link rel="stylesheet" href="/assets/console.css?v=20260821-context">
|
||
</head>
|
||
<body>
|
||
<a class="skip-link" href="#overview">К содержимому</a>
|
||
<div class="grain" aria-hidden="true"></div>
|
||
|
||
<main id="login-view" class="login-shell">
|
||
<section class="login-panel" aria-labelledby="login-title">
|
||
<div class="brand-mark" aria-hidden="true">Д</div>
|
||
<p class="eyebrow">защищённый вход · creator</p>
|
||
<h1 id="login-title">Домовой</h1>
|
||
<p class="login-copy">Личная операторская консоль. Учётные данные используются только для выпуска ограниченной сессии и не сохраняются браузером.</p>
|
||
<form id="login-form" class="login-form">
|
||
<label for="creator-username">Логин</label>
|
||
<input id="creator-username" name="username" type="text" autocomplete="username" required autofocus>
|
||
<label for="creator-password">Пароль</label>
|
||
<div class="secret-row">
|
||
<input id="creator-password" name="password" type="password" autocomplete="current-password" required>
|
||
<button class="icon-button" id="toggle-secret" type="button" aria-label="Показать пароль" title="Показать пароль">
|
||
<span aria-hidden="true">◉</span>
|
||
</button>
|
||
</div>
|
||
<button id="login-button" class="primary-button" type="submit">
|
||
<span>Открыть консоль</span><span aria-hidden="true">→</span>
|
||
</button>
|
||
<p id="login-error" class="form-error" role="alert"></p>
|
||
</form>
|
||
<div class="trust-line"><span></span>Сессия действует 8 часов<span></span></div>
|
||
</section>
|
||
</main>
|
||
|
||
<div id="console-view" class="console" hidden>
|
||
<header class="topbar">
|
||
<a class="wordmark" href="/" aria-label="Домовой, главная">
|
||
<span class="wordmark-symbol">Д</span>
|
||
<span><strong>Домовой</strong><small>консоль создателя</small></span>
|
||
</a>
|
||
<div class="topbar-actions">
|
||
<a class="chat-return-link" href="/">← Чат с Домовым</a>
|
||
<span id="connection-state" class="connection"><i></i>система доступна</span>
|
||
<nav class="topbar-nav" aria-label="Разделы кабинета">
|
||
<a href="#overview">Обзор</a>
|
||
<a href="#diagnostics">Проверки</a>
|
||
<a href="#operations">Операции</a>
|
||
<a href="#learning">Опыт</a>
|
||
<a href="#settings">Настройки</a>
|
||
</nav>
|
||
<button id="refresh-all" class="text-button" type="button">Обновить</button>
|
||
<button id="logout" class="icon-button" type="button" aria-label="Завершить сессию" title="Выйти">↗</button>
|
||
</div>
|
||
</header>
|
||
|
||
<aside class="context-rail">
|
||
<div>
|
||
<p class="rail-index">01 / КОНТЕКСТ</p>
|
||
<h2>Точка внимания</h2>
|
||
<p class="rail-copy">Укажите рабочий контекст. Он сохраняется только в этом браузере и не даёт дополнительных полномочий.</p>
|
||
</div>
|
||
<form id="context-form" class="context-form">
|
||
<div class="context-status-row">
|
||
<span class="context-status-label">ТЕКУЩИЙ КОНТЕКСТ</span>
|
||
<strong id="context-state" data-state="empty">не выбран</strong>
|
||
</div>
|
||
<div class="context-presets">
|
||
<label for="context-preset">Недавние наборы</label>
|
||
<select id="context-preset">
|
||
<option value="">Выберите сохранённый набор…</option>
|
||
</select>
|
||
<small>Сохраняются только в этом браузере.</small>
|
||
</div>
|
||
<div class="context-field">
|
||
<label for="session-id">Идентификатор сессии <span>обязательно</span></label>
|
||
<div class="context-input-row"><input id="session-id" autocomplete="off" spellcheck="false" placeholder="Вставьте session-id"><button class="copy-context" data-copy-context="session-id" type="button" aria-label="Скопировать идентификатор сессии" title="Скопировать">⧉</button></div>
|
||
</div>
|
||
<div class="context-field">
|
||
<label for="workspace-id">Рабочая область <span>обязательно</span></label>
|
||
<div class="context-input-row"><input id="workspace-id" autocomplete="off" spellcheck="false" placeholder="Вставьте workspace-id"><button class="copy-context" data-copy-context="workspace-id" type="button" aria-label="Скопировать рабочую область" title="Скопировать">⧉</button></div>
|
||
</div>
|
||
<p class="context-hint">Для «Состояния» нужны только эти два значения. Задача, ожидание и возможность находятся ниже в расширенных полях.</p>
|
||
<details class="advanced-context">
|
||
<summary>Расширенные идентификаторы</summary>
|
||
<div>
|
||
<label for="task-id">Задача</label>
|
||
<input id="task-id" autocomplete="off" placeholder="task-id">
|
||
<label for="prospective-id">Выбранное ожидание</label>
|
||
<input id="prospective-id" autocomplete="off" placeholder="prospective-item-id">
|
||
<label for="capability-id">Возможность</label>
|
||
<input id="capability-id" autocomplete="off" value="cognitive-proposal">
|
||
<label for="delegation-id">Delegation / агентская работа</label>
|
||
<input id="delegation-id" autocomplete="off" placeholder="delegation-id из чата">
|
||
</div>
|
||
</details>
|
||
<div class="context-actions"><button class="secondary-button" type="submit">Загрузить контекст</button><button id="reset-context" class="text-button" type="button">Сбросить</button></div>
|
||
</form>
|
||
<nav class="section-nav" aria-label="Навигация по кабинету">
|
||
<a class="section-nav-link active" aria-current="location" href="#overview"><span>01</span><b>Состояние</b><small>фокус и сигналы</small></a>
|
||
<a class="section-nav-link" href="#diagnostics"><span>02</span><b>Проверки</b><small>доступность и границы</small></a>
|
||
<a class="section-nav-link" href="#operations"><span>03</span><b>Операции</b><small>ожидания и действия</small></a>
|
||
<a class="section-nav-link" href="#learning"><span>04</span><b>Опыт</b><small>reflection и навыки</small></a>
|
||
<a class="section-nav-link" href="#settings"><span>05</span><b>Настройки</b><small>интерфейс и обновление</small></a>
|
||
</nav>
|
||
<div class="session-stamp">
|
||
<span>ACTOR</span>
|
||
<strong id="session-actor">—</strong>
|
||
<span>СЕССИЯ ДО</span>
|
||
<strong id="session-expiry">—</strong>
|
||
</div>
|
||
</aside>
|
||
|
||
<main class="workspace">
|
||
<section id="overview" class="workspace-head" data-page="overview">
|
||
<div>
|
||
<p class="eyebrow">операционная картина</p>
|
||
<h1>Состояние сейчас</h1>
|
||
</div>
|
||
<p id="last-update" class="last-update">Данные ещё не запрошены</p>
|
||
</section>
|
||
|
||
<section class="signal-strip" aria-label="Сводка состояния" data-page="overview">
|
||
<div><span>ФОКУС</span><strong id="focus-signal" data-state="idle">ожидает</strong></div>
|
||
<div><span>ЗАДАЧА</span><strong id="task-signal" data-state="idle">ожидает</strong></div>
|
||
<div><span>CONTINUITY</span><strong id="prospective-signal" data-state="idle">ожидает</strong></div>
|
||
<div><span>ВОЗМОЖНОСТЬ</span><strong id="capability-signal" data-state="idle">ожидает</strong></div>
|
||
</section>
|
||
|
||
<section id="diagnostics" class="diagnostics-panel" aria-labelledby="diagnostics-title" data-page="diagnostics">
|
||
<header class="panel-heading">
|
||
<div><p>Проверяемая система</p><h2 id="diagnostics-title">Диагностика кабинета</h2></div>
|
||
<div class="panel-heading-tools"><span id="diagnostic-summary">Проверка ещё не запускалась</span><button id="run-diagnostics" class="secondary-button compact-button" type="button">Проверить всё</button></div>
|
||
</header>
|
||
<div class="diagnostic-intro">
|
||
<span class="diagnostic-pulse" aria-hidden="true"></span>
|
||
<p>Здесь видны только ответы текущей авторизованной сессии. Проверка не меняет данные и помогает отличить отсутствие контекста от недоступности сервиса.</p>
|
||
</div>
|
||
<div id="diagnostic-list" class="diagnostic-list" aria-live="polite" aria-busy="false">
|
||
<p class="register-empty">Нажмите «Проверить всё», чтобы получить актуальный снимок.</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="advisor-panel" aria-labelledby="advisor-title" data-page="diagnostics">
|
||
<div class="advisor-intro">
|
||
<p>COGNITIVE / ADVISORY V1</p>
|
||
<h2 id="advisor-title">Спросить Домового</h2>
|
||
<span>Ответ — только совет. Он не сохраняется, не создаёт задач и не запускает действий.</span>
|
||
</div>
|
||
<form id="advisory-form" class="advisor-form">
|
||
<label for="advisory-message">Ваш вопрос</label>
|
||
<textarea id="advisory-message" rows="3" maxlength="16384" placeholder="Что стоит проверить в выбранном контексте?" required></textarea>
|
||
<div id="advisory-egress" class="advisor-egress" hidden>
|
||
<p class="advisor-egress-kicker">ВНЕШНИЙ КОГНИТИВНЫЙ ПРОВАЙДЕР</p>
|
||
<p id="advisory-disclosure">Текст вопроса будет передан согласно активной политике данных.</p>
|
||
<label for="advisory-egress-ack">
|
||
<input id="advisory-egress-ack" type="checkbox">
|
||
<span>Подтверждаю передачу этого вопроса внешнему провайдеру</span>
|
||
</label>
|
||
</div>
|
||
<div class="advisor-controls">
|
||
<span id="advisory-privacy"><i></i> локальный детерминированный режим</span>
|
||
<button id="advisory-submit" class="primary-button" type="submit"><span>Получить совет</span><span aria-hidden="true">→</span></button>
|
||
</div>
|
||
</form>
|
||
<div id="advisory-result" class="advisor-result" aria-live="polite" hidden>
|
||
<div><span>СТАТУС</span><strong id="advisory-state">—</strong></div>
|
||
<p id="advisory-text"></p>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="operations" class="register-panel" aria-labelledby="register-title" data-page="operations">
|
||
<header>
|
||
<div><p>Continuity / ближайшие</p><h2 id="register-title">Реестр ожиданий</h2></div>
|
||
<span id="prospective-count">0 ЗАПИСЕЙ</span>
|
||
</header>
|
||
<div id="prospective-list" class="register-list">
|
||
<p class="register-empty">Реестр ещё не загружен.</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="fleet-panel" aria-labelledby="fleet-title" data-page="operations">
|
||
<header>
|
||
<div><p>Cognitive / capability health</p><h2 id="fleet-title">Модели и fallback</h2></div>
|
||
<div class="activity-tools"><span id="fleet-summary">СОСТОЯНИЕ НЕ ЗАГРУЖЕНО</span><button id="refresh-fleet" class="icon-button" type="button" aria-label="Обновить состояние моделей" title="Обновить состояние моделей">↻</button></div>
|
||
</header>
|
||
<div class="fleet-overview"><div><span>Выбранный tier</span><strong id="fleet-selected">—</strong></div><p id="fleet-explanation">Проверка доступности провайдеров ещё не выполнялась.</p></div>
|
||
<div id="fleet-list" class="fleet-list" aria-live="polite" aria-busy="false"><p class="register-empty">Состояние fleet ещё не загружено.</p></div>
|
||
</section>
|
||
|
||
<section class="agent-panel" aria-labelledby="agent-title" data-page="operations">
|
||
<header>
|
||
<div><p>Work / durable execution</p><h2 id="agent-title">Агентская работа</h2></div>
|
||
<div class="activity-tools"><span id="agent-summary">DELEGATION НЕ ВЫБРАНА</span><button id="refresh-agent" class="icon-button" type="button" aria-label="Обновить агентскую работу" title="Обновить агентскую работу">↻</button></div>
|
||
</header>
|
||
<div id="agent-empty" class="agent-empty">Укажите delegation ID в расширенных идентификаторах, чтобы прочитать durable state.</div>
|
||
<div id="agent-details" class="agent-details" hidden>
|
||
<div><span>Состояние delegation</span><strong id="agent-delegation-state">—</strong></div>
|
||
<div><span>Run / implementation</span><strong id="agent-run-state">—</strong></div>
|
||
<div><span>Последний blocker</span><strong id="agent-blocker">—</strong></div>
|
||
<p id="agent-next-step">—</p>
|
||
</div>
|
||
<div class="agent-worker-status"><span>Executor capability</span><strong id="agent-worker-state">ПРОВЕРКА НЕ ВЫПОЛНЯЛАСЬ</strong><p id="agent-worker-message">Статус worker виден только в авторизованной диагностике.</p></div>
|
||
</section>
|
||
|
||
<section class="activity-panel" aria-labelledby="activity-title" data-page="operations">
|
||
<header>
|
||
<div><p>Commit / владелец</p><h2 id="activity-title">Журнал действий</h2></div>
|
||
<div class="activity-tools">
|
||
<span id="action-count">0 ЗАПИСЕЙ</span>
|
||
<button id="refresh-actions" class="icon-button" type="button" aria-label="Обновить журнал действий" title="Обновить журнал действий">↻</button>
|
||
</div>
|
||
</header>
|
||
<div id="action-history" class="activity-list" aria-live="polite" aria-busy="false">
|
||
<p class="register-empty">Журнал ещё не загружен.</p>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="learning" class="learning-panel" aria-labelledby="learning-title" data-page="learning">
|
||
<header>
|
||
<div><p>Learning / evidence</p><h2 id="learning-title">Опыт и reflection</h2></div>
|
||
<div class="activity-tools">
|
||
<span id="learning-count">0 СИГНАЛОВ</span>
|
||
<button id="refresh-learning" class="icon-button" type="button" aria-label="Обновить опыт" title="Обновить опыт">↻</button>
|
||
</div>
|
||
</header>
|
||
<div class="learning-grid">
|
||
<article>
|
||
<h3>Experience</h3>
|
||
<div id="experience-list" class="learning-list" aria-live="polite" aria-busy="false"><p class="register-empty">Опыт ещё не загружен.</p></div>
|
||
</article>
|
||
<article>
|
||
<h3>Reflection</h3>
|
||
<div id="reflection-list" class="learning-list" aria-live="polite" aria-busy="false"><p class="register-empty">Reflection ещё не загружен.</p></div>
|
||
</article>
|
||
<article>
|
||
<h3>Skills</h3>
|
||
<div id="skill-list" class="learning-list" aria-live="polite" aria-busy="false"><p class="register-empty">Skill profile ещё не загружен.</p></div>
|
||
</article>
|
||
</div>
|
||
</section>
|
||
|
||
<section id="settings" class="settings-panel" aria-labelledby="settings-title" data-page="settings">
|
||
<header class="panel-heading">
|
||
<div><p>Локальные предпочтения</p><h2 id="settings-title">Настройки рабочего кабинета</h2></div>
|
||
<span id="settings-saved" class="settings-saved">Сохраняются в этом браузере</span>
|
||
</header>
|
||
<form id="settings-form" class="settings-grid">
|
||
<label class="setting-field"><span>Плотность данных</span><small>Выберите, сколько строк помещается на экране.</small><select id="setting-density"><option value="comfortable">Комфортная</option><option value="compact">Компактная</option></select></label>
|
||
<label class="setting-field"><span>Автообновление</span><small>Повторная проверка состояния без изменения данных.</small><select id="setting-refresh"><option value="off">Выключено</option><option value="30">Каждые 30 секунд</option><option value="60">Каждую минуту</option><option value="300">Каждые 5 минут</option></select></label>
|
||
<label class="setting-check"><input id="setting-motion" type="checkbox"><span><b>Сократить анимацию</b><small>Оставить спокойный режим для длительной работы.</small></span></label>
|
||
<div class="settings-actions"><button id="save-settings" class="primary-button compact-button" type="submit"><span>Сохранить настройки</span><span aria-hidden="true">→</span></button><button id="reset-settings" class="text-button" type="button">Сбросить</button></div>
|
||
</form>
|
||
</section>
|
||
|
||
<section class="data-grid" data-page="overview">
|
||
<article class="data-card focus-card">
|
||
<header><span class="card-number">01</span><div><p>Situation</p><h2>Активный фокус</h2></div><span id="focus-badge" class="status-badge neutral">НЕ ЗАГРУЖЕН</span></header>
|
||
<dl>
|
||
<div><dt>Проект</dt><dd id="focus-project">—</dd></div>
|
||
<div><dt>Цель</dt><dd id="focus-goal">—</dd></div>
|
||
<div><dt>Область</dt><dd id="focus-scope">—</dd></div>
|
||
<div><dt>Привязка</dt><dd id="focus-binding">—</dd></div>
|
||
</dl>
|
||
<p id="focus-message" class="card-message">Введите идентификаторы сессии и рабочей области.</p>
|
||
</article>
|
||
|
||
<article class="data-card task-card">
|
||
<header><span class="card-number">02</span><div><p>Work</p><h2>Задача в фокусе</h2></div><span id="task-badge" class="status-badge neutral">НЕ ЗАГРУЖЕНА</span></header>
|
||
<dl>
|
||
<div><dt>Задача</dt><dd id="task-value">—</dd></div>
|
||
<div><dt>Цель</dt><dd id="task-goal">—</dd></div>
|
||
<div><dt>Область</dt><dd id="task-scope">—</dd></div>
|
||
<div><dt>Ревизия</dt><dd id="task-revision">—</dd></div>
|
||
</dl>
|
||
<p id="task-message" class="card-message">Укажите задачу для проверки относительно активного фокуса.</p>
|
||
<div class="id-actions"><button class="id-action" data-use-value="task-value" data-target-id="task-id" type="button">Использовать ID задачи</button><button class="id-action icon-id-action" data-copy-value="task-value" type="button" aria-label="Скопировать ID задачи" title="Скопировать ID">⧉</button></div>
|
||
</article>
|
||
|
||
<article class="data-card prospective-card">
|
||
<header><span class="card-number">03</span><div><p>Continuity</p><h2>Будущая значимость</h2></div><span id="prospective-badge" class="status-badge neutral">НЕ ЗАГРУЖЕНА</span></header>
|
||
<div class="prospective-core">
|
||
<div><span>СОСТОЯНИЕ</span><strong id="prospective-state">—</strong></div>
|
||
<div class="time-marker"><i aria-hidden="true"></i><span>СРАБОТАЕТ</span><time id="prospective-trigger">—</time></div>
|
||
</div>
|
||
<dl class="compact-list">
|
||
<div><dt>Ожидание</dt><dd id="prospective-value">—</dd></div>
|
||
<div><dt>Обязательство</dt><dd id="prospective-commitment">—</dd></div>
|
||
<div><dt>Цель</dt><dd id="prospective-goal">—</dd></div>
|
||
<div><dt>Область</dt><dd id="prospective-scope">—</dd></div>
|
||
<div><dt>Principal</dt><dd id="prospective-owner">—</dd></div>
|
||
<div><dt>Ревизия</dt><dd id="prospective-revision">—</dd></div>
|
||
</dl>
|
||
<p id="prospective-message" class="card-message">Укажите идентификатор ProspectiveItem для проверки владельца и состояния.</p>
|
||
<div class="id-actions"><button class="id-action" data-use-value="prospective-value" data-target-id="prospective-id" type="button">Использовать ID ожидания</button><button class="id-action icon-id-action" data-copy-value="prospective-value" type="button" aria-label="Скопировать ID ожидания" title="Скопировать ID">⧉</button></div>
|
||
<section class="commit-zone" aria-labelledby="commit-zone-title">
|
||
<div class="commit-zone-copy">
|
||
<p>Commit / контролируемый переход</p>
|
||
<h3 id="commit-zone-title">Подтвердить исполнение</h3>
|
||
<span id="action-readiness">Доступно только для доставленного ожидания с проверенной Work-задачей.</span>
|
||
</div>
|
||
<label for="satisfaction-evidence">Ссылка на подтверждение</label>
|
||
<textarea id="satisfaction-evidence" rows="2" maxlength="512" placeholder="artifact://… или краткая ссылка на результат"></textarea>
|
||
<button id="prepare-satisfaction" class="commit-button" type="button" disabled>
|
||
<span>Отметить исполненным</span><span aria-hidden="true">→</span>
|
||
</button>
|
||
<div class="notification-command">
|
||
<div><strong>Windows-напоминание</strong><span id="notification-readiness">Доступно для доставленного ожидания с проверенной Work-задачей.</span></div>
|
||
<button id="prepare-notification" class="secondary-button" type="button" disabled>Отправить уведомление</button>
|
||
</div>
|
||
<div id="action-result" class="action-result" hidden>
|
||
<div><span>ИСХОД</span><strong id="action-state">—</strong></div>
|
||
<div><span>ACTION</span><code id="action-id">—</code></div>
|
||
<div><span>ATTEMPT</span><code id="attempt-id">—</code></div>
|
||
<button id="reconcile-action" class="secondary-button" type="button" hidden>Проверить исход</button>
|
||
</div>
|
||
</section>
|
||
</article>
|
||
|
||
<article class="data-card capability-card">
|
||
<header><span class="card-number">04</span><div><p>Capability</p><h2>Готовность</h2></div><span id="capability-badge" class="status-badge neutral">НЕИЗВЕСТНО</span></header>
|
||
<div class="capability-core">
|
||
<div class="radar" aria-hidden="true"><span></span><i></i></div>
|
||
<div><span>ТЕКУЩЕЕ СОСТОЯНИЕ</span><strong id="capability-state">—</strong><small id="capability-reason">Причина не получена</small></div>
|
||
</div>
|
||
<dl class="compact-list">
|
||
<div><dt>Возможность</dt><dd id="capability-value">—</dd></div>
|
||
<div><dt>Ревизия</dt><dd id="capability-revision">—</dd></div>
|
||
<div><dt>Наблюдалось</dt><dd id="capability-observed">—</dd></div>
|
||
</dl>
|
||
<div class="id-actions"><button class="id-action" data-use-value="capability-value" data-target-id="capability-id" type="button">Использовать ID возможности</button><button class="id-action icon-id-action" data-copy-value="capability-value" type="button" aria-label="Скопировать ID возможности" title="Скопировать ID">⧉</button></div>
|
||
</article>
|
||
</section>
|
||
</main>
|
||
</div>
|
||
|
||
<dialog id="satisfaction-dialog" class="confirmation-dialog" aria-labelledby="confirmation-title">
|
||
<form method="dialog">
|
||
<p class="eyebrow">commit / явное подтверждение</p>
|
||
<h2 id="confirmation-title">Зафиксировать исполнение?</h2>
|
||
<p class="confirmation-copy">Домовой создаст авторизованное действие и передаст его Continuity Executor. Этот переход меняет каноническое состояние.</p>
|
||
<dl class="confirmation-grid">
|
||
<div><dt>Ожидание</dt><dd id="confirm-prospective">—</dd></div>
|
||
<div><dt>Ревизия</dt><dd id="confirm-prospective-revision">—</dd></div>
|
||
<div><dt>Work-задача</dt><dd id="confirm-task">—</dd></div>
|
||
<div><dt>Ревизия Work</dt><dd id="confirm-task-revision">—</dd></div>
|
||
<div class="wide"><dt>Подтверждение</dt><dd id="confirm-evidence">—</dd></div>
|
||
</dl>
|
||
<p id="confirmation-error" class="form-error" role="alert"></p>
|
||
<div class="confirmation-actions">
|
||
<button id="cancel-satisfaction" class="text-button" type="button">Отмена</button>
|
||
<button id="confirm-satisfaction" class="commit-button" type="button">Подтверждаю переход</button>
|
||
</div>
|
||
</form>
|
||
</dialog>
|
||
|
||
<dialog id="notification-dialog" class="confirmation-dialog" aria-labelledby="notification-confirmation-title">
|
||
<form method="dialog">
|
||
<p class="eyebrow">commit / внешнее действие</p>
|
||
<h2 id="notification-confirmation-title">Отправить напоминание?</h2>
|
||
<p class="confirmation-copy">Домовой создаст неизменяемое авторизованное действие и передаст типизированное уведомление в закреплённый receiver. Состояние Continuity не изменится; доставка не означает прочтение.</p>
|
||
<dl class="confirmation-grid">
|
||
<div><dt>Ожидание</dt><dd id="notify-confirm-prospective">—</dd></div>
|
||
<div><dt>Ревизия</dt><dd id="notify-confirm-prospective-revision">—</dd></div>
|
||
<div><dt>Work-задача</dt><dd id="notify-confirm-task">—</dd></div>
|
||
<div><dt>Ревизия Work</dt><dd id="notify-confirm-task-revision">—</dd></div>
|
||
<div class="wide"><dt>Канал</dt><dd>Локальное уведомление Windows · закреплённый receiver</dd></div>
|
||
</dl>
|
||
<p id="notification-confirmation-error" class="form-error" role="alert"></p>
|
||
<div class="confirmation-actions">
|
||
<button id="cancel-notification" class="text-button" type="button">Отмена</button>
|
||
<button id="confirm-notification" class="commit-button" type="button">Подтверждаю отправку</button>
|
||
</div>
|
||
</form>
|
||
</dialog>
|
||
|
||
<div id="toast" class="toast" role="status" aria-live="polite" hidden></div>
|
||
<script src="/assets/console.js?v=20260821-context" defer></script>
|
||
</body>
|
||
</html>
|