For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegação principal
Theme
Codex

Codex use case

Crie a estrutura de um aplicativo para Mac

Use o Codex para criar em SwiftUI a estrutura de um aplicativo nativo para Mac com barra lateral, painel de detalhes, inspetor, comandos e ajustes.

Difficulty Advanced
Time horizon 1h

Use o Codex e o plugin Build macOS Apps para transformar sua ideia em um aplicativo nativo para Mac com NavigationSplitView. Mantenha a seleção da barra lateral estável, adicione menus, barras de ferramentas e atalhos de teclado e mova as preferências para uma cena Settings dedicada.

Best for

  • Ideias para novos aplicativos para Mac ou projetos pensados inicialmente para iPad ou para a web que precisam de uma interface de desktop com navegação persistente, menus, barras de ferramentas e atalhos de teclado
  • Ferramentas de edição, gerenciamento de bibliotecas, administração ou revisão em que a seleção na barra lateral determina o conteúdo do painel de detalhes e o inspetor dá acesso a metadados ou ações secundárias
  • Aplicativos para Mac em que as preferências devem ter uma janela própria, em vez de ocupar mais uma tela na pilha de navegação principal

Contents

    ← All use cases

    Crie a estrutura de um aplicativo para Mac

    Use o Codex para criar em SwiftUI a estrutura de um aplicativo nativo para Mac com barra lateral, painel de detalhes, inspetor, comandos e ajustes.

    Use o Codex e o plugin Build macOS Apps para transformar sua ideia em um aplicativo nativo para Mac com NavigationSplitView. Mantenha a seleção da barra lateral estável, adicione menus, barras de ferramentas e atalhos de teclado e mova as preferências para uma cena Settings dedicada.

    Advanced
    1h

    Use o Codex e o plugin Build macOS Apps para transformar sua ideia em um aplicativo nativo para Mac com NavigationSplitView. Mantenha a seleção da barra lateral estável, adicione menus, barras de ferramentas e atalhos de teclado e mova as preferências para uma cena Settings dedicada.

    Advanced
    1h

    Best for

    • Ideias para novos aplicativos para Mac ou projetos pensados inicialmente para iPad ou para a web que precisam de uma interface de desktop com navegação persistente, menus, barras de ferramentas e atalhos de teclado
    • Ferramentas de edição, gerenciamento de bibliotecas, administração ou revisão em que a seleção na barra lateral determina o conteúdo do painel de detalhes e o inspetor dá acesso a metadados ou ações secundárias
    • Aplicativos para Mac em que as preferências devem ter uma janela própria, em vez de ocupar mais uma tela na pilha de navegação principal

    Skills & Plugins

    • Use as habilidades que abrangem padrões de SwiftUI para macOS, gerenciamento de janelas, integração com AppKit e compilação e execução. Com elas, crie layouts com barra lateral, painel de detalhes e inspetor, conecte os menus às ações e os ajustes às preferências e valide o aplicativo a cada iteração, começando pela estrutura.
    Skill Why use it
    Build macOS Apps Use as habilidades que abrangem padrões de SwiftUI para macOS, gerenciamento de janelas, integração com AppKit e compilação e execução. Com elas, crie layouts com barra lateral, painel de detalhes e inspetor, conecte os menus às ações e os ajustes às preferências e valide o aplicativo a cada iteração, começando pela estrutura.

    Starter prompt

    Use o plugin Build macOS Apps para criar em SwiftUI a estrutura de um aplicativo nativo para Mac a partir desta ideia: [describe your app idea]. Inclua barra lateral, painel de detalhes, inspetor, comandos e ajustes. Restrições: - Escolha primeiro o modelo de cenas. Prefira `WindowGroup` para a janela principal e adicione uma cena `Settings` dedicada às preferências. - Estruture a interface principal com `NavigationSplitView`, estado de seleção explícito, uma lista nativa `.sidebar`, um painel de detalhes e um painel `inspector(isPresented:)` para metadados ou controles secundários. - Mantenha as linhas da barra lateral simples e com aparência nativa. Use um ícone, uma linha para o título e, no máximo, uma linha curta de texto secundário. Só use um cartão personalizado grande para cada linha se houver uma necessidade clara do produto. - Disponibilize as ações importantes por meio de `commands` no nível da cena, `CommandMenu`, botões da barra de ferramentas e atalhos de teclado. Nenhuma ação crítica deve depender exclusivamente de gestos. - Use `@SceneStorage` para o estado da interface de cada janela e `@AppStorage` para as preferências. Para coordenar a barra lateral e o painel de detalhes, use vínculos explícitos com o estado de seleção mantido pela visualização pai. - Prefira os materiais do sistema, as cores semânticas e os fundos padrão da barra lateral. Se precisar personalizar o estilo, limite as mudanças aos cartões de conteúdo do painel de detalhes ou do inspetor. - Recorra a uma integração pontual com AppKit somente se o SwiftUI não oferecer uma forma simples de implementar um comportamento específico de desktop. - Crie ou atualize `script/build_and_run.sh`, faça a verificação mais simples que permita validar a compilação e a execução e informe exatamente quais comandos usou. Entregue: - a estrutura das cenas e as visualizações principais da barra lateral, do painel de detalhes e do inspetor - a implementação que conecta o menu, a barra de ferramentas e os atalhos de teclado às respectivas ações - a cena Settings e o modelo de estado das preferências - qualquer integração com AppKit que você tenha adicionado e o motivo de ela ser necessária - as etapas de validação da compilação e da execução e os próximos passos que você recomenda para a experiência de uso no desktop
    Use o plugin Build macOS Apps para criar em SwiftUI a estrutura de um aplicativo nativo para Mac a partir desta ideia: [describe your app idea]. Inclua barra lateral, painel de detalhes, inspetor, comandos e ajustes. Restrições: - Escolha primeiro o modelo de cenas. Prefira `WindowGroup` para a janela principal e adicione uma cena `Settings` dedicada às preferências. - Estruture a interface principal com `NavigationSplitView`, estado de seleção explícito, uma lista nativa `.sidebar`, um painel de detalhes e um painel `inspector(isPresented:)` para metadados ou controles secundários. - Mantenha as linhas da barra lateral simples e com aparência nativa. Use um ícone, uma linha para o título e, no máximo, uma linha curta de texto secundário. Só use um cartão personalizado grande para cada linha se houver uma necessidade clara do produto. - Disponibilize as ações importantes por meio de `commands` no nível da cena, `CommandMenu`, botões da barra de ferramentas e atalhos de teclado. Nenhuma ação crítica deve depender exclusivamente de gestos. - Use `@SceneStorage` para o estado da interface de cada janela e `@AppStorage` para as preferências. Para coordenar a barra lateral e o painel de detalhes, use vínculos explícitos com o estado de seleção mantido pela visualização pai. - Prefira os materiais do sistema, as cores semânticas e os fundos padrão da barra lateral. Se precisar personalizar o estilo, limite as mudanças aos cartões de conteúdo do painel de detalhes ou do inspetor. - Recorra a uma integração pontual com AppKit somente se o SwiftUI não oferecer uma forma simples de implementar um comportamento específico de desktop. - Crie ou atualize `script/build_and_run.sh`, faça a verificação mais simples que permita validar a compilação e a execução e informe exatamente quais comandos usou. Entregue: - a estrutura das cenas e as visualizações principais da barra lateral, do painel de detalhes e do inspetor - a implementação que conecta o menu, a barra de ferramentas e os atalhos de teclado às respectivas ações - a cena Settings e o modelo de estado das preferências - qualquer integração com AppKit que você tenha adicionado e o motivo de ela ser necessária - as etapas de validação da compilação e da execução e os próximos passos que você recomenda para a experiência de uso no desktop

    Comece pelo modelo de cenas do Mac

    Use este fluxo para transformar sua ideia na estrutura de um aplicativo para Mac, com uma interface pensada para o desktop desde o início. Assim, você evita ter que adaptar uma pilha de navegação projetada para telas sensíveis ao toque. Peça ao Codex que escolha primeiro o modelo de cenas e depois projete a janela principal com uma barra lateral que mantenha o item selecionado, um painel de detalhes e um inspetor para controles secundários ou metadados.

    Interface nativa do Mac com um item selecionado na barra lateral e seu conteúdo no painel de detalhes

    Use o plugin Build macOS Apps quando quiser que o Codex aplique essa estrutura de desktop e use o shell como principal meio de compilar e executar o aplicativo. A habilidade do plugin que reúne padrões de SwiftUI para macOS ajuda a projetar cenas, barras laterais, inspetores, comandos e ajustes. Ela também ajuda a criar pequenas integrações com o AppKit quando falta ao SwiftUI algum comportamento específico do Mac.

    Crie uma barra lateral, um painel de detalhes e um inspetor

    Prefira NavigationSplitView quando for vantajoso manter a navegação sempre disponível e preservar a seleção do item. Use linhas nativas e simples na barra lateral, mantenha os fundos fornecidos pelo sistema e reserve os cartões personalizados ou conjuntos extensos de metadados para o painel de detalhes ou o inspetor.

    import SwiftUI
    
    struct Item: Identifiable, Hashable {
      let id: String
      let title: String
      let systemImage: String
    }
    let items = [Item(id: "notes", title: "Notes", systemImage: "note.text"), Item(id: "photos", title: "Photos", systemImage: "photo")]
    
    struct ItemDetailView: View {
      let selection: String?
      var body: some View { Text(selection ?? "Select an item").frame(maxWidth: .infinity, maxHeight: .infinity) }
    }
    struct ItemInspectorView: View {
      let selection: String?
      var body: some View { Text("Metadata: \(selection ?? "No selection")").padding().frame(minWidth: 220) }
    }
    @MainActor final class LibraryStore: ObservableObject {
      @Published var entries = items
      @Published var selection: String?
      @Published var showInspector = true
      func addItem() {
        let item = Item(id: UUID().uuidString, title: "New Item", systemImage: "doc")
        entries.append(item)
        selection = item.id
      }
    }
    
    struct LibraryRootView: View {
      @StateObject private var store = LibraryStore()
      @SceneStorage("LibraryRootView.selection") private var savedSelection: Item.ID?
      @SceneStorage("LibraryRootView.showInspector") private var savedShowInspector = true
    
      var body: some View {
        NavigationSplitView {
          List(selection: $store.selection) {
            ForEach(store.entries) { item in
              Label(item.title, systemImage: item.systemImage)
                .tag(item.id)
            }
          }
          .listStyle(.sidebar)
          .navigationTitle("Library")
        } detail: {
          ItemDetailView(selection: store.selection)
            .inspector(isPresented: $store.showInspector) {
              ItemInspectorView(selection: store.selection)
            }
        }
        .focusedSceneObject(store)
        .onAppear {
          store.selection = savedSelection
          store.showInspector = savedShowInspector
        }
        .onChange(of: store.selection) { _, selection in
          savedSelection = selection
        }
        .onChange(of: store.showInspector) { _, showInspector in
          savedShowInspector = showInspector
        }
      }
    }

    Se o aplicativo exigir dimensões fora do padrão para os painéis, coordenação de janelas em baixo nível ou um comportamento personalizado na cadeia de resposta a eventos, peça ao Codex que preserve a estrutura em SwiftUI e integre o AppKit apenas na medida necessária para atender a esse requisito.

    Integre comandos, barras de ferramentas e atalhos à interface de desktop

    Quem usa o Mac deve conseguir encontrar as ações importantes na barra de menus e na barra de ferramentas, além de descobrir os atalhos de teclado correspondentes. Peça ao Codex que associe commands no nível da cena, itens de menu que variam conforme o contexto e botões da barra de ferramentas às mesmas ações do aplicativo. Assim, quem usa o desktop não precisa procurar controles acessíveis apenas por gestos.

    @main
    struct LibraryApp: App {
      @FocusedObject private var store: LibraryStore?
      var body: some Scene {
        WindowGroup {
          LibraryRootView()
        }
        .commands {
          CommandMenu("Library") {
            Button("New Item") {
              store?.addItem()
            }
            .keyboardShortcut("n")
            .disabled(store == nil)
    
            Button("Toggle Inspector") {
              store?.showInspector.toggle()
            }
            .keyboardShortcut("i", modifiers: [.command, .option])
            .disabled(store == nil)
          }
        }
    
        Settings {
          LibrarySettingsView()
        }
      }
    }

    Use FocusedValue, o estado da cena ou um estado de seleção explícito quando o comando precisar atuar sobre o item exibido no painel de detalhes. Se um atalho for registrado em mais de um lugar, peça ao Codex que centralize o registro para que o aplicativo encaminhe o comando por um único caminho bem definido.

    Mantenha as preferências em Settings

    Para as preferências do aplicativo, use uma cena dedicada do tipo Settings e salve com @AppStorage as escolhas do usuário que devem persistir entre sessões. No Mac, essa abordagem costuma ser mais adequada do que adicionar uma tela de ajustes à pilha de navegação da janela principal.

    struct LibrarySettingsView: View {
      @AppStorage("showItemMetadata") private var showItemMetadata = true
    
      var body: some View {
        TabView {
          Form {
            Toggle("Show Item Metadata", isOn: $showItemMetadata)
          }
          .tabItem { Label("General", systemImage: "gearshape") }
        }
        .frame(width: 460, height: 260)
        .scenePadding()
      }
    }

    Descreva a ideia do aplicativo no prompt e valide a estrutura

    Para aproveitar melhor este fluxo, descreva no prompt a ideia do aplicativo, os principais objetos de conteúdo e as ações mais importantes. Em seguida, peça ao Codex que comece criando a estrutura de desktop para esse fluxo de trabalho. Peça ao agente que faça uma verificação rápida compilando e executando o aplicativo. Depois, peça que resuma como as cenas estão organizadas, como os comandos se conectam às ações, quais componentes gerenciam o estado e em que pontos foi preciso integrar o AppKit.

    Dicas práticas

    Mantenha a barra lateral nativa

    Em cada linha da barra lateral, use um ícone, um título de uma linha e, no máximo, uma linha curta de texto secundário. Coloque cartões mais detalhados, contadores e metadados no painel de detalhes ou no inspetor para que seja fácil identificar os itens na barra lateral.

    Evite esconder os ajustes na pilha de navegação principal

    Se uma preferência do usuário afetar todo o aplicativo, peça ao Codex que coloque o controle correspondente em Settings, use @AppStorage para salvar a preferência e ofereça acesso aos ajustes pelo menu do aplicativo. Isso evita acrescentar outra tela de ajustes à pilha de navegação.

    Reserve o AppKit para necessidades específicas do desktop

    Se o recurso exigir painéis para abrir ou salvar arquivos, controle sobre qual componente recebe os eventos primeiro ou uma NSView personalizada, limite o uso do AppKit a essa integração. Mantenha o modelo de estado sob o controle do SwiftUI, sem reescrever a janela inteira em AppKit.

    Tech stack

    Need

    Estrutura do aplicativo em painéis

    Default options

    NavigationSplitView, listas .sidebar e inspector(isPresented:)

    Why it's needed

    Uma barra lateral persistente, um painel de detalhes e um inspetor seguem melhor os padrões de interface do Mac do que a navegação em pilha pensada para telas sensíveis ao toque.

    Need

    Ações e ajustes no desktop

    Default options

    commands, CommandMenu, atalhos de teclado e uma cena Settings

    Why it's needed

    Com ações na barra de menus, atalhos e uma janela própria para os ajustes, o recurso oferece a experiência de um aplicativo nativo para Mac, em vez de parecer uma tela do iOS ampliada para o desktop.

    Need

    Onde manter o estado

    Default options

    @State, @SceneStorage, @AppStorage e vínculos explícitos de seleção

    Why it's needed

    O Codex pode gerenciar de forma previsível a seleção na barra lateral, a visibilidade do inspetor e as preferências do usuário sem adicionar um modelo de visualização por hábito.

    Need

    Integração com APIs nativas

    Default options

    AppKit por meio de integrações pontuais com NSViewRepresentable ou NSWindow

    Why it's needed

    Use o AppKit apenas para comportamentos da plataforma que o SwiftUI não permite implementar de forma simples. Mantenha o SwiftUI como fonte de verdade para o estado da cena e da seleção.

    Need Default options Why it's needed
    Estrutura do aplicativo em painéis NavigationSplitView , listas .sidebar e inspector(isPresented:) Uma barra lateral persistente, um painel de detalhes e um inspetor seguem melhor os padrões de interface do Mac do que a navegação em pilha pensada para telas sensíveis ao toque.
    Ações e ajustes no desktop commands , CommandMenu , atalhos de teclado e uma cena Settings Com ações na barra de menus, atalhos e uma janela própria para os ajustes, o recurso oferece a experiência de um aplicativo nativo para Mac, em vez de parecer uma tela do iOS ampliada para o desktop.
    Onde manter o estado @State , @SceneStorage , @AppStorage e vínculos explícitos de seleção O Codex pode gerenciar de forma previsível a seleção na barra lateral, a visibilidade do inspetor e as preferências do usuário sem adicionar um modelo de visualização por hábito.
    Integração com APIs nativas AppKit por meio de integrações pontuais com NSViewRepresentable ou NSWindow Use o AppKit apenas para comportamentos da plataforma que o SwiftUI não permite implementar de forma simples. Mantenha o SwiftUI como fonte de verdade para o estado da cena e da seleção.

    Related use cases