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.it.md b/README.it.md new file mode 100644 index 000000000..8f845ca46 --- /dev/null +++ b/README.it.md @@ -0,0 +1,93 @@ +# Trilium Notes + +## 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). + +[![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 si sta difendendo dall'aggressione russa, considera [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 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 +* 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) +* [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. + +## 🏗 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'[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: + +[](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 +``` + +## 📢 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 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 attraverso Github Sponsors, [PayPal](https://paypal.me/za4am) o Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2). + +## 🔑 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. 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): 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/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..88ff6f56e --- /dev/null +++ b/electron.ts @@ -0,0 +1,63 @@ +"use strict"; + +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")(); + +appIconService.installLocalAppIcon(); + +require("electron-dl")({ saveAs: true }); + +// needed for excalidraw export https://github.com/zadam/trilium/issues/4271 +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. +electron.app.on("window-all-closed", () => { + if (process.platform !== "darwin") { + electron.app.quit(); + } +}); + +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(electron.app); + + if (process.platform === "darwin") { + electron.app.on("activate", async () => { + if (electron.BrowserWindow.getAllWindows().length === 0) { + await windowService.createMainWindow(electron.app); + } + }); + } + + tray.createTray(); + } else { + await windowService.createSetupWindow(); + } + + await windowService.registerGlobalShortcuts(); +}); + +electron.app.on("will-quit", () => { + electron.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 3d3d94a8e..f6a5e9290 100644 --- a/package.json +++ b/package.json @@ -16,13 +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 && 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", - "rebuild": "electron-rebuild", "switch-server": "rm -rf ./node_modules/better-sqlite3 && npm install", "switch-electron": "./node_modules/.bin/electron-rebuild", + "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", 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; } } 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 e7a4e67c4..832ac1e75 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,9 +8,10 @@ "noImplicitAny": true, "resolveJsonModule": true, "lib": ["ES2022"], - "downlevelIteration": true + "downlevelIteration": true, + "skipLibCheck": true }, - "include": ["./src/**/*.js", "./src/**/*.ts", "./spec/**/*.ts"], + "include": ["./src/**/*.js", "./src/**/*.ts", "./*.ts"], "exclude": ["./node_modules/**/*"], "ts-node": { "files": true