From fa7b190c6bfe5005f0bfc5e6cfff98198f79b139 Mon Sep 17 00:00:00 2001 From: Mattia Mascarello Date: Thu, 28 Mar 2024 19:23:01 +0100 Subject: [PATCH 01/11] Translated readme in italian --- README.it.md | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 README.it.md diff --git a/README.it.md b/README.it.md new file mode 100644 index 000000000..1df330448 --- /dev/null +++ b/README.it.md @@ -0,0 +1,93 @@ +# Trilium Notes + +## Trilium è in modalità di manutenzione - vedi i dettagli in https://github.com/zadam/trilium/issues/4620 + +Le discussioni preliminari sull'organizzazione si stanno svolgendo in [Trilium Next discussions](https://github.com/orgs/TriliumNext/discussions). + +[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md) + + +Trilium Notes è un'applicazione per appunti ad organizzazione gerarchica, studiata per la costruzione di archivi di conoscenza personali di grandi dimensioni. + +Vedi [fotografie](https://github.com/zadam/trilium/wiki/Screenshot-tour) per una panoramica veloce: + +Trilium Screenshot + +L'Ucraina sta attualmente difendendosi dall'aggressione russa, considera [di donare all'esercito ucraino o a organizzazioni umanitarie](https://standforukraine.com/). + +

+ drawing + Trilium Notes supports Ukraine! +

