For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/desktop/first-feature.md (or send Accept: text/markdown).
Создайте первую функцию
Сквозной проход от одного нативного изменения оболочки до проверенного окна.
Прохождение для начинающих
Предварительные требования: прочитайте два руководства для начинающих ниже, завершите локальную настройку Desktop и откройте этот репозиторий в корне в вашем редакторе. Оболочка читает SUPASTACK_APP_URL как настройку терминала при запуске — а не из сохранённого файла .env.
Вкратце: рабочее пространство — это отдельные пользователи, данные и настройки одной команды. Сервер является доверенным сервером; не допускайте попадания ключей провайдера в код браузера и телефона. Миграция — это изменение версии базы данных, при котором создаются или обновляются таблицы. Модель ИИ — это механизм, который отвечает; Каталог моделей — это список доступных идентификаторов моделей и цен на сервере. Поставщик — это внешняя служба, такая как служба искусственного интеллекта, электронной почты или службы выставления счетов. Право — это грант, который позволяет рабочей области использовать функцию. Вебхук — это сообщение, которое одна служба отправляет на URL другой службы.
1. Откройте .agents/skills/add-a-desktop-capability/SKILL.md — или попросите вашего агента кодирования следовать ему — и сделайте одно небольшое нативное изменение, например новый пункт меню Вид или другой ярлык вызова.
2. Запустите cargo check, запустите оболочку и проверьте изменение в открытом окне.
3. Повторите на каждой операционной системе, которую вы планируете поставлять — поведение трея, ярлыка и меню различается по платформам.
Для пользовательского кода назовите поведение, меню или ярлык, которое оно затрагивает, и что должно происходить в каждой ОС. Дайте эту задачу вашему агенту кодирования и попросите прочитать AGENTS.md, .ai/PROJECT_CONTEXT.md и .ai/-зеркала файлов, которые он затронет; перечислите файлы и проверки перед редактированием; и покажите вам diff. Используйте примерные значения; никогда не вставляйте настоящий секрет.
Сначала решите, нативное это или продукт
Всё, что пользователь испытывает как интерфейс продукта — экраны, данные, настройки — принадлежит веб-приложению и автоматически прибывает в окно. Только поведение уровня ОС принадлежит Rust: окна, трей, меню, глобальные горячие клавиши, запуск при входе и проверки обновлений.
apps/desktop/src-tauri/src/lib.rs
apps/desktop/src-tauri/tauri.conf.json
apps/desktop/src-tauri/capabilities/default.jsonДержите песочницу webview узкой
Webview может вызывать только то, что перечисляет capabilities/default.json. Изменение, требующее нового плагина, добавляет крейт в Cargo.toml, регистрирует его в lib.rs и предоставляет минимальное разрешение в capabilities — никогда не шаблон.
Постоянное состояние оболочки — позиция окна, масштабирование, канал обновлений, предпочтения окна — живёт в каталоге данных приложения через поставляемые sidecar-файлы, а не в файлах, которыми вы управляете вручную.
Проверяйте на каждой целевой ОС
Запустите cargo test, затем настоящее окно в Windows, macOS и Linux: восстановление состояния окна, закрытие в трей, фокус единственного экземпляра и ярлык вызова с активным изменением. Успешная ОС не доказывает две другие.