Ajuda do LightNote
Editor leve de código e notas para Windows. A barra lateral lista as seções e acompanha o que você está lendo; os botões Início e Voltar no topo da janela retornam ao começo, e o campo Buscar procura no texto da ajuda (Enter avança; F3 / Shift+F3 navegam). Pressione F1 a qualquer momento para abrir esta ajuda já na seção da tela atual.
Índice
Edição
- Visão geral
- Espaço de trabalho e janelas
- Editor de código
- Markdown e wikilinks
- Diagramas (Mermaid)
- Matemática e química (LaTeX)
- Calendário na nota
- Numeração e referência cruzada
- Citações e referências
- Grafo de conexões
- Tabelas (Parquet, CSV, JSON, Excel)
- Área de análise: tabela dinâmica e vários gráficos
- PDF e imagens
- Imagens: marcar um print
- Páginas HTML (.html)
- Imprimir
- Zip como pasta (.zip)
- Blocos (.lnb)
- Tarefas (Kanban / Gantt)
- Tabela personalizada (.lnd)
- Bases (consultas salvas sobre as notas)
Ferramentas
- Busca em arquivos e Pendências
- Versionamento (Git fácil)
- Snapshots e backup
- Revisar mudanças (checkpoints)
- Comparar arquivos (diff)
- Executar código (F5)
- Terminal e CLIs de IA
- Assistente de IA na seleção (Ctrl+K / Ctrl+I)
- Sessões de IA
- Chat com IA
- Testar API HTTP (.lnh)
- Banco de dados (.lnc)
- Conexão SSH (.lns)
- Segurança: Frase-Segura, PIN e Markdown Seguro
- Notas diárias, captura rápida e bandeja
- Reencontrar notas antigas
- Suas notas no celular
- Gravar áudio (voz, reunião) com transcrição por IA
- Notas autoadesivas
- Calendário
- Paleta de comandos
Automação (IA / scripts)
Referência
- Configurações e temas
- Modo portátil: os dados ao lado do programa
- Atalhos de teclado
- Licença, edições e comunidade
Visão geral
O LightNote abre uma pasta como Espaço de trabalho e mostra a árvore de arquivos à esquerda, as abas de edição à direita e a barra de status embaixo. A barrinha no topo da barra lateral alterna entre as seções Explorador (árvore), Buscar, Versionamento (Git), Histórico do arquivo e Pendências (TODO/FIXME e tarefas das notas).
Além de código e notas, ele abre e edita vários formatos no lugar certo:
tabelas (Parquet/CSV/JSON via DuckDB e Excel .xlsx), PDF, imagens
(incluindo GIF animado), .zip como pasta, cadernos de Blocos
(.lnb), quadros de Tarefas (.lnt), tabelas
personalizadas (.lnd), conexões de banco de dados
(.lnc) e de SSH (.lns). Tem terminal integrado,
busca global (ripgrep), versionamento Git simplificado, integração com CLIs de IA,
um servidor MCP e uma linha de comando (lnote) para
automação.
Novo por aqui? O material de apresentação (o Espaço de trabalho de boas-vindas) continua acessível a qualquer momento em Ajuda → Reabrir tour de boas-vindas.
Espaço de trabalho e janelas
A pasta-raiz e a janela
A pasta-raiz aberta é o seu Espaço de trabalho. Apenas abri-la não cria nada; ao fechar, o LightNote grava só um pequeno arquivo de sessão (abas abertas e posição). O espaço só vira um "projeto" — com configuração própria persistida — quando você ativa o Versionamento (Git) ou o MCP em Ferramentas → Configuração do Espaço de Trabalho.
As Configurações Gerais valem para o aplicativo inteiro; a Configuração do Espaço de Trabalho vale só para a pasta aberta. Configuração e estado ficam num banco central, não espalhados pela pasta.
O LightNote roda como instância única: abrir uma segunda pasta reaproveita
o processo (multi-janela, menos memória). Há ícone na bandeja e um
launcher com campo de busca que lista os Espaços de Trabalho (fixe os
favoritos no topo pelo menu de contexto) — veja
Notas diárias e bandeja. Cada aba pode receber uma
etiqueta de cor pelo menu de contexto da barra de abas. Para notas
repetitivas, crie, na raiz do espaço de trabalho, uma pasta Modelos (ou Templates) com arquivos
.md e use Arquivo → Nova nota a partir de modelo… Quatro modelos acadêmicos já vêm prontos na mesma lista — Artigo acadêmico, Ficha de leitura, Caderno de laboratório e Protocolo de experimento: escolher um grava o .md nessa pasta, e dali em diante ele é seu para editar.
Organizar e escrever modelos. Subpastas de Modelos viram categorias: Trabalho/Reunião.md aparece como Trabalho/Reunião, e é esse o nome que uma pasta grava ao adotar o modelo. Os campos {{titulo}}, {{data}}, {{hora}} e {{data:dd/MM/yyyy}} são preenchidos na criação — o título é o nome da nota, e renomeá-la logo depois de criada, antes de escrever nela, refaz o título — e nada é trocado dentro de código (entre crases ou num bloco), para que um modelo possa ensinar a própria sintaxe. No modelo eles aparecem marcados como os campos para preencher, com o mesmo fundo — no editor formatado, com a borda sólida da sintaxe —, e numa nota comum não ganham cor, porque ali não fazem nada. O frontmatter do modelo passa para a nota, menos description:, que descreve o modelo, e citation-style:, que é da pasta. Modelos e prompts (a pasta Prompts/) são ferramentas, não conteúdo: ficam fora da busca por significado e do contexto do Chat com IA, e as etiquetas e os aliases: declarados neles não contam — a busca de texto continua achando os dois. Com um modelo aberto, uma faixa no topo do editor diz que ele é um modelo e traz Inserir campo, Ver sintaxe e a Prévia — a nota como ela nasce agora. A Biblioteca de modelos (em Ferramentas, e a mesma que Arquivo → Nova nota a partir de modelo… abre) lista todos com busca por nome e descrição, agrupa pelas subpastas e mostra a prévia; ali também se cria um modelo novo — inclusive a partir da nota aberta, em que o título e a data de hoje viram campos. A galeria também traz um grupo Do site: modelos que publicamos, no idioma da interface, buscados só quando você a abre. Importar é cópia — o modelo vira um arquivo seu em Modelos, e nada liga os dois depois disso: um modelo corrigido no site não persegue o que você já importou, e um modelo seu com o mesmo nome sempre vence. Sem conexão a galeria diz que não conseguiu buscar e segue mostrando o que já está nesta máquina.
Campos para preencher. Um modelo pode deixar buracos: {{pergunta:Assunto da reunião}} é um campo livre e {{escolha:rascunho|revisão|final}} é uma lista. Eles não são substituídos na criação — a nota nasce com eles marcados no texto, e é isso que os faz valer também na Nota de hoje, no lnote e no MCP, onde não há tela para perguntar nada. Na nota, o editor formatado mostra cada campo como uma etiqueta de borda tracejada em volta do rótulo (a pergunta, ou a primeira opção); clicar nela seleciona o campo inteiro, e a próxima tecla o substitui. Num campo de escolha o clique também abre a lista: escolher uma opção troca o campo por ela, e fechar a lista sem escolher deixa o campo selecionado, pronto para você digitar outra coisa. Ao criar a nota, o cursor já pousa no primeiro campo; dali Tab e Shift+Tab andam de campo em campo — a barra de status diz em qual você está —, Alt+↓ abre a lista de uma escolha pelo teclado, e Esc (ou sair da linha do campo) devolve ao Tab o papel de sempre. No próprio modelo, Ver sintaxe vem ligado: os campos aparecem como {{…}} de borda sólida e o clique põe o cursor dentro deles, para corrigir a pergunta ou as opções; desligado, o modelo aparece como a nota que vai nascer dele. Os seis campos também estão no menu / e em Inserir → Campos do modelo — só nos arquivos de modelo. No editor de texto o campo aparece como está no arquivo, com as chaves coloridas, e o corretor não entra nele.
Criar arquivos
Criar arquivo escolhendo o tipo. O menu Novo (☰ Arquivo, botão Novo da barra de atividades ou Criar novo no menu de contexto de uma pasta) traz Nova nota (.md), Novo arquivo de texto (.txt) e o submenu Novo arquivo de código com as linguagens mais usadas. Em todos, o arquivo nasce no disco na hora com um nome padrão e a árvore já abre a edição do nome — só o nome é pré-selecionado, então digitar um título não apaga a extensão. Para aceitar o nome sugerido, basta clicar no editor e começar a escrever. Para uma extensão fora do submenu, crie um arquivo e renomeie (F2): trocar a extensão troca a visão — renomear .txt para .md reabre a mesma aba como nota, com a visão de leitura e o sumário, e o contrário devolve o editor de código. As extensões próprias do LightNote (.lnc, .lne, .lnq, .lnh, .lns e os bundles) são exceção: nelas a extensão declara o formato do conteúdo, então renomear pede confirmação e é recusado enquanto a aba estiver aberta.
Arquivo novo que você não chegou a usar. Se você fecha a aba de um arquivo recém-criado sem nomear, sem salvar e sem escrever nada, ele vai para a Lixeira e a barra de status oferece Desfazer — assim um Novo disparado sem querer não deixa rastro na pasta. Qualquer sinal de que o arquivo é seu o torna permanente: renomeá-lo, salvá-lo (Ctrl+S) ou digitar qualquer coisa nele.
O rascunho é um editor de Markdown. A aba de Rascunho (que não é um arquivo em disco) tem o mesmo editor de texto das notas: realce da marcação, corretor ortográfico, autocompletar de [[ e Ctrl+clique em wikilinks e etiquetas. O que ela não tem continua igual — não há arquivo, então não há salvar automático nem modos de exibição; o conteúdo sobrevive ao fechar o app e some se você fechar a aba.
Onde o arquivo novo é criado. O Novo cria sempre na pasta marcada no Explorador, e há sempre exatamente uma marcada. No topo da árvore fica a linha da pasta-raiz, com o nome do espaço de trabalho: ela é um item como os outros — clique nela para devolver o destino à raiz. Selecionar uma pasta move a marca para ela; selecionar um arquivo marca a pasta que o contém. No modo Lista, que não mostra pastas, a marca fica na linha-raiz e ela exibe o destino efetivo. O menu de contexto da linha-raiz traz Criar novo e Criar pasta.
Arquivos avulsos e favoritos
Para abrir um arquivo solto sem transformá-lo num espaço de trabalho, use Abrir arquivo avulso… (menu da bandeja): a janela avulsa mostra a árvore de arquivos, mas sem Git, MCP nem override de tema. Se ativado em Configurações → Geral → Recursos, o LightNote se integra ao menu do Explorer do Windows (por usuário, sem exigir administrador): além da lista "Abrir com", o menu de contexto ganha "Abrir com o LightNote" em qualquer arquivo e "Abrir como espaço de trabalho do LightNote" em pastas (no Windows 11, dentro de Mostrar mais opções). Arquivos abrem nessa janela avulsa; pastas abrem como espaço de trabalho.
Selecionando vários arquivos de uma vez no Explorer do Windows — inclusive de pastas diferentes — todos abrem na mesma janela avulsa, aba ao lado de aba (em vez de espalhar uma janela por arquivo). As abas dessa janela são lembradas: ao fechá-la e abri-la de novo, os mesmos arquivos voltam. Como o foco aqui são as abas, a árvore de arquivos começa recolhida — use Ctrl+B (ou o botão no topo da barra de atividades) para exibi-la.
Voltando a uma sessão. A janela de arquivos avulsos se chama Arquivos avulsos em todo lugar — inclusive na barra de título, no lugar onde as outras janelas mostram o nome do espaço de trabalho, para você distingui-las no Alt+Tab. No menu da bandeja, em Abrir, o item ganha o sufixo (N abas) quando há abas guardadas — clicar traz todas de volta. Ela também é a primeira linha do launcher, ao lado dos espaços de trabalho. E, ao reabrir o LightNote, ele volta com tudo o que estava aberto quando você saiu: cada janela na sua pasta, mais a janela avulsa. Se preferir abrir só a última pasta usada, troque em Configurações → Geral → Interface → Ao iniciar, abrir. Uma janela que você fechou antes de sair fica de fora — fechar é o jeito de dizer "terminei com este espaço".
Favoritos: a barra lateral tem uma seção Favoritos com o que você fixou (menu de contexto da árvore ou da aba → Adicionar aos favoritos) e os arquivos abertos recentemente. Os fixados são por pasta e ficam guardados como caminhos relativos, então sobrevivem a mover o espaço de trabalho.
Abrir uma aba em janela própria: no menu de contexto da aba,
Abrir em nova janela reabre aquele arquivo numa janela avulsa (útil para
comparar uma nota ao lado do código). Tipos que dependem do espaço de trabalho
(.lnc, .lne, .lns e os bundles) não podem ser
destacados.
O Explorador
Mover um arquivo com a aba aberta. Arrastar o arquivo na árvore para outra pasta leva a aba junto — ela continua aberta, apontando para o lugar novo —, e o mesmo vale ao recortar e colar e ao mover uma pasta inteira, caso em que as abas dos arquivos de dentro a acompanham. Segurando Ctrl, o arraste copia em vez de mover. Para fora do LightNote, o arraste sempre COPIA: leve um arquivo da árvore — ou arraste a própria aba pela barra de abas — até uma pasta do Windows, um e-mail ou uma conversa do Teams, e o original continua no seu espaço de trabalho. Dentro do programa a aba continua sendo só uma aba: arrastá-la para outro painel move a aba, e passar com ela por cima do editor ou da árvore não escreve nem move nada.
Seleção múltipla. A árvore aceita Ctrl+clique (avulso) e Shift+clique (intervalo) nos três modos de visão. Com vários itens selecionados, o menu de contexto passa a operar sobre a seleção inteira: Recortar e Copiar (interoperando com o Explorer do Windows), Apagar (uma única confirmação para todos), Duplicar, Copiar hash, Comprimir para .zip (um arquivo só, cada item com o próprio nome no topo), Aplicar cor, Favoritos, Git (add/restore) e Copiar caminhos (uma linha por item). As ações que só fazem sentido para um item — renomear inline, Propriedades, Abrir como, Converter — ficam desabilitadas, com o motivo no tooltip. Clicar com o botão direito dentro da seleção a preserva; clicar fora dela seleciona só o item clicado. Selecionar uma pasta e algo dentro dela não faz a operação duas vezes: o item de dentro é descartado.
Espiar sem abrir. O clique simples num arquivo já abre uma aba de prévia (reaproveitada, em itálico na barra de abas). Percorrendo a árvore com as setas, a tecla Espaço faz o mesmo e devolve o foco à árvore, para você seguir descendo a lista.
Ferramentas de arquivo. O menu de contexto do Explorador traz o submenu Ferramentas de arquivo: Renomear em lote (filtro por extensão/curinga/regex + pipeline de regras com pré-visualização e detecção de colisão), Dividir arquivo (por linhas, tamanho ou separador regex), Juntar arquivos (mantendo só o 1º cabeçalho de CSV, opcional), Duplicar, Copiar hash (MD5/SHA-256) e Comprimir para .zip / Extrair aqui. Com vários itens selecionados, Renomear em lote e Juntar arquivos recebem exatamente os itens escolhidos (em vez de varrer a pasta) — e o Juntar respeita a ordem da seleção.
Navegação da janela avulsa. No alto da árvore há voltar (Alt+←), avançar (Alt+→) e subir, mais uma trilha de pastas clicável — cada segmento leva àquele nível. Os botões laterais do mouse também voltam e avançam. Para digitar um caminho, clique no vazio da faixa ou use Ctrl+L; Esc desiste e volta à trilha. Trocar de aba também move a pasta exibida: como a janela avulsa reúne abas de pastas diferentes, clicar numa aba navega até a pasta dela.
Menus e zoom
Menus. O botão ☰ (topo da barra de atividades) reúne os menus Arquivo, Editar, Exibir, Janela, Ferramentas, IA e Ajuda. As ações de IA têm menu próprio (também no botão da varinha, na barra de atividades). Em Ferramentas, os grupos ficam em submenus: Executar (F5/F6/F8, lint, enviar ao terminal, macros), Capturar (nota de hoje, captura rápida, tarefa rápida, gravar áudio, notas adesivas) e Espaço de Trabalho (configuração, snapshot, exportar cópia, mover pasta) — este último também no menu da engrenagem. O menu Novo é o mesmo nos três lugares em que aparece: ☰ Arquivo, botão Novo da barra de atividades e Criar novo do menu de contexto de uma pasta.
Zoom, em qualquer visão. O nível de zoom mora num lugar só: o grupo − 100% + à direita da barra de status. O botão do meio abre a lista padrão — Ajustar à largura e Ajustar à janela (só onde o conteúdo tem tamanho próprio, como PDF e imagem), os níveis 200%, 150%, 120%, 100%, 75% e 50%, e Personalizado… —, com uma marca no que está ativo. Os atalhos são os mesmos em todas as visões que têm zoom (código, notas, PDF, imagem, HTML e planilhas): Ctrl++, Ctrl+−, Ctrl+0 para voltar a 100% e Ctrl+roda do mouse. Numa visão sem zoom o grupo simplesmente não aparece; sob um ajuste, o rótulo mostra Largura ou Janela em vez de uma porcentagem. O zoom é da aba, não do arquivo: a aba que ficou parada e teve a memória liberada — ou que voltou ao reabrir o LightNote — retorna no zoom em que estava; abrir o arquivo de novo, do zero, começa em 100%.
Editor de código
Abrir, realçar e formatar
Arquivos de texto/código abrem no editor (Scintilla) com realce de sintaxe. Há comentar/descomentar (Ctrl+/), mover e duplicar linha, marcadores (Ctrl+F2), lista de símbolos/funções, autocompletar por palavras, guias de indentação, quebra de linha, zoom e detecção de alteração do arquivo em disco. Com o versionamento ativo, a margem mostra as linhas adicionadas/alteradas desde a última versão.
Há ainda macros (gravar/reproduzir uma sequência de edições com Ctrl+Shift+R / F4, em Ferramentas → Macros), formatar/beautify (Shift+Alt+F), uma tabela ASCII na barra da aba (para inserir caracteres/molduras) e corretor ortográfico (Hunspell). O pt-BR e o en-US já vêm embutidos; os demais idiomas você baixa sob demanda na tabela de Configurações → Notas e escrita → Ortografia (uma linha por idioma, com botão Baixar/Remover). Para acompanhar um arquivo de log sendo escrito, use o botão Monitorar (tail -f) na barra da própria aba. Arquivos muito grandes (acima de ~1 MB) abrem num editor leve virtualizado, que carrega só os trechos visíveis; é possível forçá-lo em Arquivo → Abrir no editor leve…
Formatar e verificar (linters): Shift+Alt+F formata o documento com o formatador externo da linguagem (black, prettier, clang-format, gofmt, rustfmt…) quando instalado, caindo no formatador interno (JSON/XML) offline; F7 roda o linter da linguagem (ruff, eslint, shellcheck, luacheck…) e marca os problemas com sublinhado no editor e no painel Problemas (pane inferior, navegável). Ambos têm um catálogo com Adicionar em Configurações → Formatação e → Linters, e opções de formatar ao salvar / verificar ao salvar. Rode o arquivo no painel de saída com F6 (captura código de saída e duração, com parar/reiniciar) ou só um trecho com F8.
Um .md aberto como código volta a ser nota num clique. A barra do editor mostra Abrir como nota quando o arquivo aberto é uma nota — é o inverso do Abrir como → Código do menu da árvore, e devolve a aba para a visão de nota, com edição formatada, leitura, sumário e propriedades. O botão só aparece quando a troca é possível: uma nota grande demais continua no editor de código.
Multi-cursor, histórico e definição
Mais recursos de edição: multi-cursor por ocorrência (Ctrl+D, todas
com Alt+F3), duplicar linha (Ctrl+Shift+D), juntar linhas
(Ctrl+Shift+J), expandir/reduzir seleção por escopo (Ctrl+Shift+Espaço
/ Ctrl+Alt+Espaço), seleção retangular (Alt+arraste), dobrar/expandir
tudo, trechos/snippets (Ctrl+J, editáveis em Configurações →
Editor), Ir para símbolo no arquivo (# na paleta) e no
projeto (Ctrl+T ou ##), histórico de navegação
(Alt+←/→), trilha de navegação (breadcrumbs) no topo do editor,
réguas de coluna, colorir pares de parênteses, auto-fechar/cercar pares e
higiene ao salvar (aparar espaços, quebra final) — tudo em Configurações →
Editor.
Histórico local e área de transferência: a cada gravação, o LightNote guarda uma versão do arquivo (Arquivo → Histórico local…, restaurável), independente do Git. Ctrl+Alt+V abre o histórico da área de transferência para colar um item copiado anteriormente. Ctrl+Shift+T reabre a última aba fechada; as abas podem ser fixadas (menu de contexto), o que as protege da liberação por inatividade.
Ir à definição: F12 ou Ctrl+clique sobre um identificador salta para onde ele é definido no projeto; Shift+F12 localiza os usos.
Minimap e operações de texto
Minimap. Uma miniatura do documento inteiro fica na borda direita do editor: ela mostra a “forma” do código (as cores do realce de sintaxe em escala reduzida) e marca a região visível. Clique ou arraste nela para navegar até qualquer ponto do arquivo. Ligue/desligue em Exibir → Minimap ou em Configurações → Editor. O botão Minimap da barra da própria aba de código (ao lado do ASCII) liga e desliga sem sair do editor. Na borda esquerda da miniatura fica uma faixa de marcas: em azul as linhas com marcador (a mesma bolinha da margem) e em âmbar as ocorrências da busca rápida — assim você vê de relance como elas se espalham pelo arquivo inteiro, mesmo nas partes que estão fora da tela.
Operações de texto. No menu Editar — e no menu de contexto do editor — ficam os submenus Linhas (mover, duplicar, deletar, ordenar, juntar, inverter, numerar) e Limpeza (aparar espaços, remover linhas vazias/duplicadas, tabulações ↔ espaços). Com um trecho selecionado, o menu de contexto também traz Salvar seleção como novo arquivo…: grava o trecho num arquivo ao lado do atual e o abre numa aba (o original não é alterado).
Markdown e wikilinks
Modos de exibição
Notas .md abrem com editor e leitura lado a lado (configurável). A
marcação é esmaecida fora do parágrafo do cursor para a página parecer um documento
pronto.
Atalhos: Ctrl+B/Ctrl+I aplicam negrito/itálico e Ctrl+E alterna o modo de exibição (edição → dividido → formatada → leitura).
Menu /: no editor formatado, digite / no começo da linha (mesmo com recuo) ou depois de um espaço: a lista de inserção abre no cursor. Digite para filtrar (/tabela, /destaque, /h1), escolha com ↑/↓ e insira com Enter; Esc ou Espaço fecham a lista e o que você digitou continua como texto. A coluna da direita mostra a marcação que cada item escreve, para você digitá-la direto na próxima vez. O menu não abre dentro de bloco de código, fórmula ou célula de tabela.
Modo de leitura: o último modo do Ctrl+E é a mesma tela da edição formatada, porém somente leitura — e por isso ele pode mostrar o que o arquivo não tem: o sumário do token [TOC]. A lista da pasta do token [arquivos] e o corpo das notas transcluídas com ![[nota]] aparecem também na edição formatada. Nada disso é escrito no .md: o arquivo continua com o token, e o texto gerado não aceita edição. Nesse modo o clique simples segue links, wikilinks e etiquetas (sem Ctrl), e os botões que editam ficam desabilitados — inclusive desfazer, recortar e colar, que antes agiam no editor de texto fora da tela. Copiar continua valendo, e copia o que você está vendo. Ctrl+F procura no que está na tela; a linha de substituir fica desabilitada, com o motivo no tooltip, porque uma substituição aqui não chegaria ao arquivo.
Contas com unidade, na leitura. Uma linha terminada em = recebe o resultado: 3,5 km / 2 s = aparece como 3,5 km / 2 s = 1,75 km/s. O arquivo não muda — é a mesma ideia do [TOC] e da citação formatada. Ela faz análise dimensional, e é aí que ela ganha o seu sustento: 1 km + 1 s = é recusado nomeando as duas, porque uma calculadora que devolvesse 2 ali não seria pior — seria uma que mente, e num caderno de laboratório o erro sobreviveria até o artigo. Somar a mesma grandeza em unidades diferentes funciona e converte (2 h + 30 min =), e o resultado sai na unidade que você escreveu. Conhece os prefixos do SI, as constantes físicas (c, h, k_B, N_A, g…), a conversão explícita (3 km em m, também in, to e ->) e a incerteza: (2,00 ± 0,05) m / (1,0 ± 0,1) s = propaga o erro e escreve só os algarismos que a medida permite. Código e fórmula ficam de fora — dentro de uma cerca ```, entre crases ou num $…$, o = do fim da linha é sintaxe de outra coisa. E uma linha que não é conta (Total =) fica como está, em silêncio. Vem desligada: ligue em Configurações → Recursos → Acadêmico → Calculadora com unidades.
Cartões de revisão espaçada. Uma nota que recebe a etiqueta #cartoes (ou #flashcards) vira um baralho: dentro dela, cada linha Pergunta::Resposta é um cartão, ::: cria também o cartão de volta, um ? sozinho entre duas linhas faz o cartão de várias linhas e ==assim== vira uma lacuna. Sem a etiqueta, nenhuma nota tem cartões — é o que impede um std::vector de uma nota de programação de virar um cartão que você não escreveu. Ferramentas → Cartões → Revisar cartões abre a sessão: a resposta fica escondida até você pedir (é o recurso inteiro — ver as duas juntas é reler, e reler não fixa), e as quatro notas trazem escrito nelas quanto tempo cada uma compra. O agendamento é o FSRS, o mesmo algoritmo que o Anki usa. A identidade do cartão é a PERGUNTA: corrigir a resposta não mexe no agendamento, e reescrever a pergunta aposenta aquele cartão e começa outro — que é o certo, porque a pergunta é o que você está aprendendo. O histórico fica num arquivo aberto ao lado da nota (nota.md.cartoes.ndjson): dá para versionar no Git e ler em qualquer editor, e o preço é mais um arquivo na pasta. Exportar para o Anki gera o arquivo de texto que ele importa — o agendamento não vai junto, porque o importador de texto do Anki não o aceita; ele continua nos .ndjson.
Blocos de código
O bloco de código sai colorido. Uma cerca com a linguagem declarada (```python) tem o miolo realçado token a token, com as mesmas cores do editor de código — inclusive o tema de código escolhido para esta janela. Vale na edição formatada, no modo de leitura, no arquivo exportado e nas respostas do Perguntar às notas. Cerca sem linguagem declarada continua monocromática, e linguagem sem realce disponível também: o texto nunca deixa de aparecer.
Dobrar, fixar e exportar
Dobrar seções e fixar o título valem também no modo formatado e no de leitura. Ctrl+Shift+[ recolhe a seção do cursor e Ctrl+Shift+] a expande; clicar na setinha à esquerda do título faz o mesmo, e Exibir → Recolher/Expandir todos os cabeçalhos age na tela que estiver à frente. Enquanto você rola, os títulos que saíram por cima ficam fixos numa faixa no topo — clicar num deles salta para a seção. Recolher é estado de tela: o .md não muda, e o texto recolhido continua no arquivo.
Exportar: o PDF e o HTML são gerados a partir do mesmo documento do modo de leitura — o arquivo que sai é o que você acabou de ler, com sumário, lista da pasta e transclusões incluídos. O HTML fica autocontido (as imagens locais viram dados embutidos) e o PDF sai com texto vetorial, pesquisável. O HTML sai com marcação semântica — título com âncora, callout em <aside>, tabela com cabeçalho, nota de rodapé com volta — e as fórmulas em MathML: texto de verdade, que se copia, é lido em voz alta e não borra no zoom. O tema acompanha cada formato: o HTML sai com as cores que você vê na tela, inclusive um tema escuro (o arquivo tem fundo próprio); o PDF vai sempre para papel claro, porque é feito para imprimir e enviar — se o seu tema de conteúdo for escuro, ele é impresso com o tema claro padrão, e um tema claro que você já use é preservado. Word, OpenDocument, LaTeX, Typst e EPUB são gerados pelo próprio LightNote, sem instalar nada. O .docx e o .odt saem com títulos, listas, tabelas, notas de rodapé, imagens e as fórmulas como equações editáveis — do Word num caso, do LibreOffice Math no outro; o .tex traz o preâmbulo completo e compila em pdfLaTeX, XeLaTeX e LuaLaTeX. Se a pasta tem bibliografia e a seção Acadêmico está ligada, o .tex sai com a citação viva: o [@chave] vira \autocite, o token [referências] vira \printbibliography, e um refs.bib com as obras citadas é gravado ao lado — o app diz que o gravou. Compile com biber. O .typ é a mesma ideia em Typst, que compila em segundos sem distribuição LaTeX instalada: a fórmula viaja em LaTeX pelo pacote mitex (baixado na primeira compilação) e a citação sai como @chave com #bibliography. O .epub é o livro eletrônico: um capítulo por título de nível 1, sumário de navegação, imagens como arquivos do pacote e a mesma marcação semântica do HTML. O .ipynb é o notebook do Jupyter: a prosa vira célula de texto e a cerca da linguagem do kernel vira célula de código — só ela, porque uma célula de código é mandada ao kernel, e um diagrama Mermaid virado célula seria executado como Python na primeira vez que alguém a rodasse. O kernel sai da chave kernel das propriedades da nota, ou da cerca mais frequente. A saída não é inventada: as células saem sem resultado, porque resultado é de execução — a mesma regra que a importação de notebook já segue ao descartar as saídas gravadas. E há Markdown para…: a mesma nota no dialeto do destino — alerta > [!NOTE] no GitHub, !!! note no MkDocs, :::note no Docusaurus, ::: {.note} no Pandoc, a grafia do Obsidian ou CommonMark estrito. O wikilink vira link relativo (fora do Obsidian) e o comentário %%…%% não é publicado, porque ele é privado. Com o Typst instalado (winget install --id Typst.Typst), a própria exportação oferece Compilar o PDF ali mesmo — e sem ele o botão vira Instalar o Typst..., que abre o guia. Se o curso ou o cliente entrega um modelo do Word, aponte o .docx dele em Configurações do espaço de trabalho → Citações e referências → Modelo do Word: o arquivo exportado sai com os estilos, o papel, as margens e o cabeçalho do modelo. Uma nota pode usar outro declarando reference-docx: modelo.docx nas propriedades dela. Os três partem do Markdown da leitura — citações já formatadas, figuras numeradas —, e o que não atravessa é dito ao fim da exportação. O diagrama Mermaid e a estrutura química entram como imagem — no .docx, no .odt e no EPUB desenhados em papel claro, no HTML com as cores da tela —; só pelo lnote, que não tem janela para desenhá-los, eles saem como bloco de código. E há Texto marcado para…: reStructuredText, AsciiDoc, Org mode, MediaWiki e texto puro, também escritos pelo próprio LightNote. Cada um recebe a construção nativa dele, e não uma imitação: a caixa vira .. note:: no Sphinx, [NOTE] no AsciiDoc e #+begin_note no Org; a fórmula vira .. math::, latexmath:[], LaTeX puro e <math>; a nota de rodapé vira footnote:[] e <ref>. O texto puro não tem marcação nenhuma — a tabela sai alinhada em colunas, para caber num e-mail ou numa mensagem de commit. O que o destino não tem é dito ao fim: o MediaWiki não tem caixa de aviso no núcleo dele (ela vira citação com o rótulo em negrito) e o reStructuredText não tem texto riscado. Para levar um pedaço sem gravar arquivo, o menu de contexto do editor tem Copiar a seleção como (ou Copiar a nota como, sem seleção): texto formatado para colar no Word, no Google Docs ou num e-mail, Markdown do GitHub, LaTeX e Typst. O LaTeX e o Typst levam só o corpo — sem preâmbulo nem título —, porque o destino é um documento que já os tem; o pacote de que o trecho precisa e a citação que depende da bibliografia do destino são avisados na barra de status, e o comentário %%…%% também fica de fora. O RTF fica em Mais formatos (pandoc) e passa pelo pandoc, um programa separado (winget install --id JohnMacFarlane.Pandoc): sem ele esse destino aparece desabilitado, com o motivo, e Instalar o pandoc... no mesmo submenu abre o guia e faz a instalação. Se você já tem o pandoc em outro lugar, aponte o arquivo com Já tenho: localizar no disco..., no guia, ou em Configurações → Ferramentas de código → Programas externos.
Exportar com opções... é o primeiro item do menu de exportação — o da aba e o de Arquivo → Exportar nota são o mesmo menu. Ele lista todos os destinos, com uma busca que casa nome, uso e extensão (wiki acha o MediaWiki, sphinx acha o reStructuredText), e mostra só as opções que valem para o destino escolhido: Sumário no início, quando a nota ainda não tem [TOC]; Idioma do documento, que decide a hifenização e os rótulos que o documento gera sozinho; Citações vivas ou resolvidas no texto, no LaTeX e no Typst; o Modelo do Word, com a caixa que o torna o padrão da pasta; as Fórmulas do HTML e do EPUB em MathML ou como imagem, para leitor de e-book antigo ou HTML que vai colado num e-mail; o Papel do PDF, A4 ou Carta; e Compilar o PDF com o Typst logo depois. A opção que vale mas não pode ser usada fica desabilitada com o motivo — a citação viva sem bibliografia na pasta —, e o destino que depende de um programa ausente oferece a instalação ali mesmo. A última escolha fica lembrada por pasta e o diálogo reabre como você o deixou; os itens diretos do menu continuam exportando com os valores de fábrica, para que uma escolha feita semanas antes não mude o arquivo de um atalho. O [TOC] escrito na nota vale em todos os destinos: vira o sumário do Word e do LibreOffice (o Word o atualiza ao abrir), \tableofcontents no LaTeX, #outline() no Typst e a lista de links no HTML e no Markdown. No texto formatado do Copiar a seleção como, a fórmula e o diagrama vão como imagem, com a fonte LaTeX no texto alternativo: ali não se sabe onde o texto será colado, e só a imagem aparece igual no Word, no Google Docs e num e-mail — quem precisa da equação editável exporta o .docx ou o .odt.
A pasta inteira também sai: Arquivo → Exportar pasta... (ou o botão direito numa pasta da árvore) transforma as notas dela num site HTML — uma página por nota, com um índice quando nenhuma nota já virou index.html —, num conjunto de .docx ou .odt, ou numa árvore de Markdown no dialeto do destino. A estrutura de subpastas é preservada, os links e wikilinks entre as notas passam a apontar para os arquivos que saíram (no Word e no LibreOffice também, de um documento para o outro) e as imagens e anexos que vivem dentro da pasta vão junto, no mesmo lugar. O que está fora dela não é copiado: fica como você escreveu, e o relatório do fim lista cada caso, junto com os links sem alvo. A pasta de destino tem de estar vazia — ou você marca Substituir os arquivos com o mesmo nome — e não pode conter a pasta exportada. Sem janela: lnote folder-export --path . --format html --out site, e a ferramenta folder_export no MCP; ali a transclusão, o [files] e a numeração de figuras não são resolvidos, porque quem os resolve é a janela.
Edição formatada
Edição formatada (WYSIWYG): o quarto modo mostra a nota como ela
fica — título com corpo de título, lista com marcador, tabela como grade e
imagem no meio do texto —, e não a marcação. O arquivo continua sendo o mesmo
.md: quem grava é o LightNote, não o Qt, e por isso negrito,
itálico, wikilink, transclusão e callout sobrevivem à ida e volta. Entrar no
modo e sair sem editar não muda um byte do arquivo. A barra oferece só o que o
Markdown representa — título, negrito, itálico, tachado, código, listas (com
caixa de tarefa), citação, link, tabela e linha horizontal; alinhamento, recuo e
tamanho de fonte ficam de fora porque se perderiam ao salvar.
Dentro de uma
tabela, Tab anda de célula e cria a linha seguinte na última.
Enter no vazio ao lado da tabela — onde o cursor cai ao clicar à
direita de uma linha — acrescenta uma linha ao fim dela, com o cursor na
primeira célula.
Dentro de uma célula, o Enter quebra a linha ali mesmo (vai para o
arquivo como <br>, a única forma que a tabela do Markdown
aceita) e o Ctrl+Enter cria a linha de baixo, com o cursor na mesma
coluna.
Passando o mouse pela tabela aparecem alças discretas: à esquerda da
linha, um par de setas que a move para cima ou para baixo — e que também se
arrasta para levá-la a outra posição; acima da coluna, o par que a move
para os lados; e um + na borda de baixo e outro na da direita, que
acrescentam linha e coluna. A primeira linha é o cabeçalho e não se move. Tudo
isso também está no menu de contexto, em Tabela — que traz ainda
Remover a tabela, o caminho seguro para tirar a tabela inteira.
Numa caixa (<details> ou :::), a última linha
fecha a caixa e não se apaga: ela está ali para o conteúdo de baixo não ser
engolido pela caixa. Para desfazer a caixa mantendo o texto, use
Remover a caixa no menu de contexto.
Enter cria linha, sempre. Num item de lista vazio ele sai da lista sem
criar linha — como no Word —, e num parágrafo vazio ele cria a linha vazia. Uma
linha em branco do arquivo é a separação normal entre parágrafos e não aparece
como linha vazia; da segunda em diante ela aparece, e volta para o arquivo como
você a escreveu.
Arrastar a
borda direita de uma imagem a redimensiona, e a largura vai para o arquivo como
. A barra tem doze controles: negrito, itálico e cabeçalho diretos, e dois menus que dividem o resto pelo que eles fazem — Formatar age sobre o que já está escrito (marcas, listas, citação, alinhar tabela e as operações de Texto) e Inserir cria coisa nova (link, imagem, tabela, bloco, diagrama, fórmula, destaque). Alinhar tabela e o menu Texto continuam sendo do editor de texto: aqui eles aparecem desabilitados, com o motivo. Esmaecer a marcação foi para o botão Exibição, ao lado da coluna de leitura e da máquina de escrever, que valem nos quatro modos. E o menu Inserir oferece aqui o mesmo que no editor de texto — realce, sobrescrito, subscrito, wikilink, nota de rodapé, destaque (callout), bloco recolhível, sumário e lista de definição —, tudo o que este modo já sabia mostrar e não sabia criar.
O que o modo de leitura mostra, a edição formatada mostra também. O emoji :fire: aparece como 🔥, ==realce== como marca amarela, ^2^ e ~2~ como sobrescrito e subscrito, #etiqueta como pílula e um endereço da web solto como link. O arquivo continua com a forma escrita: abrir a nota não reescreve nada. Editar por dentro de um trecho representado preserva a marcação — digitar no meio de um realce continua realçando — e o que se digita logo depois dele fica de fora. O comentário %%…%% continua visível, esmaecido: escondê-lo o tornaria invisível e ineditável.
Callouts viram caixa também na edição formatada. Uma citação que começa com > [!NOTE] — ou [!TIP], [!IMPORTANT], [!WARNING], [!CAUTION] — aparece com barra e título coloridos, como no modo de leitura: o marcador dá lugar ao rótulo do tipo, ou ao seu próprio título quando você escreve > [!TIP] Meu título. O arquivo continua com o marcador escrito, e editar o título preserva o tipo do callout. Os nomes de caixa do Obsidian e do MkDocs também são entendidos: [!SUCCESS], [!ABSTRACT], [!FAILURE], [!QUESTION] e os apelidos deles (tldr, missing, faq) caem na caixa mais próxima, então a nota que veio de lá já aparece colorida — e, ao exportar, cada destino recebe o nome que ele conhece.
Este é o modo padrão de uma instalação nova. Quem já usava o LightNote mantém o modo que tinha; para trocar, use Configurações → Markdown → Visão padrão ao abrir uma nota. Clicar num título do Sumário salta dentro do próprio modo, sem tirar você da edição formatada nem da leitura.
Alinhar a coluna de uma tabela. Com o cursor dentro da tabela, o menu de contexto traz Tabela → Alinhar coluna: À esquerda, Centralizado, À direita ou Padrão. O alinhamento e' da coluna inteira — e' assim que o Markdown o representa — e vai para o arquivo na linha separadora (:--, :-:, --:); Padrão volta ao ---. A marca no menu diz qual esta' em vigor: na tela, uma coluna --- e uma :-- se parecem.
O Sumário mostra o que está na tela. A lista de cabeçalhos vem da superfície que você está vendo: na edição formatada, um título recém-digitado aparece na hora, sem esperar o texto chegar ao editor de texto; no modo de leitura, ela inclui também os títulos das notas transcluídas com ![[nota]], que fazem parte do que você lê. Clicar num item leva ao cabeçalho certo nos dois casos. E no modo dividido a rolagem passou a ser de mão dupla: rolar a leitura leva o editor de texto junto, como já acontecia no sentido contrário.
A marcação vira formato enquanto você digita. Escrever
**teste** aplica negrito e some com os asteriscos; o mesmo vale para
*itálico*, ~~tachado~~, `código` e as
formas com underline. No início da linha, # a
###### viram título, - e
1. viram lista (o número digitado é onde ela começa),
- [ ] vira tarefa com caixa, > vira
citação e --- sozinho vira linha horizontal ao teclar Enter. Os
marcadores que desenham alguma coisa já valem no espaço; só o título espera a
primeira letra, porque um título vazio não mostraria nada. Ctrl+Z desfaz só a conversão e devolve a
marcação literal — é a saída de quem queria mesmo escrever os asteriscos. Colar também converte: um texto com marcação colado entra formatado, sem os marcadores. Aqui a regra é mais cautelosa que na digitação — só dispara com marcação inequívoca —, porque ao colar você não vê o resultado se formar: assim um trecho de código, cheio de * e _, continua sendo código. Dentro
de um bloco de código nada é convertido, porque ali a marcação é o assunto. Para
desligar tudo: Configurações → Geral → Converter a marcação ao digitar. Do Word, do Google Docs ou de uma página, o que chega é o texto com a estrutura: título, lista (inclusive a do Word, que por baixo não é lista nenhuma), tabela, link, código na linha e bloco de código com a linguagem. A fonte, o tamanho e a cor da origem ficam de fora — o Markdown não os representa, e mantê-los deixaria um trecho em Arial azul que some ao salvar. A imagem que vem junto vira anexo da nota quando o Word ou o navegador a deixou na pasta temporária, que se esvazia sozinha; a que aponta para a internet continua apontando, e o menu de contexto dela oferece Baixar a imagem para o espaço de trabalho.
Imagens, links e wikilinks
Imagem e link. Há três caminhos para pôr uma imagem:
Inserir → Imagem… na barra, digitar  ou
arrastar o arquivo para dentro da nota — arrastar uma imagem insere a
imagem, arrastar uma nota .md insere um [[wikilink]], e
qualquer outro arquivo vira um link clicável com o nome do arquivo como
rótulo — e, soltando vários de uma vez, cada um fica na sua linha. O caminho
gravado é relativo à
pasta da nota sempre que possível, para a nota continuar abrindo depois de
mover o vault. O endereço de um link não aparece no texto (o que se vê é o
rótulo), então ele é mostrado na barra de status ao passar o mouse, e
Ctrl+clique abre: endereço da web vai ao navegador, caminho local abre no
LightNote.
Editar um link já feito: ponha o cursor nele e use o botão
Link (ou Editar link… no menu de contexto) — a janela abre com o
texto e o endereço preenchidos. O menu de contexto sobre um link
também traz Copiar endereço e Remover o link, que desfaz o link e
deixa o texto. Sobre um [[wikilink]] ele traz Abrir a nota e
Copiar o alvo; sobre uma #etiqueta, Buscar a etiqueta
e Copiar a etiqueta. Sobre uma imagem há Texto alternativo… — que
não aparece no modo formatado, mas vai para o arquivo e para a busca — e, depois
de arrastar a alça, Tamanho original, que devolve a imagem ao tamanho
dela. Sobre uma imagem de endereço da web aparece Baixar a
imagem para o espaço de trabalho: o arquivo vai para Anexos/ ao
lado da nota e a nota passa a apontar para ele — sem isso ela dependeria de a URL
continuar existindo. E há o caminho mais curto de todos: selecione um texto e cole
um endereço — ele vira [texto](endereço) em vez de substituir a
seleção. Vale nas duas superfícies de edição. Enquanto ela não é baixada, a imagem da web aparece como um
cartão com o endereço e o caminho do menu — o LightNote não vai à rede
para renderizar uma nota, e antes o lugar ficava com a caixinha vazia de imagem
quebrada, sem dizer o que fazer.
E dá para desfazer a marcação. No menu Formatar, os itens
Realce, Sobrescrito e Subscrito aparecem marcados quando
o cursor está dentro de um deles, e clicar ali tira a marcação em vez de
aplicá-la outra vez. Pelo teclado há o caminho rápido: com o cursor no fim de
um trecho formatado, Ctrl+Shift+Backspace devolve a marcação literal menos um
caractere — negrito vira **negrito* em texto comum — e
completar o delimitador que falta forma tudo de novo. Vale para negrito, itálico,
tachado, código, realce, sobrescrito e subscrito. O Backspace sozinho apaga uma
letra, ali como em qualquer outro lugar.
Editar o diagrama sem sair da nota. Um diagrama Mermaid ou
uma fórmula $$…$$ aparecem desenhados no editor formatado; para
mexer na fonte, ponha o cursor neles e tecle Ctrl+Enter — ou use
Editar este bloco… no menu de contexto. A barra de baixo mostra o texto, a
nota fica travada enquanto ela está aberta, e fechá-la (✕, Esc, Ctrl+Enter, um
clique na nota) aplica: o caminho de volta é o Ctrl+Z. No mesmo menu,
Extrair para nova nota… grava o trecho selecionado numa nota ao lado desta e
deixa um [[wikilink]] no lugar — a marcação vai junto, então título,
lista e tabela chegam inteiros na nota nova. O campo mostra só o conteúdo: as linhas ```mermaid e ``` (ou os $$) viraram o seletor de tipo no cabeçalho da barra, que também troca entre diagrama, fórmula e bloco de código. O Enter mantém a indentação da linha, que numa linguagem indentada como o Mermaid é o gesto de toda linha. E o menu de contexto do bloco traz Copiar o código Markdown e Copiar a imagem — o código cola em qualquer editor de Markdown e volta a desenhar; a imagem cola num e-mail ou num chat. Os dois valem também no modo de leitura.
Pedir a alteração à IA. Com a barra do bloco aberta, o botão IA no cabeçalho abre uma linha onde você escreve o que mudar — “acrescente um caminho de erro que volta ao início”, “troque a soma por uma integral” — e o Enter envia. Ao lado do campo, um botão mostra qual IA vai responder: o menu dele troca de assistente só para este bloco, sem mexer na sua IA padrão, e traz Ver o que será enviado. Vale olhar, porque a IA recebe o bloco, o título e a seção da nota e o texto em volta — é isso que permite pedir que o diagrama reflita o que está escrito ali. A resposta entra no campo e o desenho se refaz na hora: o Ctrl+Z devolve o que você tinha escrito. O LightNote confere a resposta com o próprio renderizador e, quando ela não desenha, pede uma correção dizendo ao modelo a linha e o comando recusados — insistindo, ele escreve a resposta assim mesmo e deixa o motivo na barra, para você consertar as duas linhas à mão. O botão só aparece em diagrama, fórmula e estrutura química.
Apontar para uma seção, e etiquetar pelas propriedades.
[[Nota#Seção]] abre a nota naquela seção — a âncora nomeia o
texto do cabeçalho — e ![[Nota#Seção]] transclui só ela (até o
próximo cabeçalho de nível igual ou menor, com os subtítulos junto). Âncora que
não casa nenhum cabeçalho avisa na barra de status, e a transclusão fica como
está: trazer a nota inteira ali seria entregar outra coisa em silêncio. E as
tags: do frontmatter agora contam como etiquetas da nota, nas duas
grafias (tags: [a, b] e a lista em linhas) — elas entram nas Bases,
na busca por etiqueta e no que o assistente enxerga, junto com as
#etiquetas do corpo. Sem o nome da nota, a âncora aponta para a própria: [[#Conclusão]] salta para aquela seção sem abrir aba nenhuma, e ![[#Conclusão]] traz a seção para onde você está. E a âncora aninha: [[Tese#Método#Amostra]] é a Amostra que está dentro de Método, e não a primeira com esse nome na nota. A terceira forma aponta para um bloco: uma linha que termina em ^id (ou um ^id sozinho logo abaixo do bloco) é o alvo de [[Nota#^id]]. O LightNote não cria esses identificadores — ele leva você até o que você escreveu. E a âncora de um alvo que não é nota é o endereço dentro dele: [[artigo.pdf#page=3]] abre o PDF naquela página.
O painel Etiquetas. A faixa da barra lateral tem uma seção Etiquetas: a árvore de todas as #etiquetas das suas notas, aninhada por / (#projeto/alfa e #projeto/beta viram ramos de projeto), com o número de notas ao lado — contadas por nota, não por ocorrência. Selecionar uma etiqueta lista embaixo as notas que a têm (o pai mostra também as dos ramos); duplo clique abre a nota. O painel lê o índice, então enxerga as duas fontes: as #etiquetas do corpo e as tags: do frontmatter. Ctrl+clique numa etiqueta dentro de uma nota abre este painel já com ela selecionada — antes ele abria a busca textual por #etiqueta, que não acha a nota que declara a etiqueta no frontmatter. Para a ocorrência literal no texto, continue usando a busca global.
Wikilinks: digite [[ para autocompletar com as notas do
espaço de trabalho; o link fecha sozinho com ]]. Segure Ctrl e
clique num [[nota]] para abrir a nota correspondente. O painel de
Links mostra as conexões entre as notas. A figura embutida do Obsidian também aparece: ![[foto.png]] é desenhada como imagem, e ![[foto.png|300]] respeita a largura. O arquivo continua com o que você escreveu — o caminho da imagem nunca é gravado no lugar do token. E o anexo que não é imagem vira um cartão: ![[artigo.pdf#page=3]], ![[aula.ogg]] e ![[mapa.canvas]] aparecem como uma caixa com o nome do arquivo, clicável — e o PDF abre na página que você apontou. O .canvas e o .base do Obsidian trazem uma linha a mais, dizendo que o arquivo continua na pasta e que o LightNote não o desenha. Um alvo que não existe continua como você escreveu: um cartão ali prometeria um arquivo que se perdeu. No meio de uma frase, a figura aparece do mesmo jeito e o anexo vira só o nome do arquivo, que o Ctrl+clique abre: um cartão ali partiria o parágrafo. A mesma nota por outro nome: escreva aliases: [Amostragem, Método de amostra] nas propriedades da nota e [[Amostragem]] passa a abri-la — o apelido entra também no autocompletar de [[. Um arquivo que se chame assim sempre vence o apelido. Os apelidos saem do índice da pasta, que o app reconstrói em segundo plano ao abrir o espaço de trabalho: um aliases: recém-escrito resolve na varredura seguinte, e não no mesmo segundo.
Caixas, notas de rodapé e marcação rica
Leitura rica: blocos de código entre cercas aparecem numa caixa com
rótulo da linguagem e link copiar; ~~tachado~~ e
==realce== são renderizados; e callouts do estilo GitHub
(> [!NOTE], [!TIP], [!WARNING],
[!IMPORTANT], [!CAUTION]) viram caixas coloridas. Tags
#hashtag são realçadas e, com Ctrl+clique, abrem a busca por
aquela tag; o bloco de frontmatter YAML no topo (---) é
realçado. Na barra da aba há um botão para exportar a nota em
PDF/HTML, uma coluna de leitura centrada alternável e os modos de exibição da nota. O modo Zen (F11) e a rolagem máquina de escrever
ajudam a escrever sem distrações.
Notas de rodapé saltam nos dois sentidos. A referência [^1] aparece como um número sobrescrito, e Ctrl+clique nela leva até a definição; na definição, o marcador [^1]: continua visível — é o alvo do salto, e você precisa vê-lo para saber que nota está editando — e Ctrl+clique nele volta para a referência. Ao contrário de muitos visualizadores de Markdown, o editor não renumera as notas nem move as definições para o fim: a ordem do arquivo é sua. A grafia inline do Obsidian e do Pandoc — ^[o texto da nota] — também desenha: você escreve o texto no ponto em que chama a nota, e no modo de leitura ele aparece numerado no fim. O arquivo continua com o que você escreveu, e na exportação ela vira nota de rodapé de verdade no Word, no LaTeX, no Typst e no EPUB.
A admonição do MkDocs (!!! note com o corpo indentado por 4 espaços) é preservada como está escrita na edição formatada: a indentação é o que faz o corpo pertencer à admonição, então o texto dela não ganha formatação rica — em troca, abrir a nota e salvar não desfaz a construção.
As caixas com fechamento também aparecem como caixa. :::tip … ::: (Docusaurus) e <details> … </details> ganham barra e título coloridos, nas duas grafias — a compacta e a com linhas em branco. O marcador de abertura dá lugar ao rótulo do tipo, ao título que você escreveu ou ao texto do <summary>; o de fechamento sai da tela e continua no arquivo, porque a marcação que o app escreve não deve ficar literal na página. O que resta é a última linha da caixa: é ela que delimita a caixa, é onde se põe o cursor para continuar escrevendo dentro dela, e ela não se apaga — sem ela, o conteúdo de baixo seria engolido. Para desfazer a caixa mantendo o texto, use Remover a caixa no menu de contexto. O : da lista de definição continua esmaecido. O <summary> precisa estar na mesma linha do <details> para virar o título: numa linha própria ele aparece como está escrito, e a caixa fica com o rótulo padrão.
HTML inline e bloco de código. <kbd>, <mark>, <sub> e <sup> aparecem renderizados também na edição formatada — as etiquetas somem e fica só o conteúdo, como no modo de leitura. O bloco de código cercado ganha uma caixa, com o nome da linguagem e um copiar no canto — o mesmo link na edição formatada e no modo de leitura, que é onde mais se copia código. Ele leva só o miolo da cerca (sem os marcadores) e diz copiado por um instante; os dois rótulos só aparecem quando cabem sem escrever por cima do código.
Mais na leitura: o bloco de frontmatter YAML do topo não aparece na nota renderizada — ele é editado no painel Propriedades. As tags #hashtag viram etiquetas clicáveis que abrem a busca por aquela tag (o mesmo que Ctrl+clique no editor). Comentários no estilo do Obsidian (%%isto não aparece%%, ou um bloco entre linhas com %%) ficam só no arquivo. Além dos callouts do GitHub, as caixas dos dialetos do Docusaurus (:::tip Título … :::) e do MkDocs (!!! note "Título" com o corpo indentado, e ??? note) também são renderizadas — útil para ler repositórios de documentação.
Novidades da leitura: além de ~~tachado~~ e
==realce==, funcionam sobrescrito ^x^, subscrito
~x~, emoji por atalho em inglês (:rocket:),
autolink de URLs, notas de rodapé [^1], blocos
recolhíveis <details>, listas de definição, tarefas
- [ ]/- [x] (⬜/✅) e o token [TOC] (sumário clicável na leitura); também imagens locais e HTML inline
(<kbd>, <mark>…). O painel Sumário
(barra da aba) navega pelos cabeçalhos acompanhando o cursor, e o botão
Inserir (ou o menu de contexto → Formatar/Inserir) aplica
qualquer marcação.
Cabeçalhos, pasta e texto
Cabeçalhos fixos (sticky scroll): ao rolar, os cabeçalhos que contêm a linha do topo ficam presos numa faixa no alto do editor; clicar num deles salta para a seção (ligue/desligue em Configurações → Markdown). O menu de contexto de uma pasta na árvore cria/abre a Nota da pasta (index.md com frontmatter), útil como índice.
Nota de pasta e lista de arquivos: dar duplo-clique numa pasta abre a sua index.md, se existir. Dentro de qualquer nota, o token [files] (ou [arquivos]) sozinho numa linha é trocado na edição formatada e na leitura pela lista dos arquivos da pasta da nota, como links clicáveis — gerada na hora, sem gravar nada no arquivo (igual ao [TOC]).
Operações de texto e de linha. As mesmas operações do editor de código
valem na nota — pelo submenu Texto do botão Formatar da barra da aba, pelo menu de contexto e
pelos submenus Linhas e Limpeza do menu Editar: mover
a linha (ou as linhas selecionadas) para cima/baixo (Ctrl+Shift+↑/↓),
duplicar (Ctrl+Shift+D), deletar (Ctrl+Shift+L),
ordenar (A→Z / Z→A), inverter a ordem, juntar linhas,
remover linhas duplicadas ou vazias, aparar espaços e caixa
(MAIÚSCULAS/minúsculas/inverter). Numerar linhas… abre um diálogo com
início, passo, zeros à esquerda e separador — com o
padrão (". ") o resultado é uma lista numerada Markdown válida. Com
uma seleção, a operação atua só nela (expandida a linhas inteiras); sem seleção,
no documento todo — sempre num único passo de desfazer. A barra da aba também traz o botão IA: Perguntar / Editar com IA — o mesmo Ctrl+K / Ctrl+I do código — e Perguntar às notas, o chat que responde usando as notas do espaço de trabalho.
Cabeçalhos dobráveis: clique na setinha à esquerda de um cabeçalho (ou use Ctrl+Shift+[ / Ctrl+Shift+]) para recolher e expandir a seção; em Exibir há Recolher/Expandir todos os cabeçalhos. A dobra é só visual — nunca é escrita no arquivo — e o LightNote a lembra entre sessões. Saltar do Sumário ou da busca para dentro de uma seção recolhida a expande.
Fichário: a pasta como obra
O que é: uma pasta cujas notas são capítulos, numa ordem que você declara. Serve para um livro, um TCC, uma apostila, um manual, um runbook ou um diário de bordo — o mecanismo é o mesmo. No menu de contexto da pasta, Transformar em Fichário abre uma tela com as notas na ordem atual: arraste para reordenar e confirme. A ordem é gravada na chave chapters: (também capitulos:) do index.md da pasta — um arquivo de texto seu, que viaja com as notas e continua valendo em qualquer máquina. Uma subpasta também pode ser nomeada na ordem: os capítulos dela entram na posição em que ela aparece, e ela declara a própria ordem no index.md dela — é assim que um livro ganha partes. A capa de uma subpasta não vira página do documento; ela serve para declarar a ordem daquele nível e para navegar.
Navegar: com a ordem declarada, a barra da nota mostra Capítulo 3 de 12, com uma seta de cada lado (Alt+PgUp e Alt+PgDn); o botão do meio lista todos os capítulos. O painel Sumário passa a mostrar dois níveis: os capítulos da obra e, sob o que está aberto, os cabeçalhos dele. Nas pontas da obra a seta fica cinza. Numa pasta sem ordem declarada nada disso aparece, e tudo continua como sempre foi.
O modelo das notas: o Fichário pode declarar de que modelo nascem as notas criadas dentro dele (a chave template:, também modelo:). Há cinco modelos prontos — capítulo de livro, capítulo de TCC, aula, passo de procedimento e entrada de diário —, e escolher um deles o grava como arquivo na pasta Modelos, onde ele fica editável. Uma nota criada dentro do Fichário entra na ordem sozinha; um arquivo largado ali de fora fica em Fora da ordem até você adotá-lo. Renomear um capítulo acerta a chave e preserva a posição dele. Para partir de uma obra pronta, Estruturar a partir de um modelo… (no menu de contexto da pasta) grava as duas chaves de uma vez — a ordem e o modelo dos capítulos —, preservando a capa que você já tiver escrito; e enquanto houver capítulo declarado que ainda não existe, o Sumário traz um botão que cria todos de uma vez, cada um já a partir do modelo da pasta. Nada é sobrescrito: o capítulo que já está lá fica como está.
Compilar num documento só: ao exportar a pasta, a caixa Juntar os capítulos num documento só produz um arquivo com os capítulos na ordem declarada. Como o texto é juntado antes de ser renderizado, as notas de rodapé, as figuras, as tabelas e as citações passam a ser numeradas no documento inteiro — e uma referência cruzada de um capítulo para a figura de outro passa a funcionar. O que não está na ordem declarada fica de fora, e o relatório diz o quê.
Propriedades, tema e zoom
Propriedades da nota: a mini-barra Propriedades mostra o frontmatter YAML como campos tipados (texto, número, data, caixa de seleção), com a caixa Tipo no topo. Definir o tipo e as propriedades é o que permite reunir as notas numa Base.
Tema da nota: a caixa Tema do painel
Propriedades define a aparência desta nota — as cores e a fonte do texto —
sem mexer no tema do restante do aplicativo. A escolha vai para o frontmatter
(a chave theme), então ela viaja com o arquivo: a nota abre
igual em qualquer máquina. O botão ao lado grava as cores dentro da própria
nota, para que ela fique igual até para quem não tem esse tema. Sem a chave, a
nota segue o tema do espaço de trabalho. Se preferir que notas vindas de fora
não mudem o seu visual, desligue Respeitar o tema declarado na nota em
Configurações → Markdown.
Tema que o LightNote ainda não conhece: a lista de temas é um único arquivo baixado do site, então uma nota que cita um tema publicado depois da sua última atualização simplesmente não o encontra. Nesse caso a nota abre com o tema do espaço de trabalho e o painel Propriedades avisa, com um atalho para ver os temas disponíveis. O LightNote procura a lista atualizada sozinho — uma vez por sessão, em segundo plano e sem travar a nota. Se preferir que ele nunca busque nada, desligue Buscar catálogo de ferramentas online em Configurações → Recursos.
Ctrl++ e Ctrl+− (ou Ctrl+roda do mouse) mudam o tamanho da nota, e Ctrl+0 volta a 100% — útil para ler uma nota longa sem mexer na fonte de todas. O editor e a leitura escalam juntos: no modo dividido os dois lados continuam do mesmo tamanho. Um <svg> escrito direto na nota também é desenhado na leitura: dá para colar um gráfico gerado por IA sem virar arquivo à parte.
Quantas palavras, e onde. A barra de status conta as palavras da nota e estima o tempo de leitura; ao lado, seção N é a contagem da seção em que o cursor está — a mesma que o Sumário destaca, do cabeçalho até o próximo de nível igual ou maior. Declarando uma meta diária em Configurações → Notas e escrita, aparece também hoje N/M: o que cresceu nas notas que você abriu hoje. Apagar não desconta — revisar o próprio texto não pode virar castigo —, nota que você não abriu não entra, e à meia-noite a conta zera.
Diagramas (Mermaid)
Como funciona
Diagramas Mermaid. Uma cerca ```mermaid com um fluxograma (flowchart/graph, nas quatro direções), um diagrama de sequência (sequenceDiagram) ou um gráfico de pizza (pie) é desenhada como diagrama no modo de leitura, no arquivo exportado e nas respostas do Perguntar às notas — que é de onde os diagramas mais vêm. O desenho segue o tema da nota (tinta, papel e acento), então ele combina com o texto em volta nos dois temas. Na edição formatada — o modo padrão — o diagrama também aparece desenhado, com a barra do bloco por cima (copiar, editar, apagar). O editar abre uma barra embaixo com a fonte: a nota fica travada enquanto ela está aberta e o desenho se refaz enquanto você digita; fechar aplica (não há salvar nem cancelar), Ctrl+Z desfaz a alteração inteira num passo e esvaziar o campo remove o bloco. No modo dividido, clicar no diagrama leva o cursor até a cerca no texto cru. No editor de texto tudo continua sendo texto: use Ctrl+E para ver o diagrama. Dentro de um item de lista, o diagrama — e também a estrutura SMILES, a fórmula em bloco, o [files] e o ![[nota]] — fica como texto na edição formatada e aparece desenhado no modo de leitura: ali o marcador do item não teria como voltar ao arquivo.
Subgrafos (subgraph … end, inclusive aninhados) viram caixas com título, e as arestas atravessam a borda a partir do nó de verdade; o id de um subgrafo também pode ser ponta de aresta (sub --> X). As cores declaradas pelo autor valem: classDef, class, :::classe e style (preenchimento, borda, espessura, tracejado e cor do texto). Para começar, use Inserir → Diagrama (Mermaid) na barra da nota: ele entra com um esqueleto pronto do tipo escolhido. O menu traz os seis mais usados direto; Todos os diagramas… abre um seletor com os 33, agrupados pelo que servem, com busca (pelo nome ou pelo que o diagrama mostra) e a prévia desenhada de cada um — são 33 desenhos, e ver o desenho decide mais rápido que ler o nome. O frontmatter do diagrama — o bloco entre --- antes da primeira linha — também é lido: o title vira o título desenhado acima do desenho (um title no corpo vence) e as chaves de config que o LightNote conhece chegam ao diagrama (gitGraph.mainBranchName, gantt.displayMode, e as do packet: bitsPerRow, bitOrder: descending — que espelha a fileira — e showBits: false); o que ele não conhece é ignorado, sem recusar a nota.
Sequência, entidades, classes e estados
No diagrama de sequência valem participant/actor (com as), as formas de seta (->>, -->>, -x, -)), a ativação (+/- e activate/deactivate), as notas (Note left of/right of/over), os blocos loop/alt/else/opt/par e o autonumber. O que ainda não é desenhado — outros tipos de diagrama — continua aparecendo como bloco de código, colorido como hoje; direction dentro de um subgrafo e linkStyle são ignorados. A sintaxe de nó do Mermaid v11 (A@{ shape: rounded, label: "texto" }) é lida, e o catálogo de formas do v11 é desenhado: doc, lin-doc, docs, tag-rect, win-pane, hourglass, bolt, flag, das… — cada uma é o símbolo que o nome diz, e nenhuma vira retângulo, porque um retângulo no lugar de um documento seria outro diagrama. Um nome que o Mermaid não tem faz o diagrama voltar a ser bloco de código, com a linha apontada. O id de aresta (A e1@--> B) e o e1@{ animate: true } são aceitos e ignorados: a animação não é desenhada. O participante tipado (participant DB@{ "type": "database" }) desenha o símbolo da UML acima da raia — boundary, control, entity, database, queue e collections —, e o "alias" declarado ali vale como o as.
O erDiagram também é desenhado: cada entidade vira uma caixa com os atributos e a cardinalidade aparece nas duas pontas da relação (||--o{, }o--||, |o, |{); -- é relação identificante e .. não-identificante. O apelido p[Pessoa] nomeia a caixa sem trocar o id que as relações citam. O subgraph … end também vale aqui: as entidades de dentro ganham uma caixa com título, os subgrafos aninham e o id da caixa pode ser ponta de relação (CLIENTE ||--o{ Vendas : faz), ligando à fronteira em vez de a uma entidade com aquele nome.
O classDiagram idem: caixa de três compartimentos (nome, atributos e métodos, separados pelo parêntese do método), <<interface>> em linha própria, namespace como caixa e as seis relações (<|--, *--, o--, -->, ..>, ..|>). Atenção à direção: em A <|-- B o triângulo fica em A — quem herda é B. A cardinalidade entre aspas aparece nas duas pontas ("1" --> "*"). Os genéricos Lista~T~ aparecem como Lista<T>, nos membros também. A interface pirulito (bar ()-- foo) desenha o círculo no alto da caixa do lado em que o () está — e só nele —, com a relação encostando no círculo; os namespace também aninham, e depois do } interno uma classe volta ao namespace de fora.
O stateDiagram-v2 desenha a máquina de estados: [*] é o início (disco cheio) e o fim (disco com anel), state X { … } vira caixa, <<fork>>/<<join>> viram barra e <<choice>> um losango. O -- dentro de um estado composto separa as regiões concorrentes, marcadas por um traço tracejado.
Linha do tempo, jornada, quadrantes e Gantt
A timeline também é desenhada: cada período vira uma coluna da linha do tempo, com os eventos empilhados abaixo dele, e section agrupa as eras em faixas coloridas. Valem as duas grafias de vários eventos — dois-pontos na mesma linha (2004 : Facebook : Google) e continuação na linha seguinte (: outro evento) —, e aqui qualquer linha que não seja title, section ou direction é texto livre. O direction TD (linha do tempo na vertical) ainda não é desenhado e mantém o bloco de código.
O journey (jornada do usuário) também é desenhado: cada tarefa vira uma caixa no eixo da jornada, e a nota de 1 a 5 desloca o rosto para cima ou para baixo — é o perfil formado por eles que o diagrama existe para mostrar. O section agrupa as fases e os atores viram marcadores coloridos na tarefa, com a legenda à esquerda. Aqui a gramática é estrita (Tarefa: nota: Ator, Ator), ao contrário da do timeline: sem o par nome/nota não há onde pôr o rosto, então a linha malformada — ou a nota fora de 1 a 5 — recusa o diagrama, apontando a linha.
E o quadrantChart desenha o plano dos quatro quadrantes: x-axis e y-axis nomeiam as pontas de cada eixo (o lado direito do --> é opcional), quadrant-1 a quadrant-4 rotulam as regiões e cada ponto entra como Nome: [x, y], com x e y de 0 a 1. Atenção à numeração: ela é a do plano cartesiano, e não a da leitura — quadrant-1 é o de cima à direita, e dali se anda no sentido anti-horário; o y = 1 fica no topo. Cor e raio de um ponto podem vir direto (P: [0.5, 0.5] radius: 10, color: #109060) ou por classe (P:::classe mais classDef), e o estilo direto vence a classe. Coordenada fora de 0 a 1 recusa o diagrama apontando a linha, em vez de ser aparada — ela é a posição no plano, e aparar poria o ponto num quadrante que você não escreveu.
O gantt desenha o cronograma: dateFormat diz o formato das datas que você escreve (padrão YYYY-MM-DD) e axisFormat o dos rótulos do eixo (%d/%m); section agrupa as tarefas em faixas. Cada tarefa é Texto : marcadores, id, início, fim — os marcadores done, active, crit e milestone vêm primeiro e podem se combinar, o início é uma data ou after outroId, e o fim é uma data, uma duração (5d, 2w, 3h, 45m) ou until outroId. Com um campo só, a tarefa começa onde a anterior terminou. O after pode citar uma tarefa declarada mais adiante na nota; já um id que não existe em lugar nenhum — ou uma dependência circular — recusa o diagrama apontando a linha, em vez de jogar a barra no dia de hoje. O excludes weekends (ou excludes monday, ou uma data) empurra o fim de cada tarefa pelos dias excluídos, e por isso muda o comprimento das barras; includes 2026-03-07 vence o fim de semana, para dizer que naquele sábado se trabalha. O marco (milestone) aparece como losango, e todayMarker off tira a linha do dia de hoje. O displayMode compact empilha várias tarefas na mesma linha, e aqui uma tarefa só divide a linha quando nada do que ela ocupa encosta no que já está lá — o rótulo inclusive. O marcador vert (Abertura : vert, v1, 20:15, 0m) desenha o instante como uma linha vertical que atravessa o gráfico, sem ocupar linha nenhuma, e o rótulo dele sai sob o eixo. O dateFormat X (ou x) lê a data como tempo Unix em segundos (ou milissegundos), e no eixo o %s/%Q a escreve de volta. Um tickInterval que o Mermaid não conhece (1decade) é ignorado em silêncio, como lá, e o eixo volta ao automático.
Mapa mental, requisitos, Git e C4
No mindmap a hierarquia vem da indentação: o nível de um item é a coluna em que o texto dele começa, sem chaves nem setas (o tabulador vale até a próxima parada de 4, como num editor). O primeiro item é a raiz — um segundo item na coluna dela seria uma segunda raiz, e aí o diagrama é recusado com a linha apontada. Cada item pode declarar a forma: [quadrado], (arredondado), ((círculo)), {{hexágono}}, ))explosão(( e )nuvem(; sem delimitador sai arredondado. O ::icon(...) e o :::classe são reconhecidos e ignorados (não empacotamos a fonte de ícones, e a classe se refere a um CSS externo que não existe aqui). O desenho é de dois lados — a raiz no centro, os ramos repartidos à esquerda e à direita —, cada ramo com uma cor própria que os descendentes herdam, e a espessura do galho cai com a profundidade. Ele é uma árvore, e não uma simulação de forças como no mermaid: num mapa mental a hierarquia é o conteúdo, então ela precisa se ler na posição — e, como o desenho é refeito ao trocar o tema, um layout que convergisse de posições aleatórias reorganizaria o mapa inteiro a cada troca.
O treeView (treeView-beta) desenha a árvore de pastas de um projeto, e aceita as duas grafias: o recuo (o que se digita) e os próprios caracteres do comando tree (├──, │, └──), que é o que deixa colar a saída do terminal direto na nota — ali o recuo não serve, porque │ e espaço ocupam a mesma coluna e só o primeiro diz que o ramo continua. A barra final marca a pasta (src/), um nome com espaço vai entre aspas, o ## texto pendura um comentário no fim da linha e o :::highlight destaca o nome. O icon(...) é reconhecido e ignorado, como o ::icon() do mapa mental: os pacotes de ícones vêm do Iconify por JavaScript, e nem o próprio Mermaid os desenha por padrão.
O ishikawa (ishikawa-beta) desenha a espinha de peixe de uma análise de causa: o primeiro item é o EFEITO (a cabeça, à direita), o nivel seguinte são as categorias (os ossos) e os dois de dentro são as causas e as sub-causas. São três degraus, e um quarto nível recusa o diagrama apontando a linha — ele não existe no Mermaid. Os ossos alternam acima e abaixo da espinha, que é o que deixa duas categorias vizinhas caberem sem o texto de uma cair sobre o da outra, e a ordem em que você escreve as causas é a de cima para baixo nos dois lados.
O venn (venn-beta) desenha conjuntos que se cruzam: set A["Desejável"] declara um, union A,B["Dá para construir"] nomeia a região comum (a união se chama pelos conjuntos que ela cruza) e text A1["React"], logo abaixo de um deles, põe um item dentro daquela região. São até três conjuntos, e o quarto recusa o diagrama apontando a linha: com quatro círculos não existe arranjo que produza todas as regiões, e desenhar "quase certo" esconderia uma que você declarou. O :número depois do rótulo (set A["Alpha"]:20) escala o círculo — a área vai com o número —, e não as interseções: um Venn com interseção proporcional é outro diagrama (Euler), que exige otimização numérica. O style A fill:#ff6b6b pinta um conjunto, e com vírgula (style A,B color:#333) vale para a união daqueles conjuntos.
O cynefin (cynefin-beta) desenha o quadro de Snowden para classificar decisões: os cinco domínios têm nome fixo — complex, complicated, chaotic, clear e confusion — e posição fixa (os quatro quadrantes, com a confusão no meio); o que você escolhe é o que vai dentro de cada um. Cada item vai entre aspas, numa linha, e complex --> complicated : "Padrão identificado" desenha a transição entre dois domínios. Um nome fora dos cinco recusa o diagrama apontando a linha e dizendo quais existem. A fronteira entre clear e chaotic sai ondulada: no modelo ela é um precipício, e a forma diz isso — aqui a onda é sempre a mesma, para a nota não mudar de desenho a cada abertura.
O swimlane (swimlane-beta) desenha um processo em faixas, uma por responsável: a sintaxe é a do fluxograma (as mesmas formas, setas, rótulos e classDef), e cada subgraph deixa de ser uma caixa para virar uma raia. Todo nó precisa estar dentro de uma — um nó solto recusa o diagrama, porque não haveria como dizer de quem é a tarefa — e raia dentro de raia também recusa. Com LR as raias são linhas e o fluxo anda para a direita; com TB elas são colunas e o fluxo desce. A posição ao longo do fluxo sai do caminho mais longo até cada tarefa, e a faixa é a do dono: uma tarefa nunca sai da raia dela, mesmo quando isso deixaria o desenho mais compacto.
O agentflow (agentflow-beta) desenha um fluxo com agentes de IA, e é outro vocabulário para o fluxograma: as setas são as mesmas, o flow id["Nome"] … end faz o papel do subgraph (e aninha), o global … end guarda o que todos os agentes consultam e o connector id["Nome"] declara um sistema de fora. O que muda de verdade é a forma, que diz o papel de cada passo: @{ shape: input } (entrada), task (tarefa), tool (chamada de ferramenta), decision (decisão), refdoc (documento de referência) e action (ação final). Ligue o documento com -.-, sem seta: ele é consultado, não é um passo do fluxo. As chaves que descrevem o agente por escrito (instruction, params, returns, connectorRef, protocol, endpoint) são lidas e ignoradas no desenho. Estes nomes de forma só valem aqui — num flowchart eles recusam, porque lá o Mermaid também não os tem.
O usecase (usecase-beta) desenha o diagrama de casos de uso da UML: quem se declara com actor vira o boneco, e todo o resto é um caso de uso, desenhado como elipse — é essa a distinção que o tipo existe para mostrar. O caso de uso pode vir como Id("Rótulo"), Id[Rótulo], só Id ou só o texto entre aspas; o systemBoundary "Nome" … end é a fronteira do sistema e o note for X "texto" pendura uma nota. As relações são as da UML: --> associa, --|> é generalização (o triângulo vazado fica em quem é geral) e o A ..> : include B — com o alvo depois do dois-pontos — desenha o « include » pontilhado, valendo também para extend. O que descreve o ator sem mudar o desenho (type, business, icon) é lido e ignorado, e o <<Estereótipo>> entra no rótulo. O nó json ainda não é desenhado e mantém o bloco de código: ele é um bloco de várias linhas com a árvore do dado dentro, e ali o JSON continua legível como texto.
O wardley (wardley-beta) desenha um mapa de Wardley: um plano em que o eixo vertical é a visibilidade para o usuário (o topo é quem ele vê) e o horizontal é a evolução, de Genesis a Commodity. Atenção à ordem do par: component Chá [0.63, 0.81] é [visibilidade, evolução] — o primeiro número é o eixo vertical, e lido ao contrário o mapa continua desenhando e passa a dizer outra estratégia. O anchor é o usuário no alto, A -> B liga a cadeia (o nome pode ter espaço, com ou sem aspas), A +> B é fluxo (mais grosso; +<> nos dois sentidos e +'texto'> com rótulo) e evolve Chaleira 0.62 desenha a seta tracejada até onde a peça deve chegar. Valem ainda evolution (troca os rótulos do eixo), size, (build)/(buy)/(outsource)/(market), (inertia) (a barra de resistência), label [dx, dy], pipeline X { … }, note, accelerator/deaccelerator e as annotation numeradas com a legenda do annotations.
O eventmodeling desenha um event modeling: uma linha do tempo em três raias — a tela em cima, o comando (e o modelo de leitura) no meio, o evento embaixo. Cada linha é tf 02 cmd AdicionarItem: o número é o instante (a coluna) e a palavra do meio é o tipo, que escolhe a raia — ui, cmd/command, pcr/processor, rmo/readmodel, view e evt/event (as formas longas valem igual). A raia não se declara: ela é o método. O rf (resetframe) abre uma fatia nova, com um divisor tracejado — é onde a história recomeça. O esquema do quadro vai entre chaves ({ descricao: string }) ou por referência ([[Dados]]) a um bloco data Dados { … }, que pode vir depois; e ->> 02 ->> 03 liga o quadro aos instantes que o alimentam, citando o número.
O railroad (railroad-ebnf-beta, -abnf-beta, -peg-beta ou railroad-beta) desenha uma gramática como trilhos de trem: cada regra vira um caminho que se segue com o dedo, e o que dá para escrever é o que dá para percorrer. A regra é nome = expressão ; (ou nome <- … ; no PEG) e pode ocupar várias linhas — ela se fecha no ;. O texto entre aspas é terminal (desenhado como cápsula) e o nome solto é outra regra (retângulo); | (ou /) é escolha, ? opcional, + um ou mais, * zero ou mais, e ( ), [ ] e { } agrupam, opcionam e repetem. O ABNF põe a repetição antes (1*( ALPHA / "-" ), *DIGIT), o PEG aceita os predicados !x e &x — que vão no rótulo, porque não consomem entrada — e o railroad-beta aceita a grafia de funções (sequence(choice(terminal("+"), …))). Os quatro caem no mesmo desenho: o desvio por cima é o opcional e o laço por baixo, com a seta apontando para trás, é a repetição.
O requirementDiagram desenha requisitos e elementos como caixas de compartimentos: o tipo declarado (requirement, functionalRequirement, performanceRequirement, interfaceRequirement, physicalRequirement, designConstraint) aparece entre guilhemes acima do nome, e os campos id, text, risk e verifymethod viram linhas — no element, type e docref. As relações (satisfies, traces, derives, verifies, refines, copies, contains) escrevem-se a - satisfies -> b ou na forma espelhada b <- satisfies - a, e nesta o primeiro nome é o destino. Só o contains é linha cheia, com o símbolo do lado de quem contém; as demais são tracejadas com a seta no destino. Um nome com espaço vai entre aspas.
O gitGraph desenha o histórico de um repositório: cada commit avança no tempo, branch nome abre uma faixa nova e passa a trabalhar nela (como git switch -c), checkout volta para outra e merge junta as duas. Os atributos vão com dois-pontos: commit id: "texto" tag: "v1" type: HIGHLIGHT (também REVERSE), e branch nome order: 2 muda a ordem das faixas; cherry-pick id: "…" exige o id de um commit que exista. A forma diz o tipo — disco cheio no commit comum, quadrado no destacado, círculo com X no revertido, anel duplo no merge e círculo cortado no cherry-pick —, porque num tema em que dois tons da paleta ficam parecidos só a forma os separa. LR: (padrão), TB: e BT: giram o eixo do tempo. Um checkout/merge de branch que não existe recusa o diagrama apontando a linha, em vez de criar uma faixa que você não pediu.
A família C4 (C4Context, C4Container, C4Component, C4Dynamic e C4Deployment) também é desenhada, e nela tudo é macro — não há seta nenhuma na sintaxe. Cada elemento vira uma caixa com o tipo entre guilhemes, o nome em negrito e a descrição embaixo: Person(alias, "Nome", "Descrição"), System, Container, Component e as variantes Db, Queue e _Ext. No Container e no Component o terceiro argumento é a TECNOLOGIA (Container(app, "App", "C++/Qt", "o que ele faz")), e nos demais ele já é a descrição. As fronteiras (Boundary, Enterprise_Boundary, System_Boundary, Container_Boundary e o Node do C4Deployment) abrem chave e viram caixa com título, aninhadas inclusive. A ligação é Rel(a, b, "rótulo", "tecnologia"); BiRel põe seta nas duas pontas e Rel_Back aponta para trás. O C4Dynamic numera as relações na ordem em que aparecem. As dicas de posição (Rel_U, Rel_D, Rel_L, Rel_R) e os Update…Style são aceitos e ignorados — quem escolhe o arranjo é o mesmo layout dos outros diagramas, e a cor sai do tema da nota. Uma relação que cita um alias não declarado recusa o diagrama apontando a linha, em vez de inventar uma caixa que você não escreveu.
Quadro, gráficos e pacote
No kanban a indentação é a sintaxe, com dois níveis: o de fora é a raia e o de dentro é o cartão (id[Rótulo], ou só o texto). O @{ ticket: LN-9, assigned: 'ana', priority: 'High' } depois do cartão não entra no texto dele: o ticket e o responsável vão para um rodapé próprio e a prioridade (Very High, High, Low, Very Low) vira a cor da tarja na borda esquerda, numa escala do quente ao frio. As raias terminam todas na mesma linha, e uma raia sem cartão continua aparecendo — é ela que mostra a coluna vazia. Este é um quadro desenhado, para explicar um fluxo dentro de uma nota; o quadro em que se trabalha, com cartões que se arrastam, é o painel Tarefas do próprio app.
O xychart (xychart-beta) desenha barras e linhas sobre dois eixos: x-axis "Título" [jan, fev, mar] dá as categorias — um nome com espaço ou vírgula vai entre aspas —, y-axis "Título" 0 --> 100 fixa a escala e cada bar [10, 40, 90] ou line [20, 30, 80] acrescenta uma série, com um valor por categoria, na ordem em que elas foram declaradas. Uma série com valores a mais ou a menos recusa o diagrama apontando a linha: as barras deslizariam para outras categorias e o gráfico passaria a afirmar outra coisa. Sem y-axis, a escala sai dos dados e começa no zero quando eles não descem abaixo dele — começar no menor valor exagera a diferença entre as barras, e ninguém escolheu isso; com a faixa declarada, um valor fora dela recusa em vez de estourar o plano. O x-axis também aceita uma faixa contínua (0 --> 100), e sem ele as categorias são os índices. Duas séries de barras aparecem lado a lado, e não sobrepostas como no mermaid — sobrepostas, a de trás some. O xychart-beta horizontal ainda não é desenhado e mantém o bloco de código, porque desenhá-lo na vertical entregaria o gráfico transposto. Uma série pode ter nome (bar "Abertos" [10, 40], line "Fechados" [20, 30]): os nomes viram uma legenda acima do plano, com a mesma forma da série — barra cheia, linha com ponto —, porque só a cor não as separa. E numa série de linha o valor pode vir com rótulo ([540 "PaLM", 65]), desenhado acima do ponto; nas barras o rótulo é ignorado, como no Mermaid.
O radar (radar-beta) desenha o perfil de uma ou mais curvas sobre eixos que saem do centro: axis a["Rótulo"], b, c declara os eixos — e a linha pode se repetir —, e curve x["Nome"]{80, 60, 90} dá um valor por eixo, na ordem em que eles foram declarados; a grafia nomeada ({a: 80, c: 90, b: 60}) também vale. Atenção ao sentido: o primeiro eixo aponta para cima e a volta é horária. O max e o min fixam a escala — sem max ela sai do maior valor lido —, e um valor fora dela recusa o diagrama apontando a linha, em vez de ser aparado; ticks muda o número de anéis, graticule circle os deixa redondos e showLegend false tira a legenda. Uma curva com valores a mais ou a menos que os eixos também recusa: ela não seria um desenho incompleto, e sim outro desenho.
O packet (packet-beta) desenha o mapa de bits de um pacote: cada campo é 0-15: "Rótulo", e a faixa é fechada nos dois extremos — 0-15 são dezesseis bits. Um bit só se escreve 4: "Rótulo", e a forma relativa +16: "Rótulo" pega os próximos dezesseis, para você não ter de recontar tudo ao inserir um campo no meio. Os campos precisam ser contíguos: um vão ou uma sobreposição recusa o diagrama apontando a linha, porque qualquer um dos dois deslocaria em silêncio tudo o que vem depois. A fileira tem 32 bits, e um campo que cruza a virada aparece nas duas, com o rótulo na parte mais larga; os números acima da grade marcam onde cada campo começa, mais o último bit de cada fileira.
Grade, áreas, arquitetura, fluxo e ZenUML
O block (block-beta) desenha uma grade de caixas, e nela a posição é a ordem em que você escreveu: columns 3 fixa quantas colunas a grade tem — sem ele, tudo fica numa fileira só —, cada caixa aceita as mesmas formas do fluxograma (a["Rótulo"], b(("círculo")), c{"losango"}), a:2 faz a caixa ocupar duas colunas e space (ou space:2) deixa um buraco. O block:id … end aninha uma grade dentro de outra, com columns próprio, e vira uma caixa em volta. As setas são as do fluxograma (a --> b, com rótulo em a -- "texto" --> b), mas aqui elas só citam blocos já declarados: uma seta para um nome que não existe recusa o diagrama apontando a linha, em vez de inventar uma caixa numa célula que você não escreveu. A folga entre as colunas cresce até caber o rótulo da seta, para ele não encostar na caixa vizinha. A seta de bloco (a<["Ida"]>(right)) é uma caixa em forma de seta: as direções vão entre parênteses (right, left, up, down, ou x para as duas horizontais e y para as duas verticais) e se combinam ((x, down)); uma direção inventada recusa o diagrama apontando a linha, em vez de virar uma seta qualquer.
O treemap (treemap-beta) desenha um mapa de áreas: cada retângulo tem área proporcional ao valor, e a indentação aninha, com profundidade livre. A folha declara o valor ("Nome": 12) e a seção não declara nada — o valor dela é a soma dos filhos, e um total próprio permitiria um retângulo que mente sobre as próprias partes, então isso recusa o diagrama apontando a linha. Um nome com espaço ou dois-pontos vai entre aspas; classDef e :::classe dão cor. O arranjo é o squarified, que mantém os retângulos perto do quadrado — fatiar sempre no mesmo eixo produziria tiras que não se comparam a olho, e comparar áreas é a única coisa que este tipo faz. O rótulo e o valor só aparecem quando cabem inteiros dentro do retângulo: cortados pela borda, não informariam nada.
O architecture (architecture-beta) desenha serviços e as ligações entre eles: service api(server)[API] declara um componente, group nuvem(cloud)[Nuvem] abre uma fronteira, o sufixo in nuvem põe o serviço dentro dela (grupos aninham) e junction j cria um canto para dobrar uma ligação. O lado da ligação é o que decide a posição: a:R -- L:b encosta a direita de a na esquerda de b, ou seja, põe b à direita de a; valem L, R, T e B, e a ponta aparece do lado do < ou do > (-->, <-->, ou -- sem ponta nenhuma). O sufixo {group} numa ponta manda a linha para a fronteira do grupo, em vez da caixa de dentro. Os ícones são os cinco que o Mermaid embute — cloud, database, disk, internet e server —, e qualquer outro nome recusa o diagrama apontando a linha e dizendo quais existem. Os demais (logos:aws-lambda e parecidos) vêm do Iconify e só aparecem onde quem publica a página registra o pacote por JavaScript, o que nem o GitHub faz: aceitá-los aqui entregaria um desenho que não se repete em nenhum outro lugar. O align row a b c (ou align column) põe os membros citados na mesma fileira — ou na mesma coluna —, e um nome que não existe recusa o diagrama apontando a linha, em vez de deixar o arranjo como estava sem dizer por quê.
O sankey (sankey-beta) desenha um diagrama de fluxo, em que a espessura da fita é o valor: o corpo não tem seta nenhuma — é um CSV de três colunas (origem,destino,valor), uma ligação por linha, e é repetir um nome nas duas pontas que encadeia o fluxo. Um rótulo com vírgula vai entre aspas, e uma aspa dentro dele se escreve duplicada ("Custo ""fixo"""); o mesmo par origem/destino repetido soma. A barra de um nó tem a altura do maior entre o que entra e o que sai, para as fitas de saída de um nó que distribui mais do que recebe não vazarem pela borda. As colunas saem do caminho mais longo até cada nó, e quem não tem saída vai para a última coluna. Valor menor ou igual a zero, ligação de um nó para ele mesmo e ciclo recusam o diagrama apontando a linha — num ciclo não existe caminho mais longo, e cortar uma ligação para poder desenhar mostraria um fluxo que você não escreveu. Aqui não há title: o corpo é CSV puro, e aceitá-lo desenharia bem no LightNote e daria erro de sintaxe no Mermaid.
O zenuml é outra sintaxe para o mesmo desenho — um diagrama de sequência —, escrita como código em vez de setas. A chamada síncrona nomeia só o destino (Loja.registrar(item)) e o remetente é o bloco que a envolve: dentro de Loja.registrar() { Estoque.reservar() }, quem chama o Estoque é a Loja. No nível de fora quem chama é o iniciador — @Starter(Ana) o nomeia, e sem ele entra um User com boneco, que só aparece se alguma chamada precisar dele. A mensagem assíncrona é A->B: texto (ponta aberta, ninguém espera) e A->B.metodo() é a chamada síncrona com o remetente dito à mão. O {} aninha, return x volta para quem chamou a chamada que o envolve (um if no meio não muda isso), x = A.m() é a outra grafia da mesma resposta, new A(args) cria e // comentário vira uma nota acima da mensagem seguinte. Os blocos são if/else if/else, while/for/forEach/loop, opt, par e try/catch/finally — e } else { continua o mesmo quadro, com um divisor, em vez de abrir outro. O @Actor desenha o boneco; os outros anotadores (@Database, @Boundary…) viram estereótipo no rótulo («Database» Estoque), porque os ícones deles não são desenhados aqui — o nome continua aparecendo, que é o que importa. Um nome com espaço vai entre aspas. Atenção onde este bloco vai parar: no Mermaid o zenuml é um diagrama externo, que a página precisa registrar por JavaScript — o GitHub não faz isso, então a mesma nota que desenha aqui aparece lá como bloco de código.
E quando o LightNote não consegue ler um diagrama, ele diz por quê e em que linha, logo abaixo do bloco — tipo que ainda não desenhamos não gera aviso, porque ali não há nada errado no que você escreveu.
Matemática e química (LaTeX)
Fórmulas (LaTeX)
Matemática (LaTeX). $E = mc^2$ no meio da frase e $$…$$ em bloco viram fórmula desenhada no modo de leitura, no arquivo exportado e nas respostas do Perguntar às notas. O desenho segue o tema da nota. Na edição formatada a fórmula em bloco também aparece desenhada, com a barra do bloco por cima (editar, copiar, apagar); e a fórmula no meio da frase também, sentada na linha do texto. Para editá-la, dê um duplo clique nela ou use Ctrl+Enter: ela abre na mesma barra. E o Backspace logo depois dela a devolve como $…$, para editar no lugar. No editor de texto tudo continua texto: use Ctrl+E para ver a fórmula. Para começar, use Inserir → Fórmula (LaTeX) na barra da nota. A fórmula sai na fonte matemática do sistema — no Windows, a Cambria Math —, e não na fonte do corpo da nota: é dela que vêm o itálico matemático, os símbolos que uma fonte de texto não tem e os parênteses e raízes que crescem junto com o conteúdo. Sem nenhuma fonte matemática instalada, o LightNote volta a usar a fonte da nota e desenha esses sinais por conta própria.
O subconjunto cobre letras gregas, operadores e relações, expoente ^ e índice _, \frac, \sqrt (com índice), \left…\right com delimitadores que crescem, \sum/\prod/\int com limites, funções romanas (\sin, \log…), \text/\mathrm/\mathbf/\mathbb os alfabetos \mathcal/\mathfrak/\mathsf/\mathtt/\boldsymbol, \binom, \overset/\underset, \bmod/\pmod, a família \big…\Bigg os espaços \,/\quad/\hspace, os ambientes cases, matrix/pmatrix/bmatrix/vmatrix, aligned, gathered e array (com | e \hline), \overbrace/\underbrace, \begin{CD} e \begin{tikzcd} (diagrama comutativo), \xrightarrow, \boxed/\cancel, \not, \substack, \|/\middle, \smash, \textcolor/\color (o matiz é o seu; a claridade se ajusta ao tema da nota), \colorbox/\fcolorbox (o fundo sai na cor que você escreveu, e o texto se ajusta a ele), \tag (o rótulo da equação, colado ao fim dela; num align, um por linha, alinhados numa coluna), \phantom, \displaystyle e as formas infixas \over/\atop/\choose. A cobertura vai além desta lista: entram também as variantes de comparação (\leqslant), a lógica (\land, \vDash), os operadores de estatística (\argmax), as setas esticadas duplas (\xRightarrow) e os colchetes duplos (\llbracket). Valem também os comutadores de fonte do TeX antigo — {\rm d}x, {\bf A}, {\cal L} — e a notação de Dirac (\braket{\phi|\psi}). Macros definidas na própria fórmula (\newcommand, \def) valem até o fim dela, símbolos Unicode digitados direto (x ∈ ℝ) valem como os comandos, \text{…} aceita matemática entre $…$, e uma fórmula solta pode ter várias linhas com \\. \label{eq:nome} dentro de um bloco $$ numera a equação no modo de leitura, pelo mesmo contador do {#eq:nome}, e \eqref{eq:nome} no texto vira o número entre parênteses. A grafia do LaTeX também vale: \(…\) no meio da frase e \[…\] em bloco desenham igual — é a forma que o ChatGPT costuma emitir. O que ele não souber desenhar continua aparecendo como o texto que você escreveu.
Diagrama comutativo com seta diagonal (\begin{tikzcd}). O \begin{CD} só faz seta horizontal e vertical; o triângulo comutativo — o diagrama mais comum que existe — pede a diagonal. Cada objeto é uma célula (& separa, \\ muda de fileira) e a seta sai de dentro da célula: A \arrow[r, "f"] \arrow[rd, "g"'] & B. A direção é uma corrida de r/l/u/d (rd é a diagonal, rr são duas colunas), e \ar e os atalhos (\rar, \dar, \drar) são a mesma seta. O rótulo entre aspas nasce do lado de cima de uma seta que anda para a direita; o ' (ou swap) o põe do outro lado, que é o que diz se o nome fica dentro ou fora da figura. Valem também hook (inclusão), two heads (sobrejeção), dashed, Rightarrow e equal. A curvatura (bend left) e as opções que este subconjunto não desenha recusam dizendo o nome — desenhar duas setas curvas como retas as poria uma sobre a outra, afirmando que há uma só.
Um $ de prosa não vira fórmula: em custa $5 e $10 o preço continua preço, porque a abertura não pode ser seguida de espaço nem o fechamento vir precedido dele nem seguido de letra (é o que impede PATH=$dir1:$dir2 de virar fórmula) — e $x$ entre crases continua código. Quando a fórmula não sai, o LightNote diz por quê: uma linha abaixo do bloco $$, e uma vez só por frase distinta quando a fórmula está no meio do texto, nomeando o comando ou o delimitador que ele não conseguiu ler. Se a fórmula veio colada na grafia \(…\) e você prefere $…$, o item Formatar → Normalizar fórmulas para $ reescreve a seleção (ou a nota inteira) — no editor de texto, que é onde os caracteres da nota estão na tela.
Química: mhchem e SMILES
Química. A notação do mhchem também desenha: \ce{2 H2 + O2 -> 2 H2O} põe os índices no lugar sozinho, -> e <=> viram setas (com rótulo em ->[\Delta]), Na+ e SO4^2- viram carga, (aq) e (l) saem retos e colados, ^{227}_{90}Th alinha o isótopo, e v/^ marcam precipitado e gás liberado. \pu{123 kJ//mol} escreve a grandeza com unidade — a barra dupla vira fração. O equilíbrio deslocado (<=>> e <<=>) desenha a seta longa no sentido que a reação favorece, as ligações por extenso (\bond{~}, \bond{~-}, \bond{...}) sobrepõem os traços como no livro, e a notação de Kröger–Vink (O''_{i,x}, Li^x_{Li}) põe a carga efetiva no expoente. A variável sai em itálico e o elemento, reto: em NO_x o x é variável, em Fe^{II} o II é o número de oxidação.
Estrutura em LaTeX (\chemfig). O \ce escreve a fórmula; o \chemfig{...} desenha o esqueleto dentro da própria fórmula — \chemfig{H_3C-[:30]CH_2-[:-30]OH} é o etanol, \chemfig{*6(-=-=-=)} é o benzeno. O ângulo é seu: [:30] é absoluto, [::45] é relativo à ligação anterior e [3] conta oitavos de volta. As ligações são -, = e ~, e as cunhas da estereoquímica são >, <, >:, <:, >| e <| — a ponta estreita fica no estereocentro. Os parênteses penduram um ramo e *6(...) fecha um anel regular (**6(...) desenha o círculo aromático); de um vértice de anel, a ligação sem ângulo escrito aponta para fora dele. O símbolo de elemento sai reto e o traço para antes da letra. Os nós de partida e chegada do chemfig ([,,1,2]) são recusados dizendo o motivo: eles escolhem a que pedaço do rótulo a ligação se prende, e ignorá-los desenharia outra estrutura. O anel fundido vai dentro do corpo do primeiro, logo depois da ligação que os dois dividem, e o de dentro escreve uma ligação a menos — aquele lado já foi desenhado: o naftaleno é \chemfig{*6(-=-*6(-=-=-)=-=)}.
Estrutura química (SMILES). Uma cerca ```smiles com uma linha em SMILES (CC(=O)Oc1ccccc1C(=O)O) é desenhada como esqueleto no modo de leitura, na edição formatada, no arquivo exportado e nas respostas do Perguntar às notas. É o complemento do \ce: aquele escreve a fórmula, este desenha a molécula. Vale a convenção do esqueleto — o carbono não se escreve (é o vértice), o heteroátomo sai com o símbolo no acento do tema, e o anel aromático (c1ccccc1) ganha o círculo tracejado por dentro. A estereoquímica é desenhada: [C@H] e [C@@H] viram cunha — cheia quando a ligação vem para a frente, tracejada quando vai para trás, com a ponta estreita no estereocentro —, e F/C=C/F e F/C=C\F saem trans e cis como foram escritos. O que não tem representação no papel (as formas nomeadas não tetraédricas, como @SP1) é aceito, e a legenda dentro da imagem avisa que foi declarado e não desenhado. Uma cerca desenha uma estrutura: espaço no meio da linha é recusado, porque no SMILES ele encerra a estrutura. Quando não dá para ler, o LightNote diz o que está errado (o parêntese, o número do anel, o elemento) e o bloco de código fica como você escreveu. Para começar, use Inserir → Estrutura (SMILES) na barra da nota.
Calendário na nota
Uma cerca ```calendar (ou ```calendario) desenha um calendário dentro da nota, no modo de leitura, na edição formatada e na impressão. É uma tabela de verdade, e não uma imagem: dá para selecionar, copiar (colada no Word ou no Excel, ela leva as células) e achar um evento com Ctrl+F. A primeira linha diz qual calendário: um mês (2026-09) mostra o mês; uma data (2026-09-24) mostra a semana que a contém, com os dias nas colunas e as horas nas linhas; e semana mostra uma semana sem datas — a grade de aulas, a rotina, o plantão. Cada linha seguinte é um evento ou uma opção, e as que começam com %% são comentários. Para começar, use Inserir → Calendário na barra da nota (mensal, semanal ou semanal sem datas, já preenchidos com exemplos) ou digite /calendario.
Mês. O evento começa pelo número do dia: 15: Banca do TCC marca um dia, 22-26: Congresso marca um intervalo, e 24: sem texto só destaca o dia. O texto do intervalo aparece no primeiro dia e, quando ele atravessa a semana, também no começo da linha seguinte.
```calendar
2026-10
15: Banca do TCC
22-26: Congresso
```
Semana. O evento começa pelo nome do dia — seg, ter,qui ou seg-sex — seguido do horário: seg 09:00-10:30: Reunião. O horário se escreve 09:00, 9h30 ou só 9; sem ele, o evento vai para a linha de cima, a do dia todo (sex: Entrega). Com o dia pelo nome, copiar o bloco para a semana seguinte muda só a primeira linha. dias: seg-sex escolhe as colunas, na ordem da lista; horas: 8-18 fixa a faixa (sem ela, das 8 às 18, esticada para caber os eventos; com ela, o evento fora da faixa é recusado); e passo: 30 dá os minutos de cada linha. O evento longo escreve o texto, com o horário, só na primeira linha e pinta as seguintes.
```calendar
2026-10-14
dias: seg-sex
seg,qua 09:00-10:30: Reunião de equipe
ter 14-16: Estudo
ter 16-17: Revisão
sex: Entrega do projeto
```
Nas três formas, título: troca o título da barra (na semana sem datas, a barra só aparece com ele), semana: segunda começa a semana na segunda (o padrão é o do idioma da nota; com dias:, manda a ordem da lista) e hoje: não tira a marca do dia de hoje — na semana sem datas, a marca é o dia da semana. Eventos encostados ganham cores diferentes, para não parecerem um só. O idioma dos meses e dos dias é o da nota (a chave lang do frontmatter), e o fim de semana segue o costume desse idioma. O dia de hoje aparece só na tela: no papel e no PDF ele não é marcado, porque quem lê faz isso noutro dia. Para mudar o calendário, pressione Ctrl+Enter sobre ele e edite a fonte na barra — digitar numa célula não muda nada, porque a tabela é gerada a partir da fonte. Com a barra aberta, a tabela se refaz enquanto você digita; fechar a barra aplica, e Ctrl+Z desfaz a alteração inteira num passo. Ao exportar (Word, OpenDocument, HTML, LaTeX, Markdown do GitHub), o calendário vira uma tabela comum com o título. Quando a fonte não se lê como calendário, o LightNote diz a linha e o trecho, e o bloco de código fica como você escreveu. Dentro de uma citação ou de uma lista, o calendário aparece no modo de leitura e fica como código na edição formatada.
Numeração e referência cruzada
Ponha um rótulo na figura e ela ganha legenda numerada no modo de
leitura: {#fig:ciclo} vira a imagem
seguida de Figura 1 — Ciclo da água. A tabela leva o rótulo numa linha
que começa com dois-pontos, logo abaixo dela:
: Amostras coletadas {#tbl:amostras}. E a equação em bloco recebe o
número na margem direita quando o $$ de fechamento traz
{#eq:massa}. Este recurso vem desligado: ligue-o em Configurações → Recursos → Acadêmico → Numeração e referência cruzada. O LightNote é um editor simples que também dá conta de um TCC, e quem não escreve trabalho acadêmico não deve pagar por isso com menus e opções que não usa.-numeracao
Depois é só apontar: @fig:ciclo vira Figura 1,
[@fig:ciclo] vira (Figura 1) e -@fig:ciclo vira
só o número. É a mesma gramática da citação, de propósito. Inserir uma
figura no meio renumera tudo sozinho — a conta é do documento, na ordem em
que ele é lido.
Numerar é opt-in, pelo rótulo: uma imagem sem {#fig:…}
continua exatamente como está hoje. E rótulo que não existe fica como você
escreveu, igual à citação: é a pista de que há uma referência quebrada.
Seções numeradas (NBR 6024): declare
section-numbers: true (ou numeracao-secoes: true) nas
propriedades da nota e os cabeçalhos ganham o indicativo — 1,
1.1, 1.1.1 —, alinhado à esquerda, separado por um espaço e sem
ponto no fim. Um cabeçalho com {#sec:metodo} pode ser apontado por
@sec:metodo; sem numeração, a referência vira o título da
seção.
Numa linha sozinha, [lista de figuras] e
[lista de tabelas] montam as listas que a norma pede, como o
[TOC] faz com o sumário. Tudo isso é do modo de leitura (e
do PDF/HTML exportados): no editor o arquivo continua com o que você escreveu,
que é o que permite renumerar sem tocar na nota.
Citações e referências
Escreva a citação no meio do texto com [@chave] — a chave é a da
obra na sua bibliografia. Digitando @ o LightNote sugere as obras
que ele conhece, mostrando autor, ano e título; o que entra na nota é só a
chave. Também valem [@chave, p. 45] (com a página),
[-@chave] (quando o nome do autor já está na frase) e
[@a; @b] (várias obras de uma vez). Este recurso vem desligado: ligue-o em Configurações → Recursos → Acadêmico → Citações e bibliografia. O LightNote é um editor simples que também dá conta de um TCC, e quem não escreve trabalho acadêmico não deve pagar por isso com menus e opções que não usa.-citacoes
No modo de leitura a citação vira texto formatado — (Silva, 2020,
p. 45) — e o token [referências] numa linha sozinha vira a
lista das obras citadas, na ordem que a norma pede. No editor a chave
continua à vista, porque é ela que você edita.
A bibliografia é um arquivo do seu espaço de trabalho: qualquer
.bib, .ris ou .csl.json na pasta conta.
É isso que faz ela viajar junto com as notas no Git ou num pendrive e continuar
valendo noutro computador. Abrir um desses arquivos mostra a lista das obras com
a chave de cada uma, pronta para copiar.
Para trazer obras: Ferramentas → Bibliografia → Adicionar obra por DOI aceita um DOI ou um identificador do arXiv e busca o resto sozinho; e Importar do Zotero lê a biblioteca do Zotero 7 aberto neste computador (antes, marque Preferências → Avançado → Permitir que outros aplicativos deste computador se comuniquem com o Zotero).
A norma é da pasta, e a nota pode discordar. Escolha a padrão em
Ferramentas → Configuração do Espaço de Trabalho → Citações (ABNT, APA 7
ou Vancouver); uma nota que vá para outro destino declara
citation-style: apa nas propriedades dela. Chave que não existe na
bibliografia fica como você escreveu, para você ver qual consertar.
Grafo de conexões
Ferramentas › Grafo de conexões (Ctrl+Alt+G) mostra todas as
notas do espaço de trabalho como um grafo interativo: cada nó é uma nota
.md, cada linha um wikilink. Os nós se acomodam sozinhos (física
animada) e podem ser arrastados; passar o mouse destaca os vizinhos e esmaece
o resto; clique abre a nota. Role o mouse para dar zoom (os nomes aparecem ao
aproximar) e arraste o fundo para mover a vista.
Na barra da aba: filtro por nome (esmaece as notas que não casam), toggle de notas órfãs (sem nenhum link — ficam em cinza), sliders de força (repulsão, distância e gravidade), ajustar o grafo à janela e re-varrer as notas. Quanto mais conexões uma nota tem, maior o nó; cada pasta de 1º nível ganha uma cor.
Notas parecidas. A mini-barra Conexões, na própria nota, lista os links de entrada, os de saída e as menções pelo nome. No fim dela há a seção Notas parecidas: notas que falam de assuntos próximos mesmo sem link nem palavra em comum. Ela é calculada quando você pede (clique em Calcular), e não a cada troca de nota, porque percorrer o índice custa leitura de disco. Cada linha mostra o nome, o quanto se parece e o trecho que motivou a sugestão — sem essa evidência não haveria como julgar se ela presta. Não gasta chamada de IA: usa o índice de significado que já existe, então a seção só aparece com o reforço semântico (embeddings) ligado em Configurações → Geral → Recursos.
Tabelas (Parquet, CSV, JSON, Excel)
Abrir e consultar
Arquivos .parquet abrem como tabela; .csv,
.tsv e .json abrem como texto, e o menu de contexto da
árvore oferece Abrir como tabela. A leitura é paginada (sob demanda) via
DuckDB, com ordenação (clique no cabeçalho) e filtro empurrados
para o engine. O botão Estrutura mostra colunas, tipos, nº de linhas e, no
Parquet, row-groups e compressão. A visão é somente leitura.
A barra de SQL livre no topo da tabela aceita uma consulta DuckDB
qualquer — a view t representa o arquivo aberto. Pelo menu de contexto
de uma pasta na árvore, Abrir pasta como tabela lê todos os arquivos
do mesmo formato como uma tabela só; pelo menu da tabela dá para exportar a
visão atual (CSV/Parquet/JSON) e pelo menu da árvore, converter um arquivo
tabular para outro formato. SQL livre também está no comando query da
linha de comando e no MCP.
Planilhas Excel (.xlsx) abrem como tabela somente-leitura,
com um seletor de planilha (aba) — leitura leve, sem precisar do Excel
instalado.
Planilhas do Excel
Fiel ao arquivo. A planilha aparece com a formatação do próprio
arquivo: número, moeda, porcentagem e data seguem o formato definido no Excel —
um valor gravado como 3750.5 com formato de moeda aparece como
R$ 3.750,50, e uma porcentagem sai como 15% em vez de
0,15. Também vêm do arquivo a fonte (nome, tamanho, negrito, itálico,
sublinhado), a cor do texto, a cor de preenchimento, as bordas de cada célula,
o alinhamento, a quebra de linha, o recuo, o texto girado e a largura das colunas.
Números ficam à direita e texto à esquerda, como no Excel.
Quando a planilha traz cores próprias, a grade é desenhada sobre fundo branco: as cores do Excel foram escolhidas para papel branco e ficariam ilegíveis sobre o tema escuro. Um arquivo sem formatação nenhuma continua seguindo o tema do LightNote. A planilha abre na ordem em que foi escrita — clicar num cabeçalho ordena, como nas demais tabelas.
Layout original e zoom. Quando a planilha usa mesclagem, altura de linha própria ou esconde a grade, a aba abre no modo Layout original (botão na barra), que reproduz essa geometria como no Excel. O modo governa só a geometria — cor, fonte, borda e formato numérico valem nos dois — e, enquanto está ligado, ordenar e filtrar ficam indisponíveis, porque reordenar deixaria a faixa mesclada na linha errada; desligue o botão para voltar a ordenar. Planilha sem nada disso abre no modo normal. O zoom é o mesmo de todas as visões e fica na barra de status (veja Espaço de trabalho e janelas); Ctrl+roda do mouse também funciona sobre a grade. Uma planilha formatada como Tabela do Excel também aparece colorida: o estilo dela é embutido no Excel e não viaja no arquivo, então o cabeçalho e as listras são reconstruídos a partir do tema.
Copiar, filtrar e gráfico
Copiar como. No menu de contexto de qualquer tabela do LightNote (Parquet/CSV/JSON, Excel, resultado de SQL, Tarefas, Bases) o item Copiar como leva a seleção para a área de transferência já formatada. Tabela formatada (Teams, Outlook…) cola como uma tabela de verdade, com bordas e cabeçalho, nos programas que entendem texto rico — Teams, Outlook, Word, Excel (onde não há texto rico, cai automaticamente para TSV). Os demais colam como texto: tabela Markdown (pronta para uma nota), CSV (com aspas conforme a RFC 4180), TSV (separado por tabulação), HTML (a marcação <table>), JSON, JSONL (um registro por linha), YAML e o submenu Código, que gera um literal pronto para colar num arquivo-fonte: Python (lista de dicionários) ou JavaScript / TypeScript (array de objetos). Em JSON, YAML e código as células que são números saem sem aspas — mas o texto original é preservado, então IDs como 007 continuam texto. Ctrl+C continua copiando em TSV, como antes.
Todas as tabelas se comportam igual: Ctrl+F foca o filtro rápido ("contém em qualquer coluna"), um contador mostra quantas linhas sobraram e há Exportar para CSV — inclusive nas planilhas .xlsx, nas Tarefas e nas Bases. O menu de contexto da grade ainda traz Copiar como.
Gráfico do resultado. A mini-barra lateral da tabela tem um botão Gráfico (barras, linha ou dispersão): a agregação roda no DuckDB (nada de linha crua sobe), e um botão Adicionar à nota do dia grava o gráfico como imagem. O painel Estrutura traz ainda um perfil por coluna — mini-histograma das colunas numéricas e os valores mais comuns das demais.
Vários gráficos e tabela dinâmica. Para cruzar dois campos e agregar um terceiro — e para guardar mais de um gráfico por tabela —, veja Área de análise.
Área de análise: tabela dinâmica e vários gráficos
O gráfico e a estatística
A aba de uma tabela tem dois modos, nos botões Dados e Análise da barra. Dados é a tabela de sempre; Análise é uma prancheta em que convivem quantos gráficos e tabelas dinâmicas você quiser sobre a mesma fonte — cada um num cartão, com título editável, um botão de engrenagem que revela os seletores e um menu ⋮ (mover, duplicar, remover).
Estatística de verdade. Além de barras, linha e dispersão, o gráfico faz caixa (boxplot): uma caixa por categoria com os quartis, a mediana em traço grosso e as hastes na cerca de Tukey (1,5 × IQR) — e não no mínimo e no máximo. Sobre a média de uma coluna, o seletor Erro acrescenta a haste de dispersão: ± desvio padrão (que descreve os dados), ± erro padrão ou ± IC 95% (que descrevem a precisão da própria média). As três só aparecem com a média escolhida, porque "soma ± desvio" não quer dizer nada. A caixa Eixo Y log põe a escala logarítmica, para dados que varrem ordens de grandeza; havendo valor zero ou negativo ela é ignorada com aviso, porque ali o logaritmo não existe e descartar o ponto em silêncio faria o gráfico mentir. Na dispersão, Tendência desenha a reta de regressão com o R², ajustada no banco sobre todas as linhas — e não sobre os pontos amostrados que aparecem na tela. Sob o desenho fica uma linha de estatística descritiva da coluna escolhida (n, média, desvio, IC 95%, mínimo, quartis, mediana e máximo), que é uma consulta própria: derivá-la das barras daria a média das médias, que só coincide com a média real quando todos os grupos têm o mesmo tamanho.
Tabela dinâmica e totais
Tabela dinâmica. Escolha os campos que vão em Linhas e em Colunas (dá para aninhar mais de um em cada eixo; arrastar reordena os níveis), o campo em Valor e como reduzi-lo: Soma, Contagem, Contagem distinta, Média, Mínimo ou Máximo. Sem campo em Valor, contam-se as linhas. Ela também está na mini-barra lateral da tabela, ao lado do Gráfico, para uma consulta rápida sem sair dos dados.
A agregação roda no banco e volta já reduzida — nenhuma linha crua sobe, então um Parquet de dezenas de milhões de linhas continua viável. Como a consulta é SQL padrão, a tabela dinâmica funciona em todos os bancos do cliente SQL (SQLite, DuckDB, PostgreSQL, MySQL, SQL Server e Oracle), e não só no DuckDB como o gráfico.
Totais. As caixas Totais de linha e Totais de coluna acrescentam a linha e a coluna de fecho. Na Média o total é ponderado, e não a média das médias — que estaria errada quando os grupos têm tamanhos diferentes. A Contagem distinta não pode ser totalizada (a união de conjuntos distintos não sai da soma das partes), então ali as caixas ficam desabilitadas, com o motivo no tooltip, em vez de mostrar um número errado.
Onde fica gravado, CSV e agrupar
Onde a análise fica gravada. Num JSON ao lado do arquivo de dados (vendas.parquet → vendas.parquet.analise.json): formato aberto, que vai para o Git junto com o dado e viaja com ele para um colega. O botão Arquivo da análise abre esse JSON numa aba, e esvaziar a análise apaga o arquivo. Uma pasta inteira aberta como tabela não tem caminho próprio, então essa análise não é gravada — o botão diz isso. Cada cartão tem ainda Adicionar à nota do dia: o gráfico vai como imagem e a tabela dinâmica como tabela Markdown, que na nota continua sendo texto para copiar e editar.
Num CSV, um gesto só — e a saída quando o separador engana. Abrir como tabela abre pelo DuckDB, com SQL livre, gráfico, tabela dinâmica e área de análise. Às vezes o separador não é reconhecido (linhas com número de colunas diferente costumam causar isso) e a tabela vem com uma coluna só, a linha inteira dentro dela. Quando isso acontece, uma faixa aparece sobre a tabela dizendo quantas colunas o arquivo parece ter e oferecendo a leitura tolerante: ela lê linha a linha sem exigir colunas iguais — é a mesma leitura que a busca e a IA usam — e filtra e ordena, mas não tem SQL livre, gráfico nem tabela dinâmica. Para um texto que ainda não está salvo, ou com um delimitador escolhido à mão, use Exibir → Visualizar como arquivo delimitado….
Agrupar pelo padrão. Numa coluna de datas ou de códigos os valores distintos são quase tantos quanto as linhas, e agrupar por eles não diz nada. A máscara de padrão troca cada letra por A e cada algarismo por N, deixando o resto: 2027/10/10 vira NNNN/NN/NN. Assim milhões de linhas viram dois ou três formatos — e o que foge deles é exatamente o dado sujo (a data que veio 10-10-2027, o código sem o prefixo). No gráfico é a caixa Padrão ao lado do eixo X; na tabela dinâmica, o botão direito sobre a pílula de um campo (é por campo, para cruzar o formato de um código com uma dimensão normal); e no painel Estrutura os padrões mais comuns aparecem sob os valores mais comuns de cada coluna. A conta roda no banco. Em SQLite e no ODBC genérico a opção fica desabilitada com o motivo: falta a função de texto que a máscara usa.
PDF e imagens
Arquivos .pdf abrem num visualizador nativo (Qt6::Pdf, sem dependências pesadas), renderizado em CPU e sem WebEngine. Imagens abrem na visão de imagem; GIFs animados tocam na visão animada.
A barra da aba traz seis painéis laterais, um de cada vez: Sumário (o índice gravado no próprio arquivo — quando o PDF não tem, o botão fica desabilitado explicando o porquê), Miniaturas (as páginas de relance, renderizadas conforme você rola), Buscar, Links, Propriedades (título, autor, datas, tamanho da página e do arquivo) e Destaques (os trechos que você grifou, em ordem de leitura).
Buscar (Ctrl+F) procura em todo o documento: as ocorrências ficam realçadas nas páginas e listadas com o trecho ao redor, e F3 / Shift+F3 passam de uma para a outra. A varredura é progressiva, então a lista cresce enquanto o documento é percorrido.
O campo de página aceita o número ou o rótulo impresso: num documento cujo prefácio é numerado em romanos, digitar 1 leva à página impressa "1", não à primeira folha. O botão de modo de página alterna entre rolagem contínua e uma página por vez.
Um PDF protegido por senha pede a senha ao abrir (até três tentativas); cancelar apenas não abre a aba. Dentro da mesma execução do LightNote a senha não é pedida de novo — o aplicativo reabre a aba sozinho quando a libera por inatividade, e seria ele criando o incômodo. Marcando "Lembrar a senha deste arquivo" no próprio pedido, ela passa a valer também nas próximas execuções: fica protegida pelo Windows (só para você, só nesta máquina), nunca vai para o Git nem para a nuvem, e não é levada pela exportação de configurações. Para apagar todas: Configurações → Recursos → Senhas de PDF. Um PDF protegido não é reaberto sozinho ao iniciar o aplicativo — em vez de enfileirar pedidos de senha antes de mostrar a janela, ele espera você abri-lo.
No menu de ações da barra: copiar o texto da página, exportar o texto do documento inteiro, copiar ou salvar a página como imagem e enviar a página para a nota do dia. O painel Links existe porque o componente de PDF do Qt navega sozinho os links internos, mas ignora os externos — é por ali que se abre um endereço da web, com confirmação.
Grifar. O botão Realçar liga o marca-texto: arraste sobre o texto da página e o trecho fica grifado; a seta ao lado escolhe a cor. O grifo se prende ao texto, não a um retângulo — por isso ele acompanha o zoom e o modo de página sem sair do lugar, e por isso ele não funciona num PDF digitalizado, que não tem camada de texto (o aplicativo diz isso em vez de não fazer nada). No painel Destaques, clicar salta para a página e o menu de contexto anota, copia o trecho ou apaga. No menu de ações da barra, Copiar os destaques e Salvar os destaques como nota… escrevem o fichamento em Markdown: cada trecho numa citação e, por página, um link que abre o PDF ali (artigo.pdf#page=12). O preço: os grifos são gravados num arquivo ao lado do PDF (artigo.pdf.destaques.json, texto legível e versionável por Git) e não dentro dele — então eles aparecem no LightNote e não aparecem em outro leitor de PDF. Se o arquivo for trocado por outra versão, o destaque que perdeu o lugar é marcado como tal, em vez de ser pintado sobre a frase errada.
Limitação: fora do marca-texto não há seleção de texto com o mouse, porque o componente de PDF do Qt não a oferece. Para levar o conteúdo embora, use "copiar o texto desta página", a exportação do documento ou o próprio grifo.
Imagens: marcar um print
As ferramentas
Uma imagem abre numa aba com barra própria: além de girar, espelhar e ampliar, ela traz as ferramentas de marcação — o caminho de dar um print, apontar o que importa e levar embora para a documentação. E não é preciso ter um print para começar: Novo → Nova imagem em branco cria uma folha branca .png na pasta marcada e a abre já com a Caneta na mão — a Mover, que é o padrão ao abrir uma imagem, não teria o que arrastar aqui.
A ferramenta inicial é Mover: arrastar continua movendo a imagem, como sempre foi. Selecionar escolhe uma parte — arraste para criar, arraste por dentro para deslocar e use as alças dos cantos e das bordas para redimensionar; Esc desmarca e Del apaga o conteúdo da região. No modo Mover, Shift+arrastar também seleciona. Em qualquer ferramenta, o botão do meio do mouse move a imagem.
O Conta-gotas pega uma cor da própria imagem: botão esquerdo joga na cor da borda, botão direito na de preenchimento. Ele lê da imagem já marcada, então serve para repetir a cor de uma marca que você acabou de fazer.
As demais desenham: Retângulo, Elipse, Seta, Linha, Realce (translúcido, como marca-texto), Caneta (traço livre), Pincel, Passo numerado (que se numera sozinho — 1, 2, 3...), Texto, Borrar e Foco (escurece tudo menos a região escolhida). Ao desenhar, Shift trava quadrado/círculo e ângulos de 45°.
Cores, espessura e borrar
São duas cores, em dois botões: a da borda (que também é a do traço e a do rótulo) e a de preenchimento, que pode ser nenhuma. Sem preenchimento, o retângulo e a elipse saem só de contorno, e o passo numerado e o texto usam a cor da borda como fundo, com o rótulo em branco ou preto — o que contrastar. Escolhendo um preenchimento, ele vira o interior da forma e o fundo do rótulo, e a borda passa a ser a cor do texto.
O Pincel pinta com o preenchimento, numa marca do tamanho da espessura — redonda ou quadrada, pelo botão ao lado da espessura. Um clique já deixa a marca. Com o preenchimento branco, ele é a borracha: tapa o que estiver embaixo.
A espessura vale para o traço, o tamanho do rótulo e o tamanho do bloco do borrar; ela fica esmaecida nas ferramentas que a ignoram. Cor e espessura são lembradas entre sessões. Ctrl+Z e Ctrl+Y desfazem e refazem as marcações, e Limpar marcações apaga todas de uma vez (também desfazível).
Borrar é para esconder (um token, um e-mail, um caminho). Enquanto a aba está aberta a marcação é reversível, mas ao salvar ou copiar os pixels daquela região são realmente destruídos: o arquivo que sai não guarda o original em lugar nenhum.
Recortar, colar, girar e capturar
Três operações têm nomes parecidos e fazem coisas diferentes. Recortar (Ctrl+X) copia a seleção para a área de transferência e apaga a região, pintando-a com a cor de preenchimento (branco quando não há) — e a seleção continua ali, de modo que Colar logo em seguida devolve a peça exatamente no lugar de onde saiu, flutuando: é assim que se move um pedaço da imagem. Del é o recortar sem copiar. Já Manter só a seleção, no menu Imagem, faz o oposto: fica com a região e joga o resto fora, mudando o tamanho da imagem.
O resto da família: Copiar leva a imagem marcada ou só a seleção; Colar traz a imagem da área de transferência como uma colagem flutuante — mova e redimensione pelas mesmas alças e clique fora (ou tecle Enter) para gravá-la, Esc descarta; e Ctrl+A (ou Ctrl+T) seleciona a imagem inteira. Há ainda Salvar (grava as marcações no próprio arquivo), Salvar como... e Enviar para a nota do dia, que grava o PNG em Anexos/ e insere o ![]() na nota. Enquanto houver marcação não salva a aba fica com o asterisco, e fechá-la pergunta se você quer salvar.
O botão Imagem reúne o que mexe na figura inteira: girar, espelhar, redimensionar por porcentagem, reduzir para 1600 / 1200 / 800 px de largura (um print de tela nasce grande demais para a documentação), aparar bordas de cor uniforme, adicionar margem, sombra projetada e gravar as marcações na imagem — este último transforma as marcas em pixels na hora, que é o que permite borrar por cima de uma marca. Redimensionar leva as marcações e a espessura do traço junto.
Para capturar a tela sem sair do LightNote: Capturar tela... no menu da bandeja (ou Ctrl+Alt+P) congela o desktop, você arrasta para escolher a área (Esc cancela) e o recorte abre numa aba nova, já pronto para marcar.
Limitações: uma marcação já desenhada não se move nem se edita — apague com Ctrl+Z e refaça; GIF e WebP animados abrem na visão de animação, que não tem marcação; e um .svg é rasterizado na leitura, então salvar pede um destino em PNG.
Páginas HTML (.html)
Um .html aberto na árvore vira uma aba de pré-visualização com um motor de layout de verdade: flexbox, blocos flutuantes, posicionamento, media query, gradientes, variáveis CSS e seletores CSS3. É o que faz um relatório moderno — daqueles que uma IA gera com cartões de indicador, tabela e gráfico — aparecer como no navegador, em vez de virar uma parede de texto.
O texto é selecionável: arraste para selecionar, dê duplo clique para pegar uma palavra, Ctrl+A seleciona a página inteira e Ctrl+C copia (o menu de contexto traz Copiar e Selecionar tudo).
A barra do topo traz o Sumário (os títulos da página; clique para saltar) e Buscar (Ctrl+F — realça todas as ocorrências, F3 e Shift+F3 andam entre elas, Esc fecha). O zoom saiu da barra da aba: fica num lugar só, na barra de status, como em todas as visões (veja Espaço de trabalho e janelas).
Exportar PDF pagina a página em A4 com o texto vetorial — o PDF continua pesquisável e o texto, selecionável. A aba também acompanha o arquivo no disco: regerou o relatório, ele se atualiza sozinho sem perder a posição de leitura. E uma página que não escolheu as próprias cores segue o tema do aplicativo; quem definiu as suas é exibida como foi desenhada.
Os links funcionam: um link para outro arquivo da mesma pasta abre ali mesmo, #âncora rola até a seção e um endereço da web abre no seu navegador.
O que ele não faz é JavaScript e rede — nada é baixado. Quando a página depende disso (script, <canvas>, <iframe> ou um recurso da web), aparece uma faixa com Abrir no navegador. Dica para relatórios: peça à IA um HTML sem JavaScript e sem CDN, com o gráfico em SVG embutido — assim ele abre completo aqui dentro.
Ainda assim, algumas coisas respondem ao clique, sem executar nenhum script: uma caixa <details> abre e fecha pelo cabeçalho (e a barra ganha Expandir tudo quando a página tem alguma), um conjunto de abas troca o painel visível, e clicar no cabeçalho de uma tabela ordena as linhas — clicar de novo na mesma coluna inverte, e uma coluna de números ordena por valor, não como texto. Quando o par aba→painel não é inequívoco, nada é alterado: a página fica exatamente como veio.
Dois ajustes acontecem sozinhos, porque o motor não os tem: display:grid e gap viram flexbox equivalente, e o <svg> embutido é desenhado. box-shadow é ignorado. Para voltar ao visualizador antigo, desmarque Visualizador de HTML com layout completo em Configurações → Geral → Recursos.
Imprimir
Arquivo → Imprimir… (Ctrl+P) abre uma prévia paginada: a folha aparece como vai sair, com as margens, a quebra de página e a numeração. O botão de imprimir fica dentro dela, ao lado do zoom, da navegação entre páginas e da configuração de papel. Imprimem a nota, o código, a página HTML, a imagem e o PDF aberto; nas outras telas o item fica cinza dizendo por quê. O mesmo botão está na barra da própria tela: na nota, ao lado do de exportar; e no código, no PDF, na imagem e na página HTML, na barra de cada um.
O que sai no papel é o mesmo que o modo de leitura mostra: transclusão resolvida, numeração de figura no lugar e o comentário privado (%%…%%) fora. Com um tema de conteúdo escuro a folha sai em papel branco — uma página preta gastaria tinta e destoaria de qualquer documento entregue a alguém. As margens são de 20 mm nas laterais e 15 mm em cima e embaixo, e o pé de página traz Página X de Y. Na prévia, o botão Margens troca entre as margens do documento e o mínimo que a impressora alcança; num PDF e numa imagem ele já começa no mínimo, porque ali o arquivo traz a margem dele. Ao lado dele, Tema troca as cores do impresso: o padrão é automático (é ele que faz um tema escuro virar papel branco), e a lista traz os temas claros do catálogo e os seus — quem lê em Dracula Dark pode imprimir em Dracula Light, a mesma linguagem de cor feita para papel. Os escuros ficam de fora porque no papel eles pintariam a folha inteira. O tema que já está em uso vem marcado (em uso) na lista: escolhê-lo não muda a folha.
No código, a sintaxe sai colorida sobre papel branco, com os números de linha na margem, e a linha longa quebra em vez de ser cortada: no papel não há rolagem horizontal para alcançar o que passa da margem. A imagem sai com as marcações que você desenhou, e uma imagem pequena não é ampliada — ela sai do tamanho que tem, centralizada na folha. Um GIF imprime o quadro que está à vista.
Imprimir um PDF pelo LightNote rasteriza as páginas, e os seus grifos vão junto; para a melhor qualidade tipográfica, imprima o PDF pelo leitor do sistema, onde o texto continua vetorial. A exportação para PDF (Arquivo → Exportar nota) é outra coisa e continua como sempre foi: quem quiser o número de página ou as margens de documento também no arquivo marca as duas caixas em Exportar com opções…, que saem desligadas para não mudar o PDF de quem já exporta. Num documento muito longo a prévia fica de fora, porque ela guarda todas as páginas na memória de uma vez; o app vai direto ao diálogo de impressão, que não tem esse limite.
Zip como pasta (.zip)
Um .zip abre numa aba própria: à esquerda a árvore dos membros
(nome, tamanho, data), à direita o conteúdo do membro selecionado — texto/código,
Markdown (renderizado), imagem ou PDF — aberto em memória, sem extrair nada
para o disco. Texto e Markdown podem ser editados: Ctrl+S regrava o
membro dentro do próprio .zip.
A mesma aba abre .7z, .rar, .tar (inclusive .tar.gz, .tar.bz2 e .tar.xz), .cab e .iso — nesses casos somente leitura: dá para navegar, visualizar e extrair membros, mas não editar. Só o .zip é gravável, porque é o único formato que sabemos reescrever com segurança (o .rar é proprietário e nem as bibliotecas livres o comprimem).
Imagem e PDF são somente leitura; membros muito grandes (e
.parquet) só oferecem Extrair para…. Não dá para criar, renomear
ou apagar membros.
Membros protegidos por senha são lidos normalmente: ao abrir um deles o LightNote pede a senha (até três tentativas) e, marcando "Lembrar a senha deste arquivo", não pergunta de novo — na mesma execução por padrão, e também nas próximas se a caixa for marcada (protegida pelo Windows, só para você nesta máquina; apague todas em Configurações → Recursos). Note uma diferença do formato em relação ao PDF: no .zip a cifra é por membro e o índice fica em texto claro, então a lista de arquivos aparece inteira mesmo sem a senha — só o conteúdo é protegido. Um .zip com membros cifrados não é reaberto sozinho ao iniciar o aplicativo.
Blocos (.lnb)
Um bundle de Blocos é uma pasta cujo nome termina em .lnb,
tratada como um item único na árvore (duplo clique abre). Cada bloco é um arquivo
real no disco; a ordem fica num blocks.json na raiz do bundle. É como um
caderno: células empilhadas de código ou texto. Um notebook Jupyter entra por aqui: clique com o botão direito num .ipynb na árvore e escolha Importar como Blocos (.lnb). Cada célula vira um arquivo real — versionável e lido pela busca —, e o .ipynb continua onde estava, porque importar não é converter. As saídas gravadas no notebook não vêm junto: executar a célula aqui gera o resultado de verdade, com instante e comando.
Cada célula tem nome, botão de tipo (define o interpretador/lexer) e botões para copiar, incluir, apagar e executar. Executar até aqui roda em sequência todas as células de código até a atual; a saída (stdout+stderr) aparece num painel logo abaixo da célula. Crie um pela árvore (Novo) ou em Arquivo → Novo.
Ctrl+Enter executa a célula com o foco — o mesmo gesto do editor SQL.
O resultado fica gravado (como num caderno de laboratório): ao terminar,
cada execução vira um arquivo .md dentro de
saida/<célula>/, no próprio bundle — com o instante, o código de
saída, a duração, o comando e a saída em si. Como é Markdown, dá para ler em
qualquer editor, versionar no Git junto do caderno e recuperar pela
busca nas notas. Reabrir o bundle traz de volta a
faixa Última execução acima do painel: clique nela para ver o resultado sem
rodar de novo.
Histórico: o botão Histórico ao lado dessa faixa lista as execuções
anteriores daquela célula (instante e código de saída) — útil para comparar o que a
mesma célula devolveu ao longo do tempo. Guardamos as 10 mais recentes por
célula; para mudar, edite a chave historyLimit no
blocks.json do bundle (0 desliga a gravação). Saída muito
grande é cortada (o arquivo diz truncated: true). Renomear a célula ou
trocar seu tipo leva o histórico junto; apagar a célula manda o histórico para a
Lixeira.
Célula SQL num banco de verdade: aponte o caderno para uma
conexão .lnc pela barra no topo (Escolher
conexão…) e as células do tipo sql passam a executar no banco, e
não por um interpretador. O resultado de um SELECT vira uma
tabela no arquivo de saída (Markdown de verdade, que qualquer visualizador
mostra formatada); INSERT/UPDATE e afins reportam quantas
linhas mudaram, e um erro do banco interrompe o script e registra a instrução que
falhou. Trazemos até 100 linhas por consulta (o arquivo avisa quando há
mais) — o resultado é uma anotação, não uma cópia da tabela.
A conexão fica no blocks.json como caminho relativo, então o
caderno continua funcionando ao mover ou sincronizar a pasta. Se preferir um caderno
auto-contido, guarde o próprio .lnc dentro do bundle: ele conta como
configuração, não vira célula. A conexão é a mesma da aba de Banco
de Dados — conectar num lugar vale no outro, e a senha segue as regras da
Frase-Segura. Sem conexão apontada, a célula sql continua
rodando pelo interpretador configurado, como antes.
Tarefas (Kanban / Gantt)
Um bundle de Tarefas (.lnt) abre um quadro de tarefas com visões de
Kanban (colunas de status, arraste os cartões), Gantt (cronograma por
esforço) e calendário. Cada tarefa pode ter título, coluna (status), esforço
em horas e uma nota .md associada. As tarefas são acessíveis também por
IA, via MCP e CLI (criar, mover, atualizar,
ler/gravar a nota).
A nota da tarefa é uma nota como qualquer outra. O painel embutido traz a mesma tela das notas .md: Ctrl+E alterna editor de texto, leitura e edição formatada, e valem o tema da nota, o sumário e as propriedades. Ela continua salvando sozinha — inclusive o que você acabou de digitar no modo formatado, ao trocar de tarefa ou fechar a aba. Abrir a nota em aba própria também segue a sua preferência de visão, em vez de forçar o editor de texto.
Campos por tarefa: além de status e esforço, cada tarefa tem prioridade (colore a borda do cartão e ordena a Tabela), data de vencimento (chip vermelho quando atrasada), múltiplas etiquetas, checklist de subtarefas (badge de progresso no cartão) e recorrência (concluir uma tarefa recorrente gera a próxima ocorrência). Edite-os no menu de contexto (Tabela/Kanban) e no painel Propriedades.
Captura e listas: a Tarefa rápida da bandeja entende linguagem natural (ex.: Pagar conta amanhã 17h #casa !alta). O botão Modelos salva/aplica modelos de tarefa; Listas por vencimento filtra Hoje/Próximos 7 dias/Atrasadas; Visões salvas guarda filtro+ordenação; e a bandeja/Launcher mostram lembretes de tarefas que vencem hoje ou estão atrasadas.
Quadro Kanban: dá para agrupar as colunas por status, prioridade ou etiqueta, criar raias (swimlanes), definir limites de WIP por coluna (cabeçalho fica vermelho ao exceder) e ordenar os cartões. Navegação por teclado no estilo Linear: ←/→ movem o foco, Ctrl+←/→ movem o cartão, N cria, Espaço conclui/reabre e Delete exclui. Há ainda a visão Calendário (por data de vencimento).
Nota embutida: selecionar uma tarefa mostra a nota .md ao lado
das vistas (autosalva ao trocar de tarefa); o botão Nota liga/desliga o
editor e Abrir nota em aba abre numa aba própria. Arquivar uma tarefa
a esconde de todas as vistas; o toggle Mostrar arquivados revela as
arquivadas (esmaecidas).
Nas Configurações das Tarefas você define Arquivar tarefas concluídas após N dias: ao abrir o quadro, as tarefas que ficaram na coluna final por mais tempo que isso são arquivadas automaticamente (0 = desligado).
A nota abre embutida por padrão (duplo-clique na tarefa) e salva sozinha enquanto você escreve — as Tarefas nunca perguntam "salvar?" ao fechar. Dentro da nota valem as ações de IA (Ctrl+K / Ctrl+I).
Barra da aba. As ações que dependem da tarefa selecionada (Excluir, Dependências, Histórico (Git)) e o Exportar CSV ficam no botão ⋮. O botão Visões reúne as listas por vencimento, as visões salvas e o mostrar arquivadas — todos agem sobre a Tabela. Ctrl+F foca o filtro rápido e o contador à direita mostra quantas tarefas o filtro deixou.
Tabela personalizada (.lnd)
Uma Tabela personalizada (.lnd, em Arquivo → Novo) é
a sua mini-base de dados: você define as colunas em tempo de execução —
texto, número, data, lista fixa com cor, caminho, tags e
senha — e preenche as linhas como numa planilha, com ordenação e filtro.
Um campo de caminho agrupa as linhas numa árvore (ex.:
Casa/Escritório).
Células de senha são cifradas individualmente com a Frase-Segura e reveladas sob demanda. Como nas Tarefas, o bundle persiste em texto (NDJSON) amigável ao Git — dá para versionar e mesclar entre máquinas.
Em colunas de texto, abrir uma célula mostra um editor multilinha
flutuante: Enter quebra a linha e Ctrl+Enter confirma; na grade o
texto aparece em uma linha só (com …) e o conteúdo completo vem no
tooltip. Para mudar o tipo de uma coluna, use o menu do cabeçalho: ao
converter texto → senha os valores são cifrados com a Frase-Segura; ao
converter senha → texto o LightNote pede confirmação e o PIN/Frase e grava
o conteúdo em texto puro (irreversível). Demais conversões preservam os valores.
Bases (consultas salvas sobre as notas)
Uma Base (.lnq, em Arquivo → Novo → Nova Base) é uma
consulta salva sobre as suas notas: filtre por tipo e por
propriedades e veja o resultado como tabela ou quadro. A Base
não guarda dado nenhum — as linhas são as suas notas .md e a
fonte da verdade de cada célula é o frontmatter da nota. Apagar um
.lnq não perde nota alguma.
Editar a célula grava na nota. Na tabela, alterar uma propriedade reescreve só aquela linha do frontmatter do arquivo. No quadro, arrastar um cartão de uma coluna para outra grava o novo valor da propriedade de agrupamento (ex.: mover de lendo para lido).
Cada nota declara suas propriedades no frontmatter (type,
status, autor…). Use a mini-barra Propriedades da
nota para editá-las como campos tipados (texto, número, data, caixa de
seleção) em vez de YAML cru — veja Notas em Markdown.
O .lnq é NDJSON (um registro por linha), pensado para o
Git: duas máquinas podem editar a mesma Base em paralelo — uma acrescenta
uma coluna, a outra ajusta um filtro — e o merge junta as duas mudanças sem
conflito.
Esquema declarado (opcional). Por padrão o LightNote infere os campos
de cada tipo a partir do que as notas já usam — você não precisa declarar nada. Quando
quiser fixar o esquema, abra Ferramentas → Tipos de nota... (ou o botão de
engrenagem da mini-barra Propriedades da nota): declare os campos de cada
tipo, o seu tipo de dado (texto, número, data, caixa de seleção, lista de
opções) e um modelo padrão. Com o esquema, um campo de lista de opções
vira uma caixa de seleção com os valores permitidos, os campos declarados aparecem nos
seletores de coluna e filtro da Base mesmo antes de qualquer nota usá-los, e o
botão Aplicar modelo do tipo traz o esqueleto da nota. O esquema vive em
.lightnote/types.ndjson — NDJSON mergeável, versionado no Git com as notas;
apagá-lo não altera nota nenhuma, só volta a inferência.
Datas relativas no filtro. No valor de uma condição valem termos como hoje, ontem, amanhã, há 7 dias e em 2 semanas (também há 3 meses, em 1 semana). Com eles, vencimento = hoje e vencimento < hoje (atrasadas) continuam valendo amanhã — antes só dava para escrever a data do dia à mão, e a consulta salva envelhecia em 24 h. O valor é sempre um ponto no tempo, e a faixa sai da composição com o operador: modificado > há 7 dias é "mexi nesta semana". Uma nota sem data legível naquele campo não entra em nenhuma comparação de data, nem na negativa. Uma data ISO escrita à mão (2026-09-01) continua valendo como texto.
O índice roda em segundo plano. A Base e o Ferramentas → Consultar notas (SQL) varrem as notas antes de mostrar o resultado — um stat em cada arquivo e a leitura das que mudaram desde a última vez. Isso agora acontece fora da janela: a Base abre na hora dizendo Indexando as notas… na barra e se preenche quando termina; o botão Reindexar fica desabilitado enquanto isso, porque uma segunda varredura da mesma pasta não adiantaria nada.
Busca em arquivos e Pendências
Buscar nos arquivos e nos documentos
Use Ctrl+Shift+F para a busca global na aba Buscar da barra lateral, apoiada no ripgrep: aceita regex, diferenciar maiúsculas, palavra inteira e substituição em massa. Dentro do arquivo atual, Ctrl+F localiza e Ctrl+H substitui.
A busca alcança também os documentos. Além das notas
.md, ela lê o texto de PDF, planilha (.xlsx/.ods),
documento do Word (.docx), texto do LibreOffice (.odt),
apresentação (.pptx) e livro (.epub). O mesmo vale para o
Chat com IA e para a busca por significado. Um acerto num PDF abre o arquivo
na página do trecho. O texto extraído fica num cache fora do espaço de
trabalho, se atualiza sozinho quando o arquivo muda e é apagado quando o arquivo
deixa de existir. A primeira vez custa: abrir um espaço com muitos PDFs dispara uma extração que leva minutos, e até ela terminar os documentos ainda não estão na busca. A aba Pesquisar diz isso enquanto acontece — preparando os documentos (12 de 80) — e avisa quando pode refazer a busca. Da segunda vez em diante só muda o que o arquivo mudou.
Também entram .rtf, .xps/.oxps, apresentação do LibreOffice (.odp), legenda de vídeo (.srt/.vtt), tabela em texto (.csv/.tsv), página salva (.html/.mhtml), e-mail arquivado (.eml), caderno Jupyter (.ipynb), bibliografia (.bib/.ris) e os arquivos de texto puro (.txt). As linguagens de marcação de texto têm leitor próprio — reStructuredText (.rst), AsciiDoc (.adoc), Org (.org) e Typst (.typ): a seção vira título, a lista e a tabela viram as nossas, a fórmula é desenhada, e o preâmbulo fica de fora — sem isso, #set page(...) e :stem: latexmath virariam trechos indexados, e o nome da seção não viajaria com o texto dela. Um acerto numa legenda abre o instante em que a frase foi dita. PDF digitalizado não some em silêncio. Um documento que tem páginas e nenhum texto (foto de cada página, sem OCR) entra no índice com uma linha dizendo isso, e a aba Pesquisar avisa quantos são — sem essa frase você procuraria algo que está no livro, não acharia e concluiria que a busca quebrou. E dá para ler esse documento: com o Tesseract instalado (o LightNote oferece instalá-lo num clique), o menu ⋯ do PDF traz Reconhecer o texto (OCR)…. Ele roda uma vez, por documento e pode levar vários minutos — depois disso o texto fica no índice como o de qualquer outro PDF. O aviso da aba Pesquisar leva até o primeiro documento nessa situação. O cache guarda o texto em claro. Ele fica na sua pasta de usuário, fora do espaço de trabalho: quem tiver acesso a ela lê o conteúdo dos seus documentos por lá, mesmo que o original esteja num disco cifrado. Um arquivo .lne (a nota cifrada) nunca entra no cache — ele existe justamente para não ficar legível no disco.
O LaTeX entra por um leitor próprio. Um arquivo
.tex não é lido como texto cru: o preâmbulo fica de fora,
\section vira título, \cite vira [@chave] e a
fórmula passa inteira — quem a desenha é o mesmo motor que desenha a matemática das
suas notas. Um acerto abre o arquivo na linha de onde veio. No menu de
contexto do arquivo — ou na barra da aba, com ele aberto — há Importar como nota
(.md): a nota nasce ao lado, o .tex continua no lugar e importar
duas vezes não sobrescreve. O caminho inverso é Exportar como LaTeX (.tex)...,
na barra da nota.
Prévia do documento e código-fonte
Abrir um documento mostra uma prévia de texto. Um .docx,
.odt, .epub ou .pptx abre somente para
leitura, com o texto extraído e as imagens do documento — sem os
estilos do Word, o posicionamento das figuras, tabelas complexas ou controle de
alterações. A aba continua sendo o documento: o
nome, a pasta e a sessão apontam para ele, e não para o cache. A planilha
.xlsx continua abrindo na visão de tabela, que mostra bem mais.
Transformar o documento em nota. Em Arquivo → Importar documento como nota... (vários de uma vez), no menu de contexto da árvore ou no botão Importar como nota (.md) da própria prévia, um .docx, .odt, .epub, .rtf, .pptx, .html, .eml, PDF ou LaTeX vira uma nota editável ao lado do arquivo. Vêm junto o texto com títulos, listas, links e tabelas, as notas de rodapé, as equações do Word como fórmulas LaTeX e as imagens, gravadas na pasta Anexos ao lado da nota. O título, o autor e a data do documento entram como propriedades, com source dizendo de que arquivo a nota veio. O original continua no lugar — importar não é converter —, e importar de novo cria nome 02.md em vez de sobrescrever o que você editou. Não aparece para o notebook Jupyter (que vira Blocos), para .csv (que abre como tabela), para a bibliografia .bib/.ris (que as citações leem direto) nem para código-fonte. A estrutura sai dos estilos do documento: o título do Word é reconhecido também com o nome do estilo traduzido, o estilo de caractere dá o negrito, o itálico e o código, os parágrafos de citação e de código viram os nossos blocos e o sumário automático vira um [TOC], que a nota mantém em dia; do .rtf vêm listas, tabelas e links, e do HTML — inclusive o que o Word e o Google Docs salvam — e do EPUB vêm títulos, listas aninhadas e tabelas.
Ver o que a pasta usa de outro editor. Em Ferramentas → Verificar compatibilidade da pasta..., o LightNote lê as notas da pasta aberta e separa o que achou em três grupos: o que ele desenha (wikilink, transclusão, destaque, etiqueta, realce, fórmula, nota de rodapé, tarefa, marcador de bloco), o que fica no arquivo sem ser desenhado (a consulta de plugin dataview, tasks ou query, o quadro .canvas, a base .base e a transclusão de bloco) e o que pode ser convertido para a grafia daqui. Converter é escolha sua, e nunca efeito de salvar: marque as construções, veja a prévia lado a lado e confirme — cada arquivo alterado ganha um ponto no Histórico do arquivo antes de ser gravado, e o que está aberto com alterações não salvas fica de fora. São duas conversões hoje, e nenhuma custa nada do lado do Obsidian, que lê as duas grafias: o link obsidian:// desta pasta vira [[nota]] — o de outro cofre não é convertido, porque o destino mudaria — e a nota de rodapé na linha ^[texto] vira [^n], com a definição no fim.
Trazer um acervo inteiro do Notion. Exporte no Notion com Export → HTML (ou Markdown & CSV) e Include subpages, ponha o .zip baixado — ou a pasta — dentro do espaço de trabalho, crie a pasta de destino e rode lnote vault-import --path <export> --out <destino> (ou a ferramenta vault_import, pelo assistente de IA). Não é preciso descompactar, nem o export do espaço inteiro, que vem com outro .zip dentro. Cada página vira uma nota: as propriedades da página viram propriedades da nota, o destaque colorido do Notion vira a caixa daqui (no HTML a cor diz o tipo; o Markdown não guarda a cor, e a caixa vem como nota), a tarefa chega com a caixinha marcada ou não, a equação vira fórmula LaTeX, o bloco que recolhe vira uma caixa <details> (e o título que recolhe vira título), o índice da página vira [TOC], e os links entre as páginas são reescritos para as notas novas — duas páginas de mesmo título convivem, porque a segunda vira nome 02.md e os links continuam apontando para a certa. Os bancos de dados são copiados como .csv em Anexos, e um #assunto escrito no Notion continua texto — lá ele não era etiqueta, e aqui também não vira. Nada é sobrescrito, e uma nota de relatório é gravada junto, dizendo quantas notas e anexos entraram e listando os links que não acharam alvo — eles ficam exatamente como estavam escritos.
O gesto está no menu. Arquivo → Importar de outro aplicativo... abre o assistente: escolha a pasta ou o .zip que você exportou (um .enex do Evernote também serve) e o aplicativo de origem é reconhecido pela forma dos nomes de arquivo — se não for, escolha-o na lista ao lado. A pasta é lida inteira, com as subpáginas. O destino já vem preenchido com uma pasta nova dentro do espaço de trabalho, com o nome do app, para o acervo não se misturar com as suas notas. Ler e escrever acontecem fora da janela, e no fim a tela diz quantas notas e anexos entraram e quantos links foram reescritos.
Cinco aplicativos. Do Notion, a pasta ou o .zip exportado em HTML ou em Markdown; do Evernote, o .enex; do Joplin, o .jex (ou a pasta MD + Front Matter); do Logseq, a pasta do grafo — a que tem logseq/config.edn dentro; e do Roam Research, o .json do export. Em todos, o caderno e o namespace viram pasta, o diário vai para a pasta das notas diárias com o nome aaaa-MM-dd, a tarefa vira - [ ], o realce vira ==assim== e a citação de um bloco vira o texto dele entre aspas com o link da página onde ele mora — nenhuma sintaxe de outro app entra no seu cofre. O que não tem equivalente aqui, como a consulta do Logseq ou a tabela do Roam, fica como código na linha, e o relatório conta quantas vezes.
O código-fonte também pode entrar na busca por significado. Em Espaço de trabalho → Configurações desta pasta há Incluir o código-fonte na busca por significado: os arquivos de código passam a ser indexados junto com as notas, um trecho por função ou classe — é o que faz perguntas como “onde eu trato o timeout?” encontrarem a função inteira, e não um pedaço cortado no meio de um if. Respeita o .gitignore. Vem desligado, e por pasta: nota muda devagar, código muda o dia inteiro, e um repositório de trabalho gera dezenas de milhares de trechos — cada um deles uma chamada cobrada pelo seu provedor de embeddings.
Realce, marcas e Pendências
Realce e marcas são coisas diferentes. A busca rápida (Ctrl+F) apenas realça as ocorrências em âmbar: é temporário e some ao fechar a barra ou limpar o campo. Já o Marcar tudo de Editar → Localizar avançado… é uma decisão sua — pinta as ocorrências em vermelho e acrescenta o marcador (a bolinha azul na margem) nas linhas correspondentes, que ficam até você usar Limpar marcas. Os dois são independentes: fechar a busca rápida não apaga o que você marcou, e limpar as marcas não apaga o realce da busca. Ambos aparecem na faixa do minimap, cada um na sua cor. O Limpar marcas apaga só as bolinhas que o Marcar tudo criou: um marcador que você tenha posto à mão (Ctrl+F2) numa linha que casava com a busca continua onde estava.
A seção Pendências da barra lateral reúne num só lugar os
TODO/FIXME do código e as tarefas
(- [ ]) das notas Markdown do espaço de trabalho — clique para ir
direto à linha.
Versionamento (Git fácil)
Clonar um repositório
Para trabalhar num repositório que já existe, use Arquivo → Clonar repositório Git... — o item também está na tela inicial e no painel de versionamento de uma pasta ainda sem repositório. Cole o endereço HTTPS ou SSH que a página do repositório mostra; a URL da própria página serve, e um git clone ... copiado inteiro também. Escolha a pasta-base e o nome da pasta: o assistente mostra onde ela vai nascer e avisa quando já existe algo ali. Em Opções avançadas ficam o branch, o clone raso (só o último commit) e os submódulos.
Quando o servidor pede login, o LightNote pergunta numa janela: usuário e token, a senha da chave SSH, ou a confirmação da chave de um servidor que este computador nunca viu — nesse caso a janela mostra a impressão digital e o link para a lista que o serviço publica, e o padrão é não confiar. A resposta vai direto para o Git e o LightNote não a guarda; quem guarda é o gerenciador de credenciais do Git, quando ele está instalado (o Git for Windows traz o Git Credential Manager). Confiar na chave grava-a em ~/.ssh/known_hosts, como o próprio ssh faria.
Se o clone falhar, a tela diz o que houve e oferece a saída: tentar por HTTPS quando a chave SSH foi recusada, usar os certificados do Windows quando o proxy da empresa inspeciona o HTTPS, baixar só o último commit quando a conexão cai no meio, ou usar caminhos longos quando o Windows não deixa criar o arquivo. Os Detalhes técnicos trazem a mensagem do Git, e o que não se reconhece pode ir para a IA. Ao terminar, o assistente abre a pasta clonada nesta janela ou numa nova.
Versionar a pasta aberta
O versionamento é opt-in por espaço de trabalho. Ative em Ferramentas → Configuração do Espaço de Trabalho: o LightNote cria o repositório Git (se ainda não existir) e mostra a barra lateral de versionamento (Ctrl+Shift+G).
No modo automático, o LightNote salva versões (commits) sozinho nos momentos escolhidos nas Configurações Gerais (ao salvar, ao fechar a aba ou ao fechar a janela). No modo manual, você escreve a mensagem e salva a versão no painel. O indicador na barra de status mostra o estado (sem alterações, X alterados…) e, ao ser clicado, abre a configuração do espaço. Dá para ver o diff de cada arquivo e restaurar (descartar) mudanças não salvas.
A automação tem 3 níveis por pasta (em Configuração do Espaço de Trabalho): Manual (nada automático), Commit automático (salva versões sozinho, mas não sincroniza) e Tudo automático (commita e sincroniza — push após o commit + pull periódico; exige credenciais de Git sem prompt). O painel mostra uma linha de estado com ↑ a enviar / ↓ a receber em relação ao remoto, e o botão principal muda de commit para Sincronizar quando há versões a enviar — assim fica claro que, depois de salvar, ainda falta sincronizar.
No painel e no menu Git da árvore há Adicionar (git add) e Restaurar (git restore) por arquivo, e um único Ver o que mudou, que abre a tela de comparação.
A tela de comparação mostra as duas versões lado a lado, alinhadas: os trechos iguais ficam sempre frente a frente e cada lado mostra o número de linha do seu arquivo. Uma linha trocada aparece em âmbar, com o pedaço que mudou realçado dentro dela. O botão Modo unificado troca para o formato de patch, Inverter os lados troca a base da comparação e F8 / Shift+F8 pulam de alteração em alteração.
Histórico e faixa de alterações
O botão Histórico da barra do editor de código e da nota abre a lista de versões do arquivo aberto (a mesma seção da barra lateral). Ela reúne os commits e os salvamentos locais que o LightNote grava a cada Ctrl+S, então funciona também numa pasta que não é repositório. Cada linha traz o assunto, o autor, quando foi e quantas linhas entraram e saíram; a bolinha distingue um commit seu, um salvamento do próprio LightNote e um commit vindo de uma sessão de IA. Havendo alterações ainda não commitadas, elas são a primeira linha. Clicar numa versão mostra o que mudou nela; abrir a versão inteira, comparar com a atual e comparar duas versões marcadas ficam no botão direito.
Com o versionamento ativo, uma faixa colorida na margem marca as linhas alteradas desde o último commit — no editor de código e na nota, e ela acompanha o que você digita: some quando você desfaz de volta ao original, sem esperar o salvamento. Para desligá-la, use Exibir → Faixa de alterações; desligada ela não é só escondida — nada passa a ser calculado. Clicar na faixa mostra como o trecho estava, com Reverter este trecho (o Ctrl+Z desfaz), Copiar original e Ver no diff, que abre a comparação completa já posicionada naquela linha. Uma ressalva sobre o histórico local: ele é guardado por caminho, então renomear o arquivo perde os salvamentos locais dele — os commits do Git, não.
Snapshots e backup
No menu ⋯ do painel de versionamento (ou em Ferramentas):
- Criar snapshot: marca o estado atual com uma etiqueta de data/hora para você voltar a ele depois.
- Restaurar snapshot: escolha um snapshot e o que fazer — trazer os arquivos mantendo o histórico (recomendado), voltar o histórico àquele ponto, ou abrir como uma cópia separada.
- Exportar cópia (.zip): compacta o espaço de trabalho inteiro num arquivo autocontido (com o marcador de projeto embutido) para enviar ou guardar fora.
- Mover pasta do Espaço de Trabalho…: move a raiz no disco e ajusta os caminhos da sessão e do registro.
Revisar mudanças (checkpoints)
Ferramentas → Revisar mudanças… mostra, numa aba só, o diff agregado de tudo que mudou no espaço de trabalho desde uma base: a lista de arquivos adicionados/modificados/apagados à esquerda e o diff do arquivo selecionado à direita. Foi pensado para revisar o que uma sessão de CLI de IA alterou antes de aceitar o trabalho.
A base pode ser a última versão (HEAD) ou um checkpoint: crie um antes de começar uma tarefa (botão na própria aba) e compare depois contra ele. Os checkpoints não criam commits nem mexem no seu histórico. Requer o versionamento ativo na pasta.
Comentar em lote. Na revisão de uma sessão de IA, o botão Comentar (também no menu de contexto da lista de arquivos) anota um comentário sobre o arquivo selecionado — ancorado no trecho que você marcar. Os comentários se acumulam numa lista e só vão ao terminal da CLI quando você clica em Enviar à sessão, todos numa mensagem só. Isso é deliberado: enviar um de cada vez faz o agente corrigir um problema e quebrar outro, porque cada rodada não enxerga as demais críticas. Depois que ele revisa, os comentários continuam na lista para você conferir se foram atendidos; marque os resolvidos e o que sobrar entra no próximo envio. Se o agente reescrever a região comentada, o comentário fica esmaecido em vez de sumir. O envio é confirmado na barra de status, e uma sessão hibernada é retomada automaticamente para receber o lote.
Comparar arquivos (diff)
Ferramentas → Comparar dois arquivos… abre os dois lado a lado (dois editores) e marca as diferenças linha a linha. A comparação é somente leitura.
Os botões ◀ / ▶ (ou F8 / Shift+F8) pulam para a alteração anterior/seguinte. Pelo painel Git também dá para comparar um arquivo lado a lado com a versão salva (HEAD × disco).
Executar código (F5)
Ferramentas → Executar arquivo (F5) salva o arquivo atual e o roda
no terminal, conforme o interpretador registrado para a extensão. Os padrões cobrem
.py, .sh, .bat, .cmd e
.sql; você pode editar/adicionar interpretadores em
Configurações → Execução.
O comando é um template com {arquivo}, {pasta} e
{nome} — por exemplo, para Python: python {arquivo}. Também
dá para enviar só a seleção/linha atual ao terminal com
Ctrl+Shift+Enter. Nos Blocos, cada célula roda pelo
mesmo mecanismo.
O botão Executar tem uma seta para escolher e lembrar o terminal-alvo quando há mais de um terminal aberto.
Erros clicáveis. No painel de saída (F6), as referências a arquivo:linha viram links: Ctrl+clique ou duplo-clique abre o arquivo no ponto exato. Funciona com traceback do Python, pilha do Node, erros de compilador (gcc/clang/MSVC) e saída de linters. Só vira link o que existe de fato no disco — o resto continua sendo texto.
Percorrer os erros. No painel de saída, F8 pula para o próximo erro e Shift+F8 para o anterior (também há botões na barra do painel). O salto é circular: rola a saída até a referência, realça o trecho e abre o arquivo no ponto exato.
Terminal e CLIs de IA
Bolinha de status por comando. Ao lado de cada comando executado aparece uma bolinha: azul se teve sucesso, vermelha se deu erro (o tooltip mostra a hora, a duração e o código de saída). O LightNote ativa isso automaticamente no PowerShell e no Git Bash, sem alterar sua configuração — ligue/desligue em Configurações → Terminal → Integração de shell. Outros shells (cmd, WSL) ou comandos personalizados não mostram a bolinha.
Abra um terminal integrado (emulador VT completo, via ConPTY) com Ctrl+'
(no layout de teclado US, também Ctrl+`).
Ele vira uma aba e pode ser movido entre as áreas da janela. Os shells disponíveis e
as CLIs de IA detectadas no PATH (ex.: claude) são configuráveis
em Configurações → Terminal e Configurações → Assistentes de IA. No
menu Novo terminal, escolher uma CLI de IA abre essa CLI como o
terminal — a TUI/cores aparecem normalmente, e sair dela fecha a aba.
Agendar envio. No menu de contexto do terminal (botão direito), Agendar envio… permite mandar um Enter (ou um texto) mais tarde — útil para retomar uma CLI de IA quando o limite de uso reabre, sem ficar de olho. Escolha o gatilho: em um horário, após alguns minutos, a cada intervalo (recorrente) ou quando o terminal ficar ocioso. O computador é mantido acordado até o disparo. O agendamento vale enquanto a aba do terminal estiver aberta.
Você pode ter vários agendamentos ao mesmo tempo. Quando há algum, o item de menu passa a mostrar Envios agendados (N)… e abre um gerenciador: uma tabela com o terminal, o que será enviado, quando, e uma contagem regressiva ao vivo até o próximo disparo, com botões para Novo, Editar e Remover. Enquanto houver agendamentos, um indicador de relógio com a contagem aparece na barra de status (clique nele para abrir o gerenciador) e um pequeno relógio marca a aba do terminal que está armado.
Aviso de fim de turno da IA. Quando um terminal de CLI de IA fica em silêncio — sinal de que o agente terminou o turno — o LightNote avisa: um toast aparece (clique nele para focar aquele terminal) e a aba pisca algumas vezes e mantém um destaque até você abri-la. Se a janela estiver em segundo plano, o botão dela também pisca na barra de tarefas. O aviso vale só para terminais de CLI de IA e só quando a aba não está em foco. Ligue/desligue e ajuste o tempo de silêncio em Configurações → Terminal → Aviso de fim de turno da IA.
Os terminais voltam com a janela. Ao fechar e reabrir o espaço de trabalho, os terminais de shell comum (Prompt, PowerShell, Bash) são reabertos — e na pasta em que você estava, não naquela em que o terminal abriu. O conteúdo da tela não volta, mas o histórico de comandos é do próprio shell e continua lá: a seta ↑ funciona normalmente. Sessões de assistente de IA ficam de fora e continuam sendo oferecidas à parte, porque um terminal novo não é a mesma conversa. Também não voltam variáveis de ambiente nem ambientes ativados à mão naquela sessão (um venv, por exemplo): o terminal reabre na pasta certa, mas é um shell novo.
Assistente de IA na seleção (Ctrl+K / Ctrl+I)
Perguntar e editar com IA
IA padrão. No topo de Configurações → Assistentes de IA, a IA padrão escolhe o assistente usado pelo Ctrl+K/Ctrl+I, pelo chat Chat com IA (que você pode trocar por sessão) e pelas tarefas automáticas (reescrever a pergunta, resumir, resumo de áudio, gerar contexto). Ela lista tanto as CLIs quanto os provedores de API. Já a transcrição de áudio e os embeddings têm provedor próprio, e o LightNote sugere um modelo conforme o provedor escolhido.
Pressione Ctrl+K (Perguntar à IA) ou Ctrl+I (Editar com IA) no editor — com ou sem seleção — para abrir um popup flutuante estilo "inline chat": o campo de prompt já vem com a seleção abaixo de uma linha em branco; digite a instrução por cima e envie com Ctrl+Enter. No popup você escolhe a IA (a padrão vem pré-selecionada) e o modo de resultado: substituir a seleção vendo um diff (Original × Sugestão, com Aceitar / Copiar / Rejeitar) ou apenas exibir a resposta como texto.
O LightNote roda a CLI de IA em modo "one-shot" (sem abrir terminal). As CLIs e a IA padrão ficam em Configurações → Assistentes de IA.
Conectar um modelo
Modelos por API. Além das CLIs locais, você pode cadastrar modelos de LLM por API compatível com OpenAI (OpenAI, Groq, DeepSeek, OpenRouter, Gemini, Anthropic, instâncias locais como Ollama/LM Studio…) em Configurações → Assistentes de IA. Escolha um provedor do catálogo (já com a URL pronta), cole a chave (guardada codificada só nesta máquina), use Buscar modelos… e Testar. Os modelos cadastrados aparecem no mesmo seletor do Ctrl+K, ao lado das CLIs.
Conectar em um passo. O caminho normal não é preencher a tabela: em Configurações → Assistentes de IA, clique em Conectar uma IA…, escolha o provedor (a lista marca quem tem plano gratuito e quem roda no seu computador, sem chave), siga os três passos, abra a página de chaves no botão e cole a chave. O LightNote preenche o endereço e o modelo sozinho e testa a conexão antes de salvar — chave errada aparece ali, não no meio de uma conversa. A lista de cima mostra o que já está conectado e, no que falta algo, o que falta (“falta colar a chave”, “falta escolher o modelo”); um duplo clique reabre o assistente naquele provedor.
Ajustes finos. Endereço, modelo, permissão de MCP, comandos das CLIs, transcrição de áudio e embeddings continuam todos disponíveis em Avançado, no fim da página — e dentro do próprio assistente, em Opções avançadas, dá para mudar a URL base e o modelo antes de conectar. Nada foi removido: só saiu da frente de quem está começando. Nos embeddings há ainda o campo Dimensões, opcional: alguns modelos aceitam devolver um vetor menor (512 em vez de 1536), o que corta o cache pela metade com pouca perda. Deixe em (padrão do modelo) se não souber — nem todo provedor aceita o parâmetro. Trocar o valor invalida o cache: vetores de dimensões diferentes não se comparam, então ele é descartado e reconstruído na busca seguinte, o que custa novas chamadas.
Nem toda falha é igual. O LightNote separa as classes porque elas pedem gestos opostos. Sobrecarga do provedor e limite de ritmo passam sozinhas: o app repete a chamada por conta própria, respeitando o tempo que o provedor pedir, e você só vê o erro se nem assim funcionar. Saldo ou limite de gastos não passa com repetição nenhuma — a mensagem diz isso, para você não ficar tentando. Conversa longa demais pede sessão nova, não outro modelo. E a falha do modelo — aposentado, fora da sua conta, fora do seu plano, ou aceitou a chamada e não respondeu — é a única que trocar de modelo resolve. Quando o tempo pedido é longo demais para esperar, a mensagem diz quantos segundos ele pediu, em vez de deixar a janela parada.
Trocar o modelo sozinho. Marque Trocar de modelo automaticamente quando o atual falhar e o LightNote tenta, na ordem mostrada ali mesmo, os modelos recomendados para aquele provedor. Vem desmarcado de propósito: cada tentativa é uma chamada cobrada na sua conta. A alternativa nunca custa mais que o modelo que você escolheu — a lista é publicada do mais caro ao mais barato e o app só desce por ela; um modelo personalizado, que não está na lista, cai direto no mais barato dela. Só a falha definitiva fica gravada no provedor; quando foi a rede que falhou, a troca vale só para aquela chamada e a sua escolha continua valendo. A troca nunca é silenciosa: uma notificação diz qual modelo respondeu e se a mudança ficou gravada.
E o aviso que chega antes da falha. A troca automática só age depois que a chamada falhou — mas o catálogo de modelos, que o LightNote consulta sozinho, costuma saber da aposentadoria antes disso. Quando o modelo que o próprio LightNote cadastrou para um provedor sai do catálogo, um aviso diz isso, e em Configurações → Assistentes de IA aparece um botão para passar para o substituto — que, pela mesma regra, nunca é mais caro. O aviso vale só para o modelo que o app escolheu e você nunca tocou: um modelo que você digitou é escolha sua, e o LightNote não se mete nela.
Quando nada responde. O LightNote diz o que houve e oferece trocar o modelo, usar outro assistente ou desativar esse provedor até você resolver. Um provedor desativado (coluna Ativo da tabela, em Avançado) some das listas sem perder a chave nem o resto da configuração. Na lista de assistentes cada um diz se é local ou na nuvem — escolher um na nuvem faz o texto enviado sair da sua máquina.
Sem chave: LLM local
Sem nenhuma IA ainda? Ao usar Ctrl+K sem nenhum assistente conectado, o LightNote explica e oferece conectar um na hora — e, assim que você conecta, a ação que você pediu continua, sem precisar repetir o atalho.
LLM local (sem chave). Provedores locais — Ollama, LM Studio, llama.cpp — dispensam chave de API: escolha um deles em Adicionar (o seletor mostra se o servidor está em execução) e use Buscar modelos… para escolher entre os modelos que você já baixou. Se o Ollama não estiver instalado, o LightNote oferece instalá-lo por você. Ele já vem cadastrado na primeira execução — falta só escolher o modelo. Como um modelo local pode demorar bem mais para responder (sobretudo na primeira geração, quando o modelo é carregado), o LightNote espera muito mais por ele do que por um serviço na nuvem. Nenhum texto seu sai da máquina.
Aceitar, prompts e onde as ações vivem
Aceitar por trecho. Quando o resultado vem em modo diff, você não precisa aceitar tudo: cada bloco alterado tem uma caixa para incluir ou não aquela mudança, e o texto final é remontado só com os trechos marcados. O prompt também leva contexto automático do arquivo (caminho, linguagem e as linhas ao redor da seleção), para a IA responder com mais precisão sem você colar nada.
Biblioteca de prompts. IA → Biblioteca de prompts… guarda prompts reutilizáveis como arquivos .md numa pasta Prompts/ do seu espaço de trabalho — formato aberto, versionável no Git e parte do seu segundo cérebro. O seletor traz busca, pré-visualização e um botão para criar um prompt novo. Ao escolher um, os campos {seleção}, {arquivo}, {pasta}, {nome} e {linguagem} são preenchidos com o contexto do editor atual (variáveis suas são preservadas), e o texto é injetado no campo do Ctrl+K ou enviado ao terminal de IA ativo, sem submeter.
Não só no editor de código. As ações de IA (Ctrl+K / Ctrl+I e o menu de contexto) valem também no editor de Markdown, na nota embutida das Tarefas e no editor de consultas SQL do banco — em cada um o popup abre sobre o cursor e aplica o resultado no lugar.
Todas as ações de IA vivem no menu IA (no botão ☰ e no botão da varinha, na barra de atividades): Perguntar à IA (Ctrl+K), Editar com IA (Ctrl+I), Sessões de IA, Chat com IA, Biblioteca de prompts, Gerar arquivo de contexto do projeto, Ativar IA nesta pasta e Configurar assistentes de IA.
A janela fica aberta enquanto você escreve. Ela não se fecha quando você clica no editor — dá para reler o código ou selecionar outro trecho sem perder a instrução já digitada. Fecham-na o Esc, o ✕ da própria janela e as ações de resultado (Aceitar/Rejeitar). Ao trocar de aba ela se recolhe guardando o que estava escrito: volte ao mesmo arquivo, aperte Ctrl+K e a instrução reaparece onde parou.
Sessões de IA
Sessões e cópia isolada
IA → Sessões de IA… abre um cockpit que lista, num cartão por sessão, cada terminal de CLI de IA aberto em qualquer janela do LightNote — com uma bolinha colorida do estado, o nome da CLI, a janela e selos para o que precisa de atenção (envios agendados, cópia isolada). O duplo clique foca o terminal; o menu ⋯ do cartão (ou o botão direito) traz Revisar as mudanças daquela sessão (abre a tela de revisão já com a base no checkpoint criado quando a sessão começou — veja Revisar mudanças) e Agendar um envio. É a forma de acompanhar várias sessões de "vibe coding" ao mesmo tempo sem se perder entre as janelas.
Ao abrir uma CLI de IA como terminal num repositório Git, o LightNote grava automaticamente um checkpoint (rótulo "Sessão …"), para que você possa depois ver e reverter exatamente o que aquela sessão alterou. O recurso pode ser desligado em Configurações → Geral → Recursos.
Cópia isolada (worktree): em pastas com Git, o LightNote pode rodar o assistente de IA numa cópia isolada da pasta (um branch próprio), sem alterar os arquivos que você edita à mão. Na primeira vez ele pergunta; depois é automático (você liga/desliga por pasta em Configuração do Espaço de Trabalho → Integrações). Um selo cópia isolada marca a sessão (o branch e o caminho ficam na dica ao pousar o mouse), e os itens Mesclar… (traz as mudanças para a sua pasta — se você tiver alterações pendentes, ele pergunta antes) e Descartar… (joga fora a cópia e o branch) cuidam do fim do ciclo.
Ocioso, contexto e hibernar
Aviso de sessão ociosa. Quando uma CLI de IA fica ociosa (terminou ou está aguardando você), o LightNote mostra uma notificação; clicar nela abre a revisão das mudanças daquela sessão. Assim você pode iniciar a tarefa e sair de perto. Pode ser desligado em Configurações → Terminal.
Arquivo de contexto do projeto. Ao abrir uma CLI de IA numa pasta sem um arquivo de contexto (CLAUDE.md ou AGENTS.md), o LightNote oferece gerar um — e você pode fazê-lo a qualquer momento por Ferramentas → Gerar arquivo de contexto do projeto…. Um bom arquivo de contexto descreve a estrutura e as convenções do projeto e ajuda a IA a errar menos, sem você reexplicar tudo a cada sessão. Se houver um provedor de IA configurado, o conteúdo é gerado por ele; senão, um esqueleto para você preencher.
Hibernar sessões ociosas. Uma CLI de IA parada continua ocupando memória (a conversa e o cliente do modelo). Em Configurações → Terminal você pode definir um tempo de silêncio após o qual o LightNote encerra o processo e o retoma sozinho quando você voltar àquela aba — o histórico do terminal continua na tela. Vem ligado, com 30 minutos: três sessões paradas do Claude Code chegaram a segurar mais de 1 GB na medição; e só vale para sessões em cópia isolada cujas CLIs sabem retomar a conversa da pasta (hoje Claude Code e Antigravity), porque sem isso a retomada traria a conversa de outra sessão. Uma sessão com envio agendado nunca hiberna. E o que volta é a conversa, não a tela da ferramenta: um texto digitado e ainda não enviado se perde.
Atividade e busca por significado
Aba Atividade. A tabela mostra o que está rodando agora; a aba Atividade guarda o histórico: cada vez que um agente terminou o turno, começou numa cópia isolada ou hibernou, com a data e um trecho da última resposta. Os itens não lidos aparecem em negrito e a contagem também surge no menu da bandeja — assim quem saiu de perto do computador vê o que perdeu, já que as notificações são passágeiras. Abrir a aba marca tudo como lido; um clique duplo leva de volta à sessão. O encerramento da sessão também vira evento — inclusive quando a CLI sai sozinha —, então uma sessão que morreu enquanto você estava longe deixa rastro em vez de simplesmente sumir. Se a sessão do evento já não estiver aberta, o clique duplo diz isso em vez de não fazer nada.
Buscar por significado. Quando a busca não encontra nenhuma ocorrência literal, aparece ao lado do resultado a opção Buscar por significado: em vez de casar palavras, o LightNote procura as notas que falam do mesmo assunto — útil quando você lembra da ideia, mas não do termo que escreveu. Também há um alternador ~ ao lado dos outros, para ir direto. Neste modo, regex, palavra inteira, maiúsculas, filtro de arquivos e o Substituir somem: nenhum deles se aplica a uma busca por semelhança. O recurso depende do reforço semântico (embeddings) em Configurações → Geral → Recursos; sem ele, o botão leva à tela para ligá-lo. Na primeira vez em cada pasta, o LightNote diz quantos trechos precisará indexar e pede confirmação — essa indexação é cobrada pelo seu provedor e acontece uma vez só; depois, cada busca custa apenas a consulta.
Chat com IA
Como funciona
IA → Chat com IA… abre um chat que responde usando as suas próprias notas como contexto. Em vez de mandar tudo para a nuvem, o LightNote recupera os trechos mais relevantes do seu vault localmente (via ripgrep, sem depender de embeddings nem de serviço externo), monta a pergunta com esses trechos e a envia a um provedor de IA por API que você tenha cadastrado. A resposta vem com as notas-fonte como citações clicáveis — clique para abrir a nota. Ótimo para "conversar com o seu segundo cérebro" e reencontrar o que você já anotou. O histórico da conversa fica só na memória (não é salvo); o recurso pode ser desligado em Configurações → Geral → Recursos.
A janela. Os seletores ficam numa faixa única no topo: a IA, a pasta das notas e — quando há um editor de texto ativo — o contexto; à direita ficam as duas permissões (Ferramentas e Permitir alterações) e o botão +, que começa uma conversa nova. Antes da primeira pergunta, a tela diz sobre o que a janela vai responder e oferece atalhos de um clique, como Resumir esta pasta. No campo de pergunta, Enter envia e Shift+Enter quebra a linha; enquanto a resposta vem, o botão de envio vira Parar.
Ferramentas e permissões
Deixar a IA usar ferramentas. A caixa Permitir alterações muda o funcionamento: em vez de responder só com os trechos que a busca por termos recuperou, o modelo passa a procurar sozinho — ler um arquivo, pesquisar notas, listar tarefas — e só então responder. Ao ligar, o LightNote testa na hora se o modelo escolhido sabe chamar ferramentas: muitos provedores aceitam o pedido e simplesmente ignoram as ferramentas, o que sem essa verificação viraria uma resposta inventada com cara de consultada. O teste é lembrado por sete dias para cada par provedor+modelo. Exige um provedor por API (uma CLI local não tem como receber ferramentas). No fim da resposta aparece a lista do que foi efetivamente usado, para você julgar a resposta em vez de confiar nela. Se o veredito for negativo — o provedor pode simplesmente ter ficado fora do ar naquele instante —, aparece um botão Verificar de novo ao lado da mensagem, que refaz o teste ignorando o que ficou guardado.
Deixar a IA alterar as suas coisas. A segunda caixa, Permitir alterações, é um passo à parte e vem desligada. Com ela, a IA também pode criar notas e tarefas, mudar propriedades e anotar na nota do dia — mas nada acontece sem a sua confirmação: a alteração aparece na conversa em português claro ("criar a tarefa Comprar pão"), com Permitir e Recusar. Recusar não encerra a conversa; o modelo é avisado e segue explicando ou propondo outro caminho. Ler nunca pede confirmação — só alterar. Ficam de fora, de propósito, sobrescrever arquivos quaisquer e acessar a rede: enquanto a IA só lê, um texto mal-intencionado que chegue numa nota sincronizada de fora não tem como virar mudança no seu disco. Quando a alteração é uma anotação na nota do dia, o pedido também diz em que pasta ela vai cair — é a única escrita cujo arquivo de destino não está no que a IA pediu.
Sobre o que ele responde
Notas ou o arquivo aberto. O combo Contexto:, no topo da janela, escolhe sobre o que a conversa é: Notas do vault (o padrão, descrito abaixo) ou Editor atual — que responde sobre o arquivo aberto no editor em vez do vault, usando a seleção e o trecho ao redor (ou o arquivo inteiro, com a caixa Arquivo inteiro). Assim o mesmo chat serve para conversar sobre as suas notas e sobre o código que você está editando, em vários turnos. O escopo Editor atual só aparece quando há um editor de texto ativo. E, no assistente rápido (Ctrl+K), o resultado traz um botão Continuar no chat → que reabre esta janela já no escopo Editor atual, semeada com a pergunta e a resposta daquela rodada — para aprofundar sem recomeçar.
De quais notas? A janela é única e responde sobre uma pasta por vez — o combo Notas de:, ao lado do seletor de IA na faixa do topo, mostra e escolhe qual. Ele já vem apontado para a pasta da janela de onde você abriu o chat e lista as pastas abertas agora, seguidas das recentes; Escolher pasta… aponta para qualquer outra. Trocar a pasta vale para as próximas perguntas — inclusive para perguntar às notas de um projeto enquanto você trabalha em outro. Escolhida à mão, a pasta continua valendo até você trocá-la de novo (reabrir a janela não puxa o escopo de volta). Enquanto uma pergunta está em andamento — inclusive parada esperando a sua confirmação —, os seletores de IA, de contexto e de pasta ficam travados: a resposta que está vindo pertence ao modelo e à pasta de quando você perguntou.
Como perguntar. A recuperação é por assunto, não por instrução: o LightNote extrai as palavras da sua pergunta e procura as notas que as contêm. Cite um tema que apareça nas notas ("o que anotei sobre Postgres?") em vez de um pedido genérico ("faça um resumo") — este último não tem nenhuma palavra de conteúdo para buscar, então nada é recuperado e o chat avisa que a resposta não usou as suas notas. Só notas .md/.markdown são lidas; numa pasta sem nenhuma delas o chat avisa e não gasta uma chamada de IA.
Busca melhor, resumo e reescrita. A recuperação usa um índice local com ranqueamento BM25 que ignora acentos ("configuração" acha "configuracao") e funciona também em idiomas sem espaço entre palavras (japonês, chinês, coreano) — o ripgrep é o reforço quando o índice ainda está sendo montado. O botão Resumir esta pasta — e o item Resumir com IA… no menu de contexto de qualquer pasta do explorador — lê as notas em lotes e devolve um documento. E, em Configurações → Geral → Recursos, a opção Reescrever a pergunta com IA amplia a sua pergunta em palavras-chave antes de buscar (custa uma chamada de API por pergunta).
Chave e conversas
Basta uma chave. Na primeira execução, o LightNote já deixa OpenAI, Google Gemini e Anthropic (Claude) cadastrados em Configurações → Assistentes de IA — só falta colar a sua chave de API no provedor que você usa. Se nenhum provedor tiver chave, a janela mostra um botão Configurar agora que abre essa tela direto.
Conversas ficam guardadas. O botão de relógio no topo abre a lista de conversas anteriores daquela pasta: clique numa para voltar a ela. Nova conversa arquiva a atual em vez de apagá-la, e o botão direito na lista apaga uma conversa de vez (com confirmação). As conversas são guardadas por pasta — trocar a pasta de notas troca a lista.
O que fazer com a resposta
O que fazer com uma resposta. Sob cada resposta há Copiar (põe o texto em Markdown na área de transferência, com a formatação intacta) e Capturar na nota (manda a resposta para a nota do dia, junto com links para as notas citadas). No menu Ações da conversa ficam Copiar conversa, Salvar conversa como nota… (grava um .md na pasta consultada), Refazer última resposta e Editar última pergunta.
Anexar um arquivo. Quando a busca não acha o que você tinha em mente, use o botão + para anexar um arquivo: ele entra sempre na pergunta, fora da disputa da busca. Vale nota, código, texto e PDF (o texto do PDF é extraído); um binário é recusado na hora, em vez de virar lixo no contexto. O anexo aparece como uma pílula (clique para desanexar) e some ao começar uma conversa nova. Nos provedores que suportam, a resposta também vai aparecendo aos poucos, à medida que o modelo escreve.
Memória do assistente. No menu Ações da conversa (o botão ☰ no topo), Memória do assistente… abre — criando na primeira vez — a nota Memória.md na raiz da pasta selecionada. Tudo o que estiver nela entra em toda pergunta feita sobre aquela pasta, antes dos trechos encontrados: as suas preferências, as decisões que você já tomou, o que descartou e por quê. É um .md comum — edite quando quiser, versione com Git, apague para desligar a memória. Com as ferramentas de escrita ligadas, o assistente também pode propor guardar um fato ali, e como toda escrita ele espera a sua autorização.
Resumir uma pasta. Vale para o espaço inteiro ou para qualquer subpasta: clique com o botão direito nela no explorador e escolha Resumir com IA…. Antes de gastar, o LightNote diz quantas notas serão lidas e quantas chamadas de IA isso fará — cada uma cobrada pelo seu provedor — e deixa você escolher a forma: Panorama, um texto corrido, ou Consolidar conhecimento, com seções fixas (decisões, pendências, ideias, contradições e perguntas em aberto; a seção sem conteúdo é omitida em vez de preenchida com invenção). Se a pasta tiver mais notas do que cabem no teto de custo, a resposta diz quantas ficaram de fora. No fim, Salvar como nota grava o resumo dentro da pasta resumida, com a data e o número de notas no cabeçalho, e sem nunca sobrescrever um resumo anterior.
Testar API HTTP (.lnh)
Ferramentas → Novo teste de API (.lnh)… abre um cliente HTTP gravável num
arquivo .lnh. Um arquivo representa um endpoint (método, URL, cabeçalhos
e corpo) e guarda vários testes na lista à esquerda — cada teste com seus
valores para as variáveis {nome} usadas na URL, nos cabeçalhos e no
corpo, além do resultado da última execução (status, tempo, data, cabeçalhos e
corpo da resposta). Mostra também o comando curl equivalente. A mesma
operação pontual está disponível por CLI (http) e MCP
(http_request).
Ctrl+Enter envia a requisição.
Importar e exportar OpenAPI. O botão de setas no topo da lista de
testes abre Importar OpenAPI… e Exportar OpenAPI…. A importação lê uma
especificação em YAML ou JSON nas três gerações em uso — Swagger 2.0,
OpenAPI 3.0 e 3.1 — e monta o teste sozinha: os {parâmetros}
do caminho já são a mesma sintaxe das variáveis {nome} do .lnh,
os exemplos declarados viram os valores do teste, o esquema de segurança vira o
cabeçalho Authorization e cada servidor declarado vira um teste próprio
(homologação e produção lado a lado). Como um .lnh guarda um
endpoint, uma especificação com várias operações pergunta qual importar — ou grava
todas de uma vez, um arquivo .lnh por operação.
A exportação faz o caminho inverso e gera uma especificação OpenAPI 3.0.3 a partir
do arquivo: servidores, parâmetros e corpo saem do template, e as respostas de exemplo
saem das execuções registradas. É um esqueleto, não um contrato completo — o
.lnh descreve chamadas, então tipos, descrições e esquemas não são
reconstruídos. Os seus testes viajam no campo x-lightnote-tests, e por
isso voltam intactos ao reimportar o arquivo.
Importar um comando curl. No mesmo botão, Importar comando
curl… abre uma caixa para colar — é de lá que o comando vem, não do disco, e o
campo já vem preenchido quando há um curl na área de transferência.
Entende os três dialetos em que o mesmo comando circula: o do Copiar como cURL
do Chrome/Firefox (aspas simples), o do Copy as cURL (cmd) no Windows (com
^) e o exemplo de documentação quebrado com \. O método sai
do -X — ou é deduzido: POST quando há corpo, GET quando não há.
A importação é literal: nenhum valor vira variável {nome}
sozinho, porque adivinhar qual token é segredo erraria. Alguns casos avisam em vez de
mentir — corpo vindo de arquivo (-d @arquivo) não pode ser lido, e envio
multipart (-F) não é reproduzido fielmente, então os campos vão para o
corpo em texto para você ajustar.
Banco de dados (.lnc)
A conexão
Uma conexão é um arquivo .lnc (LightNote Connection) no próprio
espaço de trabalho — versionável no Git e portável entre máquinas. Crie por
Novo → Nova conexão (ou abra um .lnc existente): isso abre a
visão de Banco de Dados, com a barra de status da conexão (Conectar /
Desconectar / Reconectar / Editar), a árvore de Esquema (esquemas → tabelas
→ colunas, carregada sob demanda) e abas .sql internas. Os arquivos
.sql abertos e os recentes ficam guardados dentro do
.lnc, então a visão reabre no estado anterior. Se não havia nada
aberto, ela começa com uma consulta vazia (sem título) onde você já pode
digitar SQL; ao salvar (Ctrl+S) o LightNote pede apenas um nome e grava
o arquivo dentro da pasta do projeto (sem diálogo de "salvar em qualquer
lugar"). O botão + Aba abre uma nova consulta vazia, deixa abrir um arquivo
(o seletor abre na pasta do projeto) ou escolher um recente / qualquer
.sql da pasta do projeto.
Um .sql aberto direto pela árvore é só código (realce SQL,
sem conexão).
Drivers: SQLite e DuckDB (arquivo) nativos; PostgreSQL, MySQL/MariaDB,
SQL Server e genérico via ODBC; Oracle nativo (sem ODBC). O
SQL Server usa o driver msodbcsql da Microsoft (instale-o na máquina) e
oferece Autenticação do Windows ou usuário/senha, além das opções de
criptografia do canal (Encrypt / confiar no certificado). Para o Oracle,
informe a pasta do Oracle Instant Client em Configurações gerais → Banco
de dados — ele é carregado em tempo de execução, sem precisar instalar nada. A
conexão Oracle tem quatro modos: Service Name (host/porta/serviço),
SID (host/porta/SID), Nome TNS (alias do tnsnames.ora na
pasta do client) e Descritor TNS completo (colado num campo de texto).
Senha: marque Armazenar senha para cifrá-la dentro do próprio
.lnc (cripto portável, abre em outra máquina); desmarcado, a senha
não é guardada e é perguntada a cada conexão. A cifragem usa uma
Frase-Segura por espaço de trabalho, definida em
Ajuda → Configurar Frase-Segura; guarde-a, pois sem ela a
senha não pode ser aberta em outro lugar. A Frase fica em cache só na máquina local
(nunca vai para o Git).
Marque Conectar ao abrir para que a conexão se abra automaticamente ao
abrir o .lnc. A conexão automática é silenciosa: se a senha
precisar ser digitada (modo perguntar, ou cifrada sem a Frase-Segura em cache na
máquina), o arquivo abre desconectado, sem interromper.
Executar e ver o resultado
Executar: Ctrl+Enter roda a instrução sob o cursor e Alt+X roda o script inteiro; os resultados aparecem paginados, cada um numa aba Resultado com uma barra de ações no rodapé: Buscar próximo bloco, Congelar o resultado, Count total, trocar o Limite de linhas, Atualizar (re-executa), Ver/Copiar SQL, Exportar... e Gerar SQL a partir da linha selecionada. Um NULL é mostrado em itálico esmaecido, distinto de um texto vazio, e os números ficam alinhados à direita; ao selecionar várias células, o rodapé mostra a contagem da seleção e, quando são numéricas, a soma e a média.
Congelar o resultado: lê o resultado inteiro do banco de uma vez só e o guarda numa tabela local (em disco, se não couber na memória). A partir daí a grade rola sem consultar o banco, a contagem de linhas passa a ser exata (sem precisar do Count total), clicar num cabeçalho ordena (de novo inverte; um terceiro clique volta à ordem em que o banco entregou) e a exportação também sai da cópia local. A ordenação pelo cabeçalho vale até 100 mil linhas; acima disso ela é recusada, com o motivo no tooltip do cabeçalho, porque cada página teria de reordenar a cópia inteira e percorrer a grade voltaria a levar minutos. Um resultado que já veio inteiro na primeira página ordena sem precisar congelar: as linhas já estão em memória. O que não se ordena é a primeira parte de um resultado ainda paginado — o cabeçalho estaria afirmando uma ordem que vale só para o que está na tela. O gráfico e a tabela dinâmica passam a valer sobre o resultado inteiro — inclusive em bancos onde o gráfico não existia. Se o congelamento parar antes do fim (você clicou em Parar ou o teto foi atingido), as linhas continuam locais, mas o gráfico e a tabela dinâmica seguem no servidor: somar sobre parte do resultado daria um número errado — e ordenar a grade ordena apenas as linhas trazidas, não o resultado inteiro. Atualizar descongela e executa a consulta de novo. Independentemente de congelar, as páginas que já passaram pela grade ficam guardadas localmente: rolar de volta a uma delas não consulta o banco de novo. Só um congelamento roda por vez: com dois resultados abertos, clicar em Congelar o resultado no outro é recusado com o motivo, em vez de interromper o que está em curso — para parar o que roda, use o Parar na aba dele.
Grade de resultados: um NULL aparece em itálico esmaecido,
distinto de um texto vazio, e os números ficam alinhados à direita; ao selecionar
várias células, o rodapé mostra a contagem da seleção e, quando são numéricas, a
soma e a média. O botão Painel de valor na
barra do rodapé (ou Ver valor no painel no menu de contexto) abre um painel
lateral com o valor completo da célula selecionada, sem corte, com um botão
Formatar que embeleza JSON/XML só na exibição. No menu de contexto de uma
célula, Filtrar por este valor / Excluir este valor reexecutam a
consulta com um WHERE pela célula, e Ir para o registro
referenciado segue a chave estrangeira da coluna e consulta a tabela-pai pelo
valor da célula.
Gráfico e tabela dinâmica: onde a conta é feita. O rodapé da grade traz um seletor entre Dados locais e Tabela inteira (no servidor), e o botão mostra qual está valendo. Quando o resultado coube inteiro na primeira página, o padrão é local: o LightNote agrega sobre o resultado que já está na tela, sem voltar ao banco a cada ajuste de eixo, de agregado ou de faixa — e, como o motor local é o DuckDB, o gráfico passa a existir também em Oracle, SQL Server, PostgreSQL e MySQL, onde o SQL dele não roda no servidor. Quando o resultado veio truncado, a opção local fica indisponível com o motivo: agregar sobre uma amostra daria um número errado, e avisar do corte não protegeria ninguém, porque o que se lê num gráfico é a altura da barra. A opção do servidor agrega sobre a consulta inteira, com uma consulta por ajuste. Colunas numéricas que o banco entrega como texto — o caso do NUMBER do Oracle — são reconhecidas como números; identificadores com zero à esquerda, como 01310, continuam texto.
Plano de execução: o botão Plano de execução na barra de
ferramentas mostra o EXPLAIN da instrução sob o cursor (SQLite, DuckDB,
PostgreSQL e MySQL); nos bancos que não expõem o plano numa única instrução
(SQL Server, Oracle) o botão fica desabilitado, com o motivo na dica.
O esquema
Propriedades do objeto: dê um duplo clique numa tabela na árvore
(ou F4, ou Propriedades no menu de contexto) para abrir uma aba com a
estrutura do objeto, em quatro sub-abas: Colunas (nº, nome, tipo, se aceita
nulo, valor padrão e um ícone de chave nas colunas da chave primária),
Chaves (chaves primárias, estrangeiras, únicas e checks; um duplo
clique numa chave estrangeira abre a tabela referenciada), Índices e
DDL — o CREATE TABLE do objeto, para copiar, salvar como
.sql ou abrir numa aba editável. Quando o banco não fornece o DDL
pronto (PostgreSQL e SQL Server não têm esse comando) — ou quando o comando de DDL
é negado por falta de permissão —, o LightNote o reconstrói a partir dos
metadados e diz isso claramente na aba. Se nem o catálogo de colunas puder ser
lido (sem permissão ou catálogo indisponível), não há do que reconstruir: a aba
avisa em vez de ficar silenciosamente vazia. O menu de contexto da tabela também
traz Copiar DDL sem abrir a aba.
Árvore de esquema: a árvore de Esquema separa Tabelas de Views (cada uma com seu ícone) e marca com um ícone de chave as colunas que fazem parte da chave primária. A caixa de filtro peneira entre os objetos já carregados (o carregamento sob demanda não é forçado só para filtrar).
Explorar o esquema: clique
com o botão direito numa tabela para Propriedades, Copiar DDL,
Inserir SELECT no editor,
Visualizar dados, Contar linhas, Copiar nome qualificado ou
abrir o submenu Gerar SQL → INSERT/UPDATE/MERGE: uma tela lista as
colunas da tabela para você marcar Incluir e Chave, mostra um preview
ao vivo e joga o comando no editor (o MERGE sai em ANSI; se o driver não suportar,
um aviso aparece). Direto na grade de resultados, o botão Gerar SQL do rodapé
cria INSERT/UPDATE/DELETE já preenchido com os valores da linha
selecionada (disponível quando a consulta é um SELECT de uma única
tabela). Os nomes de tabelas e colunas que você navega na árvore também
passam a aparecer no autocomplete (Ctrl+Espaço) dos editores
.sql da conexão, sem consultas extras ao banco.
Exportar, variáveis e transações
Exportar resultado: clique com o botão direito na grade de resultados e
escolha Exportar resultado... para gravar em CSV (delimitador,
caractere de quote, quotar sempre, linha de cabeçalho, texto para NULL),
JSON Lines ou SQL (comandos INSERT com nome de tabela), com
limite de linhas opcional. A exportação percorre a consulta inteira em
streaming (re-busca paginada), não só o que está visível na tela.
Variáveis de script: use @set nome = valor numa linha do
script para definir uma variável — o prefixo @ a mantém fora do banco
(não colide com o SET real de Postgres/DuckDB/SQL Server). Referências
:nome são substituídas antes de executar (fora de strings e comentários;
o cast ::tipo e binds como :1 ficam intactos); um
:nome sem valor abre um prompt antes de rodar. O botão Variáveis na
barra de ferramentas abre a tela das variáveis já definidas (editar/adicionar/remover).
Histórico de consultas: o botão Histórico abre uma janela com as
últimas instruções executadas com sucesso nesta conexão, em colunas
SQL / Quando / Duração / Linhas. Selecione uma para Re-executar,
Inserir no editor ou Copiar (duplo-clique insere), ou use
Limpar histórico. Ele fica guardado só na máquina local (não vai para o
Git nem para o .lnc).
Transações: o botão Autocommit (ligado por padrão) e os botões Commit/Rollback ficam na barra de ferramentas. Com o autocommit desligado, as alterações ficam pendentes até você confirmar (Commit) ou descartar (Rollback); desconectar com uma transação aberta pergunta o que fazer.
Conexão SSH (.lns)
Uma conexão SSH é um arquivo .lns no espaço de trabalho —
versionável e portável, como o .lnc. Crie por Novo → Nova conexão
SSH: a aba abre um terminal SSH integrado (via ssh.exe do
Windows) e uma mini-barra de arquivos remotos (SFTP).
O navegador de arquivos mostra uma pasta por vez (estilo MobaXterm/WinSCP):
a primeira linha é sempre .. para subir um nível, e um duplo-clique numa
pasta entra nela. A barra de caminho no topo aceita digitar um caminho remoto
e Enter para ir direto. O botão Sincronizar com o terminal faz a
pasta exibida acompanhar o diretório atual da sessão SSH (o que você navegou com
cd no terminal). O menu de contexto (botão direito) traz Abrir no
editor (baixa o arquivo, abre numa aba e reenvia ao salvar), Baixar,
Enviar, Nova pasta, Renomear, Excluir e Permissões
(chmod). Você também pode arrastar arquivos do Explorer para o painel para
enviá-los à pasta atual.
A senha pode ser cifrada dentro do .lns com a
Frase-Segura do espaço de trabalho ou perguntada a cada
conexão. Chaves SSH do agente/perfil do Windows funcionam normalmente, pois a
conexão usa o cliente OpenSSH do sistema.
A opção Conectar ao abrir (no diálogo da conexão) inicia a sessão SSH
automaticamente ao abrir o .lns. Se a senha não estiver guardada, o
próprio terminal a pede ao conectar.
Segurança: Frase-Segura, PIN e Markdown Seguro
A Frase-Segura é definida por espaço de trabalho em Ajuda → Configurar
Frase-Segura… e é a chave de tudo que o LightNote cifra: senhas de conexões
(.lnc/.lns), células de senha da
Tabela personalizada e os arquivos
.lne. A criptografia é forte e portável (Argon2id +
XChaCha20-Poly1305): o arquivo cifrado abre em outra máquina, bastando recadastrar
a mesma Frase lá. Guarde-a bem: sem ela, os dados cifrados não podem ser
recuperados. A Frase fica em cache só na máquina local (nunca vai para o Git).
Para trocar a Frase-Segura, abra a mesma tela e edite o campo da Frase
(que vem preenchido com a atual). Ao confirmar, o LightNote recifra
automaticamente todos os dados seguros do espaço — senhas de
.lnc/.lns, o conteúdo dos .lne e as células
de senha das Tabelas personalizadas (.lnd) — da Frase antiga para a
nova. A decifragem é tudo ou nada: se um único item falhar ao decifrar,
nada é alterado e o LightNote avisa qual foi. Na gravação, cada arquivo é
copiado para um backup antes de ser regravado; se algum falhar ao gravar, o
LightNote pergunta se você quer desfazer tudo (restaura os backups) ou
ignorar esse arquivo e continuar (ele fica com a Frase antiga, com aviso ao
final). (Senhas em modo "perguntar" não têm o que recifrar.)
O PIN (4–8 dígitos) é um cadeado local opcional: ele protege ações sensíveis na interface (revelar senhas, abrir notas seguras) sem digitar a Frase toda hora. Ele não cifra nada e vale só nesta máquina.
O Arquivo Markdown Seguro (.lne, em Novo → Arquivo
Markdown Seguro) é uma nota cifrada no disco: ao abrir, o LightNote pede o PIN
(se houver) e a Frase, decifra só em memória e re-cifra ao salvar
(Ctrl+S). Por segurança, ele nunca reabre sozinho ao restaurar a sessão. Fora isso, ela é uma nota como as outras: tem assistente de IA (Ctrl+K/Ctrl+I e o botão IA da barra), Ctrl+clique em wikilink e em etiqueta, abre links e mostra o endereço na barra de status. Vale lembrar o que a IA implica: o trecho enviado sai da máquina se o assistente escolhido for um serviço na nuvem; com um modelo local (Ollama, LM Studio) ele não sai. E as notas seguras continuam fora do Perguntar às notas — aquele lê os .md do espaço, e no disco um .lne é texto cifrado.
Notas diárias, captura rápida e bandeja
A nota de hoje é um .md por dia na pasta Notas
Diárias — uma pasta só, válida para todo o LightNote, definida em
Configurações → Notas e escrita.
Pelo menu da bandeja: Nota de hoje abre a nota do dia; Captura
rápida… (Ctrl+Alt+N, atalho global do Windows — ou clique do
meio no ícone da bandeja) abre uma janelinha onde você digita e dá
Ctrl+Enter: o texto vira um item com hora na nota de hoje, gravado direto no
disco, sem abrir janela do editor.
O menu da bandeja também lista as janelas abertas e os espaços recentes, e traz os toggles de energia: Manter computador acordado e Manter tela ligada (úteis em tarefas longas; o LightNote já segura a energia sozinho enquanto roda IA one-shot, células de Blocos ou script SQL). O launcher (janela de abertura) tem busca, dois cliques para abrir, e menu de contexto para fixar no topo, abrir no Explorer ou remover da lista.
As ações que valem para todo o LightNote — e não só para a janela em que você está — moram no menu Geral (☰ Geral, ou o botão com o ícone do app na barra de atividades), que tem exatamente a mesma forma do menu da bandeja: na raiz Nota de hoje, Captura rápida e Calendário; depois os submenus Capturar (tarefa rápida, gravar áudio, reencontrar notas antigas, notas adesivas), Abrir (launcher, abrir espaço de trabalho, abrir arquivo avulso, arquivos avulsos) e Energia; no fim, Configurações gerais. A regra é simples: o que está no menu da bandeja está no menu Geral — e só lá. Passar o mouse por um item mostra o aviso “recurso geral: vale para todo o LightNote, em qualquer janela”.
Para onde vai a captura. As notas diárias e as tarefas rápidas têm um destino único e previsível: a pasta definida em Configurações → Notas e escrita e o quadro definido em Configurações → Geral, valendo em qualquer janela. Na primeira captura, se nada estiver definido, o LightNote pergunta onde guardar e já grava a escolha — em vez de mandar você procurar a configuração. Um projeto que precise do próprio diário (um cliente com confidencialidade, um registro que deve morar no repositório) pode reivindicar as capturas feitas naquela janela em Configuração do Espaço de Trabalho → Capturas; a bandeja e os atalhos globais continuam gravando no destino geral. O aviso de confirmação sempre diz para onde o texto foi.
O menu da bandeja fica curto de propósito: na raiz ficam as janelas abertas e as três ações diárias — Nota de hoje, Captura rápida e Calendário. O resto vive nos mesmos submenus do menu Geral: Capturar, Abrir (que na bandeja traz também a lista de espaços recentes), IA (sessões de IA e perguntar às notas — na janela isso é o menu IA completo) e Energia. No fim, configurações e sair.
Reencontrar notas antigas
O que mais faz um "segundo cérebro" fracassar não é falta de recurso — é a nota
que nunca é relida. Pelo menu da bandeja (seção Capturar), o LightNote
traz notas antigas de volta à tona: Nota aleatória abre uma nota .md
sorteada do espaço de trabalho (evitando as que já apareceram nas últimas duas
semanas), e Neste dia lista as notas cujo aniversário de criação é hoje
(mesmo dia e mês, em anos anteriores). As duas ações também estão no menu
Geral → Capturar da janela.
A data de criação vem do campo created/date do
frontmatter, se houver; senão, da data do arquivo. O recurso nunca escreve nas
suas notas — só as abre. Pode ser desligado em Configurações → Recursos
(“Reencontrar notas antigas”).
Suas notas no celular
O seu espaço de trabalho é Markdown puro numa pasta — formatos abertos, sem banco proprietário nem nuvem obrigatória. Por isso qualquer app de celular lê e edita as suas notas, sem o LightNote precisar de um aplicativo próprio para o telefone: basta sincronizar a pasta com um serviço de arquivos e abri-la num editor de Markdown no celular.
Passo a passo: sincronize a pasta do espaço de trabalho com OneDrive, Google
Drive, Dropbox ou Syncthing e, no celular, abra essa pasta num editor de
Markdown (por exemplo Obsidian Mobile, iA Writer, GitJournal
ou Markor). Como tudo é .md em texto, os dois lados veem e
escrevem as mesmas notas.
Recomendações: no celular, edite apenas arquivos .md — os
tipos próprios do LightNote (.lne seguro, .lnc,
.lnt, .lnb, .lnd…) não abrem fora do
aplicativo, e o .lne em especial é cifrado. Se os dois lados editarem
sem conexão e houver conflito, resolva pela pasta Inbox: jogue a
captura (texto, áudio ou foto) lá e deixe o LightNote integrá-la à nota do dia, em
vez de sobrescrever. O posicionamento é deliberado — a sincronização é por
arquivos/Git, não por plugins: você é dono dos seus dados e escolhe o
transporte. Para escrever direto na nota de hoje, edite o arquivo
Notas Diárias/aaaa-mm-dd.md — o nome da pasta muda conforme o
idioma.
Gravar áudio (voz, reunião) com transcrição por IA
Pelo menu da bandeja, Gravar áudio… abre uma janela flutuante e arrastável (arraste pela barra de título) para gravar do microfone, do áudio do sistema (o que toca no computador) ou de ambos ao mesmo tempo — a fonte escolhida é lembrada para a próxima vez. Use ● Gravar, ‖ Pausar e ■ Parar; o arquivo vai para a pasta Gravações do espaço de trabalho, comprimido para .m4a ao parar.
Dois jeitos de transcrever. Em Configurações → Assistentes de IA → Transcrição de áudio, o seletor Como transcrever escolhe entre o modelo de transcrição dedicado (estilo Whisper: OpenAI whisper-1, Groq whisper-large-v3 — grátis — ou um Whisper local) e o modelo geral com áudio no chat — o áudio vai dentro da conversa de um modelo multimodal, que é como o Google Gemini (gemini-2.0-flash, bom plano gratuito) transcreve. Trocar o provedor pré-seleciona o modo certo e sugere o modelo; áudios longos são fatiados automaticamente em qualquer modo. O modelo sugerido pode ser trocado à mão — o LightNote respeita o id que você digitar, mesmo para um provedor que ele ainda não reconheça.
Ao começar a gravar, a janela recolhe sozinha numa pílula compacta (bolinha vermelha piscando, cronômetro, Pausar/Parar) — fácil de arrastar para um canto e quase esconder durante uma reunião longa; o botão de minimizar/expandir no título alterna manualmente, e parar a gravação expande de volta. Ctrl+Alt+R (atalho global) é a nota rápida de voz: aperte para começar a gravar do microfone na hora, aperte de novo para parar, sem precisar abrir a janela pelo mouse.
Se houver um provedor de IA por API configurado (em Configurações → Assistentes de IA → Transcrição de áudio), aparecem os botões Transcrever e Transcrever + Resumir ao parar (desabilitados enquanto o áudio ainda está sendo comprimido); o combo Ao parar dispara a transcrição sozinha assim que a gravação termina. O LightNote envia o áudio para transcrição (modelo estilo Whisper) e grava uma nota .md ao lado do áudio com o texto e, opcionalmente, um resumo. Ligue/desligue o recurso em Configurações → Geral → Recursos.
A mesma janela é um mini-player: abaixo dos controles, uma lista das gravações da pasta mostra cada arquivo com botões T (abrir a transcrição) e R (abrir o resumo) quando já existem, além de um ▶ para reproduzir ali mesmo (barra de progresso com avanço); o menu ⋮ de cada linha reproduz, (re)transcreve ou abre a nota. Regerar uma transcrição não sobrescreve a anterior — cria uma nova versão ao lado (nota.md, nota (2).md…), preservando o histórico. A fonte de captura é um botão-menu (Microfone / Áudio do sistema / Ambos), com Ambos como padrão. O link Abrir pasta de gravações abre a pasta na janela principal.
Notas autoadesivas
As notas autoadesivas são caixinhas coloridas de texto puro que flutuam sobre a área de trabalho, no estilo do app Notas Autoadesivas do Windows. Pelo menu da bandeja: Nova nota adesiva (Ctrl+Alt+S, atalho global) cria uma caixinha; Mostrar notas adesivas (Ctrl+Alt+H) exibe ou oculta todas de uma vez. Cada nota tem um + para criar outra e um menu ☰ para trocar a cor, Enviar para a nota do dia (grava o texto como item na nota de hoje e descarta a caixinha) ou Excluir. Arraste pelo cabeçalho para mover e pela alça do canto para redimensionar. As notas são salvas automaticamente e reaparecem ao reabrir o LightNote.
Lista de verificação. O botão de lista no cabeçalho (ao lado do
+) transforma a linha do cursor — ou as linhas selecionadas — em itens com
caixinha, e desfaz no segundo clique. Também dá para digitar [ ] e um
espaço no começo da linha ([x] já cria o item marcado). Clique na
caixinha, ou use Ctrl+Shift+Enter, para marcar e desmarcar: o item concluído
fica riscado. Enter cria o próximo item; Enter num item vazio, ou
Backspace no começo dele, volta ao texto comum. Remover itens
concluídos, no menu da nota, apaga os marcados de uma vez (Ctrl+Z
desfaz). Os itens são gravados como tarefas do Markdown (- [ ] item),
então Enviar para a nota do dia leva cada um como tarefa.
Calendário
Geral → Calendário… abre uma janela única com um calendário que
marca os dias com tarefas de todos os quadros .lnt dos espaços
de trabalho registrados. Ao lado, a lista Do dia (tarefas do dia
selecionado) e as Pendências; o botão Nota do dia abre a nota diária
da data. Clicar numa tarefa abre o quadro correspondente.
Na grade, cada dia com tarefa recebe pontos coloridos na cor do status do Kanban (até três), o dia de hoje é marcado por um anel e o dia selecionado por um círculo cheio; Hoje volta ao mês corrente e o nome do mês abre um menu para saltar de mês ou de ano. As Pendências vêm agrupadas por situação — Atrasadas, Hoje, Próximos 7 dias, Depois e Sem data —, com o vencimento num selo relativo (“ontem”, “hoje”, “há 3 dias”). Um duplo clique num dia abre a tarefa rápida já com aquela data.
As tarefas escritas nas notas entram aqui. Uma caixinha - [ ] numa nota é tarefa como qualquer outra, e agora aparece nas Pendências ao lado dos cartões dos quadros, nos mesmos grupos. Se a linha disser quando (amanhã, sexta, 12/08), ela entra no grupo certo e no dia certo. Um duplo clique abre a nota na linha da caixinha — quem edita a tarefa continua sendo a nota. A varredura roda em segundo plano: a janela abre na hora com os quadros e as tarefas das notas chegam logo depois. Na grade, o número do dia sai sublinhado quando aquele dia já tem nota diária escrita, e a lista do dia mostra também Neste dia: notas suas de anos anteriores feitas naquela data.
Paleta de comandos
Ctrl+Shift+P abre a paleta de comandos (todas as ações com seus atalhos, filtráveis por digitação). Ctrl+R abre o seletor rápido de arquivos e Ctrl+Shift+K abre o seletor de tarefas.
Servidor MCP (agentes de IA)
O LightNote inclui um servidor MCP (Model Context Protocol) headless que
transforma o seu espaço de trabalho numa ferramenta para agentes de IA
(Claude Desktop, Claude Code, Cursor, e qualquer cliente que fale MCP). Com ele, o
agente lê e escreve arquivos, faz buscas, consulta dados tabulares e bancos,
manipula as tarefas, usa o Git e dispara requisições HTTP — tudo confinado à
pasta (directory jail: caminhos com .. ou fora da raiz são
recusados). O transporte é JSON-RPC 2.0 por stdin/stdout; cada sessão sobe
um processo lnote.exe leve, separado da janela do editor.
Atalho de um clique: em IA → Ativar IA nesta pasta o LightNote habilita o MCP e escreve o .mcp.json de uma vez (o clique já é o consentimento). Se a IA já estiver ativa na pasta, o item vira Configurar IA desta pasta… e abre a Configuração do Espaço de Trabalho.
Segurança em duas camadas: (1) o servidor só inicia se você tiver dado opt-in naquela pasta; (2) toda ferramenta fica presa à raiz do espaço. Além disso, cada ferramenta é anunciada com anotações (somente-leitura, destrutiva, idempotente, "toca o mundo externo") para o cliente de IA avaliar o risco antes de chamar.
Passo a passo para configurar
- Habilite o MCP na pasta. Em Ferramentas → Configuração do Espaço de
Trabalho, marque Habilitar MCP para este espaço. Sem esse opt-in o
servidor recusa iniciar (é a trava principal). Como alternativa, pela linha de
comando:
lnote --mcp-enable "C:\Caminho\do\espaco"(e--mcp-disablepara desligar). - Descubra o caminho do
lnote.exe. Ele fica na mesma pasta dolightnote.exe(a pasta de instalação do aplicativo). É o executável de console "slim", sem interface — é ele que o agente executa. - Registre o servidor no seu cliente de IA, apontando o comando para o
lnote.exee passando--mcpseguido da pasta do espaço. No formato usado por Claude Desktop / Cursor e semelhantes:
{
"mcpServers": {
"lightnote": {
"command": "C:\\Caminho\\para\\lnote.exe",
"args": ["--mcp", "C:\\Caminho\\do\\espaco"]
}
}
}
Dicas de configuração:
- Barras invertidas em JSON precisam ser duplicadas
(
C:\\Users\\...\\lnote.exe), como no exemplo. - Para expor vários espaços, crie uma entrada por pasta, com nomes
distintos (
"lightnote-projetoA","lightnote-projetoB"), cada uma apontando para a sua raiz. - Depois de salvar a configuração, reinicie o cliente de IA para ele
subir o servidor. Ao conectar, o agente deve listar as ferramentas
lightnote_*; peça a ele um "liste os arquivos do espaço" para confirmar que está funcionando. - Para o Claude Code (CLI), o mesmo servidor pode ser registrado com
claude mcp add lightnote -- "C:\Caminho\para\lnote.exe" --mcp "C:\Caminho\do\espaco".
Senha de banco (opcional). A ferramenta db_query abre uma
conexão .lnc. Se a senha estiver cifrada com a Frase-Segura, passe a
frase pela variável de ambiente LNOTE_PASSPHRASE no bloco do servidor
(nunca em argumentos de linha de comando) — conexões com senha em modo "perguntar"
não podem ser usadas de forma desatendida.
Consulta por IA é opt-in por conexão. Ligar o MCP na pasta não expõe as conexões: cada .lnc só responde ao db_query quando a opção «Permitir consultas por IA (MCP)» está marcada no diálogo da conexão. O acesso é somente-leitura (SELECT).
Exportar do banco pelo agente. Alem de consultar, o agente pode materializar um SELECT num arquivo com db_export (Parquet, CSV, JSON ou .xlsx) — util para resultados grandes demais para caber na resposta. Valem os mesmos tres cuidados, nesta ordem: a consulta precisa ser somente-leitura, a conexao precisa do opt-in «Permitir consultas por IA (MCP)» (verificado antes de decifrar a senha) e o destino precisa ficar dentro do espaco de trabalho. Exportacoes grandes usam a pasta temporaria do sistema como area de apoio, em torno do tamanho do resultado — deixe espaco livre em disco.
Ferramentas disponíveis
O agente enxerga as ferramentas pelo prefixo do cliente (ex.:
lightnote_read_file). Por categoria:
- Arquivos:
read_file(com intervalo de linhas opcional),write_file,edit_file(substitui um trecho exato, sem reescrever o arquivo inteiro),append_file,list_files,move_file,make_diredelete_file(vai para a Lixeira, não apaga de vez). - Busca e navegação:
search_files(ripgrep, com filtro por subpasta/glob e limite),list_symbols(outline de funções/classes de um arquivo) eopen_in_editor(abre/foca um arquivo na janela do LightNote, se estiver aberta). - Dados e SQL:
query(SQL DuckDB sobre Parquet/CSV/JSON, saída em tsv/json/markdown),describe_table(esquema + estatísticas, sem despejar linhas),export_query(materializa um SELECT num arquivo viaCOPY),sqlite_query(SQL num.sqlite/.db),db_list_connections(lista os.lncdo espaço) edb_query(SQL somente-leitura numa conexão.lnc). Também:xlsx_read(lê uma planilha.xlsxcomo TSV, sem DuckDB),data_diff(compara dois arquivos tabulares — linhas só em A/só em B, alteradas por chave, ou deriva do esquema), e o catálogo de bancodb_list_objects(tabelas/views) edb_describe(colunas, chaves e oCREATE— nativo ou reconstruído) — estes dois com os mesmos requisitos dodb_query(opt-in por conexão +LNOTE_PASSPHRASE). Para levar o resultado para um arquivo em vez da resposta,db_export(Parquet/CSV/JSON/.xlsx). - Além disso:
search_notes(recupera os trechos mais relevantes das notas para uma pergunta — o mesmo motor do Perguntar às notas),list_links(os links de saída de uma nota, resolvidos ou quebrados),audit_vault_links(links quebrados e notas órfãs em todo o vault),list_note_templatese o parâmetrotemplatedocreate_note,list_due_tasks(tarefas que vencem hoje ou atrasadas em todos os projetos),xlsx_read(lê uma planilha.xlsxcomo TSV),data_diff(compara dois arquivos tabulares) e o catálogo do bancodb_list_objects/db_describe(tabelas/views e as colunas, chaves e DDL de uma tabela — os mesmos requisitos dodb_query). - Compactados:
zip_list(lista os membros de um.zip/.isx) ezip_read(lê um membro como texto) — sem extrair o arquivo para o disco. - Tarefas:
list_task_projects(lista os projetos de tarefa.lntdo espaço),list_tasks,list_task_statuses(colunas do quadro),create_task,update_task,update_task_status(mover de coluna),delete_task,task_note(ler/gravar a nota.mdda tarefa) elist_due_tasks(tarefas vencendo hoje ou atrasadas em todos os projetos do espaço). Um espaço pode ter vários projetos.lnt: escolha qual pelo parâmetroproject(onamedevolvido porlist_task_projects; dispensável se só houver um). Osid/status_idsão identificadores da sessão — não leia os arquivos internos do.lntpara obtê-los; use as ferramentas de tarefa. - Notas (PKM):
create_note(cria uma nota.md),append_daily_note(acrescenta uma captura à nota do dia),remember(guarda um fato durável sobre você na nota de memória),list_backlinks(notas que apontam para uma nota),list_note_tagsesearch_by_tag(as#hashtagsdo vault e as notas que as usam) eadd_task(cria tarefa com vencimento/etiquetas, aceitando linguagem natural no título). Também:search_notes(recupera os trechos mais relevantes das notas para uma pergunta — o mesmo motor do Chat com IA),list_links(os links de saída de uma nota, resolvidos ou quebrados),audit_vault_links(links quebrados e notas órfãs de todo o vault),list_note_templatese o parâmetrotemplatedocreate_note(cria a nota já a partir de um modelo). Enote_export(exporta uma nota paradocx,odt,epub, LaTeX, Typst, HTML, reStructuredText, AsciiDoc, Org, MediaWiki, Notebook ou o Markdown de outro dialeto — sem janela nenhuma, e também pelolnote note-export). Enote_import(o caminho inverso: umdocx,odt,epub,rtf, HTML outexvira nota ao lado do original, com títulos, listas, tabelas, ênfase, links, fórmulas e imagens — também pelolnote note-import). Efolder_export(a pasta inteira vira site HTML, conjunto de documentos ou Markdown, com os links reescritos — também pelolnote folder-export). - Git:
git_status,git_log,git_diffegit_restore. - Web e avisos:
http_request(dispara uma requisição HTTP e devolve status/cabeçalhos/corpo) enotify(mostra um aviso na bandeja da janela aberta — útil para o agente sinalizar que terminou). - Proxy de IA:
list_ai_modelseask_ai(abaixo).
O servidor também expõe os arquivos do espaço como recursos MCP
(resources/list e resources/read), para clientes que
preferem "anexar" arquivos em vez de chamar read_file.
A sua Biblioteca de prompts (a pasta Prompts/ do espaço) é
exposta como prompts MCP (prompts/list e
prompts/get). No Claude Code, cada prompt vira um comando de barra —
/mcp__lightnote__<nome> — pronto para usar dentro da CLI de IA.
Rede de segurança das escritas. Antes de sobrescrever
(write_file/edit_file) ou remover (delete_file)
um arquivo, o servidor grava a versão anterior no Histórico Local — a mesma
rede de segurança do editor —, para você poder desfazer uma mudança feita por um
agente mesmo fora de um repositório Git.
Cada ferramenta declara se é de leitura ou escrita: além das annotations
MCP (readOnlyHint/destructiveHint), a descrição começa com
um selo [read-only], [writes] ou [destructive]
— útil para montar listas de permissão com segurança.
Proxy de IA (delegar a outro modelo)
Os provedores de API que você cadastrou com a coluna MCP
marcada ficam disponíveis ao agente por duas ferramentas: list_ai_models
(lista os modelos liberados, com id, nome e modelo) e ask_ai
({model, prompt}). Assim o agente principal pode delegar uma
sub-tarefa a um modelo mais barato ou especializado. A chamada é
intermediada pelo LightNote aberto (o lnote.exe do MCP repassa o
pedido à janela do aplicativo pela ponte interna): a chave de API nunca sai da
sua máquina e nunca chega ao agente. Se o LightNote não estiver aberto, a
ferramenta retorna um erro pedindo para abri-lo.
Linha de comando (lnote)
As mesmas operações do MCP estão num executável de console, lnote, para
scripts e automação (também acessível como lightnote cli <comando>).
Toda ação fica confinada à pasta-raiz, definida por --root (padrão: a
pasta atual).
Exemplos:
lnote list --recursive
lnote read --path src/main.cpp --start-line 1 --end-line 40
lnote write --path nota.md --content "Olá"
echo conteudo | lnote write --path nota.md --content -
lnote search --query TODO --regex
lnote query --sql "SELECT * FROM read_parquet('dados.parquet') LIMIT 10"
lnote describe --path dados.parquet
lnote search-notes --query "onde escrevi sobre orçamento"
lnote audit-links
lnote xlsx-read --path planilha.xlsx --sheet 0
lnote data-diff --a antes.parquet --b depois.parquet --mode changed --keys id
lnote db-describe --connection dados.lnc --table clientes
lnote db-export --connection dados.lnc --sql "SELECT * FROM clientes" --out clientes.parquet
lnote due-tasks
lnote export --sql "SELECT * FROM read_csv_auto('e.csv') WHERE uf='SP'" --out sp.parquet
lnote zip-list --path export.isx
lnote zip-read --path export.isx --entry job/definicao.xml
lnote task-projects
lnote tasks --project Backlog
lnote create-task --project Backlog --title "Revisar texto" --effort 2
lnote move-task --project Backlog --task-id 5 --status-id 2
lnote git-status
lnote http --url https://api.exemplo.com --method GET
lnote notify --message "Processamento concluído"
Globais: --root <pasta>, --json (saída
estruturada {ok,data,error}), --help (ou
lnote <comando> --help) e --version. Comandos
desconhecidos recebem uma sugestão ("você quis dizer…?").
Atualizar dados antigos em lote: lnote upgrade <pasta>
moderniza de uma vez os arquivos gravados por versões anteriores do LightNote — hoje,
as extensões legadas .lnsh e .lnsm, que passaram a ser
.lns e .lne. O aplicativo já faz isso sozinho ao abrir
cada arquivo; o comando existe para quem tem dezenas e não quer abrir um a um. Use
--dry-run para ver o que mudaria sem tocar em nada. É conveniência, não
obrigação: seus arquivos antigos continuam abrindo normalmente sem ele.
Configurações e temas
Onde ficam as opções
Em Ferramentas → Configurações gerais você ajusta, em seções: opções Gerais (idioma, auto-salvar, liberar abas ociosas, paleta de cores das abas, título da janela, notas diárias, ortografia), o Tema da aplicação, a fonte e as cores do Editor, o estilo do Markdown, a Execução (interpretadores), o Terminal (shells), os Assistentes de IA (CLIs e a IA padrão), o Versionamento e o Banco de Dados (paginação, Oracle Instant Client).
Há um campo de busca no topo da lista de seções que filtra pelas opções de cada página; e a seção Recursos reúne os interruptores dos recursos opcionais — Grafo de conexões, Notas autoadesivas, Sessões de IA, Chat com IA, gravação de áudio, reencontrar notas antigas, manter o computador acordado e a integração ao menu do Windows Explorer. Desligar um recurso o remove da interface, da bandeja e dos atalhos, e para de consumir recursos — mas mantém os dados já criados; a mudança vale ao reiniciar.
Temas
O tema da aplicação muda a aparência do programa (menus, abas, painéis, barra de status). Há vários temas prontos — claros (Claro, Solarized Light, Catppuccin Latte, Gruvbox Light, One Light, Rosé Pine Dawn, Everforest Light, Tokyo Night Day) e escuros (Escuro, Tokyo Night, Dracula, Ayu Mirage, Nord, Gruvbox Dark, Everforest Dark, Kanagawa Wave) — além do modo Personalizado com cor de acento. Novos temas chegam pelo catálogo online, sem precisar atualizar o aplicativo.
As cores do Editor de código e do Markdown são escolhidas à parte, nas suas próprias seções, e independem do tema da aplicação. Cada uma traz uma combo Tema: com esquemas de cor prontos (Padrão, Dracula, One, Nord, Gruvbox e Tokyo Night, em versões clara e escura), uma prévia ao vivo e o botão Salvar como… para guardar suas próprias cores como um preset reutilizável.
Tema por janela. Cada pasta (espaço de trabalho) pode ter o seu próprio tema, então você pode manter duas janelas abertas com aparências diferentes ao mesmo tempo. Em Configuração do Espaço de Trabalho → Aparência desta pasta há combos para o tema desta janela (a aparência do programa), o tema de código e o tema de Markdown — todos com a opção Seguir tema geral/Manter padrão para não sobrepor. Sobrepor os temas de código e de Markdown é útil para casar as cores do editor com um tema escuro só naquela pasta, sem mexer nas Configurações gerais. Essas escolhas ficam só na sua máquina (não vão para o Git).
Ferramentas, título e layout
Guia de instalação. Quando você escolhe uma ferramenta do catálogo
(assistente de IA, interpretador, formatador, linter ou driver de banco) que ainda
não está no computador — ou tenta executar/formatar/verificar um arquivo cujo
interpretador falta — o LightNote abre um guia de instalação. Quando existe um
comando seguro (via winget), o guia mostra o comando exato e o executa num
console embutido, com um clique; se a ferramenta depende de outra (por exemplo,
uma CLI que precisa do Node.js), ele oferece instalar o pré-requisito antes. Sem um
instalador automático, o guia abre a página oficial de download e traz um passo a passo.
Ao terminar, ele verifica a instalação e já deixa a ferramenta pronta para uso,
sem reiniciar o programa.
Formatação e Linters têm seções próprias (formatador/linter externo
por linguagem, com Adicionar a partir de um catálogo). Para levar suas
preferências a outra máquina, o grupo Migração de configurações (seção Geral)
tem Exportar/Importar configurações (arquivo .lnconf): vão
as opções gerais e os temas de conteúdo, mas não as chaves de API nem os
caminhos locais (recadastre-os no destino).
O título da janela é um modelo livre: o nome do aplicativo entra sempre no
fim e você compõe o resto com as variáveis {espaço} (pasta raiz do espaço de
trabalho), {arquivo} (nome do arquivo aberto) e {caminho} (caminho
completo). Decorações ao redor de uma variável vazia (ex.: os colchetes em
[ {espaço} ]) somem sozinhas; deixe o campo em branco para o padrão
[ {espaço} ] {arquivo} — .
Layout da janela. Em Exibir → Layout da janela (ou em Configurações gerais → Geral → Layout da janela) você escolhe entre três presets — Moderno (o padrão), Clássico e Confortável — ou ajusta cada opção separadamente: exibir a barra de menus no topo (com ela ligada o botão ☰ some, pois os dois abrem os mesmos menus), mostrar rótulos ao lado dos ícones, pôr a barra de ferramentas e a barra lateral à esquerda ou à direita, e o tamanho dos ícones. Escolher um preset apenas preenche as opções: mexer em qualquer uma delas depois não desfaz nada, a lista só passa a exibir "(personalizado)". A mudança vale na hora, em todas as janelas abertas.
Modo portátil: os dados ao lado do programa
Na versão .zip, o LightNote guarda configurações, sessões, histórico local e índices numa pasta do Windows (%LOCALAPPDATA%), fora da pasta do programa. O modo portátil traz tudo isso para junto do executável, e aí a pasta inteira pode viver num pendrive, num disco externo ou numa pasta sincronizada.
Para ativar: extraia o .zip onde a cópia vai ficar, abra Configurações → Geral → Modo portátil e clique em Tornar esta cópia portátil…. A janela mostra de onde e para onde os dados vão, quanto pesam e o que muda; ao confirmar, o LightNote copia (nunca move) e pede para você fechar e abrir o programa. A cópia antiga continua onde estava, intacta — se algo der errado, nada foi perdido.
Depois disso a pasta do programa ganha duas pastas novas: profile, com o que é seu (configurações, sessões, histórico, dicionários baixados), e profile-cache, só com índices que o programa reconstrói sozinho. Você pode apagar profile-cache a qualquer momento para recuperar espaço.
Para atualizar de versão: baixe o .zip novo, extraia numa pasta nova e copie a pasta profile da versão antiga para dentro dela. É só isso. A profile-cache não precisa ser copiada (ela se refaz sozinha); copiá-la também funciona, só é desnecessário. Não faça o caminho inverso: um perfil escrito por uma versão mais nova faz o programa abrir em modo somente leitura, para não estragar o que ele ainda não sabe ler.
Para desativar: volte a Configurações → Geral → Modo portátil e clique em Desativar o modo portátil…. Nada é apagado: as duas pastas são apenas renomeadas (para profile.desativado e profile-cache.desativado), e o LightNote volta a usar a pasta do Windows no próximo arranque. Você decide depois se apaga, restaura ou copia de lá o que quiser.
O que NÃO acompanha a pasta ao mudar de computador. Três segredos são protegidos pelo Windows por usuário e máquina, e por isso não decifram noutro PC: as chaves de IA, as senhas de arquivos que você mandou lembrar e a Frase-Segura guardada. Basta informá-las de novo lá — nada é perdido, e os seus arquivos seguros continuam abrindo normalmente com a Frase-Segura digitada. Além disso: abas e pastas abertas guardam o caminho completo, então mudam de lugar se a letra da unidade mudar; a integração com o Explorer é desligada ao ativar o modo (ela escreve no Windows da máquina, o oposto do que o modo portátil promete) e pode ser religada nas Configurações; e o .mcp.json gravado nos seus repositórios aponta o caminho completo do lnote.exe, então precisa ser refeito na máquina nova.
Levar as chaves de IA junto (opcional). Em Configurações → Geral → Modo portátil há Proteger as chaves com uma frase…. Ligado, as chaves de IA e as senhas de arquivo lembradas deixam de depender do Windows e passam a viajar com a pasta. Pense duas vezes: hoje, perder o pendrive não custa nada — os segredos não abrem fora da sua máquina; com a frase, quem obtiver a pasta pode tentar adivinhá-la sem pressa. Use uma frase longa. A Frase-Segura do espaço de trabalho não entra nesse chaveiro, de propósito: ela abre as notas seguras, e uma frase só não deve destravar tudo. Marque Lembrar nesta máquina para não ser perguntado no seu computador — noutro, a pergunta volta.
chaveiro-do-perfilO modo portátil vale para a versão .zip. Uma cópia instalada pelo instalador e a edição da Microsoft Store não podem ser convertidas — a pasta delas é somente leitura ou é administrada pelo desinstalador —, e a janela diz isso em vez de deixar o botão sem efeito. Pela linha de comando, com o LightNote fechado: lnote portable --status, lnote portable --on (aceita --dry-run) e lnote portable --off.
Atalhos de teclado
- F1 — esta ajuda (na seção da tela atual)
- Ctrl+N / Ctrl+O — novo arquivo / abrir arquivo
- Ctrl+S / Ctrl+W — salvar / fechar aba
- Ctrl+Alt+Shift+S — salvar tudo (todas as abas modificadas)
- Ctrl+F / Ctrl+H — localizar / substituir no arquivo
- Ctrl+Shift+F — busca global (ripgrep)
- Ctrl+Shift+G — painel de versionamento (Git)
- Ctrl+Shift+E / Ctrl+Shift+M — painel Explorador / painel de Pendências
- Ctrl+B — mostrar/ocultar a barra lateral
- Ctrl+' — terminal (no layout US, também Ctrl+`)
- Ctrl+/ — comentar/descomentar; Ctrl+Shift+D — duplicar linha
- F5 — executar arquivo; Ctrl+Shift+Enter — enviar seleção ao terminal
- Ctrl+K / Ctrl+I — perguntar à IA / editar com IA
- Ctrl+B / Ctrl+I / Ctrl+E — na nota Markdown: negrito / itálico / alternar o modo de exibição
- Ctrl+Shift+X / Ctrl+Shift+C / Ctrl+Shift+H — na nota: tachado / código na linha do texto / realce
- Ctrl+1…Ctrl+6 — na nota: nível do cabeçalho (de novo no mesmo nível volta a parágrafo)
- Ctrl+Shift+V — na nota: colar sem formatação
- Ctrl+Enter — “executar aqui”: instrução SQL, célula de Blocos, requisição de API, fonte do diagrama/fórmula na nota
- Ctrl+Shift+R / F4 — macro: gravar / reproduzir
- Ctrl+R — ir para arquivo; Ctrl+Shift+P — paleta de comandos
- Ctrl+Shift+K — ir para tarefa; Ctrl+Shift+T — reabrir aba fechada
- Ctrl+Alt+G — grafo de conexões
- Ctrl+Alt+N — captura rápida (global, mesmo fora do LightNote)
- Ctrl+Alt+D / Ctrl+Alt+T — nota de hoje / tarefa rápida
- Ctrl+Alt+R — gravar/parar áudio (global, nota rápida de voz)
- F11 — modo Zen (a aba ocupa a janela inteira)
- Ctrl++ / Ctrl+- / Ctrl+0 — zoom
A mesma tecla pode fazer coisas diferentes conforme a tela em foco: a visão focada ganha, e fora dela vale o atalho da janela. Com uma aba de Banco de Dados em foco, F4 abre as propriedades do objeto em vez de reproduzir a macro; no Diff e no painel de saída, F8/Shift+F8 pulam de alteração em alteração; e na janela Arquivos avulsos, Alt+←/Alt+→ voltam e avançam entre pastas. A lista completa, com filtro, fica em Ajuda → Atalhos de teclado.
Licença, edições e comunidade
O LightNote é distribuído em edições com os mesmos recursos, diferindo apenas no licenciamento e na forma de entrega:
- LightNote (grátis, pelo site): para uso pessoal e não comercial.
- LightNote Core (Microsoft Store): adquirida como uma contribuição ao projeto; concede licença de uso comercial e recebe atualizações automáticas pela Store.
- LightNote Business (futuro): licenciamento por volume/corporativo, reservado para disponibilização futura.
A edição da sua cópia — e, portanto, quais cláusulas valem — aparece em Ajuda → Sobre. O texto completo dos termos está em Ajuda → Sobre → Termos de licença….
Participe e contribua:
- Sugestões e dúvidas: GitHub Discussions —
github.com/nglczr/LightNote-Community/discussions - Encontrou um bug? Relate em GitHub Issues —
github.com/nglczr/LightNote-Community/issues - Apoie o desenvolvimento no Ko-fi —
ko-fi.com/lightnote(ou adquira o LightNote Core na Store) - Contato:
contato@lightnote.com.br· Site:lightnote.com.br