+ +## 🎁 Funzionalità + + +* Gli appunti possono essere organizzati in un albero di profondità arbitraria. Un singolo appunto può essere collocato in più posti nell'albero (vedi [clonazione](https://github.com/zadam/trilium/wiki/Cloning-notes)) +* Ricco editor visuale (WYSIWYG), con supporto -tra l'altro- per tabelle, immagini ed [espressioni matematiche](https://github.com/zadam/trilium/wiki/Text-notes#math-support) e con [formattazione automatica](https://github.com/zadam/trilium/wiki/Text-notes#autoformat) per markdown +* Supporto per la modifica di [appunti con codice sorgente](https://github.com/zadam/trilium/wiki/Code-notes), con evidenziazione della sintassi +* [Navigazione veloce](https://github.com/zadam/trilium/wiki/Note-navigation) tra gli appunti, ricerca testuale completa e [fissaggio degli appunti](https://github.com/zadam/trilium/wiki/Note-hoisting) +* Supporto fluido per le [revisioni degli appunti](https://github.com/zadam/trilium/wiki/Note-revisions) +* Gli [attributi](https://github.com/zadam/trilium/wiki/Attributes) degli appunti possono essere utilizzati per l'organizzazione, per l'interrogazione e per lo scripting avanzato (prorgrammazione). +* [Sincronizzazione](https://github.com/zadam/trilium/wiki/Synchronization) con un server di sincronizzazione auto-ospitato + * c'è un [servizio di terze parti per ospitare server di sincronizzazione](https://trilium.cc/paid-hosting) +* [Condivisione](https://github.com/zadam/trilium/wiki/Sharing) (pubblicazione) di appunti sull'internet pubblico +* Forte [crittografia degli appunti](https://github.com/zadam/trilium/wiki/Protected-notes) configurabile singolarmente per ogni appunto +* Disegno di diagrammi con Excalidraw (tipo di appunto "canvas") +* [Mappe relazionali](https://github.com/zadam/trilium/wiki/Relation-map) e [mappe di collegamenti](https://github.com/zadam/trilium/wiki/Link-map) per visualizzare gli appunti e le loro relazioni +* [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - vedi [Esempi avanzati](https://github.com/zadam/trilium/wiki/Advanced-showcases) +* [API REST](https://github.com/zadam/trilium/wiki/ETAPI) per l'automazione +* Si adatta bene sia in termini di usabilità che di prestazioni fino ad oltre 100 000 appunti +* Interfaccia utente ottimizzata per il [mobile](https://github.com/zadam/trilium/wiki/Mobile-frontend) (smartphone e tablet) +* [Tema Notturno](https://github.com/zadam/trilium/wiki/Themes) +* Supporto per importazione ed esportazione da e per [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) e [Markdown import](https://github.com/zadam/trilium/wiki/Markdown) +* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) per il salvataggio facile di contenuti web + + +Dai un'occhiata a [awesome-trilium](https://github.com/Nriver/awesome-trilium) per temi, script, plugin e altro di terze parti. + +## 🏗 Compilazioni + + +Trilium è fornito come applicazione desktop (Linux e Windows) o come applicazione web ospitata sul tuo server (Linux). La versione desktop per Mac OS è disponibile, ma [non è supportata](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support). + +* Se vuoi usare Trilium sul tuo desktop, scarica il rilascio binario per la tua piattaforma dall'[ultima release](https://github.com/zadam/trilium/releases/latest), decomprimi l'archivio e avvia l'eseguibile ```trilium```. +* Se vuoi installare Trilium sul server, segui [questa pagina](https://github.com/zadam/trilium/wiki/Server-installation). + * Per ora solo Chrome e Firefox sono i browser supportati (testati). + +Trilium è anche disponibile su Flatpak: + +[](https://flathub.org/apps/details/com.github.zadam.trilium) + +## 📝 Documentazione + +[Vedi la wiki per una lista completa delle pagine di documentazione.](https://github.com/zadam/trilium/wiki/) + +Puoi anche leggere ["Patterns of personal knowledge base"](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base) per avere un'ispirazione su come potresti utilizzare Trilium. + +## 💻 Contribuire + +Usa un ambiente di sviluppo basato su browser + +[![Apri in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/zadam/trilium) + +O clona localmente ed esegui +``` +npm install +npm run start-server +``` + +## 📢 Shoutouts + +* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - miglior editor visuale (WYSIWYG) sul mercato, squadra di sviluppo attenta e reattiva +* [FancyTree](https://github.com/mar10/fancytree) - libreria per alberi molto ricca di funzionalità, senza pari. Trilium Notes non sarebbe lo stesso senza di essa. +* [CodeMirror](https://github.com/codemirror/CodeMirror) - editor di codice con supporto per un'enorme quantità di linguaggi. +* [jsPlumb](https://github.com/jsplumb/jsplumb) - libreria di connettività visuale senza pari. Utilizzata per [mappe relazionali](https://github.com/zadam/trilium/wiki/Relation-map) e [mappe di collegamenti](https://github.com/zadam/trilium/wiki/Link-map). + +## 🤝 Supporto + +È possibile supportare Trilium usando Github Sponsors, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). + +## 🔑 License + +Questo programma è software libero: è possibile redistribuirlo e/o modificarlo nei termini della GNU Affero General Public License come pubblicata dalla Free Software Foundation, sia la versione 3 della Licenza, o (a propria scelta) qualsiasi versione successiva. From fa4772b91e3581a7466af03581e48ed6d1a713d8 Mon Sep 17 00:00:00 2001 From: Mattia Mascarello Date: Thu, 28 Mar 2024 20:38:20 +0100 Subject: [PATCH 02/11] proofreading --- README.it.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.it.md b/README.it.md index 1df330448..871d9536d 100644 --- a/README.it.md +++ b/README.it.md @@ -1,6 +1,6 @@ # Trilium Notes -## Trilium è in modalità di manutenzione - vedi i dettagli in https://github.com/zadam/trilium/issues/4620 +## Trilium è in manutenzione - vedi i dettagli in https://github.com/zadam/trilium/issues/4620 Le discussioni preliminari sull'organizzazione si stanno svolgendo in [Trilium Next discussions](https://github.com/orgs/TriliumNext/discussions). @@ -13,7 +13,7 @@ Vedi [fotografie](https://github.com/zadam/trilium/wiki/Screenshot-tour) per una Trilium Screenshot -L'Ucraina sta attualmente difendendosi dall'aggressione russa, considera [di donare all'esercito ucraino o a organizzazioni umanitarie](https://standforukraine.com/). +L'Ucraina si sta difendendo dall'aggressione russa, considera [donare all'esercito ucraino o a organizzazioni umanitarie](https://standforukraine.com/).

