O LightNote é um editor de código e notas desenvolvido em C++20 e Qt6, com foco em ser um ambiente de codificação leve e nativo. O projeto atende a uma demanda por um editor de código e notas que seja leve e funcional, sem dependências de web ou frameworks de código aberto.
Arquitetura e Tecnologia
Linguagens e Ferramentas
- C++20: A linguagem de programação escolhida para o desenvolvimento do LightNote.
- Qt6: A biblioteca de interface de usuário (UI) usada para a criação do ambiente de codificação.
- Scintilla: O núcleo do Notepad++ usado para o highlight de linguagens de programação.
- DuckDB: Um banco de dados leve para armazenar grandes conjuntos de dados.
- MCP: Um servidor de transporte de dados local para interagir com a IA.
- Ripgrep: Uma ferramenta de busca global embutida.
- OOXML: Um leitor de arquivos.xlsx próprio.
- PDF: Renderização de PDFs através do Qt6::Pdf.
Recursos
- Editor de Código: O LightNote usa Scintilla, o núcleo do Notepad++, para renderizar o código e realizar o highlight de linguagens de programação.
- Notas: O editor de notas é baseado em um QPlainTextEdit com um QSyntaxHighlighter próprio, que permite a exibição de marcações de texto e a edição de texto comum.
- Markdown: O editor de texto Markdown é implementado usando um QPlainTextEdit e um QSyntaxHighlighter próprio.
- Terminal de IA: O terminal de IA é implementado usando ConPTY e MCP.
- Busca Global: A busca global é implementada usando Ripgrep.
- Grafos de Conexões: O grafo de conexões é renderizado usando QPainter e simula forças com Barnes-Hut.
- Notas: As notas são armazenadas em um QAbstractTableModel paginado e indexado em background.
- Multi-idioma: O LightNote suporta múltiplas línguas.
- Captura de Notas: A captura de notas é feita através da bandeja.
- API Tester: Um teste de API é fornecido através de um arquivo.lnh.
- SSH/SFTP: O LightNote suporta SSH e SFTP.
- Multi-idioma: O LightNote suporta múltiplas línguas.
- Notas Autoadesivas: As notas podem ser armazenadas em um arquivo.ndjson.
- Corretor Ortográfico: O LightNote possui um corretor ortográfico.
- Versões de Kanban: O LightNote suporta múltiplas versões de Kanban.
- Distribuição: O LightNote está disponível gratuitamente e pode ser instalado na Microsoft Store.
Desempenho e Eficiência
Memória
- RAM: O LightNote ocioso ocupa menos de 40MB de RAM, em vez dos 1GB que um editor baseado em Electron pede para abrir um arquivo.txt.
- Arquivos Gigantes: Arquivos grandes são abertos usando mmap read-only, edições são feitas em uma piece table, e a tela é desenhada de forma virtualizada.
- DuckDB: Arquivos.parquet/.csv/.json são abertos como tabelas em DuckDB.
- Busca Global: A busca global é implementada usando Ripgrep, sem o uso de índices binários ou FTS5.
- PDF: O LightNote renderiza PDFs usando o Qt6::Pdf.
- Excel: O LightNote possui um leitor próprio de arquivos.xlsx.
- Zip: O LightNote suporta arquivos.zip.
- PDF: O LightNote renderiza PDFs usando o Qt6::Pdf.
Conclusão
O LightNote é um editor de código e notas leve e nativo, focado em ser um ambiente de codificação leve e funcional. Ele usa Scintilla para o highlight de linguagens de programação, DuckDB para armazenar grandes conjuntos de dados, e MCP para interagir com a IA. O LightNote suporta múltiplas línguas, múltiplas versões de Kanban, e múltiplos formatos de arquivo, incluindo Excel, PDF, e Zip. O LightNote é um projeto promissor que atende a uma demanda por um editor de código e notas leve e nativo.