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 /pt/docs/desktop/first-feature.md (or send Accept: text/markdown).
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.
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.jsonManter 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.