> ## 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

# Constrói a tua primeira funcionalidade

Um percurso de ponta a ponta de uma mudança nativa do shell até uma janela verificada.

## Passo a passo para iniciantes

Pré-requisitos: leia os dois guias para iniciantes abaixo, conclua a configuração local de Desktop e abra este repositório na raiz no seu editor. O shell lê SUPASTACK_APP_URL como uma configuração de terminal ao iniciar — não de um arquivo .env salvo.

Termos rápidos: um espaço de trabalho consiste em usuários, dados e configurações separados de uma equipe. O servidor é o back-end confiável; mantenha as chaves do provedor fora do navegador e do código do telefone. Uma migração é uma alteração de versão do banco de dados que cria ou atualiza tabelas. Um modelo de IA é o mecanismo que responde; o catálogo de modelos é a lista do servidor de IDs e preços de modelos disponíveis. Um provedor é um serviço externo, como IA, e-mail ou serviço de cobrança. Um direito é uma concessão que permite que um espaço de trabalho use um recurso. Um webhook é uma mensagem que um serviço envia para o URL de outro serviço.

1. Abra `.agents/skills/add-a-desktop-capability/SKILL.md` — ou peça ao seu agente de codificação para segui-lo — e faça uma pequena mudança nativa, por exemplo uma nova entrada do menu Exibir ou um atalho de invocação diferente.

2. Execute `cargo check`, inicie o shell e exercite a mudança na janela aberta.

3. Repita em cada sistema operacional que você planeja distribuir — o comportamento de bandeja, atalho e menu difere por plataforma.

Para código personalizado, nomeie o comportamento, o menu ou atalho que ele afeta e o que deve acontecer em cada SO. Dê esta tarefa ao seu agente de codificação e peça-lhe para ler `AGENTS.md`, `.ai/PROJECT_CONTEXT.md` e os espelhos `.ai/` dos arquivos que ele vai tocar; liste arquivos e verificações antes de editar; e mostre-lhe o diff. Use valores de exemplo; nunca cole um segredo real.

[Antes de começar](https://supastack.dev/pt/docs/desktop/before-you-start.md)

[Noções básicas sobre terminais](https://supastack.dev/pt/docs/desktop/terminal-basics.md)

[Configuração local do desktop](https://supastack.dev/pt/docs/desktop/ship-in-5-minutes.md)

[Avisos do agente e memória do projeto](https://supastack.dev/pt/docs/desktop/agents.md)


## Decidir primeiro se é nativo ou produto

Qualquer coisa que um usuário experimente como UI de produto — telas, dados, configurações — pertence ao aplicativo web e chega na janela automaticamente. Apenas comportamento em nível de SO pertence a Rust: janelas, bandeja, menus, atalhos globais, iniciar no login e verificações de atualização.

```
apps/desktop/src-tauri/src/lib.rs
apps/desktop/src-tauri/tauri.conf.json
apps/desktop/src-tauri/capabilities/default.json
```


## Manter a sandbox da webview restrita

A webview só pode chamar o que `capabilities/default.json` lista. Uma mudança que precisa de um novo plugin adiciona o crate em `Cargo.toml`, registra-o em `lib.rs` e concede a permissão mínima em capabilities — nunca um coringa.

O estado persistente do shell — posição da janela, zoom, canal de atualização, preferências de janela — vive no diretório de dados do aplicativo através dos sidecars incluídos, não em arquivos que você gerencia manualmente.


## Verificar em cada SO de destino

Execute cargo test, depois uma janela real no Windows, macOS e Linux: restauração do estado da janela, fechar para a bandeja, foco de instância única e o atalho de invocação com sua mudança ativa. Um SO que passa não prova os outros dois.

[Menus nativos e preferências de janela](https://supastack.dev/pt/docs/desktop/menus.md)

[Checklist de testes Desktop](https://supastack.dev/pt/docs/desktop/testing.md)


## Seguinte

[Desenvolva com um agente de codificação](https://supastack.dev/pt/docs/desktop/agents.md)
