Pular para o conteúdo

Editor

A superfície de notas do app web tem uma única alternância Reading view / Edit no topo da nota. A Reading view é onde acontece a renderização rica; o Edit é um campo de texto simples do CodeMirror 6 para escrever markdown.

O visualizador é uma stack remark/rehype pensada para compatibilidade com o Obsidian. Se renderiza no Obsidian, deve renderizar aqui.

  • CommonMark + GFM: títulos, listas, tabelas, blocos de código delimitados, tachado, listas de tarefas
  • Wikilinks: [[Note Title]] e [[Note Title|Display Text]], renderizados como links para /notes/<path>
  • Embeds de imagem: ![[image.png]] resolve para a API de anexos autenticada
  • Callouts: > [!note], > [!warning], > [!tip] e afins, no estilo Obsidian, via @portaljs/remark-callouts
  • Matemática KaTeX: $inline$ e $$display$$
  • Diagramas Mermaid: blocos delimitados ```mermaid
  • Realce de sintaxe: blocos de código delimitados renderizados com rehype-highlight
  • Frontmatter: o YAML no topo do arquivo é lido com gray-matter; o corpo é renderizado abaixo
  • Títulos com link automático: cada título ganha um slug + link de âncora

O modo Edit troca a visão por um campo do CodeMirror 6 com o plugin de linguagem markdown (realce de sintaxe), quebra de linha e uma fonte de 16px segura para celular, que evita o zoom automático do Safari no iOS.

Não há botão Salvar. O editor salva automaticamente enquanto você digita: um indicador de status no topo da nota mostra Saving… enquanto uma gravação está em andamento, Saved quando ela termina e Save failed com um link Retry clicável se uma gravação falhar.

O editor web é, de propósito, uma superfície de captura rápida: abra uma nota, edite, vá embora. Para uma escrita mais rica (menus de barra, localizar/substituir no editor, autocompletar de wikilinks e tags), o Obsidian é a ferramenta certa. A divisão é intencional, não uma lacuna; o Obsidian já é um editor excepcional e sincronizamos com ele nativamente, então o app web se concentra no que é difícil de fazer bem pelo Obsidian (navegar entre cofres, acesso pelo celular sem o app do Obsidian para iOS, acesso por qualquer navegador).

O editor web passa pelo mesmo motor de sincronização que o plugin. Se outro aparelho edita a mesma nota enquanto ela está aberta para você, o editor reage sem perder o seu trabalho:

  • As edições remotas que chegam são incorporadas ao seu rascunho aberto por um merge de 3 vias. Merges limpos acontecem em silêncio.
  • Se o seu salvamento disputa com a gravação de outro aparelho, o backend retorna um 409. O editor busca a versão mais recente, reaplica a sua edição por cima dela com um merge de 3 vias e tenta salvar de novo automaticamente.
  • Quando um merge tem uma sobreposição real no nível de linha, seu rascunho fica exatamente como está e aparece uma ConflictBar que não bloqueia, com três opções: Keep mine, Take theirs ou View merge. Nada é descartado em silêncio.

Tudo o que depende de um plugin da comunidade do Obsidian (consultas Dataview, saídas do Templater, extensões de canvas, formas do Excalidraw etc.) não será executado no editor web. O app web traz o seu próprio renderizador; ele não consegue rodar código de plugin da sua instalação do Obsidian. Blocos Dataview são renderizados como código simples, a sintaxe do Templater continua sem ser resolvida, e assim por diante.

As notas que dependem da renderização de plugins continuam seguras. Elas sincronizam como markdown simples e aparecem corretamente no Obsidian. Só não ganham a renderização dinâmica quando vistas no app web.

A compatibilidade com plugins é algo que podemos explorar em uma futura versão maior, mas não está no roadmap atual.

O editor é amigável ao toque, mas limitado em telas pequenas. Para edição pesada no celular, o Obsidian mobile costuma ser a melhor superfície. Edições rápidas e busca no app web funcionam bem.