mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 18:08:33 +02:00
Compare commits
No commits in common. "master" and "v0.43.4" have entirely different histories.
1
.github/FUNDING.yml
vendored
1
.github/FUNDING.yml
vendored
@ -1,4 +1,3 @@
|
|||||||
# These are supported funding model platforms
|
# These are supported funding model platforms
|
||||||
|
|
||||||
github: [zadam]
|
github: [zadam]
|
||||||
custom: ["https://paypal.me/za4am"]
|
|
||||||
|
52
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
52
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -1,52 +0,0 @@
|
|||||||
name: Bug Report
|
|
||||||
description: Report a bug
|
|
||||||
title: "(Bug report) "
|
|
||||||
labels: "Type: Bug"
|
|
||||||
body:
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: Trilium Version
|
|
||||||
description: What version of Trilium are you using?
|
|
||||||
placeholder: 0.57.0-beta
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: What operating system are you using?
|
|
||||||
options:
|
|
||||||
- Windows
|
|
||||||
- macOS
|
|
||||||
- Ubuntu
|
|
||||||
- Other Linux
|
|
||||||
- Other (specify below)
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: dropdown
|
|
||||||
attributes:
|
|
||||||
label: What is your setup?
|
|
||||||
description: https://github.com/zadam/trilium/wiki#choose-the-setup
|
|
||||||
options:
|
|
||||||
- Local (no sync)
|
|
||||||
- Local + server sync
|
|
||||||
- Server access only
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: Operating System Version
|
|
||||||
description: What operating system version are you using? On Windows, click Start button > Settings > System > About. On macOS, click the Apple Menu > About This Mac. On Linux, use lsb_release or uname -a.
|
|
||||||
placeholder: "e.g. Windows 10 version 1909, macOS Catalina 10.15.7, or Ubuntu 20.04"
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Description
|
|
||||||
description: A clear and concise description of the bug and any additional information.
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Error logs
|
|
||||||
description: Please provide error logs, see [wiki page](https://github.com/zadam/trilium/wiki/Error-logs) for instructions on how to submit them.
|
|
||||||
validations:
|
|
||||||
required: false
|
|
15
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
15
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@ -1,15 +0,0 @@
|
|||||||
name: Feature Request
|
|
||||||
description: Ask for a new feature to be added
|
|
||||||
title: "(Feature request) "
|
|
||||||
labels: "Type: Enhancement"
|
|
||||||
body:
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Describe feature
|
|
||||||
description: A clear and concise description of what you want to be added..
|
|
||||||
validations:
|
|
||||||
required: true
|
|
||||||
- type: textarea
|
|
||||||
attributes:
|
|
||||||
label: Additional Information
|
|
||||||
description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
|
|
71
.github/workflows/codeql-analysis.yml
vendored
71
.github/workflows/codeql-analysis.yml
vendored
@ -1,71 +0,0 @@
|
|||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
#
|
|
||||||
# ******** NOTE ********
|
|
||||||
# We have attempted to detect the languages in your repository. Please check
|
|
||||||
# the `language` matrix defined below to confirm you have the correct set of
|
|
||||||
# supported CodeQL languages.
|
|
||||||
#
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
pull_request:
|
|
||||||
# The branches below must be a subset of the branches above
|
|
||||||
branches: [ master ]
|
|
||||||
schedule:
|
|
||||||
- cron: '37 4 * * 1'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'javascript' ]
|
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
|
||||||
# Learn more:
|
|
||||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v1
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
|
||||||
- name: Autobuild
|
|
||||||
uses: github/codeql-action/autobuild@v1
|
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
|
||||||
# 📚 https://git.io/JvXDl
|
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
|
||||||
# and modify them (or add more) to build your code if your project
|
|
||||||
# uses a compiled language
|
|
||||||
|
|
||||||
#- run: |
|
|
||||||
# make bootstrap
|
|
||||||
# make release
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v1
|
|
53
.github/workflows/docker.yaml
vendored
53
.github/workflows/docker.yaml
vendored
@ -1,53 +0,0 @@
|
|||||||
name: Publish Docker image
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags: [v*]
|
|
||||||
jobs:
|
|
||||||
push_to_registries:
|
|
||||||
name: Push Docker image to multiple registries
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
packages: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
- name: Set up QEMU
|
|
||||||
uses: docker/setup-qemu-action@v1
|
|
||||||
- name: Docker meta
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v3
|
|
||||||
with:
|
|
||||||
images: |
|
|
||||||
zadam/trilium
|
|
||||||
ghcr.io/zadam/trilium
|
|
||||||
tags: |
|
|
||||||
type=semver,pattern={{version}}
|
|
||||||
type=semver,pattern={{major}}.{{minor}}-latest
|
|
||||||
type=match,pattern=(\d+.\d+).\d+\-beta,enable=${{ endsWith(github.ref, 'beta') }},group=1,suffix=-latest
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v1
|
|
||||||
with:
|
|
||||||
install: true
|
|
||||||
- name: Log in to Docker Hub
|
|
||||||
uses: docker/login-action@v1
|
|
||||||
with:
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
- name: Log in to GitHub Docker Registry
|
|
||||||
uses: docker/login-action@v1
|
|
||||||
with:
|
|
||||||
registry: ghcr.io
|
|
||||||
username: ${{ github.repository_owner }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Create server-package.json
|
|
||||||
run: cat package.json | grep -v electron > server-package.json
|
|
||||||
- name: Build and Push
|
|
||||||
uses: docker/build-push-action@v2.7.0
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
|
|
||||||
push: true
|
|
||||||
cache-from: type=registry,ref=zadam/trilium:buildcache
|
|
||||||
cache-to: type=registry,ref=zadam/trilium:buildcache,mode=max
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -9,8 +9,3 @@ config.ini
|
|||||||
cert.key
|
cert.key
|
||||||
cert.crt
|
cert.crt
|
||||||
server-package.json
|
server-package.json
|
||||||
.idea/httpRequests/
|
|
||||||
data/
|
|
||||||
data-test/
|
|
||||||
tmp/
|
|
||||||
.eslintcache
|
|
||||||
|
@ -2,7 +2,7 @@ image:
|
|||||||
file: .gitpod.dockerfile
|
file: .gitpod.dockerfile
|
||||||
|
|
||||||
tasks:
|
tasks:
|
||||||
- before: nvm install 18.18.2 && nvm use 18.18.2
|
- before: nvm install 10 && nvm use 10
|
||||||
init: npm install
|
init: npm install
|
||||||
command: npm run start-server
|
command: npm run start-server
|
||||||
|
|
||||||
|
5
.idea/dataSources.xml
generated
5
.idea/dataSources.xml
generated
@ -1,12 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
<data-source source="LOCAL" name="document.db" uuid="2a4ac1e6-b828-4a2a-8e4a-3f59f10aff26">
|
<data-source source="LOCAL" name="document.db" uuid="b0b03187-36c8-4ec1-bdab-fd4273cd692e">
|
||||||
<driver-ref>sqlite.xerial</driver-ref>
|
<driver-ref>sqlite.xerial</driver-ref>
|
||||||
<synchronize>true</synchronize>
|
<synchronize>true</synchronize>
|
||||||
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
|
<jdbc-driver>org.sqlite.JDBC</jdbc-driver>
|
||||||
<jdbc-url>jdbc:sqlite:$PROJECT_DIR$/data/document.db</jdbc-url>
|
<jdbc-url>jdbc:sqlite:$USER_HOME$/trilium-data/document.db</jdbc-url>
|
||||||
<working-dir>$ProjectFileDir$</working-dir>
|
|
||||||
</data-source>
|
</data-source>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
15
.idea/git_toolbox_prj.xml
generated
15
.idea/git_toolbox_prj.xml
generated
@ -1,15 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="GitToolBoxProjectSettings">
|
|
||||||
<option name="commitMessageIssueKeyValidationOverride">
|
|
||||||
<BoolValueOverride>
|
|
||||||
<option name="enabled" value="true" />
|
|
||||||
</BoolValueOverride>
|
|
||||||
</option>
|
|
||||||
<option name="commitMessageValidationEnabledOverride">
|
|
||||||
<BoolValueOverride>
|
|
||||||
<option name="enabled" value="true" />
|
|
||||||
</BoolValueOverride>
|
|
||||||
</option>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
2
.idea/inspectionProfiles/Project_Default.xml
generated
2
.idea/inspectionProfiles/Project_Default.xml
generated
@ -1,7 +1,7 @@
|
|||||||
<component name="InspectionProjectProfileManager">
|
<component name="InspectionProjectProfileManager">
|
||||||
<profile version="1.0">
|
<profile version="1.0">
|
||||||
<option name="myName" value="Project Default" />
|
<option name="myName" value="Project Default" />
|
||||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
<inspection_tool class="JSUnfilteredForInLoop" enabled="false" level="WARNING" enabled_by_default="false" />
|
||||||
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
|
<inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
|
||||||
<option name="processCode" value="true" />
|
<option name="processCode" value="true" />
|
||||||
<option name="processLiterals" value="true" />
|
<option name="processLiterals" value="true" />
|
||||||
|
2
.idea/jsLibraryMappings.xml
generated
2
.idea/jsLibraryMappings.xml
generated
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="JavaScriptLibraryMappings">
|
<component name="JavaScriptLibraryMappings">
|
||||||
<includedPredefinedLibrary name="Node.js Core" />
|
<file url="PROJECT" libraries="{@types/jquery}" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@ -1,8 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="JavaScriptSettings">
|
<component name="JavaScriptSettings">
|
||||||
<option name="languageLevel" value="ES6" />
|
<option name="languageLevel" value="ES6" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_16" default="true" project-jdk-name="openjdk-16" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
1
.idea/sqldialects.xml
generated
1
.idea/sqldialects.xml
generated
@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="SqlDialectMappings">
|
<component name="SqlDialectMappings">
|
||||||
<file url="file://$PROJECT_DIR$" dialect="SQLite" />
|
|
||||||
<file url="PROJECT" dialect="SQLite" />
|
<file url="PROJECT" dialect="SQLite" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
1
.idea/vcs.xml
generated
1
.idea/vcs.xml
generated
@ -2,5 +2,6 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="" vcs="Git" />
|
<mapping directory="" vcs="Git" />
|
||||||
|
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
24
.vscode/launch.json
vendored
24
.vscode/launch.json
vendored
@ -1,24 +0,0 @@
|
|||||||
{
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
// nodemon should be installed globally, use npm i -g nodemon
|
|
||||||
{
|
|
||||||
"console": "integratedTerminal",
|
|
||||||
"internalConsoleOptions": "neverOpen",
|
|
||||||
"name": "nodemon start-server",
|
|
||||||
"program": "${workspaceFolder}/src/www",
|
|
||||||
"request": "launch",
|
|
||||||
"restart": true,
|
|
||||||
"runtimeExecutable": "nodemon",
|
|
||||||
"env": {
|
|
||||||
"TRILIUM_ENV": "dev",
|
|
||||||
"TRILIUM_DATA_DIR": "./data"
|
|
||||||
},
|
|
||||||
"skipFiles": [
|
|
||||||
"<node_internals>/**"
|
|
||||||
],
|
|
||||||
"type": "node",
|
|
||||||
"outputCapture": "std",
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
"editor.formatOnSave": true,
|
|
||||||
"files.eol": "\n"
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
Please treat each other with respect and understanding.
|
|
29
Dockerfile
29
Dockerfile
@ -1,12 +1,8 @@
|
|||||||
# !!! Don't try to build this Dockerfile directly, run it through bin/build-docker.sh script !!!
|
FROM node:12.16.3-alpine
|
||||||
FROM node:18.18.2-alpine
|
|
||||||
|
|
||||||
# Create app directory
|
# Create app directory
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
# Bundle app source
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
COPY server-package.json package.json
|
COPY server-package.json package.json
|
||||||
|
|
||||||
# Install app dependencies
|
# Install app dependencies
|
||||||
@ -20,23 +16,12 @@ RUN set -x \
|
|||||||
make \
|
make \
|
||||||
nasm \
|
nasm \
|
||||||
libpng-dev \
|
libpng-dev \
|
||||||
python3 \
|
python \
|
||||||
&& npm install \
|
&& npm install --production \
|
||||||
&& apk del .build-dependencies \
|
&& apk del .build-dependencies
|
||||||
&& npm run webpack \
|
|
||||||
&& npm prune --omit=dev \
|
|
||||||
&& cp src/public/app/share.js src/public/app-dist/. \
|
|
||||||
&& cp -r src/public/app/doc_notes src/public/app-dist/. \
|
|
||||||
&& rm -rf src/public/app
|
|
||||||
|
|
||||||
# Some setup tools need to be kept
|
# Bundle app source
|
||||||
RUN apk add --no-cache su-exec shadow
|
COPY . .
|
||||||
|
|
||||||
# Add application user and setup proper volume permissions
|
|
||||||
RUN adduser -s /bin/false node; exit 0
|
|
||||||
|
|
||||||
# Start the application
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
CMD [ "./start-docker.sh" ]
|
CMD [ "node", "./src/www" ]
|
||||||
|
|
||||||
HEALTHCHECK --start-period=10s CMD exec su-exec node node docker_healthcheck.js
|
|
||||||
|
@ -1,82 +0,0 @@
|
|||||||
# 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) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md)
|
|
||||||
|
|
||||||
[](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)以快速了解:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Ukraine is currently suffering from Russian aggression, please consider donating to [one of these charities](https://old.reddit.com/r/ukraine/comments/s6g5un/want_to_support_ukraine_heres_a_list_of_charities/).
|
|
||||||
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="600"/>
|
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="600"/>
|
|
||||||
|
|
||||||
## 特性
|
|
||||||
|
|
||||||
* 笔记可以排列成任意深的树。单个笔记可以放在树中的多个位置(请参阅[克隆](https://github.com/zadam/trilium/wiki/Cloning-notes))
|
|
||||||
* 丰富的所见即所得笔记编辑功能,包括带有 Markdown [自动格式化功能的](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)表格,图像和[数学](https://github.com/zadam/trilium/wiki/Text-notes#math-support)
|
|
||||||
* 支持编辑[使用源代码的笔记](https://github.com/zadam/trilium/wiki/Code-notes),包括语法高亮显示
|
|
||||||
* 笔记之间快速[导航](https://github.com/zadam/trilium/wiki/Note-navigation),全文搜索和[笔记聚焦](https://github.com/zadam/trilium/wiki/Note-hoisting)
|
|
||||||
* 无缝[笔记版本控制](https://github.com/zadam/trilium/wiki/Note-revisions)
|
|
||||||
* 笔记[属性](https://github.com/zadam/trilium/wiki/Attributes)可用于笔记组织,查询和高级[脚本编写](https://github.com/zadam/trilium/wiki/Scripts)
|
|
||||||
* [同步](https://github.com/zadam/trilium/wiki/Synchronization)与自托管同步服务器
|
|
||||||
* 有一个[第三方提供的同步服务器托管服务](https://trilium.cc/paid-hosting)
|
|
||||||
* 公开地[分享](https://github.com/zadam/trilium/wiki/Sharing)(发布)笔记到互联网
|
|
||||||
* 具有按笔记粒度的强大的[笔记加密](https://github.com/zadam/trilium/wiki/Protected-notes)
|
|
||||||
* 使用自带的 Excalidraw 来绘制图表(笔记类型“画布”)
|
|
||||||
* [关系图](https://github.com/zadam/trilium/wiki/Relation-map)和[链接图](https://github.com/zadam/trilium/wiki/Link-map),用于可视化笔记及其关系
|
|
||||||
* [脚本](https://github.com/zadam/trilium/wiki/Scripts) - 请参阅[高级功能展示](https://github.com/zadam/trilium/wiki/Advanced-showcases)
|
|
||||||
* 在拥有超过 10 万条笔记时仍能保持良好的可用性和性能
|
|
||||||
* 针对智能手机和平板电脑进行优化的[用于移动设备的前端](https://github.com/zadam/trilium/wiki/Mobile-frontend)
|
|
||||||
* [夜间主题](https://github.com/zadam/trilium/wiki/Themes)
|
|
||||||
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) 和 [Markdown 导入导出](https://github.com/zadam/trilium/wiki/Markdown)功能
|
|
||||||
* 使用[网页剪藏](https://github.com/zadam/trilium/wiki/Web-clipper)轻松保存互联网上的内容
|
|
||||||
|
|
||||||
## 构建
|
|
||||||
|
|
||||||
Trilium 可以用作桌面应用程序(Linux 和 Windows)或服务器(Linux)上托管的 Web 应用程序。虽然有 macOS 版本的桌面应用程序,但它[不受支持](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support)。
|
|
||||||
|
|
||||||
* 如果要在桌面上使用 Trilium,请从[最新版本](https://github.com/zadam/trilium/releases/latest)下载适用于您平台的二进制版本,解压缩该软件包并运行`trilium`可执行文件。
|
|
||||||
* 如果要在服务器上安装 Trilium,请参考[此页面](https://github.com/zadam/trilium/wiki/Server-installation)。
|
|
||||||
* 当前仅支持(测试过)最近发布的 Chrome 和 Firefox 浏览器。
|
|
||||||
|
|
||||||
Trilium 也提供 Flatpak:
|
|
||||||
|
|
||||||
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
|
|
||||||
|
|
||||||
## 文档
|
|
||||||
|
|
||||||
[有关文档页面的完整列表,请参见 Wiki。](https://github.com/zadam/trilium/wiki/)
|
|
||||||
|
|
||||||
* [Wiki 的中文翻译版本](https://github.com/baddate/trilium/wiki/)
|
|
||||||
|
|
||||||
您还可以阅读[个人知识库模式](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base),以获取有关如何使用 Trilium 的灵感。
|
|
||||||
|
|
||||||
## 贡献
|
|
||||||
|
|
||||||
使用基于浏览器的开发环境
|
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/zadam/trilium)
|
|
||||||
|
|
||||||
或者克隆本仓库到本地,并运行
|
|
||||||
|
|
||||||
```
|
|
||||||
npm install
|
|
||||||
npm run start-server
|
|
||||||
```
|
|
||||||
|
|
||||||
## 致谢
|
|
||||||
|
|
||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市面上最好的所见即所得编辑器,拥有互动性强且聆听能力强的团队
|
|
||||||
* [FancyTree](https://github.com/mar10/fancytree) - 一个非常丰富的关于树的库,强大到没有对手。没有它,Trilium Notes 将不会如此。
|
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - 支持大量语言的代码编辑器
|
|
||||||
* [jsPlumb](https://github.com/jsplumb/jsplumb) - 强大的可视化连接库。用于[关系图](https://github.com/zadam/trilium/wiki/Relation-map)和[链接图](https://github.com/zadam/trilium/wiki/Link-map)
|
|
||||||
|
|
||||||
## 捐赠
|
|
||||||
|
|
||||||
你可以通过 GitHub Sponsors,[PayPal](https://paypal.me/za4am) 或者比特币 (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) 来捐赠。
|
|
||||||
|
|
||||||
## 许可证
|
|
||||||
|
|
||||||
本程序是自由软件:你可以再发布本软件和/或修改本软件,只要你遵循 Free Software Foundation 发布的 GNU Affero General Public License 的第三版或者任何(由你选择)更晚的版本。
|
|
93
README.it.md
93
README.it.md
@ -1,93 +0,0 @@
|
|||||||
# 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).
|
|
||||||
|
|
||||||
[](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:
|
|
||||||
|
|
||||||
<a href="https://github.com/zadam/trilium/wiki/Screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
|
|
||||||
|
|
||||||
L'Ucraina si sta difendendo dall'aggressione russa, considera [donare all'esercito ucraino o a organizzazioni umanitarie](https://standforukraine.com/).
|
|
||||||
|
|
||||||
<p float="left">
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="400"/>
|
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="570"/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## 🎁 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:
|
|
||||||
|
|
||||||
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](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
|
|
||||||
|
|
||||||
[](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.
|
|
83
README.ja.md
83
README.ja.md
@ -1,83 +0,0 @@
|
|||||||
# 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) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md)
|
|
||||||
|
|
||||||
Trilium Notes は、大規模な個人知識ベースの構築に焦点を当てた、階層型ノートアプリケーションです。概要は[スクリーンショット](https://github.com/zadam/trilium/wiki/Screenshot-tour)をご覧ください:
|
|
||||||
|
|
||||||
<a href="https://github.com/zadam/trilium/wiki/Screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
|
|
||||||
|
|
||||||
ウクライナは現在、ロシアの侵略から自国を守っています。[ウクライナ軍や人道的な慈善団体への寄付](https://standforukraine.com/)をご検討ください。
|
|
||||||
|
|
||||||
<p float="left">
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="400"/>
|
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="570"/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## 🎁 特徴
|
|
||||||
|
|
||||||
* ノートは、任意の深さのツリーに配置できます。単一のノートをツリー内の複数の場所に配置できます ([cloning](https://github.com/zadam/trilium/wiki/Cloning-notes) を参照)
|
|
||||||
* マークダウン[オートフォーマット](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)による、表、画像、[数学](https://github.com/zadam/trilium/wiki/Text-notes#math-support)などの豊富な WYSIWYG ノート編集機能
|
|
||||||
* シンタックスハイライトを含む[ソースコード付きノート](https://github.com/zadam/trilium/wiki/Code-notes)の編集をサポート
|
|
||||||
* [ノート間のナビゲーション](https://github.com/zadam/trilium/wiki/Note-navigation)、全文検索、[ノートホイスト](https://github.com/zadam/trilium/wiki/Note-hoisting)が高速かつ簡単に行えます
|
|
||||||
* シームレスな[ノートのバージョン管理](https://github.com/zadam/trilium/wiki/Note-revisions)
|
|
||||||
* ノート[属性](https://github.com/zadam/trilium/wiki/Attributes)は、ノート整理、クエリ、高度な[スクリプト](https://github.com/zadam/trilium/wiki/Scripts)に使用できます
|
|
||||||
* 自己ホスト型同期サーバーとの[同期](https://github.com/zadam/trilium/wiki/Synchronization)
|
|
||||||
* [同期サーバーをホストするサードパーティ・サービス](https://trilium.cc/paid-hosting)があります
|
|
||||||
* 公開インターネットへのノートの[共有](https://github.com/zadam/trilium/wiki/Sharing)(公開)
|
|
||||||
* ノートごとの粒度を持つ強力な[ノート暗号化](https://github.com/zadam/trilium/wiki/Protected-notes)
|
|
||||||
* 組み込みの Excalidraw を使用した図のスケッチ (ノート タイプ"キャンバス")
|
|
||||||
* ノートとその関係を可視化するための[関係図](https://github.com/zadam/trilium/wiki/Relation-map)と[リンクマップ](https://github.com/zadam/trilium/wiki/Link-map)
|
|
||||||
* [スクリプティング](https://github.com/zadam/trilium/wiki/Scripts) - [高度なショーケース](https://github.com/zadam/trilium/wiki/Advanced-showcases)を参照
|
|
||||||
* 自動化のための [REST API](https://github.com/zadam/trilium/wiki/ETAPI)
|
|
||||||
* ユーザビリティとパフォーマンスの両方で 100 000 ノート以上に拡張可能
|
|
||||||
* スマートフォンとタブレット向けのタッチ最適化[モバイルフロントエンド](https://github.com/zadam/trilium/wiki/Mobile-frontend)
|
|
||||||
* [ナイトテーマ](https://github.com/zadam/trilium/wiki/Themes)
|
|
||||||
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) と [Markdown のインポートとエクスポート](https://github.com/zadam/trilium/wiki/Markdown)
|
|
||||||
* Web コンテンツを簡単に保存するための [Web クリッパー](https://github.com/zadam/trilium/wiki/Web-clipper)
|
|
||||||
|
|
||||||
サードパーティのテーマ、スクリプト、プラグインなどは、 [awesome-trilium](https://github.com/Nriver/awesome-trilium) をチェックしてください。
|
|
||||||
|
|
||||||
## 🏗 ビルド
|
|
||||||
|
|
||||||
Trilium は、デスクトップアプリケーション(Linux、Windows)またはサーバー上でホストされるウェブアプリケーション(Linux)として提供されます。 Mac OS のデスクトップビルドも利用可能ですが、 [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support) となっています。
|
|
||||||
|
|
||||||
* デスクトップで Trilium を使用したい場合は、 [latest release](https://github.com/zadam/trilium/releases/latest) からお使いのプラットフォームのバイナリリリースをダウンロードし、パッケージを解凍して ``trilium`` の実行ファイルを実行してください。
|
|
||||||
* サーバーに Trilium をインストールする場合は、[このページ](https://github.com/zadam/trilium/wiki/Server-installation)に従ってください。
|
|
||||||
* 現在、対応(動作確認)しているブラウザは、最近の Chrome と Firefox のみです。
|
|
||||||
|
|
||||||
Trilium は Flatpak としても提供されます:
|
|
||||||
|
|
||||||
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
|
|
||||||
|
|
||||||
## 📝 ドキュメント
|
|
||||||
|
|
||||||
[ドキュメントページの全リストはwikiをご覧ください。](https://github.com/zadam/trilium/wiki/)
|
|
||||||
|
|
||||||
また、[個人的な知識基盤のパターン](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base)を読むと、 Trilium の使い方のヒントを得ることができます。
|
|
||||||
|
|
||||||
## 💻 コントリビュート
|
|
||||||
|
|
||||||
ブラウザベースの開発環境を使用
|
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/zadam/trilium)
|
|
||||||
|
|
||||||
または、ローカルにクローンして実行
|
|
||||||
```
|
|
||||||
npm install
|
|
||||||
npm run start-server
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📢 シャウトアウト
|
|
||||||
|
|
||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - 市場で最高の WYSIWYG エディター、非常にインタラクティブで聞き上手なチーム
|
|
||||||
* [FancyTree](https://github.com/mar10/fancytree) - 真の競争相手がいない、非常に機能豊富なツリーライブラリです。 Trilium Notes は、これなしでは成り立たないでしょう。
|
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - 膨大な数の言語をサポートするコードエディタ
|
|
||||||
* [jsPlumb](https://github.com/jsplumb/jsplumb) - 競合のないビジュアルコネクティビティライブラリです。[関係図](https://github.com/zadam/trilium/wiki/Relation-map)、[リンク図](https://github.com/zadam/trilium/wiki/Link-map)で使用。
|
|
||||||
|
|
||||||
## 🤝 サポート
|
|
||||||
|
|
||||||
GitHub スポンサー、[PayPal](https://paypal.me/za4am)もしくは Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2) にて Trilium をサポートすることができます。
|
|
||||||
|
|
||||||
## 🔑 ライセンス
|
|
||||||
|
|
||||||
このプログラムはフリーソフトウェアです:フリーソフトウェア財団が発行した GNU Affero General Public License のバージョン3、またはそれ以降のバージョンのいずれかに従って、再配布および/または改変することができます。
|
|
54
README.md
54
README.md
@ -1,53 +1,29 @@
|
|||||||
> [!IMPORTANT]
|
|
||||||
> The TriliumNext team has received the original Trilium Notes repository (`zadam/trilium`). We will soon enter the process in which TriliumNext will become the original Trilium Notes again.
|
|
||||||
>
|
|
||||||
> For now, we invite you to have a look at the [TriliumNext](https://github.com/TriliumNext/Notes) repo. You should be able to migrate to TriliumNext without any problems from the original Trilium.
|
|
||||||
>
|
|
||||||
> Thanks to @zadam for his original work and for allowing us to continue using the Trilium Notes name once again.
|
|
||||||
|
|
||||||
# Trilium Notes
|
# Trilium Notes
|
||||||
|
|
||||||
[](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)
|
[](https://gitter.im/trilium-notes/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
|
Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases. See [screenshots](https://github.com/zadam/trilium/wiki/Screenshot-tour) for quick overview:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
Trilium Notes is a hierarchical note taking application with focus on building large personal knowledge bases.
|
## Features
|
||||||
|
|
||||||
See [screenshots](https://github.com/zadam/trilium/wiki/Screenshot-tour) for quick overview:
|
|
||||||
|
|
||||||
<a href="https://github.com/zadam/trilium/wiki/Screenshot-tour"><img src="https://raw.githubusercontent.com/wiki/zadam/trilium/images/screenshot.png" alt="Trilium Screenshot" width="1000"></a>
|
|
||||||
|
|
||||||
Ukraine is currently defending itself from Russian aggression, please consider [donating to Ukrainian Army or humanitarian charities](https://standforukraine.com/).
|
|
||||||
|
|
||||||
<p float="left">
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="400"/>
|
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="570"/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## 🎁 Features
|
|
||||||
|
|
||||||
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes))
|
* Notes can be arranged into arbitrarily deep tree. Single note can be placed into multiple places in the tree (see [cloning](https://github.com/zadam/trilium/wiki/Cloning-notes))
|
||||||
* Rich WYSIWYG note editing including e.g. tables, images and [math](https://github.com/zadam/trilium/wiki/Text-notes#math-support) with markdown [autoformat](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)
|
* Rich WYSIWYG note editing including e.g. tables and images with markdown [autoformat](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)
|
||||||
* Support for editing [notes with source code](https://github.com/zadam/trilium/wiki/Code-notes), including syntax highlighting
|
* Support for editing [notes with source code](https://github.com/zadam/trilium/wiki/Code-notes), including syntax highlighting
|
||||||
* Fast and easy [navigation between notes](https://github.com/zadam/trilium/wiki/Note-navigation), full text search and [note hoisting](https://github.com/zadam/trilium/wiki/Note-hoisting)
|
* Fast and easy [navigation between notes](https://github.com/zadam/trilium/wiki/Note-navigation), full text search and [note hoisting](https://github.com/zadam/trilium/wiki/Note-hoisting)
|
||||||
* Seamless [note versioning](https://github.com/zadam/trilium/wiki/Note-revisions)
|
* Seamless [note versioning](https://github.com/zadam/trilium/wiki/Note-revisions)
|
||||||
* Note [attributes](https://github.com/zadam/trilium/wiki/Attributes) can be used for note organization, querying and advanced [scripting](https://github.com/zadam/trilium/wiki/Scripts)
|
* Note [attributes](https://github.com/zadam/trilium/wiki/Attributes) can be used for note organization, querying and advanced [scripting](https://github.com/zadam/trilium/wiki/Scripts)
|
||||||
* [Synchronization](https://github.com/zadam/trilium/wiki/Synchronization) with self-hosted sync server
|
* [Synchronization](https://github.com/zadam/trilium/wiki/Synchronization) with self-hosted sync server
|
||||||
* there's a [3rd party service for hosting synchronisation server](https://trilium.cc/paid-hosting)
|
|
||||||
* [Sharing](https://github.com/zadam/trilium/wiki/Sharing) (publishing) notes to public internet
|
|
||||||
* Strong [note encryption](https://github.com/zadam/trilium/wiki/Protected-notes) with per-note granularity
|
* Strong [note encryption](https://github.com/zadam/trilium/wiki/Protected-notes) with per-note granularity
|
||||||
* Sketching diagrams with built-in Excalidraw (note type "canvas")
|
|
||||||
* [Relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map) for visualizing notes and their relations
|
* [Relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map) for visualizing notes and their relations
|
||||||
* [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - see [Advanced showcases](https://github.com/zadam/trilium/wiki/Advanced-showcases)
|
* [Scripting](https://github.com/zadam/trilium/wiki/Scripts) - see [Advanced showcases](https://github.com/zadam/trilium/wiki/Advanced-showcases)
|
||||||
* [REST API](https://github.com/zadam/trilium/wiki/ETAPI) for automation
|
|
||||||
* Scales well in both usability and performance upwards of 100 000 notes
|
* Scales well in both usability and performance upwards of 100 000 notes
|
||||||
* Touch optimized [mobile frontend](https://github.com/zadam/trilium/wiki/Mobile-frontend) for smartphones and tablets
|
* Touch optimized [mobile frontend](https://github.com/zadam/trilium/wiki/Mobile-frontend) for smartphones and tablets
|
||||||
* [Night theme](https://github.com/zadam/trilium/wiki/Themes)
|
* [Night theme](https://github.com/zadam/trilium/wiki/Themes)
|
||||||
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) and [Markdown import & export](https://github.com/zadam/trilium/wiki/Markdown)
|
* [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) and [Markdown import & export](https://github.com/zadam/trilium/wiki/Markdown)
|
||||||
* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) for easy saving of web content
|
* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) for easy saving of web content
|
||||||
|
|
||||||
Check out [awesome-trilium](https://github.com/Nriver/awesome-trilium) for 3rd party themes, scripts, plugins and more.
|
## Builds
|
||||||
|
|
||||||
## 🏗 Builds
|
|
||||||
|
|
||||||
Trilium is provided as either desktop application (Linux and Windows) or web application hosted on your server (Linux). Mac OS desktop build is available, but it is [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support).
|
Trilium is provided as either desktop application (Linux and Windows) or web application hosted on your server (Linux). Mac OS desktop build is available, but it is [unsupported](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support).
|
||||||
|
|
||||||
@ -55,17 +31,13 @@ Trilium is provided as either desktop application (Linux and Windows) or web app
|
|||||||
* If you want to install Trilium on server, follow [this page](https://github.com/zadam/trilium/wiki/Server-installation).
|
* If you want to install Trilium on server, follow [this page](https://github.com/zadam/trilium/wiki/Server-installation).
|
||||||
* Currently only recent Chrome and Firefox are supported (tested) browsers.
|
* Currently only recent Chrome and Firefox are supported (tested) browsers.
|
||||||
|
|
||||||
Trilium is also provided as a Flatpak:
|
## Documentation
|
||||||
|
|
||||||
[<img width="240" src="https://flathub.org/assets/badges/flathub-badge-en.png">](https://flathub.org/apps/details/com.github.zadam.trilium)
|
|
||||||
|
|
||||||
## 📝 Documentation
|
|
||||||
|
|
||||||
[See wiki for complete list of documentation pages.](https://github.com/zadam/trilium/wiki/)
|
[See wiki for complete list of documentation pages.](https://github.com/zadam/trilium/wiki/)
|
||||||
|
|
||||||
You can also read [Patterns of personal knowledge base](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base) to get some inspiration on how you might use Trilium.
|
You can also read [Patterns of personal knowledge base](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base) to get some inspiration on how you might use Trilium.
|
||||||
|
|
||||||
## 💻 Contribute
|
## Contribute
|
||||||
|
|
||||||
Use a browser based dev environment
|
Use a browser based dev environment
|
||||||
|
|
||||||
@ -77,17 +49,9 @@ npm install
|
|||||||
npm run start-server
|
npm run start-server
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📢 Shoutouts
|
## Shoutouts
|
||||||
|
|
||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team
|
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - best WYSIWYG editor on the market, very interactive and listening team
|
||||||
* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it.
|
* [FancyTree](https://github.com/mar10/fancytree) - very feature rich tree library without real competition. Trilium Notes would not be the same without it.
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages
|
* [CodeMirror](https://github.com/codemirror/CodeMirror) - code editor with support for huge amount of languages
|
||||||
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map)
|
* [jsPlumb](https://github.com/jsplumb/jsplumb) - visual connectivity library without competition. Used in [relation maps](https://github.com/zadam/trilium/wiki/Relation-map) and [link maps](https://github.com/zadam/trilium/wiki/Link-map)
|
||||||
|
|
||||||
## 🤝 Support
|
|
||||||
|
|
||||||
You can support Trilium using GitHub Sponsors, [PayPal](https://paypal.me/za4am) or Bitcoin (bitcoin:bc1qv3svjn40v89mnkre5vyvs2xw6y8phaltl385d2).
|
|
||||||
|
|
||||||
## 🔑 License
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
||||||
|
68
README.ru.md
68
README.ru.md
@ -1,68 +0,0 @@
|
|||||||
# 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) | [Italian](https://github.com/zadam/trilium/blob/master/README.it.md)
|
|
||||||
|
|
||||||
[](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):
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
Ukraine is currently suffering from Russian aggression, please consider donating to [one of these charities](https://old.reddit.com/r/ukraine/comments/s6g5un/want_to_support_ukraine_heres_a_list_of_charities/).
|
|
||||||
|
|
||||||
<img src="https://upload.wikimedia.org/wikipedia/commons/4/49/Flag_of_Ukraine.svg" alt="drawing" width="600"/>
|
|
||||||
<img src="https://signmyrocket.com//uploads/2b2a523cd0c0e76cdbba95a89a9636b2_1676971281.jpg" alt="Trilium Notes supports Ukraine!" width="600"/>
|
|
||||||
|
|
||||||
## Возможности
|
|
||||||
|
|
||||||
* Заметки можно расположить в виде дерева произвольной глубины. Отдельную заметку можно разместить в нескольких местах дерева (см. [клонирование](https://github.com/zadam/trilium/wiki/Cloning-notes))
|
|
||||||
* Продвинутый визуальный редактор (WYSIWYG) позволяет работать с таблицами, изображениями, [формулами](https://github.com/zadam/trilium/wiki/Text-notes#math-support) и разметкой markdown, имеет [автоформатирование](https://github.com/zadam/trilium/wiki/Text-notes#autoformat)
|
|
||||||
* Редактирование [заметок с исходным кодом](https://github.com/zadam/trilium/wiki/Code-notes), включая подсветку синтаксиса
|
|
||||||
* Быстрая и простая [навигация между заметками](https://github.com/zadam/trilium/wiki/Note-navigation), полнотекстовый поиск и [выделение заметок](https://github.com/zadam/trilium/wiki/Note-hoisting) в отдельный блок
|
|
||||||
* Бесшовное [версионирование заметки](https://github.com/zadam/trilium/wiki/Note-revisions)
|
|
||||||
* Специальные [атрибуты](https://github.com/zadam/trilium/wiki/Attributes) позволяют гибко организовать структуру, используются для поиска и продвинутого [скриптинга](https://github.com/zadam/trilium/wiki/Scripts)
|
|
||||||
* [Синхронизация](https://github.com/zadam/trilium/wiki/Synchronization) заметок со своим сервером
|
|
||||||
* Надёжное [шифрование](https://github.com/zadam/trilium/wiki/Protected-notes) с детализацией по каждой заметке
|
|
||||||
* [Карты связей](https://github.com/zadam/trilium/wiki/Relation-map) и [карты ссылок](https://github.com/zadam/trilium/wiki/Link-map) для визуализации их взяимосвязей
|
|
||||||
* [Скрипты](https://github.com/zadam/trilium/wiki/Scripts) - см. [продвинутые примеры](https://github.com/zadam/trilium/wiki/Advanced-showcases)
|
|
||||||
* Хорошо масштабируется, как по удобству использования, так и по производительности до 100000 заметок
|
|
||||||
* Оптимизированный [мобильный фронтенд](https://github.com/zadam/trilium/wiki/Mobile-frontend) смартфонов и планшетов
|
|
||||||
* [Темная тема](https://github.com/zadam/trilium/wiki/Themes)
|
|
||||||
* Импорт и экпорт [Evernote](https://github.com/zadam/trilium/wiki/Evernote-import) и данных в [markdown](https://github.com/zadam/trilium/wiki/Markdown) формате
|
|
||||||
* [Web Clipper](https://github.com/zadam/trilium/wiki/Web-clipper) для удобного сохранения веб-контента
|
|
||||||
|
|
||||||
## Сборки
|
|
||||||
|
|
||||||
Trilium предоставляется в виде десктопного приложения (Linux и Windows) или веб-приложения, размещенного на вашем сервере (Linux). Доступна сборка Mac OS, но она [не поддерживается](https://github.com/zadam/trilium/wiki/FAQ#mac-os-support).
|
|
||||||
|
|
||||||
* Если вы хотите использовать Trilium на десктопе, скачайте архив для своей платформы со страницы [релизов](https://github.com/zadam/trilium/releases/latest), распакуйте и запустите исполняемый файл ```trilium```.
|
|
||||||
* Если вы хотите установить Trilium на сервере, следуйте этой [инструкции](https://github.com/zadam/trilium/wiki/Server-installation).
|
|
||||||
* В данный момент поддерживаются (протестированы) последние версии браузеров Chrome и Firefox.
|
|
||||||
|
|
||||||
## Документация
|
|
||||||
|
|
||||||
[Полный список страниц документации доступен в Wiki.](https://github.com/zadam/trilium/wiki/)
|
|
||||||
|
|
||||||
Вы также можете ознакомиться с [шаблонами персональных баз знаний](https://github.com/zadam/trilium/wiki/Patterns-of-personal-knowledge-base), чтобы получить представление о том, как можно использовать Trilium.
|
|
||||||
|
|
||||||
## Участвуйте в разработке
|
|
||||||
|
|
||||||
Используйте онлайн среду разработки в браузере
|
|
||||||
|
|
||||||
[](https://gitpod.io/#https://github.com/zadam/trilium)
|
|
||||||
|
|
||||||
Или склонируйте на своё устройство и запустите
|
|
||||||
```
|
|
||||||
npm install
|
|
||||||
npm run start-server
|
|
||||||
```
|
|
||||||
|
|
||||||
## Благодарности
|
|
||||||
|
|
||||||
* [CKEditor 5](https://github.com/ckeditor/ckeditor5) - лучший WYSIWYG редактор, очень активная и внимательная команда.
|
|
||||||
* [FancyTree](https://github.com/mar10/fancytree) - многофункциональная библиотека для создания древовидных структур. Вне конкуренции. Без него Trilium Notes не были бы таким.
|
|
||||||
* [CodeMirror](https://github.com/codemirror/CodeMirror) - редактор кода с поддержкой огромного количество языков.
|
|
||||||
* [jsPlumb](https://github.com/jsplumb/jsplumb) - библиотека для визуализации связей. Вне конкуренции. Используется в [картах связей](https://github.com/zadam/trilium/wiki/Relation-map) и [картах ссылок](https://github.com/zadam/trilium/wiki/Link-map).
|
|
||||||
|
|
||||||
## Лицензия
|
|
||||||
|
|
||||||
Эта программа является бесплатным программным обеспечением: вы можете распространять и/или изменять ее в соответствии с условиями GNU Affero General Public License, опубликованной Free Software Foundation, либо версии 3 Лицензии, либо (по вашему выбору) любой более поздней версии.
|
|
13
SECURITY.md
13
SECURITY.md
@ -1,13 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
## Supported Versions
|
|
||||||
|
|
||||||
In the (still active) 0.X phase of the project only the latest stable minor release is getting bugfixes (including security ones).
|
|
||||||
|
|
||||||
So e.g. if the latest stable version is 0.42.3 and the latest beta version is 0.43.0-beta, then 0.42 line will still get security fixes but older versions (like 0.41.X) won't get any fixes.
|
|
||||||
|
|
||||||
Description above is a general rule and may be altered on case by case basis.
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
|
||||||
|
|
||||||
You can report low severity vulnerabilities as GitHub issues, more severe vulnerabilities should be reported to the email zadam.apps@gmail.com
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -5,7 +5,7 @@ SERIES=${VERSION:0:4}-latest
|
|||||||
|
|
||||||
cat package.json | grep -v electron > server-package.json
|
cat package.json | grep -v electron > server-package.json
|
||||||
|
|
||||||
sudo docker build -t zadam/trilium:$VERSION --network host -t zadam/trilium:$SERIES .
|
sudo docker build -t zadam/trilium:$VERSION -t zadam/trilium:$SERIES .
|
||||||
|
|
||||||
if [[ $VERSION != *"beta"* ]]; then
|
if [[ $VERSION != *"beta"* ]]; then
|
||||||
sudo docker tag zadam/trilium:$VERSION zadam/trilium:latest
|
sudo docker tag zadam/trilium:$VERSION zadam/trilium:latest
|
||||||
|
@ -2,37 +2,43 @@
|
|||||||
|
|
||||||
SRC_DIR=./dist/trilium-linux-x64-src
|
SRC_DIR=./dist/trilium-linux-x64-src
|
||||||
|
|
||||||
[ "$1" != "DONTCOPY" ] && ./bin/copy-trilium.sh "$SRC_DIR"
|
if [ "$1" != "DONTCOPY" ]
|
||||||
|
then
|
||||||
rm -r "$SRC_DIR"/src/public/app-dist/*.mobile.*
|
./bin/copy-trilium.sh $SRC_DIR
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Copying required linux-x64 binaries"
|
echo "Copying required linux-x64 binaries"
|
||||||
cp -r bin/better-sqlite3/linux-desktop-better_sqlite3.node "$SRC_DIR"/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
|
||||||
|
|
||||||
echo "Packaging linux x64 electron build"
|
rm -r $SRC_DIR/node_modules/sqlite3/lib/binding/*
|
||||||
./node_modules/.bin/electron-packager "$SRC_DIR" --asar --out=dist --executable-name=trilium --platform=linux --arch=x64 --overwrite
|
rm -r $SRC_DIR/node_modules/pngquant-bin/vendor/*
|
||||||
|
|
||||||
|
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
||||||
|
|
||||||
|
cp -r bin/deps/linux-x64/sqlite/* $SRC_DIR/node_modules/sqlite3/lib/binding/
|
||||||
|
cp bin/deps/linux-x64/image/pngquant $SRC_DIR/node_modules/pngquant-bin/vendor/
|
||||||
|
|
||||||
|
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=linux --arch=x64 --overwrite
|
||||||
|
|
||||||
BUILD_DIR=./dist/trilium-linux-x64
|
BUILD_DIR=./dist/trilium-linux-x64
|
||||||
rm -rf "$BUILD_DIR"
|
rm -rf $BUILD_DIR
|
||||||
|
|
||||||
mv "./dist/Trilium Notes-linux-x64" "$BUILD_DIR"
|
mv "./dist/Trilium Notes-linux-x64" $BUILD_DIR
|
||||||
|
|
||||||
cp images/app-icons/png/128x128.png "$BUILD_DIR"/icon.png
|
cp images/app-icons/png/128x128.png $BUILD_DIR/icon.png
|
||||||
cp bin/tpl/anonymize-database.sql "$BUILD_DIR"/
|
|
||||||
|
|
||||||
cp -r dump-db "$BUILD_DIR"/
|
# removing software WebGL binaries because they are pretty huge and not necessary
|
||||||
rm -rf "$BUILD_DIR"/dump-db/node_modules
|
rm -r $BUILD_DIR/swiftshader
|
||||||
|
|
||||||
for f in 'trilium-portable' 'trilium-safe-mode' 'trilium-no-cert-check'; do
|
cp bin/tpl/portable-trilium.sh $BUILD_DIR/
|
||||||
cp bin/tpl/"$f".sh "$BUILD_DIR"/
|
chmod 755 $BUILD_DIR/portable-trilium.sh
|
||||||
chmod 755 "$BUILD_DIR"/"$f".sh
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Packaging linux x64 electron distribution..."
|
echo "Packaging linux x64 electron distribution..."
|
||||||
VERSION=`jq -r ".version" package.json`
|
VERSION=`jq -r ".version" package.json`
|
||||||
|
|
||||||
pushd dist
|
cd dist
|
||||||
tar cJf "trilium-linux-x64-${VERSION}.tar.xz" trilium-linux-x64
|
|
||||||
popd
|
tar cJf trilium-linux-x64-${VERSION}.tar.xz trilium-linux-x64
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
||||||
bin/build-debian.sh
|
bin/build-debian.sh
|
@ -1,38 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
SRC_DIR=./dist/trilium-mac-arm64-src
|
|
||||||
|
|
||||||
if [ "$1" != "DONTCOPY" ]
|
|
||||||
then
|
|
||||||
./bin/copy-trilium.sh $SRC_DIR
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Copying required mac arm64 binaries"
|
|
||||||
|
|
||||||
cp -r bin/better-sqlite3/mac-arm64-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
|
||||||
|
|
||||||
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
|
||||||
|
|
||||||
echo "Packaging mac arm64 electron build"
|
|
||||||
|
|
||||||
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=darwin --arch=arm64 --overwrite --icon=images/app-icons/mac/icon.icns
|
|
||||||
|
|
||||||
BUILD_DIR=./dist/trilium-mac-arm64
|
|
||||||
rm -rf $BUILD_DIR
|
|
||||||
|
|
||||||
# Mac build has by default useless directory level
|
|
||||||
mv "./dist/Trilium Notes-darwin-arm64" $BUILD_DIR
|
|
||||||
|
|
||||||
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
|
|
||||||
|
|
||||||
cp -r dump-db $BUILD_DIR/
|
|
||||||
rm -rf $BUILD_DIR/dump-db/node_modules
|
|
||||||
|
|
||||||
echo "Zipping mac arm64 electron distribution..."
|
|
||||||
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
|
||||||
|
|
||||||
cd dist
|
|
||||||
|
|
||||||
rm trilium-mac-arm64-${VERSION}.zip
|
|
||||||
zip -r9 --symlinks trilium-mac-arm64-${VERSION}.zip trilium-mac-arm64
|
|
@ -7,14 +7,20 @@ then
|
|||||||
./bin/copy-trilium.sh $SRC_DIR
|
./bin/copy-trilium.sh $SRC_DIR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Copying required mac x64 binaries"
|
echo "Copying required mac binaries"
|
||||||
|
|
||||||
cp -r bin/better-sqlite3/mac-x64-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
rm -r $SRC_DIR/node_modules/sqlite3/lib/binding/*
|
||||||
|
rm -r $SRC_DIR/node_modules/mozjpeg/vendor/*
|
||||||
|
rm -r $SRC_DIR/node_modules/pngquant-bin/vendor/*
|
||||||
|
rm -r $SRC_DIR/node_modules/giflossy/vendor/*
|
||||||
|
|
||||||
|
cp -r bin/deps/mac-x64/sqlite/* $SRC_DIR/node_modules/sqlite3/lib/binding/
|
||||||
|
cp bin/deps/mac-x64/image/cjpeg $SRC_DIR/node_modules/mozjpeg/vendor/
|
||||||
|
cp bin/deps/mac-x64/image/pngquant $SRC_DIR/node_modules/pngquant-bin/vendor/
|
||||||
|
cp bin/deps/mac-x64/image/gifsicle $SRC_DIR/node_modules/giflossy/vendor/
|
||||||
|
|
||||||
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
||||||
|
|
||||||
echo "Packaging mac x64 electron build"
|
|
||||||
|
|
||||||
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=darwin --arch=x64 --overwrite --icon=images/app-icons/mac/icon.icns
|
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=darwin --arch=x64 --overwrite --icon=images/app-icons/mac/icon.icns
|
||||||
|
|
||||||
BUILD_DIR=./dist/trilium-mac-x64
|
BUILD_DIR=./dist/trilium-mac-x64
|
||||||
@ -23,11 +29,6 @@ rm -rf $BUILD_DIR
|
|||||||
# Mac build has by default useless directory level
|
# Mac build has by default useless directory level
|
||||||
mv "./dist/Trilium Notes-darwin-x64" $BUILD_DIR
|
mv "./dist/Trilium Notes-darwin-x64" $BUILD_DIR
|
||||||
|
|
||||||
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
|
|
||||||
|
|
||||||
cp -r dump-db $BUILD_DIR/
|
|
||||||
rm -rf $BUILD_DIR/dump-db/node_modules
|
|
||||||
|
|
||||||
echo "Zipping mac x64 electron distribution..."
|
echo "Zipping mac x64 electron distribution..."
|
||||||
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
VERSION=`jq -r ".version" package.json`
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
PKG_DIR=dist/trilium-linux-x64-server
|
PKG_DIR=dist/trilium-linux-x64-server
|
||||||
NODE_VERSION=18.18.2
|
NODE_VERSION=12.16.3
|
||||||
|
|
||||||
if [ "$1" != "DONTCOPY" ]
|
if [ "$1" != "DONTCOPY" ]
|
||||||
then
|
then
|
||||||
@ -10,29 +10,21 @@ fi
|
|||||||
|
|
||||||
cd dist
|
cd dist
|
||||||
wget https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz
|
wget https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz
|
||||||
tar xfJ node-v${NODE_VERSION}-linux-x64.tar.xz
|
tar xvfJ node-v${NODE_VERSION}-linux-x64.tar.xz
|
||||||
rm node-v${NODE_VERSION}-linux-x64.tar.xz
|
rm node-v${NODE_VERSION}-linux-x64.tar.xz
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
mv dist/node-v${NODE_VERSION}-linux-x64 $PKG_DIR/node
|
mv dist/node-v${NODE_VERSION}-linux-x64 $PKG_DIR/node
|
||||||
|
|
||||||
rm -r $PKG_DIR/node/lib/node_modules/npm
|
|
||||||
rm -r $PKG_DIR/node/include/node
|
|
||||||
|
|
||||||
rm -r $PKG_DIR/node_modules/electron*
|
rm -r $PKG_DIR/node_modules/electron*
|
||||||
rm -r $PKG_DIR/webpack*
|
|
||||||
rm -r $PKG_DIR/electron.js
|
|
||||||
|
|
||||||
cp -r bin/better-sqlite3/linux-server-better_sqlite3.node $PKG_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
rm -r $PKG_DIR/node_modules/sqlite3/lib/binding/*
|
||||||
|
|
||||||
|
cp -r ./bin/deps/linux-x64/sqlite/node* $PKG_DIR/node_modules/sqlite3/lib/binding/
|
||||||
|
|
||||||
printf "#!/bin/sh\n./node/bin/node src/www" > $PKG_DIR/trilium.sh
|
printf "#!/bin/sh\n./node/bin/node src/www" > $PKG_DIR/trilium.sh
|
||||||
chmod 755 $PKG_DIR/trilium.sh
|
chmod 755 $PKG_DIR/trilium.sh
|
||||||
|
|
||||||
cp bin/tpl/anonymize-database.sql $PKG_DIR/
|
|
||||||
|
|
||||||
cp -r dump-db $PKG_DIR/
|
|
||||||
rm -rf $PKG_DIR/dump-db/node_modules
|
|
||||||
|
|
||||||
VERSION=`jq -r ".version" package.json`
|
VERSION=`jq -r ".version" package.json`
|
||||||
|
|
||||||
cd dist
|
cd dist
|
||||||
|
@ -9,12 +9,18 @@ fi
|
|||||||
|
|
||||||
echo "Copying required windows binaries"
|
echo "Copying required windows binaries"
|
||||||
|
|
||||||
cp -r bin/better-sqlite3/win-better_sqlite3.node $SRC_DIR/node_modules/better-sqlite3/build/Release/better_sqlite3.node
|
rm -r $SRC_DIR/node_modules/sqlite3/lib/binding/*
|
||||||
|
rm -r $SRC_DIR/node_modules/mozjpeg/vendor/*
|
||||||
|
rm -r $SRC_DIR/node_modules/pngquant-bin/vendor/*
|
||||||
|
rm -r $SRC_DIR/node_modules/giflossy/vendor/*
|
||||||
|
|
||||||
|
cp -r bin/deps/win-x64/sqlite/* $SRC_DIR/node_modules/sqlite3/lib/binding/
|
||||||
|
cp bin/deps/win-x64/image/cjpeg.exe $SRC_DIR/node_modules/mozjpeg/vendor/
|
||||||
|
cp bin/deps/win-x64/image/pngquant.exe $SRC_DIR/node_modules/pngquant-bin/vendor/
|
||||||
|
cp bin/deps/win-x64/image/gifsicle.exe $SRC_DIR/node_modules/giflossy/vendor/
|
||||||
|
|
||||||
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
rm -r $SRC_DIR/src/public/app-dist/*.mobile.*
|
||||||
|
|
||||||
echo "Packaging windows x64 electron build"
|
|
||||||
|
|
||||||
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=win32 --arch=x64 --overwrite --icon=images/app-icons/win/icon.ico
|
./node_modules/.bin/electron-packager $SRC_DIR --asar --out=dist --executable-name=trilium --platform=win32 --arch=x64 --overwrite --icon=images/app-icons/win/icon.ico
|
||||||
|
|
||||||
BUILD_DIR=./dist/trilium-windows-x64
|
BUILD_DIR=./dist/trilium-windows-x64
|
||||||
@ -22,12 +28,10 @@ rm -rf $BUILD_DIR
|
|||||||
|
|
||||||
mv "./dist/Trilium Notes-win32-x64" $BUILD_DIR
|
mv "./dist/Trilium Notes-win32-x64" $BUILD_DIR
|
||||||
|
|
||||||
cp bin/tpl/anonymize-database.sql $BUILD_DIR/
|
# removing software WebGL binaries because they are pretty huge and not necessary
|
||||||
|
rm -r $BUILD_DIR/swiftshader
|
||||||
|
|
||||||
cp -r dump-db $BUILD_DIR/
|
cp bin/tpl/portable-trilium.bat $BUILD_DIR/
|
||||||
rm -rf $BUILD_DIR/dump-db/node_modules
|
|
||||||
|
|
||||||
cp bin/tpl/trilium-{portable,no-cert-check,safe-mode}.bat $BUILD_DIR/
|
|
||||||
|
|
||||||
echo "Zipping windows x64 electron distribution..."
|
echo "Zipping windows x64 electron distribution..."
|
||||||
VERSION=`jq -r ".version" package.json`
|
VERSION=`jq -r ".version" package.json`
|
||||||
|
@ -13,14 +13,11 @@ cp -r $SRC_DIR ./dist/trilium-linux-x64-src
|
|||||||
cp -r $SRC_DIR ./dist/trilium-linux-x64-server
|
cp -r $SRC_DIR ./dist/trilium-linux-x64-server
|
||||||
cp -r $SRC_DIR ./dist/trilium-windows-x64-src
|
cp -r $SRC_DIR ./dist/trilium-windows-x64-src
|
||||||
cp -r $SRC_DIR ./dist/trilium-mac-x64-src
|
cp -r $SRC_DIR ./dist/trilium-mac-x64-src
|
||||||
cp -r $SRC_DIR ./dist/trilium-mac-arm64-src
|
|
||||||
|
|
||||||
bin/build-win-x64.sh DONTCOPY
|
bin/build-win-x64.sh DONTCOPY
|
||||||
|
|
||||||
bin/build-mac-x64.sh DONTCOPY
|
bin/build-mac-x64.sh DONTCOPY
|
||||||
|
|
||||||
bin/build-mac-arm64.sh DONTCOPY
|
|
||||||
|
|
||||||
bin/build-linux-x64.sh DONTCOPY
|
bin/build-linux-x64.sh DONTCOPY
|
||||||
|
|
||||||
bin/build-server.sh DONTCOPY
|
bin/build-server.sh DONTCOPY
|
||||||
|
@ -4,49 +4,38 @@ if [[ $# -eq 0 ]] ; then
|
|||||||
echo "Missing argument of target directory"
|
echo "Missing argument of target directory"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if ! [[ $(which npm) ]]; then
|
|
||||||
echo "Missing npm"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
n exec 18.18.2 npm run webpack || npm run webpack
|
npm run webpack
|
||||||
|
|
||||||
DIR="$1"
|
DIR=$1
|
||||||
|
|
||||||
rm -rf "$DIR"
|
rm -rf $DIR
|
||||||
mkdir -pv "$DIR"
|
mkdir $DIR
|
||||||
|
|
||||||
echo "Copying Trilium to build directory $DIR"
|
echo "Copying Trilium to build directory $DIR"
|
||||||
|
|
||||||
for d in 'images' 'libraries' 'src' 'db'; do
|
cp -r images $DIR/
|
||||||
cp -r "$d" "$DIR"/
|
cp -r libraries $DIR/
|
||||||
done
|
cp -r src $DIR/
|
||||||
for f in 'package.json' 'package-lock.json' 'README.md' 'LICENSE' 'config-sample.ini' 'electron.js'; do
|
cp -r db $DIR/
|
||||||
cp "$f" "$DIR"/
|
cp -r package.json $DIR/
|
||||||
done
|
cp -r package-lock.json $DIR/
|
||||||
cp webpack-* "$DIR"/ # here warning because there is no 'webpack-*', but webpack.config.js only
|
cp -r README.md $DIR/
|
||||||
|
cp -r LICENSE $DIR/
|
||||||
|
cp -r config-sample.ini $DIR/
|
||||||
|
cp -r electron.js $DIR/
|
||||||
|
cp webpack-* $DIR/
|
||||||
|
|
||||||
# run in subshell (so we return to original dir)
|
# run in subshell (so we return to original dir)
|
||||||
(cd $DIR && n exec 18.18.2 npm install --only=prod)
|
(cd $DIR && npm install --only=prod)
|
||||||
|
|
||||||
if [[ -d "$DIR"/node_modules ]]; then
|
|
||||||
# cleanup of useless files in dependencies
|
|
||||||
for d in 'image-q/demo' 'better-sqlite3/Release' 'better-sqlite3/deps/sqlite3.tar.gz' '@jimp/plugin-print/fonts' 'jimp/browser' 'jimp/fonts'; do
|
|
||||||
[[ -e "$DIR"/node_modules/"$d" ]] && rm -rv "$DIR"/node_modules/"$d"
|
|
||||||
done
|
|
||||||
|
|
||||||
# delete all tests (there are often large images as test file for jimp etc.)
|
|
||||||
for d in 'test' 'docs' 'demo'; do
|
|
||||||
find "$DIR"/node_modules -name "$d" -exec rm -rf {} \;
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
find $DIR/libraries -name "*.map" -type f -delete
|
find $DIR/libraries -name "*.map" -type f -delete
|
||||||
|
|
||||||
d="$DIR"/src/public
|
rm -r $DIR/src/public/app
|
||||||
[[ -d "$d"/app-dist ]] || mkdir -pv "$d"/app-dist
|
|
||||||
cp "$d"/app/share.js "$d"/app-dist/
|
|
||||||
cp -r "$d"/app/doc_notes "$d"/app-dist/
|
|
||||||
|
|
||||||
rm -rf "$d"/app
|
rm -r $DIR/node_modules/sqlite3/build
|
||||||
unset f d DIR
|
rm -r $DIR/node_modules/sqlite3/deps
|
||||||
|
|
||||||
|
sed -i -e 's/app\/desktop.js/app-dist\/desktop.js/g' $DIR/src/views/desktop.ejs
|
||||||
|
sed -i -e 's/app\/mobile.js/app-dist\/mobile.js/g' $DIR/src/views/mobile.ejs
|
||||||
|
sed -i -e 's/app\/setup.js/app-dist\/setup.js/g' $DIR/src/views/setup.ejs
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
const anonymizationService = require('../src/services/anonymization.js');
|
|
||||||
const fs = require('fs');
|
|
||||||
const path = require('path');
|
|
||||||
|
|
||||||
fs.writeFileSync(path.resolve(__dirname, 'tpl', 'anonymize-database.sql'), anonymizationService.getFullAnonymizationScript());
|
|
@ -1,7 +1,6 @@
|
|||||||
{
|
{
|
||||||
"src": "dist/trilium-linux-x64",
|
"src": "dist/trilium-linux-x64",
|
||||||
"dest": "dist/",
|
"dest": "dist/",
|
||||||
"compression": "xz",
|
|
||||||
"name": "trilium",
|
"name": "trilium",
|
||||||
"productName": "Trilium Notes",
|
"productName": "Trilium Notes",
|
||||||
"genericName": "Note taker",
|
"genericName": "Note taker",
|
||||||
|
BIN
bin/deps/linux-x64/image/pngquant
Executable file
BIN
bin/deps/linux-x64/image/pngquant
Executable file
Binary file not shown.
BIN
bin/deps/linux-x64/sqlite/electron-v9.0-linux-x64/node_sqlite3.node
Executable file
BIN
bin/deps/linux-x64/sqlite/electron-v9.0-linux-x64/node_sqlite3.node
Executable file
Binary file not shown.
BIN
bin/deps/linux-x64/sqlite/node-v72-linux-x64/node_sqlite3.node
Executable file
BIN
bin/deps/linux-x64/sqlite/node-v72-linux-x64/node_sqlite3.node
Executable file
Binary file not shown.
BIN
bin/deps/mac-x64/image/cjpeg
Executable file
BIN
bin/deps/mac-x64/image/cjpeg
Executable file
Binary file not shown.
BIN
bin/deps/mac-x64/image/gifsicle
Normal file
BIN
bin/deps/mac-x64/image/gifsicle
Normal file
Binary file not shown.
BIN
bin/deps/mac-x64/image/pngquant
Executable file
BIN
bin/deps/mac-x64/image/pngquant
Executable file
Binary file not shown.
Binary file not shown.
BIN
bin/deps/win-x64/image/cjpeg.exe
Executable file
BIN
bin/deps/win-x64/image/cjpeg.exe
Executable file
Binary file not shown.
BIN
bin/deps/win-x64/image/gifsicle.exe
Normal file
BIN
bin/deps/win-x64/image/gifsicle.exe
Normal file
Binary file not shown.
BIN
bin/deps/win-x64/image/pngquant.exe
Executable file
BIN
bin/deps/win-x64/image/pngquant.exe
Executable file
Binary file not shown.
BIN
bin/deps/win-x64/sqlite/electron-v9.0-win32-x64/node_sqlite3.node
Executable file
BIN
bin/deps/win-x64/sqlite/electron-v9.0-win32-x64/node_sqlite3.node
Executable file
Binary file not shown.
@ -2,6 +2,6 @@
|
|||||||
|
|
||||||
SCHEMA_FILE_PATH=db/schema.sql
|
SCHEMA_FILE_PATH=db/schema.sql
|
||||||
|
|
||||||
sqlite3 ./data/document.db .schema | grep -v "sqlite_sequence" > "$SCHEMA_FILE_PATH"
|
sqlite3 ~/trilium-data/document.db .schema | grep -v "sqlite_sequence" > "$SCHEMA_FILE_PATH"
|
||||||
|
|
||||||
echo "DB schema exported to $SCHEMA_FILE_PATH"
|
echo "DB schema exported to $SCHEMA_FILE_PATH"
|
@ -8,9 +8,9 @@ fi
|
|||||||
VERSION=$1
|
VERSION=$1
|
||||||
SERIES=${VERSION:0:4}-latest
|
SERIES=${VERSION:0:4}-latest
|
||||||
|
|
||||||
docker push zadam/trilium:$VERSION
|
sudo docker push zadam/trilium:$VERSION
|
||||||
docker push zadam/trilium:$SERIES
|
sudo docker push zadam/trilium:$SERIES
|
||||||
|
|
||||||
if [[ $1 != *"beta"* ]]; then
|
if [[ $1 != *"beta"* ]]; then
|
||||||
docker push zadam/trilium:latest
|
sudo docker push zadam/trilium:latest
|
||||||
fi
|
fi
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
if [[ $# -eq 0 ]] ; then
|
|
||||||
echo "Missing argument of new version"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
VERSION=$1
|
|
||||||
|
|
||||||
if ! [[ ${VERSION} =~ ^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{1,2}(-.+)?$ ]] ;
|
|
||||||
then
|
|
||||||
echo "Version ${VERSION} isn't in format X.Y.Z"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
VERSION_DATE=$(git log -1 --format=%aI "v${VERSION}" | cut -c -10)
|
|
||||||
VERSION_COMMIT=$(git rev-list -n 1 "v${VERSION}")
|
|
||||||
|
|
||||||
# expecting the directory at a specific path
|
|
||||||
cd ~/trilium-flathub || exit
|
|
||||||
|
|
||||||
if ! git diff-index --quiet HEAD --; then
|
|
||||||
echo "There are uncommitted changes"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
BASE_BRANCH=master
|
|
||||||
|
|
||||||
if [[ "$VERSION" == *"beta"* ]]; then
|
|
||||||
BASE_BRANCH=beta
|
|
||||||
fi
|
|
||||||
|
|
||||||
git switch "${BASE_BRANCH}"
|
|
||||||
git pull
|
|
||||||
|
|
||||||
BRANCH=b${VERSION}
|
|
||||||
|
|
||||||
git branch "${BRANCH}"
|
|
||||||
git switch "${BRANCH}"
|
|
||||||
|
|
||||||
echo "Updating files with version ${VERSION}, date ${VERSION_DATE} and commit ${VERSION_COMMIT}"
|
|
||||||
|
|
||||||
flatpak-node-generator npm ../trilium/package-lock.json
|
|
||||||
|
|
||||||
xmlstarlet ed --inplace --update "/component/releases/release/@version" --value "${VERSION}" --update "/component/releases/release/@date" --value "${VERSION_DATE}" ./com.github.zadam.trilium.metainfo.xml
|
|
||||||
|
|
||||||
yq --inplace "(.modules[0].sources[0].tag = \"v${VERSION}\") | (.modules[0].sources[0].commit = \"${VERSION_COMMIT}\")" ./com.github.zadam.trilium.yml
|
|
||||||
|
|
||||||
git add ./generated-sources.json
|
|
||||||
git add ./com.github.zadam.trilium.metainfo.xml
|
|
||||||
git add ./com.github.zadam.trilium.yml
|
|
||||||
|
|
||||||
git commit -m "release $VERSION"
|
|
||||||
git push --set-upstream origin "${BRANCH}"
|
|
||||||
|
|
||||||
gh pr create --fill -B "${BASE_BRANCH}"
|
|
||||||
gh pr merge --auto --merge --delete-branch
|
|
@ -48,7 +48,6 @@ LINUX_X64_BUILD=trilium-linux-x64-$VERSION.tar.xz
|
|||||||
DEBIAN_X64_BUILD=trilium_${VERSION}_amd64.deb
|
DEBIAN_X64_BUILD=trilium_${VERSION}_amd64.deb
|
||||||
WINDOWS_X64_BUILD=trilium-windows-x64-$VERSION.zip
|
WINDOWS_X64_BUILD=trilium-windows-x64-$VERSION.zip
|
||||||
MAC_X64_BUILD=trilium-mac-x64-$VERSION.zip
|
MAC_X64_BUILD=trilium-mac-x64-$VERSION.zip
|
||||||
MAC_ARM64_BUILD=trilium-mac-arm64-$VERSION.zip
|
|
||||||
SERVER_BUILD=trilium-linux-x64-server-$VERSION.tar.xz
|
SERVER_BUILD=trilium-linux-x64-server-$VERSION.tar.xz
|
||||||
|
|
||||||
echo "Creating release in GitHub"
|
echo "Creating release in GitHub"
|
||||||
@ -56,18 +55,54 @@ echo "Creating release in GitHub"
|
|||||||
EXTRA=
|
EXTRA=
|
||||||
|
|
||||||
if [[ $TAG == *"beta"* ]]; then
|
if [[ $TAG == *"beta"* ]]; then
|
||||||
EXTRA=--prerelease
|
EXTRA=--pre-release
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$GITHUB_CLI_AUTH_TOKEN" | gh auth login --with-token
|
github-release release \
|
||||||
|
--tag $TAG \
|
||||||
|
--name "$TAG release" $EXTRA
|
||||||
|
|
||||||
gh release create "$TAG" \
|
echo "Uploading debian x64 package"
|
||||||
--title "$TAG release" \
|
|
||||||
--notes "" \
|
github-release upload \
|
||||||
$EXTRA \
|
--tag $TAG \
|
||||||
"dist/$DEBIAN_X64_BUILD" \
|
--name "$DEBIAN_X64_BUILD" \
|
||||||
"dist/$LINUX_X64_BUILD" \
|
--file "dist/$DEBIAN_X64_BUILD"
|
||||||
"dist/$WINDOWS_X64_BUILD" \
|
|
||||||
"dist/$MAC_X64_BUILD" \
|
echo "Uploading linux x64 build"
|
||||||
"dist/$MAC_ARM64_BUILD" \
|
|
||||||
"dist/$SERVER_BUILD"
|
github-release upload \
|
||||||
|
--tag $TAG \
|
||||||
|
--name "$LINUX_X64_BUILD" \
|
||||||
|
--file "dist/$LINUX_X64_BUILD"
|
||||||
|
|
||||||
|
echo "Uploading windows x64 build"
|
||||||
|
|
||||||
|
github-release upload \
|
||||||
|
--tag $TAG \
|
||||||
|
--name "$WINDOWS_X64_BUILD" \
|
||||||
|
--file "dist/$WINDOWS_X64_BUILD"
|
||||||
|
|
||||||
|
echo "Uploading mac x64 build"
|
||||||
|
|
||||||
|
github-release upload \
|
||||||
|
--tag $TAG \
|
||||||
|
--name "$MAC_X64_BUILD" \
|
||||||
|
--file "dist/$MAC_X64_BUILD"
|
||||||
|
|
||||||
|
echo "Uploading linux x64 server build"
|
||||||
|
|
||||||
|
github-release upload \
|
||||||
|
--tag $TAG \
|
||||||
|
--name "$SERVER_BUILD" \
|
||||||
|
--file "dist/$SERVER_BUILD"
|
||||||
|
|
||||||
|
echo "Building docker image"
|
||||||
|
|
||||||
|
bin/build-docker.sh $VERSION
|
||||||
|
|
||||||
|
echo "Pushing docker image to dockerhub"
|
||||||
|
|
||||||
|
bin/push-docker-image.sh $VERSION
|
||||||
|
|
||||||
|
echo "Release finished!"
|
@ -1,50 +0,0 @@
|
|||||||
UPDATE etapi_tokens SET tokenHash = 'API token hash value';
|
|
||||||
UPDATE notes SET title = 'title'
|
|
||||||
WHERE noteId NOT IN ('root', '_hidden', '_share')
|
|
||||||
AND SUBSTR(noteId, 1, 8) != '_options'
|
|
||||||
AND SUBSTR(noteId, 1, 3) != '_lb';
|
|
||||||
UPDATE blobs SET content = 'text' WHERE content IS NOT NULL;
|
|
||||||
UPDATE revisions SET title = 'title';
|
|
||||||
|
|
||||||
UPDATE attributes SET name = 'name', value = 'value' WHERE type = 'label'
|
|
||||||
AND name NOT IN
|
|
||||||
('inbox', 'disableVersioning', 'calendarRoot', 'archived', 'excludeFromExport', 'disableInclusion', 'appCss',
|
|
||||||
'appTheme', 'hidePromotedAttributes', 'readOnly', 'autoReadOnlyDisabled', 'cssClass', 'iconClass',
|
|
||||||
'keyboardShortcut', 'run', 'runOnInstance', 'runAtHour', 'customRequestHandler', 'customResourceProvider',
|
|
||||||
'widget', 'noteInfoWidgetDisabled', 'linkMapWidgetDisabled', 'revisionsWidgetDisabled',
|
|
||||||
'whatLinksHereWidgetDisabled', 'similarNotesWidgetDisabled', 'workspace', 'workspaceIconClass',
|
|
||||||
'workspaceTabBackgroundColor', 'workspaceCalendarRoot', 'workspaceTemplate', 'searchHome', 'workspaceInbox',
|
|
||||||
'workspaceSearchHome', 'sqlConsoleHome', 'datePattern', 'pageSize', 'viewType', 'mapRootNoteId',
|
|
||||||
'bookmarkFolder', 'sorted', 'sortDirection', 'sortFoldersFirst', 'sortNatural', 'sortLocale', 'top',
|
|
||||||
'fullContentWidth', 'shareHiddenFromTree', 'shareExternalLink', 'shareOmitDefaultCss', 'shareRoot', 'shareDescription',
|
|
||||||
'shareRaw', 'shareDisallowRobotIndexing', 'shareIndex', 'displayRelations', 'hideRelations', 'titleTemplate',
|
|
||||||
'template', 'toc', 'color', 'keepCurrentHoisting', 'executeButton', 'executeDescription', 'newNotesOnTop',
|
|
||||||
'clipperInbox', 'internalLink', 'imageLink', 'relationMapLink', 'includeMapLink', 'runOnNoteCreation',
|
|
||||||
'runOnNoteTitleChange', 'runOnNoteChange', 'runOnNoteContentChange', 'runOnNoteDeletion', 'runOnBranchCreation', 'runOnBranchChange',
|
|
||||||
'runOnBranchDeletion', 'runOnChildNoteCreation', 'runOnAttributeCreation', 'runOnAttributeChange', 'template',
|
|
||||||
'inherit', 'widget', 'renderNote', 'shareCss', 'shareJs', 'shareTemplate', 'shareFavicon');
|
|
||||||
UPDATE attributes SET name = 'name' WHERE type = 'relation'
|
|
||||||
AND name NOT IN
|
|
||||||
('inbox', 'disableVersioning', 'calendarRoot', 'archived', 'excludeFromExport', 'disableInclusion', 'appCss',
|
|
||||||
'appTheme', 'hidePromotedAttributes', 'readOnly', 'autoReadOnlyDisabled', 'cssClass', 'iconClass',
|
|
||||||
'keyboardShortcut', 'run', 'runOnInstance', 'runAtHour', 'customRequestHandler', 'customResourceProvider',
|
|
||||||
'widget', 'noteInfoWidgetDisabled', 'linkMapWidgetDisabled', 'revisionsWidgetDisabled',
|
|
||||||
'whatLinksHereWidgetDisabled', 'similarNotesWidgetDisabled', 'workspace', 'workspaceIconClass',
|
|
||||||
'workspaceTabBackgroundColor', 'workspaceCalendarRoot', 'workspaceTemplate', 'searchHome', 'workspaceInbox',
|
|
||||||
'workspaceSearchHome', 'sqlConsoleHome', 'datePattern', 'pageSize', 'viewType', 'mapRootNoteId',
|
|
||||||
'bookmarkFolder', 'sorted', 'sortDirection', 'sortFoldersFirst', 'sortNatural', 'sortLocale', 'top',
|
|
||||||
'fullContentWidth', 'shareHiddenFromTree', 'shareExternalLink', 'shareOmitDefaultCss', 'shareRoot', 'shareDescription',
|
|
||||||
'shareRaw', 'shareDisallowRobotIndexing', 'shareIndex', 'displayRelations', 'hideRelations', 'titleTemplate',
|
|
||||||
'template', 'toc', 'color', 'keepCurrentHoisting', 'executeButton', 'executeDescription', 'newNotesOnTop',
|
|
||||||
'clipperInbox', 'internalLink', 'imageLink', 'relationMapLink', 'includeMapLink', 'runOnNoteCreation',
|
|
||||||
'runOnNoteTitleChange', 'runOnNoteChange', 'runOnNoteContentChange', 'runOnNoteDeletion', 'runOnBranchCreation', 'runOnBranchChange',
|
|
||||||
'runOnBranchDeletion', 'runOnChildNoteCreation', 'runOnAttributeCreation', 'runOnAttributeChange', 'template',
|
|
||||||
'inherit', 'widget', 'renderNote', 'shareCss', 'shareJs', 'shareTemplate', 'shareFavicon');
|
|
||||||
UPDATE branches SET prefix = 'prefix' WHERE prefix IS NOT NULL AND prefix != 'recovered';
|
|
||||||
UPDATE options SET value = 'anonymized' WHERE name IN
|
|
||||||
('documentId', 'documentSecret', 'encryptedDataKey',
|
|
||||||
'passwordVerificationHash', 'passwordVerificationSalt',
|
|
||||||
'passwordDerivedKeySalt', 'username', 'syncServerHost', 'syncProxy')
|
|
||||||
AND value != '';
|
|
||||||
|
|
||||||
VACUUM;
|
|
4
bin/tpl/portable-trilium.bat
Normal file
4
bin/tpl/portable-trilium.bat
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
SET DIR=%~dp0
|
||||||
|
SET TRILIUM_DATA_DIR=%DIR%\trilium-data
|
||||||
|
cd %DIR%
|
||||||
|
start trilium.exe
|
@ -1,23 +0,0 @@
|
|||||||
@echo off
|
|
||||||
:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
|
|
||||||
:: If there's no powershell available, fallback to unicode enabled command interpreter
|
|
||||||
|
|
||||||
WHERE powershell.exe > NUL 2>&1
|
|
||||||
IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
|
|
||||||
|
|
||||||
:POWERSHELL
|
|
||||||
powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:NODE_TLS_REJECT_UNAUTHORIZED -Value 0; ./trilium.exe"
|
|
||||||
GOTO END
|
|
||||||
|
|
||||||
:BATCH
|
|
||||||
:: Make sure we support UTF-8 characters
|
|
||||||
chcp 65001
|
|
||||||
|
|
||||||
:: Get Current Trilium executable directory and compute data directory
|
|
||||||
SET DIR=%~dp0
|
|
||||||
set NODE_TLS_REJECT_UNAUTHORIZED=0
|
|
||||||
cd %DIR%
|
|
||||||
start trilium.exe
|
|
||||||
GOTO END
|
|
||||||
|
|
||||||
:END
|
|
@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
DIR=`dirname "$0"`
|
|
||||||
export NODE_TLS_REJECT_UNAUTHORIZED=0
|
|
||||||
|
|
||||||
"$DIR/trilium"
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
|||||||
@echo off
|
|
||||||
:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
|
|
||||||
:: If there's no powershell available, fallback to unicode enabled command interpreter
|
|
||||||
|
|
||||||
WHERE powershell.exe > NUL 2>&1
|
|
||||||
IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
|
|
||||||
|
|
||||||
:POWERSHELL
|
|
||||||
powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:TRILIUM_DATA_DIR -Value './trilium-data'; ./trilium.exe"
|
|
||||||
GOTO END
|
|
||||||
|
|
||||||
:BATCH
|
|
||||||
:: Make sure we support UTF-8 characters
|
|
||||||
chcp 65001
|
|
||||||
|
|
||||||
:: Get Current Trilium executable directory and compute data directory
|
|
||||||
SET DIR=%~dp0
|
|
||||||
SET TRILIUM_DATA_DIR=%DIR%\trilium-data
|
|
||||||
cd %DIR%
|
|
||||||
start trilium.exe
|
|
||||||
GOTO END
|
|
||||||
|
|
||||||
:END
|
|
@ -1,23 +0,0 @@
|
|||||||
@echo off
|
|
||||||
:: Try to get powershell to launch Trilium since it deals with UTF-8 characters in current path
|
|
||||||
:: If there's no powershell available, fallback to unicode enabled command interpreter
|
|
||||||
|
|
||||||
WHERE powershell.exe > NUL 2>&1
|
|
||||||
IF %ERRORLEVEL% NEQ 0 GOTO BATCH ELSE GOTO POWERSHELL
|
|
||||||
|
|
||||||
:POWERSHELL
|
|
||||||
powershell -ExecutionPolicy Bypass -NonInteractive -NoLogo "Set-Item -Path Env:TRILIUM_SAFE_MODE -Value 1; ./trilium.exe --disable-gpu"
|
|
||||||
GOTO END
|
|
||||||
|
|
||||||
:BATCH
|
|
||||||
:: Make sure we support UTF-8 characters
|
|
||||||
chcp 65001
|
|
||||||
|
|
||||||
:: Get Current Trilium executable directory and compute data directory
|
|
||||||
SET DIR=%~dp0
|
|
||||||
SET TRILIUM_SAFE_MODE=1
|
|
||||||
cd %DIR%
|
|
||||||
start trilium.exe --disable-gpu
|
|
||||||
GOTO END
|
|
||||||
|
|
||||||
:END
|
|
@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/env sh
|
|
||||||
|
|
||||||
DIR=`dirname "$0"`
|
|
||||||
export TRILIUM_SAFE_MODE=1
|
|
||||||
|
|
||||||
"$DIR/trilium" --disable-gpu
|
|
||||||
|
|
@ -1,13 +1,7 @@
|
|||||||
[General]
|
[General]
|
||||||
# Instance name can be used to distinguish between different instances using backend api.getInstanceName()
|
# Instance name can be used to distinguish between different instances
|
||||||
instanceName=
|
instanceName=
|
||||||
|
|
||||||
# set to true to allow using Trilium without authentication (makes sense for server build only, desktop build doesn't need password)
|
|
||||||
noAuthentication=false
|
|
||||||
|
|
||||||
# set to true to disable backups (e.g. because of limited space on server)
|
|
||||||
noBackup=false
|
|
||||||
|
|
||||||
# Disable automatically generating desktop icon
|
# Disable automatically generating desktop icon
|
||||||
# noDesktopIcon=true
|
# noDesktopIcon=true
|
||||||
|
|
||||||
@ -16,14 +10,8 @@ noBackup=false
|
|||||||
# host=0.0.0.0
|
# host=0.0.0.0
|
||||||
# port setting is relevant only for web deployments, desktop builds run on a fixed port (changeable with TRILIUM_PORT environment variable)
|
# port setting is relevant only for web deployments, desktop builds run on a fixed port (changeable with TRILIUM_PORT environment variable)
|
||||||
port=8080
|
port=8080
|
||||||
# true for TLS/SSL/HTTPS (secure), false for HTTP (insecure).
|
# true for TLS/SSL/HTTPS (secure), false for HTTP (unsecure).
|
||||||
https=false
|
https=false
|
||||||
# path to certificate (run "bash bin/generate-cert.sh" to generate self-signed certificate). Relevant only if https=true
|
# path to certificate (run "bash bin/generate-cert.sh" to generate self-signed certificate). Relevant only if https=true
|
||||||
certPath=
|
certPath=
|
||||||
keyPath=
|
keyPath=
|
||||||
# setting to give trust to reverse proxies, a comma-separated list of trusted rev. proxy IPs can be specified (CIDR notation is permitted),
|
|
||||||
# alternatively 'true' will make use of the leftmost IP in X-Forwarded-For, ultimately an integer can be used to tell about the number of hops between
|
|
||||||
# Trilium (which is hop 0) and the first trusted rev. proxy.
|
|
||||||
# once set, expressjs will use the X-Forwarded-For header set by the rev. proxy to determinate the real IPs of clients.
|
|
||||||
# expressjs shortcuts are supported: loopback(127.0.0.1/8, ::1/128), linklocal(169.254.0.0/16, fe80::/10), uniquelocal(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7)
|
|
||||||
trustedReverseProxy=false
|
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
- isDeleted = 0 by default
|
|
||||||
- unify readOnly handling to a single attribute:
|
|
||||||
* readOnly - like now
|
|
||||||
* readOnly=auto - like without readOnly (used to override inherited readOnly)
|
|
||||||
* readOnly=never - like autoReadOnlyDisabled
|
|
BIN
db/demo.zip
BIN
db/demo.zip
Binary file not shown.
11
db/migrations/0001__cleanup_tables.sql
Normal file
11
db/migrations/0001__cleanup_tables.sql
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
DROP TABLE IF EXISTS anchors;
|
||||||
|
DROP TABLE IF EXISTS attachments;
|
||||||
|
DROP TABLE IF EXISTS bookmarks;
|
||||||
|
DROP TABLE IF EXISTS custom_properties;
|
||||||
|
DROP TABLE IF EXISTS deletions;
|
||||||
|
DROP TABLE IF EXISTS deletions_attachments;
|
||||||
|
DROP TABLE IF EXISTS formatting;
|
||||||
|
DROP TABLE IF EXISTS icons;
|
||||||
|
DROP TABLE IF EXISTS tags;
|
||||||
|
DROP TABLE IF EXISTS tags_notes;
|
||||||
|
DROP TABLE IF EXISTS tasks;
|
@ -0,0 +1,3 @@
|
|||||||
|
CREATE TABLE notes_mig AS SELECT note_id, note_title, note_text, note_clone_id, date_created, date_modified, encryption FROM notes;
|
||||||
|
DROP TABLE notes;
|
||||||
|
ALTER TABLE notes_mig RENAME TO notes;
|
1
db/migrations/0003__add_is_deleted_to_note.sql
Normal file
1
db/migrations/0003__add_is_deleted_to_note.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE notes ADD COLUMN is_deleted INTEGER NOT NULL DEFAULT 0
|
1
db/migrations/0004__add_date_modified_to_notes_tree.sql
Normal file
1
db/migrations/0004__add_date_modified_to_notes_tree.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE notes_tree ADD COLUMN date_modified INTEGER NOT NULL DEFAULT 0
|
1
db/migrations/0005__cleanup_options.sql
Normal file
1
db/migrations/0005__cleanup_options.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
DELETE FROM options WHERE opt_name IN ('is_readonly', 'prop_modified', 'doc_title', 'doc_UID', 'format_version', 'flask_secret_key')
|
@ -0,0 +1,3 @@
|
|||||||
|
CREATE TABLE notes_history_mig AS SELECT id, note_id, note_title, note_text, date_modified AS date_modified_from, date_modified AS date_modified_to FROM notes_history;
|
||||||
|
DROP TABLE notes_history;
|
||||||
|
ALTER TABLE notes_history_mig RENAME TO notes_history;
|
1
db/migrations/0007__readd_encryption_to_note_history.sql
Normal file
1
db/migrations/0007__readd_encryption_to_note_history.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE notes_history ADD COLUMN encryption INTEGER DEFAULT 0
|
15
db/migrations/0008__fix_note_history.sql
Normal file
15
db/migrations/0008__fix_note_history.sql
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
CREATE TABLE `notes_history_mig` (
|
||||||
|
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
|
||||||
|
`note_id` INT,
|
||||||
|
`note_title` TEXT,
|
||||||
|
`note_text` TEXT,
|
||||||
|
`date_modified_from` INT,
|
||||||
|
`date_modified_to` INT,
|
||||||
|
`encryption` INTEGER DEFAULT 0
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO notes_history (id, note_id, note_title, note_text, date_modified_from, date_modified_to, encryption)
|
||||||
|
SELECT id, note_id, note_title, note_text, date_modified_from, date_modified_to, encryption FROM notes_history;
|
||||||
|
|
||||||
|
DROP TABLE notes_history;
|
||||||
|
ALTER TABLE notes_history_mig RENAME TO notes_history;
|
41
db/migrations/0009__indexes.sql
Normal file
41
db/migrations/0009__indexes.sql
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
|
||||||
|
`note_id`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_images_note_id` ON `images` (
|
||||||
|
`note_id`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_links_note_id` ON `links` (
|
||||||
|
`note_id`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_audit_log_note_id` ON `audit_log` (
|
||||||
|
`note_id`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_audit_log_date_modified` ON `audit_log` (
|
||||||
|
`date_modified`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE `notes_mig` (
|
||||||
|
`note_id` TEXT NOT NULL,
|
||||||
|
`note_title` TEXT,
|
||||||
|
`note_text` TEXT,
|
||||||
|
`note_clone_id` TEXT,
|
||||||
|
`date_created` INT,
|
||||||
|
`date_modified` INT,
|
||||||
|
`encryption` INT,
|
||||||
|
`is_deleted` INTEGER NOT NULL DEFAULT 0,
|
||||||
|
PRIMARY KEY(`note_id`)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO notes_mig (note_id, note_title, note_text, note_clone_id, date_created, date_modified, encryption)
|
||||||
|
SELECT note_id, note_title, note_text, note_clone_id, date_created, date_modified, encryption FROM notes;
|
||||||
|
|
||||||
|
DROP TABLE notes;
|
||||||
|
ALTER TABLE notes_mig RENAME TO notes;
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_is_deleted` ON `notes` (
|
||||||
|
`is_deleted`
|
||||||
|
);
|
5
db/migrations/0010__add_is_deleted_to_notes_tree.sql
Normal file
5
db/migrations/0010__add_is_deleted_to_notes_tree.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
ALTER TABLE notes_tree ADD COLUMN is_deleted INTEGER NOT NULL DEFAULT 0;
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_tree_is_deleted` ON `notes_tree` (
|
||||||
|
`is_deleted`
|
||||||
|
);
|
1
db/migrations/0011__add_last_synced_option.sql
Normal file
1
db/migrations/0011__add_last_synced_option.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
INSERT INTO options (opt_name, opt_value) VALUES ('last_synced', 0)
|
5
db/migrations/0012__create_index_on_notes_history.sql
Normal file
5
db/migrations/0012__create_index_on_notes_history.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
CREATE UNIQUE INDEX `IDX_notes_history_note_from_to` ON `notes_history` (
|
||||||
|
`note_id`,
|
||||||
|
`date_modified_from`,
|
||||||
|
`date_modified_to`
|
||||||
|
);
|
3
db/migrations/0013__last_sync_pulled_pushed.sql
Normal file
3
db/migrations/0013__last_sync_pulled_pushed.sql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
UPDATE options SET opt_name = 'last_synced_pull' WHERE opt_name = 'last_synced';
|
||||||
|
|
||||||
|
INSERT INTO options (opt_name, opt_value) VALUES ('last_synced_push', 0);
|
16
db/migrations/0014__change_audit_log_id.sql
Normal file
16
db/migrations/0014__change_audit_log_id.sql
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
CREATE TABLE `audit_log_mig` (
|
||||||
|
`id` TEXT NOT NULL PRIMARY KEY,
|
||||||
|
`date_modified` INTEGER NOT NULL,
|
||||||
|
`category` TEXT NOT NULL,
|
||||||
|
`browser_id` TEXT,
|
||||||
|
`note_id` TEXT,
|
||||||
|
`change_from` TEXT,
|
||||||
|
`change_to` TEXT,
|
||||||
|
`comment` TEXT
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO audit_log_mig (id, date_modified, category, browser_id, note_id, change_from, change_to)
|
||||||
|
SELECT id, date_modified, category, browser_id, note_id, change_from, change_to FROM audit_log;
|
||||||
|
|
||||||
|
DROP TABLE audit_log;
|
||||||
|
ALTER TABLE audit_log_mig RENAME TO audit_log;
|
6
db/migrations/0015__trim_note_ids.sql
Normal file
6
db/migrations/0015__trim_note_ids.sql
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
UPDATE notes SET note_id = substr(note_id, 0, 22);
|
||||||
|
UPDATE notes_tree SET note_id = substr(note_id, 0, 22), note_pid = substr(note_pid, 0, 22);
|
||||||
|
UPDATE notes_history SET note_id = substr(note_id, 0, 22);
|
||||||
|
UPDATE audit_log SET note_id = substr(note_id, 0, 22);
|
||||||
|
UPDATE links SET note_id = substr(note_id, 0, 22);
|
||||||
|
UPDATE images SET note_id = substr(note_id, 0, 22);
|
6
db/migrations/0016__trim_note_ids2.sql
Normal file
6
db/migrations/0016__trim_note_ids2.sql
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
UPDATE notes SET note_id = substr(note_id, 0, 13);
|
||||||
|
UPDATE notes_tree SET note_id = substr(note_id, 0, 13), note_pid = substr(note_pid, 0, 13);
|
||||||
|
UPDATE notes_history SET note_id = substr(note_id, 0, 13);
|
||||||
|
UPDATE audit_log SET note_id = substr(note_id, 0, 13);
|
||||||
|
UPDATE links SET note_id = substr(note_id, 0, 13);
|
||||||
|
UPDATE images SET note_id = substr(note_id, 0, 13);
|
1
db/migrations/0017__document_id.sql
Normal file
1
db/migrations/0017__document_id.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
INSERT INTO options (opt_name, opt_value) VALUES ('document_id', '');
|
1
db/migrations/0018__document_secret.sql
Normal file
1
db/migrations/0018__document_secret.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
INSERT INTO options (opt_name, opt_value) VALUES ('document_secret', '');
|
1
db/migrations/0019__date_modified_for_options.sql
Normal file
1
db/migrations/0019__date_modified_for_options.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE options ADD COLUMN date_modified INTEGER NOT NULL DEFAULT 0
|
15
db/migrations/0020__sync.sql
Normal file
15
db/migrations/0020__sync.sql
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
CREATE TABLE `sync` (
|
||||||
|
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
`entity_name` TEXT NOT NULL,
|
||||||
|
`entity_id` TEXT NOT NULL,
|
||||||
|
`sync_date` INTEGER NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX `IDX_sync_entity_name_id` ON `sync` (
|
||||||
|
`entity_name`,
|
||||||
|
`entity_id`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_sync_sync_date` ON `sync` (
|
||||||
|
`sync_date`
|
||||||
|
);
|
1
db/migrations/0021__sync_add_source_id.sql
Normal file
1
db/migrations/0021__sync_add_source_id.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE sync ADD COLUMN source_id TEXT
|
7
db/migrations/0022__add_note_history_id.sql
Normal file
7
db/migrations/0022__add_note_history_id.sql
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
ALTER TABLE notes_history ADD COLUMN note_history_id TEXT;
|
||||||
|
|
||||||
|
UPDATE notes_history SET note_history_id = id;
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX `IDX_note_history_note_history_id` ON `notes_history` (
|
||||||
|
`note_history_id`
|
||||||
|
);
|
27
db/migrations/0023__remove_id_from_note_history.sql
Normal file
27
db/migrations/0023__remove_id_from_note_history.sql
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
CREATE TABLE `notes_history_mig` (
|
||||||
|
`note_history_id` TEXT NOT NULL PRIMARY KEY,
|
||||||
|
`note_id` TEXT NOT NULL,
|
||||||
|
`note_title` TEXT,
|
||||||
|
`note_text` TEXT,
|
||||||
|
`encryption` INT,
|
||||||
|
`date_modified_from` INT,
|
||||||
|
`date_modified_to` INT
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO notes_history_mig (note_history_id, note_id, note_title, note_text, encryption, date_modified_from, date_modified_to)
|
||||||
|
SELECT note_history_id, note_id, note_title, note_text, encryption, date_modified_from, date_modified_to FROM notes_history;
|
||||||
|
|
||||||
|
DROP TABLE notes_history;
|
||||||
|
ALTER TABLE notes_history_mig RENAME TO notes_history;
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
|
||||||
|
`note_id`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_history_note_date_modified_from` ON `notes_history` (
|
||||||
|
`date_modified_from`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_history_note_date_modified_to` ON `notes_history` (
|
||||||
|
`date_modified_to`
|
||||||
|
);
|
11
db/migrations/0024__remove_id_from_options.sql
Normal file
11
db/migrations/0024__remove_id_from_options.sql
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
CREATE TABLE `options_mig` (
|
||||||
|
`opt_name` TEXT NOT NULL PRIMARY KEY,
|
||||||
|
`opt_value` TEXT,
|
||||||
|
`date_modified` INT
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO options_mig (opt_name, opt_value, date_modified)
|
||||||
|
SELECT opt_name, opt_value, date_modified FROM options;
|
||||||
|
|
||||||
|
DROP TABLE options;
|
||||||
|
ALTER TABLE options_mig RENAME TO options;
|
10
db/migrations/0025__create_event_log.sql
Normal file
10
db/migrations/0025__create_event_log.sql
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
CREATE TABLE `event_log` (
|
||||||
|
`id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
|
`note_id` TEXT,
|
||||||
|
`comment` TEXT,
|
||||||
|
`date_added` INTEGER NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_event_log_date_added` ON `event_log` (
|
||||||
|
`date_added`
|
||||||
|
);
|
4
db/migrations/0026__recent_notes_table.sql
Normal file
4
db/migrations/0026__recent_notes_table.sql
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
CREATE TABLE `recent_notes` (
|
||||||
|
`note_id` TEXT NOT NULL PRIMARY KEY,
|
||||||
|
`date_accessed` INTEGER NOT NULL
|
||||||
|
);
|
1
db/migrations/0027__is_deleted_in_recent_notes.sql
Normal file
1
db/migrations/0027__is_deleted_in_recent_notes.sql
Normal file
@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE recent_notes ADD COLUMN is_deleted INT;
|
52
db/migrations/0028__rename_encryption_to_protected.sql
Normal file
52
db/migrations/0028__rename_encryption_to_protected.sql
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
UPDATE audit_log SET category = 'PROTECTED' WHERE category = 'ENCRYPTION';
|
||||||
|
|
||||||
|
DELETE FROM notes WHERE note_clone_id IS NOT NULL AND note_clone_id != '';
|
||||||
|
|
||||||
|
CREATE TABLE `notes_mig` (
|
||||||
|
`note_id` TEXT NOT NULL,
|
||||||
|
`note_title` TEXT,
|
||||||
|
`note_text` TEXT,
|
||||||
|
`date_created` INT,
|
||||||
|
`date_modified` INT,
|
||||||
|
`is_protected` INT NOT NULL DEFAULT 0,
|
||||||
|
`is_deleted` INT NOT NULL DEFAULT 0,
|
||||||
|
PRIMARY KEY(`note_id`)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO notes_mig (note_id, note_title, note_text, date_created, date_modified, is_protected, is_deleted)
|
||||||
|
SELECT note_id, note_title, note_text, date_created, date_modified, encryption, is_deleted FROM notes;
|
||||||
|
|
||||||
|
DROP TABLE notes;
|
||||||
|
ALTER TABLE notes_mig RENAME TO notes;
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_is_deleted` ON `notes` (
|
||||||
|
`is_deleted`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE `notes_history_mig` (
|
||||||
|
`note_history_id` TEXT NOT NULL PRIMARY KEY,
|
||||||
|
`note_id` TEXT NOT NULL,
|
||||||
|
`note_title` TEXT,
|
||||||
|
`note_text` TEXT,
|
||||||
|
`is_protected` INT,
|
||||||
|
`date_modified_from` INT,
|
||||||
|
`date_modified_to` INT
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO notes_history_mig (note_history_id, note_id, note_title, note_text, is_protected, date_modified_from, date_modified_to)
|
||||||
|
SELECT note_history_id, note_id, note_title, note_text, encryption, date_modified_from, date_modified_to FROM notes_history;
|
||||||
|
|
||||||
|
DROP TABLE notes_history;
|
||||||
|
ALTER TABLE notes_history_mig RENAME TO notes_history;
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_history_note_id` ON `notes_history` (
|
||||||
|
`note_id`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_history_note_date_modified_from` ON `notes_history` (
|
||||||
|
`date_modified_from`
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX `IDX_notes_history_note_date_modified_to` ON `notes_history` (
|
||||||
|
`date_modified_to`
|
||||||
|
);
|
@ -0,0 +1 @@
|
|||||||
|
UPDATE options SET opt_name = 'protected_session_timeout' WHERE opt_name = 'encryption_session_timeout';
|
1
db/migrations/0030__hello_world.js
Normal file
1
db/migrations/0030__hello_world.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
module.exports = async () => console.log("heeeelllooo!!!");
|
44
db/migrations/0031__change_encryption_to_CBC.js
Normal file
44
db/migrations/0031__change_encryption_to_CBC.js
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
const sql = require('../services/sql');
|
||||||
|
const data_encryption = require('../services/data_encryption');
|
||||||
|
const password_encryption = require('../services/password_encryption');
|
||||||
|
const readline = require('readline');
|
||||||
|
|
||||||
|
const cl = readline.createInterface(process.stdin, process.stdout);
|
||||||
|
|
||||||
|
function question(q) {
|
||||||
|
return new Promise( (res, rej) => {
|
||||||
|
cl.question( q, answer => {
|
||||||
|
res(answer);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = async () => {
|
||||||
|
const password = await question("Enter password: ");
|
||||||
|
const dataKey = await password_encryption.getDecryptedDataKey(password);
|
||||||
|
|
||||||
|
const protectedNotes = await sql.getRows("SELECT * FROM notes WHERE is_protected = 1");
|
||||||
|
|
||||||
|
for (const note of protectedNotes) {
|
||||||
|
const decryptedTitle = data_encryption.decrypt(dataKey, note.note_title);
|
||||||
|
|
||||||
|
note.note_title = data_encryption.encrypt(dataKey, "0" + note.note_id, decryptedTitle);
|
||||||
|
|
||||||
|
const decryptedText = data_encryption.decrypt(dataKey, note.note_text);
|
||||||
|
note.note_text = data_encryption.encrypt(dataKey, "1" + note.note_id, decryptedText);
|
||||||
|
|
||||||
|
await sql.execute("UPDATE notes SET note_title = ?, note_text = ? WHERE note_id = ?", [note.note_title, note.note_text, note.note_id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
const protectedNotesHistory = await sql.getRows("SELECT * FROM notes_history WHERE is_protected = 1");
|
||||||
|
|
||||||
|
for (const noteHistory of protectedNotesHistory) {
|
||||||
|
const decryptedTitle = data_encryption.decrypt(dataKey, noteHistory.note_title);
|
||||||
|
noteHistory.note_title = data_encryption.encrypt(dataKey, "0" + noteHistory.note_history_id, decryptedTitle);
|
||||||
|
|
||||||
|
const decryptedText = data_encryption.decrypt(dataKey, noteHistory.note_text);
|
||||||
|
noteHistory.note_text = data_encryption.encrypt(dataKey, "1" + noteHistory.note_history_id, decryptedText);
|
||||||
|
|
||||||
|
await sql.execute("UPDATE notes SET note_title = ?, note_text = ? WHERE note_id = ?", [noteHistory.note_title, noteHistory.note_text, noteHistory.note_history_id]);
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1 @@
|
|||||||
|
INSERT INTO options (opt_name, opt_value) VALUES ('encrypted_data_key_iv', '')
|
25
db/migrations/0033__change_data_key_encryption_to_cbc.js
Normal file
25
db/migrations/0033__change_data_key_encryption_to_cbc.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
const password_encryption = require('../services/password_encryption');
|
||||||
|
const readline = require('readline');
|
||||||
|
|
||||||
|
const cl = readline.createInterface(process.stdin, process.stdout);
|
||||||
|
|
||||||
|
function question(q) {
|
||||||
|
return new Promise( (res, rej) => {
|
||||||
|
cl.question( q, answer => {
|
||||||
|
res(answer);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = async () => {
|
||||||
|
const password = await question("Enter password: ");
|
||||||
|
let dataKey = await password_encryption.getDecryptedDataKey(password);
|
||||||
|
|
||||||
|
console.log("Original data key: ", dataKey);
|
||||||
|
|
||||||
|
dataKey = dataKey.slice(0, 16);
|
||||||
|
|
||||||
|
console.log("Trimmed data key: ", dataKey);
|
||||||
|
|
||||||
|
await password_encryption.setDataKey(password, dataKey);
|
||||||
|
};
|
5
db/migrations/0034__source_ids.sql
Normal file
5
db/migrations/0034__source_ids.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
CREATE TABLE `source_ids` (
|
||||||
|
`source_id` TEXT NOT NULL,
|
||||||
|
`date_created` INTEGER NOT NULL,
|
||||||
|
PRIMARY KEY(`source_id`)
|
||||||
|
);
|
@ -0,0 +1 @@
|
|||||||
|
UPDATE notes_tree SET note_pid = 'root' WHERE note_pid = ''
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user