drawing @@ -27,12 +27,12 @@ L'Ucraina sta attualmente difendendosi dall'aggressione russa, considera [di don * Ricco editor visuale (WYSIWYG), con supporto -tra l'altro- per tabelle, immagini ed [espressioni matematiche](https://github.com/zadam/trilium/wiki/Text-notes#math-support) e con [formattazione automatica](https://github.com/zadam/trilium/wiki/Text-notes#autoformat) per markdown * Supporto per la modifica di [appunti con codice sorgente](https://github.com/zadam/trilium/wiki/Code-notes), con evidenziazione della sintassi * [Navigazione veloce](https://github.com/zadam/trilium/wiki/Note-navigation) tra gli appunti, ricerca testuale completa e [fissaggio degli appunti](https://github.com/zadam/trilium/wiki/Note-hoisting) -* Supporto fluido per le [revisioni degli appunti](https://github.com/zadam/trilium/wiki/Note-revisions) +* Supporto integrato ed automatico per le [revisioni degli appunti](https://github.com/zadam/trilium/wiki/Note-revisions) * Gli [attributi](https://github.com/zadam/trilium/wiki/Attributes) degli appunti possono essere utilizzati per l'organizzazione, per l'interrogazione e per lo scripting avanzato (prorgrammazione). * [Sincronizzazione](https://github.com/zadam/trilium/wiki/Synchronization) con un server di sincronizzazione auto-ospitato * c'è un [servizio di terze parti per ospitare server di sincronizzazione](https://trilium.cc/paid-hosting) * [Condivisione](https://github.com/zadam/trilium/wiki/Sharing) (pubblicazione) di appunti sull'internet pubblico -* Forte [crittografia degli appunti](https://github.com/zadam/trilium/wiki/Protected-notes) configurabile singolarmente per ogni appunto +* Robusta [crittografia](https://github.com/zadam/trilium/wiki/Protected-notes) configurabile singolarmente per ogni appunto * Disegno di diagrammi con Excalidraw (tipo di appunto "canvas") * [Mappe relazionali](https://github.com/zadam/trilium/wiki/Relation-map) e [mappe di collegamenti](https://github.com/zadam/trilium/wiki/Link-map) per visualizzare gli appunti e le loro relazioni * [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - vedi [Esempi avanzati](https://github.com/zadam/trilium/wiki/Advanced-showcases) @@ -46,13 +46,13 @@ L'Ucraina sta attualmente difendendosi dall'aggressione russa, considera [di don Dai un'occhiata a [awesome-trilium](https://github.com/Nriver/awesome-trilium) per temi, script, plugin e altro di terze parti. -## 🏗 Compilazioni +## 🏗 Rilasci Trilium è fornito come applicazione desktop (Linux e Windows) o come applicazione web ospitata sul tuo server (Linux). La versione desktop per Mac OS è disponibile, ma [non è supportata](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support). -* Se vuoi usare Trilium sul tuo desktop, scarica il rilascio binario per la tua piattaforma dall'[ultima release](https://github.com/zadam/trilium/releases/latest), decomprimi l'archivio e avvia l'eseguibile ```trilium```. -* Se vuoi installare Trilium sul server, segui [questa pagina](https://github.com/zadam/trilium/wiki/Server-installation). +* Se vuoi usare Trilium sul tuo desktop, scarica il rilascio binario per la tua piattaforma dall'[ultimo rilascio](https://github.com/zadam/trilium/releases/latest), decomprimi l'archivio e avvia l'eseguibile ```trilium```. +* Se vuoi installare Trilium su un server, segui [questa pagina](https://github.com/zadam/trilium/wiki/Server-installation). * Per ora solo Chrome e Firefox sono i browser supportati (testati). Trilium è anche disponibile su Flatpak: @@ -77,16 +77,16 @@ npm install npm run start-server ``` -## 📢 Shoutouts +## 📢 Riconoscimenti * [CKEditor 5](https://github.com/ckeditor/ckeditor5) - miglior editor visuale (WYSIWYG) sul mercato, squadra di sviluppo attenta e reattiva * [FancyTree](https://github.com/mar10/fancytree) - libreria per alberi molto ricca di funzionalità, senza pari. Trilium Notes non sarebbe lo stesso senza di essa. * [CodeMirror](https://github.com/codemirror/CodeMirror) - editor di codice con supporto per un'enorme quantità di linguaggi. -* [jsPlumb](https://github.com/jsplumb/jsplumb) - libreria di connettività visuale senza pari. Utilizzata per [mappe relazionali](https://github.com/zadam/trilium/wiki/Relation-map) e [mappe di collegamenti](https://github.com/zadam/trilium/wiki/Link-map). +* [jsPlumb](https://github.com/jsplumb/jsplumb) - libreria per la connettività visuale senza pari. Utilizzata per [mappe relazionali](https://github.com/zadam/trilium/wiki/Relation-map) e [mappe di collegamenti](https://github.com/zadam/trilium/wiki/Link-map). ## 🤝 Supporto -È possibile supportare Trilium usando Github Sponsors, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). +È possibile supportare Trilium attraverso Github Sponsors, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). ## 🔑 License From 499bfaea9b3f313032abda7b40dc998f80e30e00 Mon Sep 17 00:00:00 2001 From: Mattia Mascarello Date: Thu, 28 Mar 2024 20:42:53 +0100 Subject: [PATCH 03/11] Added italian to other READMEs language section --- README-ZH_CN.md | 2 +- README.ja.md | 2 +- README.md | 3 ++- README.ru.md | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README-ZH_CN.md b/README-ZH_CN.md index 47d93a3da..8b2b21253 100644 --- a/README-ZH_CN.md +++ b/README-ZH_CN.md @@ -1,6 +1,6 @@ # Trilium Notes -[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) +[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md) [![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Trilium Notes 是一个层次化的笔记应用程序,专注于建立大型个人知识库。请参阅[屏幕截图](https://github.com/zadam/trilium/wiki/Screenshot-tour)以快速了解: diff --git a/README.ja.md b/README.ja.md index 621e3e0ff..f1c2e9c66 100644 --- a/README.ja.md +++ b/README.ja.md @@ -1,6 +1,6 @@ # Trilium Notes -[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) +[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md) Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://github.com/zadam/trilium/wiki/Screenshot-tour)をご覧ください: diff --git a/README.md b/README.md index e1cb2808b..9868d1896 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ Preliminary disccusions on the successor organization are taking place in [Trilium Next discussions](https://github.com/orgs/TriliumNext/discussions). -[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) +[![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md) + Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases. diff --git a/README.ru.md b/README.ru.md index f79341e79..4bf087deb 100644 --- a/README.ru.md +++ b/README.ru.md @@ -1,6 +1,6 @@ # Trilium Notes -[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) +[English](https://github.com/zadam/trilium/blob/master/README.md) | [Chinese](https://github.com/zadam/trilium/blob/master/README-ZH_CN.md) | [Russian](https://github.com/zadam/trilium/blob/master/README.ru.md) | [Japanese](https://github.com/zadam/trilium/blob/master/README.ja.md) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md) [![Join the chat at https://gitter.im/trilium-notes/Lobby](https://badges.gitter.im/trilium-notes/Lobby.svg)](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Trilium Notes – это приложение для заметок с иерархической структурой, ориентированное на создание больших персональных баз знаний. Для быстрого ознакомления посмотрите [скриншот-тур](https://github.com/zadam/trilium/wiki/Screenshot-tour): From ac1e1ebe436528f3a34e659be89af2a958183c16 Mon Sep 17 00:00:00 2001 From: Mattia Mascarello Date: Thu, 28 Mar 2024 20:51:28 +0100 Subject: [PATCH 04/11] Forgot to translate a heading --- README.it.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.it.md b/README.it.md index 871d9536d..8f845ca46 100644 --- a/README.it.md +++ b/README.it.md @@ -88,6 +88,6 @@ npm run start-server È possibile supportare Trilium attraverso Github Sponsors, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). -## 🔑 License +## 🔑 Licenza Questo programma è software libero: è possibile redistribuirlo e/o modificarlo nei termini della GNU Affero General Public License come pubblicata dalla Free Software Foundation, sia la versione 3 della Licenza, o (a propria scelta) qualsiasi versione successiva. From c8adf2a68542aefc3f386602283548305a981f51 Mon Sep 17 00:00:00 2001 From: alexpietsch <54153428+alexpietsch@users.noreply.github.com> Date: Mon, 29 Apr 2024 00:36:27 +0200 Subject: [PATCH 05/11] fix: restore start-electron script functionality --- bin/copy-dist.sh | 12 ++++++++++ electron.js | 62 ------------------------------------------------ electron.ts | 61 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 7 +++--- tsconfig.json | 3 ++- 5 files changed, 79 insertions(+), 66 deletions(-) create mode 100644 bin/copy-dist.sh delete mode 100644 electron.js create mode 100644 electron.ts diff --git a/bin/copy-dist.sh b/bin/copy-dist.sh new file mode 100644 index 000000000..d173455c3 --- /dev/null +++ b/bin/copy-dist.sh @@ -0,0 +1,12 @@ +DEST_DIR="./dist" +DEST_DIR_SRC="$DEST_DIR/src" + +for d in 'images' 'libraries' 'db' 'node_modules' ; do + echo "Copying $d" + cp -r "$d" "$DEST_DIR"/ +done + +for d in './src/public' './src/views' ; do + echo "Copying $d" + cp -r "$d" "$DEST_DIR_SRC"/ +done \ No newline at end of file diff --git a/electron.js b/electron.js deleted file mode 100644 index 69f403dd8..000000000 --- a/electron.js +++ /dev/null @@ -1,62 +0,0 @@ -'use strict'; - -const {app, globalShortcut, BrowserWindow} = require('electron'); -const sqlInit = require('./src/services/sql_init'); -const appIconService = require('./src/services/app_icon.js'); -const windowService = require('./src/services/window'); -const tray = require('./src/services/tray'); - -// Adds debug features like hotkeys for triggering dev tools and reload -require('electron-debug')(); - -appIconService.installLocalAppIcon(); - -require('electron-dl')({ saveAs: true }); - -// needed for excalidraw export https://github.com/zadam/trilium/issues/4271 -app.commandLine.appendSwitch("enable-experimental-web-platform-features"); - -// Quit when all windows are closed, except on macOS. There, it's common -// for applications and their menu bar to stay active until the user quits -// explicitly with Cmd + Q. -app.on('window-all-closed', () => { - if (process.platform !== 'darwin') { - app.quit() - } -}); - -app.on('ready', async () => { -// app.setAppUserModelId('com.github.zadam.trilium'); - - // if db is not initialized -> setup process - // if db is initialized, then we need to wait until the migration process is finished - if (sqlInit.isDbInitialized()) { - await sqlInit.dbReady; - - await windowService.createMainWindow(app); - - if (process.platform === 'darwin') { - app.on('activate', async () => { - if (BrowserWindow.getAllWindows().length === 0) { - await windowService.createMainWindow(app); - } - }); - } - - tray.createTray(); - } - else { - await windowService.createSetupWindow(); - } - - await windowService.registerGlobalShortcuts(); -}); - -app.on('will-quit', () => { - globalShortcut.unregisterAll(); -}); - -// this is to disable electron warning spam in the dev console (local development only) -process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'; - -require('./src/www.js'); diff --git a/electron.ts b/electron.ts new file mode 100644 index 000000000..1cd5abdbd --- /dev/null +++ b/electron.ts @@ -0,0 +1,61 @@ +"use strict"; + +const { app, globalShortcut, BrowserWindow } = require("electron"); +const sqlInit = require("./src/services/sql_init"); +const appIconService = require("./src/services/app_icon.js"); +const windowService = require("./src/services/window"); +const tray = require("./src/services/tray"); + +// Adds debug features like hotkeys for triggering dev tools and reload +require("electron-debug")(); + +appIconService.installLocalAppIcon(); + +require("electron-dl")({ saveAs: true }); + +// needed for excalidraw export https://github.com/zadam/trilium/issues/4271 +app.commandLine.appendSwitch("enable-experimental-web-platform-features"); + +// Quit when all windows are closed, except on macOS. There, it's common +// for applications and their menu bar to stay active until the user quits +// explicitly with Cmd + Q. +app.on("window-all-closed", () => { + if (process.platform !== "darwin") { + app.quit(); + } +}); + +app.on("ready", async () => { + // app.setAppUserModelId('com.github.zadam.trilium'); + + // if db is not initialized -> setup process + // if db is initialized, then we need to wait until the migration process is finished + if (sqlInit.isDbInitialized()) { + await sqlInit.dbReady; + + await windowService.createMainWindow(app); + + if (process.platform === "darwin") { + app.on("activate", async () => { + if (BrowserWindow.getAllWindows().length === 0) { + await windowService.createMainWindow(app); + } + }); + } + + tray.createTray(); + } else { + await windowService.createSetupWindow(); + } + + await windowService.registerGlobalShortcuts(); +}); + +app.on("will-quit", () => { + globalShortcut.unregisterAll(); +}); + +// this is to disable electron warning spam in the dev console (local development only) +process.env["ELECTRON_DISABLE_SECURITY_WARNINGS"] = "true"; + +require("./src/www.js"); diff --git a/package.json b/package.json index cbfcd7e32..bfb0c5aae 100644 --- a/package.json +++ b/package.json @@ -16,12 +16,13 @@ "start-server": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", "start-server-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", "qstart-server": "npm run qswitch-server && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", - "start-electron": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .", + "start-electron": "rimraf ./dist && tsc && ./bin/copy-dist.sh && cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron.js --inspect=5858 .", "start-electron-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 electron --inspect=5858 .", "qstart-electron": "npm run qswitch-electron && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .", - "start-test-server": "npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 node src/www.js", + "start-test-server": "npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 ts-node src/www.ts", "switch-server": "rm -rf ./node_modules/better-sqlite3 && npm install", "switch-electron": "./node_modules/.bin/electron-rebuild", + "rebuild": "electron-rebuild -f", "qswitch-server": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-server-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node", "qswitch-electron": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-desktop-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node", "build-backend-docs": "rm -rf ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js", @@ -155,4 +156,4 @@ "optionalDependencies": { "electron-installer-debian": "3.2.0" } -} \ No newline at end of file +} diff --git a/tsconfig.json b/tsconfig.json index 31aa526d2..b7fb43db6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,7 +12,8 @@ }, "include": [ "./src/**/*.js", - "./src/**/*.ts" + "./src/**/*.ts", + "./*.ts" ], "exclude": ["./node_modules/**/*"], "ts-node": { From 8c0ce174b5edac3da1162a3c94fd93d9e616faa3 Mon Sep 17 00:00:00 2001 From: Alex <54153428+alexpietsch@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:54:39 +0200 Subject: [PATCH 06/11] fix: script permissions --- bin/copy-dist.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 bin/copy-dist.sh diff --git a/bin/copy-dist.sh b/bin/copy-dist.sh old mode 100644 new mode 100755 From 0a69ed91b6d9e2c31d6a06dd07946fd3128f6580 Mon Sep 17 00:00:00 2001 From: Alex <54153428+alexpietsch@users.noreply.github.com> Date: Mon, 29 Apr 2024 14:58:16 +0200 Subject: [PATCH 07/11] fix: add postinstall step --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index bfb0c5aae..d8679cb50 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "start-test-server": "npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 ts-node src/www.ts", "switch-server": "rm -rf ./node_modules/better-sqlite3 && npm install", "switch-electron": "./node_modules/.bin/electron-rebuild", - "rebuild": "electron-rebuild -f", + "rebuild": "electron-rebuild", "qswitch-server": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-server-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node", "qswitch-electron": "rm -rf ./node_modules/better-sqlite3/bin ; mkdir -p ./node_modules/better-sqlite3/build ; cp ./bin/better-sqlite3/linux-desktop-better_sqlite3.node ./node_modules/better-sqlite3/build/better_sqlite3.node", "build-backend-docs": "rm -rf ./docs/backend_api && ./node_modules/.bin/jsdoc -c jsdoc-conf.json -d ./docs/backend_api src/becca/entities/*.js src/services/backend_script_api.js src/services/sql.js", @@ -32,7 +32,7 @@ "test-jasmine": "TRILIUM_DATA_DIR=~/trilium/data-test jasmine", "test-es6": "node -r esm spec-es6/attribute_parser.spec.js ", "test": "npm run test-jasmine && npm run test-es6", - "postinstall": "rimraf ./node_modules/canvas" + "postinstall": "rimraf ./node_modules/canvas && npm run rebuild" }, "dependencies": { "@braintree/sanitize-url": "6.0.4", From e2b4eaf9cc2fd405819280ebc26bfea642115065 Mon Sep 17 00:00:00 2001 From: Alex <54153428+alexpietsch@users.noreply.github.com> Date: Mon, 29 Apr 2024 23:37:08 +0200 Subject: [PATCH 08/11] fix: copy only necessary modules --- bin/copy-dist.sh | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/bin/copy-dist.sh b/bin/copy-dist.sh index d173455c3..3c4446903 100755 --- a/bin/copy-dist.sh +++ b/bin/copy-dist.sh @@ -1,7 +1,8 @@ DEST_DIR="./dist" DEST_DIR_SRC="$DEST_DIR/src" +DEST_DIR_NODE_MODULES="$DEST_DIR/node_modules" -for d in 'images' 'libraries' 'db' 'node_modules' ; do +for d in 'images' 'libraries' 'db' ; do echo "Copying $d" cp -r "$d" "$DEST_DIR"/ done @@ -9,4 +10,18 @@ done for d in './src/public' './src/views' ; do echo "Copying $d" cp -r "$d" "$DEST_DIR_SRC"/ -done \ No newline at end of file +done + +mkdir "$DEST_DIR_NODE_MODULES" + +cd node_modules + +for m in 'react/umd/react.production.min.js' 'react/umd/react.development.js' 'react-dom/umd/react-dom.production.min.js' 'react-dom/umd/react-dom.development.js' 'katex/dist/katex.min.js' 'katex/dist/contrib/mhchem.min.js' 'katex/dist/contrib/auto-render.min.js'; do + echo "Copying $m" + cp --parents "$m" ../"$DEST_DIR_NODE_MODULES" +done + +for m in '@excalidraw/excalidraw/dist/' 'katex/dist/' 'dayjs/' 'force-graph/dist/' 'boxicons/css/' 'boxicons/fonts/' 'mermaid/dist/' 'jquery/dist/' 'jquery-hotkeys/' 'print-this/' 'split.js/dist/' 'panzoom/dist/' ; do + echo "Copying $m" + cp --parents -r "$m" ../"$DEST_DIR_NODE_MODULES" +done From d2604e91d44e6996a11e308b3880d0dbf2f7511b Mon Sep 17 00:00:00 2001 From: alexpietsch <54153428+alexpietsch@users.noreply.github.com> Date: Wed, 1 May 2024 00:05:24 +0200 Subject: [PATCH 09/11] feat: add ts script for cross plattform use --- bin/copy-dist.sh | 27 ------------------ bin/copy-dist.ts | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 3 files changed, 73 insertions(+), 28 deletions(-) delete mode 100755 bin/copy-dist.sh create mode 100644 bin/copy-dist.ts diff --git a/bin/copy-dist.sh b/bin/copy-dist.sh deleted file mode 100755 index 3c4446903..000000000 --- a/bin/copy-dist.sh +++ /dev/null @@ -1,27 +0,0 @@ -DEST_DIR="./dist" -DEST_DIR_SRC="$DEST_DIR/src" -DEST_DIR_NODE_MODULES="$DEST_DIR/node_modules" - -for d in 'images' 'libraries' 'db' ; do - echo "Copying $d" - cp -r "$d" "$DEST_DIR"/ -done - -for d in './src/public' './src/views' ; do - echo "Copying $d" - cp -r "$d" "$DEST_DIR_SRC"/ -done - -mkdir "$DEST_DIR_NODE_MODULES" - -cd node_modules - -for m in 'react/umd/react.production.min.js' 'react/umd/react.development.js' 'react-dom/umd/react-dom.production.min.js' 'react-dom/umd/react-dom.development.js' 'katex/dist/katex.min.js' 'katex/dist/contrib/mhchem.min.js' 'katex/dist/contrib/auto-render.min.js'; do - echo "Copying $m" - cp --parents "$m" ../"$DEST_DIR_NODE_MODULES" -done - -for m in '@excalidraw/excalidraw/dist/' 'katex/dist/' 'dayjs/' 'force-graph/dist/' 'boxicons/css/' 'boxicons/fonts/' 'mermaid/dist/' 'jquery/dist/' 'jquery-hotkeys/' 'print-this/' 'split.js/dist/' 'panzoom/dist/' ; do - echo "Copying $m" - cp --parents -r "$m" ../"$DEST_DIR_NODE_MODULES" -done diff --git a/bin/copy-dist.ts b/bin/copy-dist.ts new file mode 100644 index 000000000..075fe19fa --- /dev/null +++ b/bin/copy-dist.ts @@ -0,0 +1,72 @@ +const fs = require("fs-extra"); +const path = require("path"); + +const DEST_DIR = "./dist"; +const DEST_DIR_SRC = path.join(DEST_DIR, "src"); +const DEST_DIR_NODE_MODULES = path.join(DEST_DIR, "node_modules"); + +async function copyNodeModuleFileOrFolder(source: string) { + const adjustedSource = source.substring(13); + const destination = path.join(DEST_DIR_NODE_MODULES, adjustedSource); + + console.log(`Copying ${source} to ${destination}`); + await fs.ensureDir(path.dirname(destination)); + await fs.copy(source, destination); +} + +const copy = async () => { + const filesToCopy = ["config-sample.ini"]; + for (const file of filesToCopy) { + console.log(`Copying ${file}`); + await fs.copy(file, path.join(DEST_DIR, file)); + } + + const dirsToCopy = ["images", "libraries", "db"]; + for (const dir of dirsToCopy) { + console.log(`Copying ${dir}`); + await fs.copy(dir, path.join(DEST_DIR, dir)); + } + + const srcDirsToCopy = ["./src/public", "./src/views"]; + for (const dir of srcDirsToCopy) { + console.log(`Copying ${dir}`); + await fs.copy(dir, path.join(DEST_DIR_SRC, path.basename(dir))); + } + + const nodeModulesFile = [ + "node_modules/react/umd/react.production.min.js", + "node_modules/react/umd/react.development.js", + "node_modules/react-dom/umd/react-dom.production.min.js", + "node_modules/react-dom/umd/react-dom.development.js", + "node_modules/katex/dist/katex.min.js", + "node_modules/katex/dist/contrib/mhchem.min.js", + "node_modules/katex/dist/contrib/auto-render.min.js", + ]; + + for (const file of nodeModulesFile) { + await copyNodeModuleFileOrFolder(file); + } + + const nodeModulesFolder = [ + "node_modules/@excalidraw/excalidraw/dist/", + "node_modules/katex/dist/", + "node_modules/dayjs/", + "node_modules/force-graph/dist/", + "node_modules/boxicons/css/", + "node_modules/boxicons/fonts/", + "node_modules/mermaid/dist/", + "node_modules/jquery/dist/", + "node_modules/jquery-hotkeys/", + "node_modules/print-this/", + "node_modules/split.js/dist/", + "node_modules/panzoom/dist/", + ]; + + for (const folder of nodeModulesFolder) { + await copyNodeModuleFileOrFolder(folder); + } +}; + +copy() + .then(() => console.log("Copying complete!")) + .catch((err) => console.error("Error during copy:", err)); diff --git a/package.json b/package.json index d8679cb50..9e6506d8a 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "start-server": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", "start-server-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", "qstart-server": "npm run qswitch-server && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/www.ts", - "start-electron": "rimraf ./dist && tsc && ./bin/copy-dist.sh && cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron.js --inspect=5858 .", + "start-electron": "rimraf ./dist && tsc && ts-node ./bin/copy-dist.ts && cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron.js --inspect=5858 .", "start-electron-no-dir": "cross-env TRILIUM_SAFE_MODE=1 TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 electron --inspect=5858 .", "qstart-electron": "npm run qswitch-electron && TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron --inspect=5858 .", "start-test-server": "npm run qswitch-server; rm -rf ./data-test; cross-env TRILIUM_SAFE_MODE=1 TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 ts-node src/www.ts", From 3e82d30a32943cd04b332a14643333a74efd53ef Mon Sep 17 00:00:00 2001 From: Alex <54153428+alexpietsch@users.noreply.github.com> Date: Wed, 1 May 2024 11:32:08 +0200 Subject: [PATCH 10/11] fix: skipLibCheck --- electron.ts | 34 ++++++++++++++++++---------------- src/services/app_icon.ts | 2 +- tsconfig.json | 3 ++- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/electron.ts b/electron.ts index 1cd5abdbd..88ff6f56e 100644 --- a/electron.ts +++ b/electron.ts @@ -1,10 +1,10 @@ "use strict"; -const { app, globalShortcut, BrowserWindow } = require("electron"); -const sqlInit = require("./src/services/sql_init"); -const appIconService = require("./src/services/app_icon.js"); -const windowService = require("./src/services/window"); -const tray = require("./src/services/tray"); +import electron = require("electron"); +import sqlInit = require("./src/services/sql_init"); +import appIconService = require("./src/services/app_icon"); +import windowService = require("./src/services/window"); +import tray = require("./src/services/tray"); // Adds debug features like hotkeys for triggering dev tools and reload require("electron-debug")(); @@ -14,31 +14,33 @@ appIconService.installLocalAppIcon(); require("electron-dl")({ saveAs: true }); // needed for excalidraw export https://github.com/zadam/trilium/issues/4271 -app.commandLine.appendSwitch("enable-experimental-web-platform-features"); +electron.app.commandLine.appendSwitch( + "enable-experimental-web-platform-features" +); // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. -app.on("window-all-closed", () => { +electron.app.on("window-all-closed", () => { if (process.platform !== "darwin") { - app.quit(); + electron.app.quit(); } }); -app.on("ready", async () => { - // app.setAppUserModelId('com.github.zadam.trilium'); +electron.app.on("ready", async () => { + // electron.app.setAppUserModelId('com.github.zadam.trilium'); // if db is not initialized -> setup process // if db is initialized, then we need to wait until the migration process is finished if (sqlInit.isDbInitialized()) { await sqlInit.dbReady; - await windowService.createMainWindow(app); + await windowService.createMainWindow(electron.app); if (process.platform === "darwin") { - app.on("activate", async () => { - if (BrowserWindow.getAllWindows().length === 0) { - await windowService.createMainWindow(app); + electron.app.on("activate", async () => { + if (electron.BrowserWindow.getAllWindows().length === 0) { + await windowService.createMainWindow(electron.app); } }); } @@ -51,8 +53,8 @@ app.on("ready", async () => { await windowService.registerGlobalShortcuts(); }); -app.on("will-quit", () => { - globalShortcut.unregisterAll(); +electron.app.on("will-quit", () => { + electron.globalShortcut.unregisterAll(); }); // this is to disable electron warning spam in the dev console (local development only) diff --git a/src/services/app_icon.ts b/src/services/app_icon.ts index 91f85d3e9..95438b652 100644 --- a/src/services/app_icon.ts +++ b/src/services/app_icon.ts @@ -68,6 +68,6 @@ function getExePath() { return path.resolve(resourceDir.ELECTRON_APP_ROOT_DIR, 'trilium'); } -module.exports = { +export = { installLocalAppIcon }; diff --git a/tsconfig.json b/tsconfig.json index b7fb43db6..bf97f7be2 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,8 @@ "noImplicitAny": true, "resolveJsonModule": true, "lib": ["ES2022"], - "downlevelIteration": true + "downlevelIteration": true, + "skipLibCheck": true }, "include": [ "./src/**/*.js", From 5f539427a943382d7d40a8db76095e07dfe5e96e Mon Sep 17 00:00:00 2001 From: Alex <54153428+alexpietsch@users.noreply.github.com> Date: Sun, 5 May 2024 12:40:00 +0200 Subject: [PATCH 11/11] fix: set prototype --- src/etapi/etapi_utils.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/etapi/etapi_utils.ts b/src/etapi/etapi_utils.ts index bcb589325..3498a8257 100644 --- a/src/etapi/etapi_utils.ts +++ b/src/etapi/etapi_utils.ts @@ -17,11 +17,13 @@ class EtapiError extends Error { code: string; constructor(statusCode: number, code: string, message: string) { - super(); + super(message); + + // Set the prototype explicitly. + Object.setPrototypeOf(this, EtapiError.prototype); this.statusCode = statusCode; this.code = code; - this.message = message; } }