> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Создайте первую функцию

Сквозной проход от одного нативного изменения оболочки до проверенного окна.

## Прохождение для начинающих

Предварительные требования: прочитайте два руководства для начинающих ниже, завершите локальную настройку 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. Используйте примерные значения; никогда не вставляйте настоящий секрет.

[Прежде чем начать](https://supastack.dev/ru/docs/desktop/before-you-start.md)

[Основные сведения о терминале](https://supastack.dev/ru/docs/desktop/terminal-basics.md)

[Локальная настройка рабочего стола](https://supastack.dev/ru/docs/desktop/ship-in-5-minutes.md)

[Подсказки агента и память проекта](https://supastack.dev/ru/docs/desktop/agents.md)


## Сначала решите, нативное это или продукт

Всё, что пользователь испытывает как интерфейс продукта — экраны, данные, настройки — принадлежит веб-приложению и автоматически прибывает в окно. Только поведение уровня ОС принадлежит 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: восстановление состояния окна, закрытие в трей, фокус единственного экземпляра и ярлык вызова с активным изменением. Успешная ОС не доказывает две другие.

[Нативные меню и предпочтения окна](https://supastack.dev/ru/docs/desktop/menus.md)

[Контрольный список тестирования Desktop](https://supastack.dev/ru/docs/desktop/testing.md)


## Вперёд

[Создавайте вместе с кодинг-агентом](https://supastack.dev/ru/docs/desktop/agents.md)
