mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-30 03:32:26 +08:00
Merge remote-tracking branch 'origin/develop' into feature/calendar_view
This commit is contained in:
commit
5677be2dd5
4
.github/actions/build-electron/action.yml
vendored
4
.github/actions/build-electron/action.yml
vendored
@ -33,10 +33,10 @@ runs:
|
|||||||
run: sed -e "s/case 'armv7l'/case 'arm64'/g" -e "s/return 'arm'/return 'aarch64'/g" -i node_modules/@electron-forge/maker-flatpak/dist/MakerFlatpak.js
|
run: sed -e "s/case 'armv7l'/case 'arm64'/g" -e "s/return 'arm'/return 'aarch64'/g" -i node_modules/@electron-forge/maker-flatpak/dist/MakerFlatpak.js
|
||||||
- name: Update build info
|
- name: Update build info
|
||||||
shell: bash
|
shell: bash
|
||||||
run: npm run update-build-info
|
run: npm run chore:update-build-info
|
||||||
- name: Run electron-forge
|
- name: Run electron-forge
|
||||||
shell: bash
|
shell: bash
|
||||||
run: npm run make-electron -- --arch=${{ inputs.arch }}
|
run: npm run electron-forge:make -- --arch=${{ inputs.arch }}
|
||||||
- name: Prepare artifacts
|
- name: Prepare artifacts
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
2
.github/actions/build-server/action.yml
vendored
2
.github/actions/build-server/action.yml
vendored
@ -18,7 +18,7 @@ runs:
|
|||||||
MATRIX_ARCH: ${{ inputs.arch }}
|
MATRIX_ARCH: ${{ inputs.arch }}
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
npm run update-build-info
|
npm run chore:update-build-info
|
||||||
./bin/build-server.sh
|
./bin/build-server.sh
|
||||||
- name: Prepare artifacts
|
- name: Prepare artifacts
|
||||||
shell: bash
|
shell: bash
|
||||||
|
2
.github/workflows/nightly.yml
vendored
2
.github/workflows/nightly.yml
vendored
@ -38,7 +38,7 @@ jobs:
|
|||||||
shell: bash
|
shell: bash
|
||||||
run: npm ci
|
run: npm ci
|
||||||
- name: Update nightly version
|
- name: Update nightly version
|
||||||
run: npm run ci-update-nightly-version
|
run: npm run chore:ci-update-nightly-version
|
||||||
- name: Run the build
|
- name: Run the build
|
||||||
uses: ./.github/actions/build-electron
|
uses: ./.github/actions/build-electron
|
||||||
with:
|
with:
|
||||||
|
@ -4,7 +4,7 @@ image:
|
|||||||
tasks:
|
tasks:
|
||||||
- before: nvm install 20.15.1 && nvm use 20.15.1
|
- before: nvm install 20.15.1 && nvm use 20.15.1
|
||||||
init: npm install
|
init: npm install
|
||||||
command: npm run start-server
|
command: npm run server:start
|
||||||
|
|
||||||
ports:
|
ports:
|
||||||
- port: 8080
|
- port: 8080
|
||||||
|
@ -25,7 +25,7 @@ RUN cp -R build/src/* src/. && \
|
|||||||
cp build/docker_healthcheck.js . && \
|
cp build/docker_healthcheck.js . && \
|
||||||
rm docker_healthcheck.ts && \
|
rm docker_healthcheck.ts && \
|
||||||
npm install && \
|
npm install && \
|
||||||
npm run webpack && \
|
npm run build:webpack && \
|
||||||
npm prune --omit=dev && \
|
npm prune --omit=dev && \
|
||||||
npm cache clean --force && \
|
npm cache clean --force && \
|
||||||
cp -r src/public/app/doc_notes src/public/app-dist/. && \
|
cp -r src/public/app/doc_notes src/public/app-dist/. && \
|
||||||
|
@ -24,7 +24,7 @@ RUN cp -R build/src/* src/. && \
|
|||||||
cp build/docker_healthcheck.js . && \
|
cp build/docker_healthcheck.js . && \
|
||||||
rm docker_healthcheck.ts && \
|
rm docker_healthcheck.ts && \
|
||||||
npm install && \
|
npm install && \
|
||||||
npm run webpack && \
|
npm run build:webpack && \
|
||||||
npm prune --omit=dev && \
|
npm prune --omit=dev && \
|
||||||
npm cache clean --force && \
|
npm cache clean --force && \
|
||||||
cp -r src/public/app/doc_notes src/public/app-dist/. && \
|
cp -r src/public/app/doc_notes src/public/app-dist/. && \
|
||||||
|
@ -78,7 +78,7 @@ Trilium 也提供 Flatpak:
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 👏 致谢
|
## 👏 致谢
|
||||||
|
@ -86,7 +86,7 @@ Clone localmente y ejecute
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 👏 Reconocimientos
|
## 👏 Reconocimientos
|
||||||
|
@ -73,7 +73,7 @@ Clona localmente ed esegui
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 👏 Riconoscimenti
|
## 👏 Riconoscimenti
|
||||||
|
@ -54,7 +54,7 @@ Trilium は Flatpak としても提供されます:
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📢 シャウトアウト
|
## 📢 シャウトアウト
|
||||||
|
@ -102,7 +102,7 @@ You can also read [Patterns of personal knowledge base](https://triliumnext.gith
|
|||||||
git clone https://github.com/TriliumNext/Notes.git
|
git clone https://github.com/TriliumNext/Notes.git
|
||||||
cd Notes
|
cd Notes
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
|
@ -44,7 +44,7 @@ Trilium предоставляется в виде десктопного при
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 👏 Благодарности
|
## 👏 Благодарности
|
||||||
|
@ -7,9 +7,9 @@ const DEST_DIR_NODE_MODULES = path.join(DEST_DIR, "node_modules");
|
|||||||
|
|
||||||
const VERBOSE = process.env.VERBOSE;
|
const VERBOSE = process.env.VERBOSE;
|
||||||
|
|
||||||
function log(...args) {
|
function log(...args: any[]) {
|
||||||
if (VERBOSE) {
|
if (VERBOSE) {
|
||||||
console.log(args);
|
console.log(...args);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ rm -rf "$DIR"
|
|||||||
mkdir -pv "$DIR"
|
mkdir -pv "$DIR"
|
||||||
|
|
||||||
echo Webpack start
|
echo Webpack start
|
||||||
npm run webpack
|
npm run build:webpack
|
||||||
echo Webpack finish
|
echo Webpack finish
|
||||||
|
|
||||||
echo "Copying Trilium to build directory $DIR"
|
echo "Copying Trilium to build directory $DIR"
|
||||||
|
@ -32,7 +32,7 @@ mv package.json.tmp package.json
|
|||||||
|
|
||||||
git add package.json
|
git add package.json
|
||||||
|
|
||||||
npm run update-build-info
|
npm run chore:update-build-info
|
||||||
|
|
||||||
git add src/services/build.ts
|
git add src/services/build.ts
|
||||||
|
|
||||||
|
@ -38,12 +38,12 @@
|
|||||||
|
|
||||||
|
|
||||||
<div id="content" class="type-text ck-content">
|
<div id="content" class="type-text ck-content">
|
||||||
<h3>The native node bindings</h3><p><code>better-sqlite3</code> has native Node bindings. With updates of <code>better-sqlite3</code>, but also of Electron and Node.js versions, these bindings need to be updated.</p><p>Note that Electron and Node.js versions need different versions of these bindings, since Electron usually packs a different version of Node.js.</p><p>During development, <code>npm install</code> tries to build or reuse prebuilt natives for the current Node.js version. This makes <code>npm run start-server</code> work out of the box. Trying to run <code>npm run start-electron</code> with these versions generally causes an error such as this:</p><pre><code class="language-text-plain">Uncaught Exception:
|
<h3>The native node bindings</h3><p><code>better-sqlite3</code> has native Node bindings. With updates of <code>better-sqlite3</code>, but also of Electron and Node.js versions, these bindings need to be updated.</p><p>Note that Electron and Node.js versions need different versions of these bindings, since Electron usually packs a different version of Node.js.</p><p>During development, <code>npm install</code> tries to build or reuse prebuilt natives for the current Node.js version. This makes <code>npm run server:start</code> work out of the box. Trying to run <code>npm run electron:start</code> with these versions generally causes an error such as this:</p><pre><code class="language-text-plain">Uncaught Exception:
|
||||||
Error: The module '/Users/elian/Projects/Notes/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
|
Error: The module '/Users/elian/Projects/Notes/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
|
||||||
was compiled against a different Node.js version using
|
was compiled against a different Node.js version using
|
||||||
NODE_MODULE_VERSION 108. This version of Node.js requires
|
NODE_MODULE_VERSION 108. This version of Node.js requires
|
||||||
NODE_MODULE_VERSION 116. Please try re-compiling or re-installing
|
NODE_MODULE_VERSION 116. Please try re-compiling or re-installing
|
||||||
the module (for instance, using `npm rebuild` or `npm install`).</code></pre><h3>How the natives are handled</h3><p>Locally, this can be fixed by rebuilding the binaries, which is what <code>npm run switch-electron</code> does, which uses <code>electron-rebuild</code> under the hood.</p><p>When the deliveries are built (see <a class="reference-link type-text" href="UTB518X6X9Uh.html">Build deliveries locally</a>), it is not feasible to rebuild the dependencies since we are building for multiple platforms. Luckily, <code>better-sqlite3</code> provides these prebuilt binaries from us, available as artifacts on <a href="https://github.com/WiseLibs/better-sqlite3/releases/">their GitHub releases page</a>. </p><p>The build script manages the natives for <code>better-sqlite3</code> by keeping a copy of the <code>.node</code> file for every platform in <code>bin/better-sqlite3</code>.</p><p>Whenever the version of <code>better-sqlite3</code> changes, the <code>.node</code> files must also be renewed based on their releases page. To simplify this process, a script was created in <code>bin/better-sqlite3/update.sh</code>.</p><h2>How to update the natives</h2><p>The update script needs to know the version of Electron or Node.js for which to download the prebuilt binaries.</p><p>If you get errors during download, check on the <a href="https://github.com/WiseLibs/better-sqlite3/releases/">releases page</a> to ensure that this particular combination of Electron/Node actually exists for the given release.</p><p>To determine the <code>NODE_MODULE_VERSION</code> that is required, look for <code>This version of Node.js requires</code><br><code>NODE_MODULE_VERSION</code> in the error when starting Trilium via:</p><ul><li><code>npm run start-electron</code> (or run any Electron <a href="UTB518X6X9Uh.html" class="type-text">delivery</a>), case in which the <span style="color:#c0bfbc;"><code>ELECTRON_VERSION</code> variable needs to be changed.</span></li><li><span style="color:#c0bfbc;"><code>npm run start-server</code></span> (or run the Linux server delivery), case in which the <code>NODE_VERSION</code> variable needs to be changed.</li></ul><p>Check which files got changed after running the update script and for each platform that got changed, test it locally via <a class="reference-link type-text" href="UTB518X6X9Uh.html">Build deliveries locally</a> or via the CI.</p>
|
the module (for instance, using `npm rebuild` or `npm install`).</code></pre><h3>How the natives are handled</h3><p>Locally, this can be fixed by rebuilding the binaries, which is what <code>npm run electron:switch</code> does, which uses <code>electron-rebuild</code> under the hood.</p><p>When the deliveries are built (see <a class="reference-link type-text" href="UTB518X6X9Uh.html">Build deliveries locally</a>), it is not feasible to rebuild the dependencies since we are building for multiple platforms. Luckily, <code>better-sqlite3</code> provides these prebuilt binaries from us, available as artifacts on <a href="https://github.com/WiseLibs/better-sqlite3/releases/">their GitHub releases page</a>. </p><p>The build script manages the natives for <code>better-sqlite3</code> by keeping a copy of the <code>.node</code> file for every platform in <code>bin/better-sqlite3</code>.</p><p>Whenever the version of <code>better-sqlite3</code> changes, the <code>.node</code> files must also be renewed based on their releases page. To simplify this process, a script was created in <code>bin/better-sqlite3/update.sh</code>.</p><h2>How to update the natives</h2><p>The update script needs to know the version of Electron or Node.js for which to download the prebuilt binaries.</p><p>If you get errors during download, check on the <a href="https://github.com/WiseLibs/better-sqlite3/releases/">releases page</a> to ensure that this particular combination of Electron/Node actually exists for the given release.</p><p>To determine the <code>NODE_MODULE_VERSION</code> that is required, look for <code>This version of Node.js requires</code><br><code>NODE_MODULE_VERSION</code> in the error when starting Trilium via:</p><ul><li><code>npm run electron:start</code> (or run any Electron <a href="UTB518X6X9Uh.html" class="type-text">delivery</a>), case in which the <span style="color:#c0bfbc;"><code>ELECTRON_VERSION</code> variable needs to be changed.</span></li><li><span style="color:#c0bfbc;"><code>npm run server:start</code></span> (or run the Linux server delivery), case in which the <code>NODE_VERSION</code> variable needs to be changed.</li></ul><p>Check which files got changed after running the update script and for each platform that got changed, test it locally via <a class="reference-link type-text" href="UTB518X6X9Uh.html">Build deliveries locally</a> or via the CI.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<div id="content" class="type-text ck-content">
|
<div id="content" class="type-text ck-content">
|
||||||
<h2>Server live reload</h2><p>If running the server using <code>npm run start-server</code>, the server will watch for changes in <code>src/public</code> and trigger a frontend reload if that occurs.</p><h2>Electron live reload</h2><p>Similarly, <code>npm run start-electron</code> supports live refresh as well.</p><p>However, a core difference is that Electron watches <code>dist/src/public</code> instead of <code>src/public</code> since Electron runs on its own copy of the files.</p><p>To ameliorate that, a separate watch script has been implemented which automatically copies files from <code>src/public</code> to <code>dist/src/public</code> whenever a change is detected. To run it:</p><pre><code class="language-text-plain">npm run </code></pre><h2>Technical details</h2><ul><li>This mechanism is managed at server level by watching for changes in<code>services/ws.ts</code>.</li></ul>
|
<h2>Server live reload</h2><p>If running the server using <code>npm run server:start</code>, the server will watch for changes in <code>src/public</code> and trigger a frontend reload if that occurs.</p><h2>Electron live reload</h2><p>Similarly, <code>npm run electron:start</code> supports live refresh as well.</p><p>However, a core difference is that Electron watches <code>dist/src/public</code> instead of <code>src/public</code> since Electron runs on its own copy of the files.</p><p>To ameliorate that, a separate watch script has been implemented which automatically copies files from <code>src/public</code> to <code>dist/src/public</code> whenever a change is detected. To run it:</p><pre><code class="language-text-plain">npm run </code></pre><h2>Technical details</h2><ul><li>This mechanism is managed at server level by watching for changes in<code>services/ws.ts</code>.</li></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@
|
|||||||
<a id="server" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Server<a href="#server" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To install TriliumNext on your own server (including via Docker from <a href="https://hub.docker.com/r/triliumnext/notes" target="_blank" class="external">Dockerhub</a>) follow <a href="https://triliumnext.github.io/Docs/Wiki/server-installation" target="_blank" class="external">the server installation docs</a>.</p>
|
<a id="server" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Server<a href="#server" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To install TriliumNext on your own server (including via Docker from <a href="https://hub.docker.com/r/triliumnext/notes" target="_blank" class="external">Dockerhub</a>) follow <a href="https://triliumnext.github.io/Docs/Wiki/server-installation" target="_blank" class="external">the server installation docs</a>.</p>
|
||||||
<a id="📝-documentation" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📝 Documentation<a href="#📝-documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p><a href="https://triliumnext.github.io/Docs" target="_blank" class="external">See wiki for complete list of documentation pages.</a></p>
|
<a id="📝-documentation" class="tsd-anchor"></a><h2 class="tsd-anchor-link">📝 Documentation<a href="#📝-documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p><a href="https://triliumnext.github.io/Docs" target="_blank" class="external">See wiki for complete list of documentation pages.</a></p>
|
||||||
<p>You can also read <a href="https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge" target="_blank" class="external">Patterns of personal knowledge base</a> to get some inspiration on how you might use TriliumNext.</p>
|
<p>You can also read <a href="https://triliumnext.github.io/Docs/Wiki/patterns-of-personal-knowledge" target="_blank" class="external">Patterns of personal knowledge base</a> to get some inspiration on how you might use TriliumNext.</p>
|
||||||
<a id="💻-contribute" class="tsd-anchor"></a><h2 class="tsd-anchor-link">💻 Contribute<a href="#💻-contribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="code" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Code<a href="#code" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="shell"><span class="hl-0">git</span><span class="hl-1"> </span><span class="hl-3">clone</span><span class="hl-1"> </span><span class="hl-3">https://github.com/TriliumNext/Notes.git</span><br/><span class="hl-0">cd</span><span class="hl-1"> </span><span class="hl-3">Notes</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">install</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">run</span><span class="hl-1"> </span><span class="hl-3">start-server</span>
|
<a id="💻-contribute" class="tsd-anchor"></a><h2 class="tsd-anchor-link">💻 Contribute<a href="#💻-contribute" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><a id="code" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Code<a href="#code" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><pre><code class="shell"><span class="hl-0">git</span><span class="hl-1"> </span><span class="hl-3">clone</span><span class="hl-1"> </span><span class="hl-3">https://github.com/TriliumNext/Notes.git</span><br/><span class="hl-0">cd</span><span class="hl-1"> </span><span class="hl-3">Notes</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">install</span><br/><span class="hl-0">npm</span><span class="hl-1"> </span><span class="hl-3">run</span><span class="hl-1"> </span><span class="hl-3">server:start</span>
|
||||||
</code><button type="button">Copy</button></pre>
|
</code><button type="button">Copy</button></pre>
|
||||||
|
|
||||||
<a id="documentation" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Documentation<a href="#documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Head on over to our <a href="https://github.com/TriliumNext/Docs" target="_blank" class="external">Docs repo</a></p>
|
<a id="documentation" class="tsd-anchor"></a><h3 class="tsd-anchor-link">Documentation<a href="#documentation" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Head on over to our <a href="https://github.com/TriliumNext/Docs" target="_blank" class="external">Docs repo</a></p>
|
||||||
|
@ -78,7 +78,7 @@ Trilium 也提供 Flatpak:
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 👏 致谢
|
## 👏 致谢
|
||||||
|
@ -86,7 +86,7 @@ Clone localmente y ejecute
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 👏 Reconocimientos
|
## 👏 Reconocimientos
|
||||||
|
@ -73,7 +73,7 @@ Clona localmente ed esegui
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 👏 Riconoscimenti
|
## 👏 Riconoscimenti
|
||||||
|
@ -54,7 +54,7 @@ Trilium は Flatpak としても提供されます:
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📢 シャウトアウト
|
## 📢 シャウトアウト
|
||||||
|
@ -102,7 +102,7 @@ You can also read [Patterns of personal knowledge base](https://triliumnext.gith
|
|||||||
git clone https://github.com/TriliumNext/Notes.git
|
git clone https://github.com/TriliumNext/Notes.git
|
||||||
cd Notes
|
cd Notes
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
|
@ -44,7 +44,7 @@ Trilium предоставляется в виде десктопного при
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
npm install
|
npm install
|
||||||
npm run start-server
|
npm run server:start
|
||||||
```
|
```
|
||||||
|
|
||||||
## 👏 Благодарности
|
## 👏 Благодарности
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<div id="content" class="type-text ck-content">
|
<div id="content" class="type-text ck-content">
|
||||||
<h3>Run server</h3><p>Run with default settings:</p><pre><code class="language-text-plain">npm run start-server</code></pre><p>Run with custom port:</p><pre><code class="language-text-plain">TRILIUM_PORT=8082 npm run start-server</code></pre><h3>Run Electron</h3><p>Rebuild <code>better-sqlite3</code> dependency:</p><pre><code class="language-text-plain">npm run switch-electron</code></pre><p>Then run Electron:</p><pre><code class="language-text-plain">npm run start-electron</code></pre><p>To run Electron using the same data directory as the production version:</p><pre><code class="language-text-plain">npm run start-electron-no-dir</code></pre><p>When done, switch back the <code>better-sqlite3</code> dependency:</p><pre><code class="language-text-plain">npm run switch-server</code></pre>
|
<h3>Run server</h3><p>Run with default settings:</p><pre><code class="language-text-plain">npm run server:start</code></pre><p>Run with custom port:</p><pre><code class="language-text-plain">TRILIUM_PORT=8082 npm run server:start</code></pre><h3>Run Electron</h3><p>Rebuild <code>better-sqlite3</code> dependency:</p><pre><code class="language-text-plain">npm run electron:switch</code></pre><p>Then run Electron:</p><pre><code class="language-text-plain">npm run electron:start</code></pre><p>To run Electron using the same data directory as the production version:</p><pre><code class="language-text-plain">npm run electron:start-no-dir</code></pre><p>When done, switch back the <code>better-sqlite3</code> dependency:</p><pre><code class="language-text-plain">npm run server:switch</code></pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<div id="content" class="type-text ck-content">
|
<div id="content" class="type-text ck-content">
|
||||||
<ul><li>Provides context about when the build was made and the corresponding Git revision.</li><li>The information is displayed to the client when going in the about dialog.</li><li>The build information is hard-coded in <code>src/services/build.ts</code>. This file is generated automatically via <code>npm run update-build-info</code> which itself is run automatically whenever making a build in the CI, or a <a href="UTB518X6X9Uh.html" class="type-text">local delivery</a>.</li></ul>
|
<ul><li>Provides context about when the build was made and the corresponding Git revision.</li><li>The information is displayed to the client when going in the about dialog.</li><li>The build information is hard-coded in <code>src/services/build.ts</code>. This file is generated automatically via <code>npm run chore:update-build-info</code> which itself is run automatically whenever making a build in the CI, or a <a href="UTB518X6X9Uh.html" class="type-text">local delivery</a>.</li></ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
80
package.json
80
package.json
@ -20,43 +20,51 @@
|
|||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start-server": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
|
"server:start": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
|
||||||
"start-server-safe": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
|
"server:start-safe": "cross-env TRILIUM_DATA_DIR=./data TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
|
||||||
"start-server-no-dir": "cross-env TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
|
"server:start-no-dir": "cross-env TRILIUM_ENV=dev TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 nodemon src/main.ts",
|
||||||
"start-test-server": "npm run switch-server && rimraf ./data-test && cross-env TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 nodemon src/main.ts",
|
"server:start-test": "npm run server:switch && rimraf ./data-test && cross-env TRILIUM_DATA_DIR=./data-test TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev TRILIUM_PORT=9999 nodemon src/main.ts",
|
||||||
"qstart-server": "npm run switch-server && npm run start-server",
|
"server:qstart": "npm run server:switch && npm run server:start",
|
||||||
"start-electron": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./electron-main.ts --inspect=5858 .",
|
"server:switch": "rimraf ./node_modules/better-sqlite3 && npm install",
|
||||||
"start-electron-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
|
|
||||||
"start-electron-no-dir": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev electron --inspect=5858 .",
|
"electron:start": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./electron-main.ts --inspect=5858 .",
|
||||||
"start-electron-no-dir-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
|
"electron:start-no-dir": "cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev electron --inspect=5858 .",
|
||||||
"start-electron-prod": "npm run prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron-main.js --inspect=5858 .",
|
"electron:start-nix": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
|
||||||
"start-electron-prod-nix": "electron-rebuild --version 33.3.1 && npm run prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
|
"electron:start-nix-no-dir": "electron-rebuild --version 33.3.1 && cross-env NODE_OPTIONS=\"--import tsx\" TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./electron-main.ts --inspect=5858 .\"",
|
||||||
"start-electron-prod-no-dir": "npm run prepare-dist && cross-env TRILIUM_ENV=dev electron --inspect=5858 .",
|
"electron:start-prod": "npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev electron ./dist/electron-main.js --inspect=5858 .",
|
||||||
"start-electron-prod-no-dir-nix": "electron-rebuild --version 33.3.1 && npm run prepare-dist && cross-env TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
|
"electron:start-prod-no-dir": "npm run build:prepare-dist && cross-env TRILIUM_ENV=dev electron --inspect=5858 .",
|
||||||
"qstart-electron": "npm run switch-electron && npm run start-electron",
|
"electron:start-prod-nix": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_DATA_DIR=./data TRILIUM_SYNC_SERVER_HOST=http://tsyncserver:4000 TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
|
||||||
"switch-server": "rimraf ./node_modules/better-sqlite3 && npm install",
|
"electron:start-prod-nix-no-dir": "electron-rebuild --version 33.3.1 && npm run build:prepare-dist && cross-env TRILIUM_ENV=dev nix-shell -p electron_33 --run \"electron ./dist/electron-main.js --inspect=5858 .\"",
|
||||||
"switch-electron": "electron-rebuild",
|
"electron:qstart": "npm run electron:switch && npm run electron:start",
|
||||||
"build-backend-docs": "rimraf ./docs/backend_api && typedoc ./docs/backend_api src/becca/entities/*.ts src/services/backend_script_api.ts src/services/sql.ts",
|
"electron:switch": "electron-rebuild",
|
||||||
"build-frontend-docs": "rimraf ./docs/frontend_api && jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/app/entities/*.js src/public/app/services/frontend_script_api.js src/public/app/widgets/basic_widget.js src/public/app/widgets/note_context_aware_widget.js src/public/app/widgets/right_panel_widget.js",
|
|
||||||
"build-docs": "npm run build-backend-docs && npm run build-frontend-docs",
|
"electron-forge:start": "npm run build:prepare-dist && electron-forge start",
|
||||||
"webpack": "tsx node_modules/webpack/bin/webpack.js -c webpack.config.ts",
|
"electron-forge:make": "npm run build:webpack && npm run build:prepare-dist && electron-forge make",
|
||||||
"test-playwright": "playwright test",
|
"electron-forge:package": "electron-forge package",
|
||||||
|
|
||||||
|
"docs:build-backend": "rimraf ./docs/backend_api && typedoc ./docs/backend_api src/becca/entities/*.ts src/services/backend_script_api.ts src/services/sql.ts",
|
||||||
|
"docs:build-frontend": "rimraf ./docs/frontend_api && jsdoc -c jsdoc-conf.json -d ./docs/frontend_api src/public/app/entities/*.js src/public/app/services/frontend_script_api.js src/public/app/widgets/basic_widget.js src/public/app/widgets/note_context_aware_widget.js src/public/app/widgets/right_panel_widget.js",
|
||||||
|
"docs:build": "npm run docs:build-backend && npm run docs:build-frontend",
|
||||||
|
|
||||||
|
"build:webpack": "tsx node_modules/webpack/bin/webpack.js -c webpack.config.ts",
|
||||||
|
"build:prepare-dist": "rimraf ./dist && tsc && tsx ./bin/copy-dist.ts",
|
||||||
|
|
||||||
"test": "cross-env TRILIUM_DATA_DIR=./integration-tests/db vitest",
|
"test": "cross-env TRILIUM_DATA_DIR=./integration-tests/db vitest",
|
||||||
"test-coverage": "cross-env TRILIUM_DATA_DIR=./integration-tests/db vitest --coverage",
|
"test:coverage": "cross-env TRILIUM_DATA_DIR=./integration-tests/db vitest --coverage",
|
||||||
"start-electron-forge": "npm run prepare-dist && electron-forge start",
|
"test:playwright": "playwright test",
|
||||||
"make-electron": "npm run webpack && npm run prepare-dist && electron-forge make",
|
|
||||||
"package-electron": "electron-forge package",
|
"test:integration-edit-db": "cross-env TRILIUM_INTEGRATION_TEST=edit TRILIUM_PORT=8081 TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
||||||
"prepare-dist": "rimraf ./dist && tsc && tsx ./bin/copy-dist.ts",
|
"test:integration-mem-db": "cross-env TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
||||||
"watch-dist": "tsx ./bin/watch-dist.ts",
|
"test:integration-mem-db-dev": "cross-env TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
||||||
"update-build-info": "tsx bin/update-build-info.ts",
|
|
||||||
"integration-edit-db": "cross-env TRILIUM_INTEGRATION_TEST=edit TRILIUM_PORT=8081 TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
"dev:watch-dist": "tsx ./bin/watch-dist.ts",
|
||||||
"integration-mem-db": "cross-env TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
"dev:prettier-check": "prettier . --check",
|
||||||
"integration-mem-db-dev": "cross-env TRILIUM_INTEGRATION_TEST=memory TRILIUM_PORT=8082 TRILIUM_ENV=dev TRILIUM_DATA_DIR=./integration-tests/db nodemon src/main.ts",
|
"dev:prettier-fix": "prettier . --write",
|
||||||
"generate-document": "cross-env nodemon ./bin/generate_document.ts 1000",
|
|
||||||
"generate-openapi": "tsx bin/generate-openapi.js",
|
"chore:update-build-info": "tsx bin/update-build-info.ts",
|
||||||
"ci-update-nightly-version": "tsx ./bin/update-nightly-version.ts",
|
"chore:ci-update-nightly-version": "tsx ./bin/update-nightly-version.ts",
|
||||||
"prettier-check": "prettier . --check",
|
"chore:generate-document": "cross-env nodemon ./bin/generate_document.ts 1000",
|
||||||
"prettier-fix": "prettier . --write"
|
"chore:generate-openapi": "tsx bin/generate-openapi.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@braintree/sanitize-url": "7.1.1",
|
"@braintree/sanitize-url": "7.1.1",
|
||||||
|
@ -74,7 +74,7 @@ export default defineConfig({
|
|||||||
|
|
||||||
/* Run your local dev server before starting the tests */
|
/* Run your local dev server before starting the tests */
|
||||||
webServer: !process.env.TRILIUM_DOCKER ? {
|
webServer: !process.env.TRILIUM_DOCKER ? {
|
||||||
command: 'npm run integration-mem-db-dev',
|
command: 'npm run test:integration-mem-db-dev',
|
||||||
url: SERVER_URL,
|
url: SERVER_URL,
|
||||||
reuseExistingServer: !process.env.CI,
|
reuseExistingServer: !process.env.CI,
|
||||||
} : undefined,
|
} : undefined,
|
||||||
|
@ -159,7 +159,7 @@ class BBranch extends AbstractBeccaEntity<BBranch> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.noteId === "root" || this.noteId === cls.getHoistedNoteId()) {
|
if ((this.noteId === "root" || this.noteId === cls.getHoistedNoteId()) && !this.isWeak) {
|
||||||
throw new Error("Can't delete root or hoisted branch/note");
|
throw new Error("Can't delete root or hoisted branch/note");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -223,6 +223,8 @@ export type CommandMappings = {
|
|||||||
// Geomap
|
// Geomap
|
||||||
deleteFromMap: { noteId: string },
|
deleteFromMap: { noteId: string },
|
||||||
openGeoLocation: { noteId: string, event: JQuery.MouseDownEvent }
|
openGeoLocation: { noteId: string, event: JQuery.MouseDownEvent }
|
||||||
|
|
||||||
|
toggleZenMode: CommandData;
|
||||||
};
|
};
|
||||||
|
|
||||||
type EventMappings = {
|
type EventMappings = {
|
||||||
@ -325,6 +327,7 @@ type EventMappings = {
|
|||||||
};
|
};
|
||||||
scrollToEnd: { ntxId: string };
|
scrollToEnd: { ntxId: string };
|
||||||
noteTypeMimeChanged: { noteId: string };
|
noteTypeMimeChanged: { noteId: string };
|
||||||
|
zenModeChanged: { isEnabled: boolean };
|
||||||
};
|
};
|
||||||
|
|
||||||
export type EventListener<T extends EventNames> = {
|
export type EventListener<T extends EventNames> = {
|
||||||
|
@ -178,6 +178,13 @@ export default class RootCommandExecutor extends Component {
|
|||||||
for (const window of windows) window[action]();
|
for (const window of windows) window[action]();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleZenModeCommand() {
|
||||||
|
const $body = $("body");
|
||||||
|
$body.toggleClass("zen");
|
||||||
|
const isEnabled = $body.hasClass("zen");
|
||||||
|
appContext.triggerEvent("zenModeChanged", { isEnabled });
|
||||||
|
}
|
||||||
|
|
||||||
firstTabCommand() {
|
firstTabCommand() {
|
||||||
this.#goToTab(1);
|
this.#goToTab(1);
|
||||||
}
|
}
|
||||||
|
@ -87,6 +87,7 @@ import options from "../services/options.js";
|
|||||||
import utils from "../services/utils.js";
|
import utils from "../services/utils.js";
|
||||||
import GeoMapButtons from "../widgets/floating_buttons/geo_map_button.js";
|
import GeoMapButtons from "../widgets/floating_buttons/geo_map_button.js";
|
||||||
import ContextualHelpButton from "../widgets/floating_buttons/help_button.js";
|
import ContextualHelpButton from "../widgets/floating_buttons/help_button.js";
|
||||||
|
import CloseZenButton from "../widgets/close_zen_button.js";
|
||||||
|
|
||||||
export default class DesktopLayout {
|
export default class DesktopLayout {
|
||||||
constructor(customWidgets) {
|
constructor(customWidgets) {
|
||||||
@ -262,7 +263,8 @@ export default class DesktopLayout {
|
|||||||
.child(new DeleteNotesDialog())
|
.child(new DeleteNotesDialog())
|
||||||
.child(new InfoDialog())
|
.child(new InfoDialog())
|
||||||
.child(new ConfirmDialog())
|
.child(new ConfirmDialog())
|
||||||
.child(new PromptDialog());
|
.child(new PromptDialog())
|
||||||
|
.child(new CloseZenButton())
|
||||||
}
|
}
|
||||||
|
|
||||||
#buildLauncherPane(isHorizontal) {
|
#buildLauncherPane(isHorizontal) {
|
||||||
|
@ -133,7 +133,12 @@ const TPL = `
|
|||||||
${t("title_bar_buttons.window-on-top")}
|
${t("title_bar_buttons.window-on-top")}
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<div class="dropdown-divider zoom-container-separator"></div>
|
<li class="dropdown-item" data-trigger-command="toggleZenMode">
|
||||||
|
<span class="bx bxs-yin-yang"></span>
|
||||||
|
${t("global_menu.toggle-zen-mode")}
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
<li class="dropdown-item switch-to-mobile-version-button" data-trigger-command="switchToMobileVersion">
|
<li class="dropdown-item switch-to-mobile-version-button" data-trigger-command="switchToMobileVersion">
|
||||||
<span class="bx bx-mobile"></span>
|
<span class="bx bx-mobile"></span>
|
||||||
@ -251,6 +256,7 @@ export default class GlobalMenuWidget extends BasicWidget {
|
|||||||
|
|
||||||
private $updateToLatestVersionButton!: JQuery<HTMLElement>;
|
private $updateToLatestVersionButton!: JQuery<HTMLElement>;
|
||||||
private $zoomState!: JQuery<HTMLElement>;
|
private $zoomState!: JQuery<HTMLElement>;
|
||||||
|
private $toggleZenMode!: JQuery<HTMLElement>;
|
||||||
|
|
||||||
constructor(isHorizontalLayout: boolean) {
|
constructor(isHorizontalLayout: boolean) {
|
||||||
super();
|
super();
|
||||||
@ -355,17 +361,11 @@ export default class GlobalMenuWidget extends BasicWidget {
|
|||||||
|
|
||||||
if (!utils.isElectron()) {
|
if (!utils.isElectron()) {
|
||||||
this.$widget.find(".zoom-container").hide();
|
this.$widget.find(".zoom-container").hide();
|
||||||
this.$widget.find(".zoom-container-separator").hide();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$zoomState = this.$widget.find(".zoom-state");
|
this.$zoomState = this.$widget.find(".zoom-state");
|
||||||
this.$widget.on("show.bs.dropdown", () => {
|
this.$toggleZenMode = this.$widget.find('[data-trigger-command="toggleZenMode"');
|
||||||
this.updateZoomState();
|
this.$widget.on("show.bs.dropdown", () => this.#onShown());
|
||||||
if (this.tooltip) {
|
|
||||||
this.tooltip.hide();
|
|
||||||
this.tooltip.disable();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (this.tooltip) {
|
if (this.tooltip) {
|
||||||
this.$widget.on("hide.bs.dropdown", () => this.tooltip.enable());
|
this.$widget.on("hide.bs.dropdown", () => this.tooltip.enable());
|
||||||
}
|
}
|
||||||
@ -381,6 +381,15 @@ export default class GlobalMenuWidget extends BasicWidget {
|
|||||||
setInterval(() => this.updateVersionStatus(), 8 * 60 * 60 * 1000);
|
setInterval(() => this.updateVersionStatus(), 8 * 60 * 60 * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#onShown() {
|
||||||
|
this.$toggleZenMode.toggleClass("active", $("body").hasClass("zen"));
|
||||||
|
this.updateZoomState();
|
||||||
|
if (this.tooltip) {
|
||||||
|
this.tooltip.hide();
|
||||||
|
this.tooltip.disable();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
updateZoomState() {
|
updateZoomState() {
|
||||||
if (!utils.isElectron()) {
|
if (!utils.isElectron()) {
|
||||||
return;
|
return;
|
||||||
|
46
src/public/app/widgets/close_zen_button.ts
Normal file
46
src/public/app/widgets/close_zen_button.ts
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
import BasicWidget from "./basic_widget.js";
|
||||||
|
|
||||||
|
const TPL = `\
|
||||||
|
<div class="close-zen-container">
|
||||||
|
<button class="button-widget bx icon-action bxs-yin-yang"
|
||||||
|
data-trigger-command="toggleZenMode" />
|
||||||
|
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--zen-button-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.close-zen-container {
|
||||||
|
display: none;
|
||||||
|
width: var(--zen-button-size);
|
||||||
|
height: var(--zen-button-size);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .close-zen-container {
|
||||||
|
display: block;
|
||||||
|
position: fixed;
|
||||||
|
top: 2px;
|
||||||
|
right: 2px;
|
||||||
|
z-index: 9999;
|
||||||
|
-webkit-app-region: no-drag;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen.electron:not(.platform-darwin):not(.native-titlebar) .close-zen-container {
|
||||||
|
left: calc(env(titlebar-area-width) - var(--zen-button-size) - 2px);
|
||||||
|
right: unset;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
|
||||||
|
export default class CloseZenButton extends BasicWidget {
|
||||||
|
|
||||||
|
doRender(): void {
|
||||||
|
this.$widget = $(TPL);
|
||||||
|
}
|
||||||
|
|
||||||
|
zenChangedEvent() {
|
||||||
|
this.toggleInt(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1644,3 +1644,44 @@ body.electron.platform-darwin:not(.native-titlebar) .tab-row-container {
|
|||||||
box-shadow: 0px 10px 20px rgba(0, 0, 0, var(--dropdown-shadow-opacity));
|
box-shadow: 0px 10px 20px rgba(0, 0, 0, var(--dropdown-shadow-opacity));
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.zen {
|
||||||
|
--tab-bar-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .gutter,
|
||||||
|
body.zen #launcher-container,
|
||||||
|
body.zen #launcher-pane,
|
||||||
|
body.zen #left-pane,
|
||||||
|
body.zen #right-pane,
|
||||||
|
body.zen .tab-row-container,
|
||||||
|
body.zen .tab-row-widget,
|
||||||
|
body.zen .ribbon-container,
|
||||||
|
body.zen .note-icon-widget,
|
||||||
|
body.zen .title-row .button-widget,
|
||||||
|
body.zen .floating-buttons {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen #launcher-pane {
|
||||||
|
position: absolute !important;
|
||||||
|
top: 0 !important;
|
||||||
|
right: 0 !important;
|
||||||
|
width: 64px !important;
|
||||||
|
height: 64px !important;
|
||||||
|
background: transparent !important;
|
||||||
|
border: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .title-row {
|
||||||
|
display: block !important;
|
||||||
|
height: unset !important;
|
||||||
|
-webkit-app-region: drag;
|
||||||
|
padding-left: env(titlebar-area-x);
|
||||||
|
}
|
||||||
|
|
||||||
|
body.zen .note-title-widget,
|
||||||
|
body.zen .note-title-widget input {
|
||||||
|
font-size: 1rem !important;
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
@ -142,6 +142,8 @@
|
|||||||
--inactive-tab-hover-background-color: #ffffff0f;
|
--inactive-tab-hover-background-color: #ffffff0f;
|
||||||
--inactive-tab-text-color: #7c7c7c;
|
--inactive-tab-text-color: #7c7c7c;
|
||||||
|
|
||||||
|
--alert-bar-background: #6b6b6b3b;
|
||||||
|
|
||||||
--right-pane-item-hover-background: #ffffff26;
|
--right-pane-item-hover-background: #ffffff26;
|
||||||
--right-pane-item-hover-color: white;
|
--right-pane-item-hover-color: white;
|
||||||
|
|
||||||
|
@ -136,6 +136,8 @@
|
|||||||
--inactive-tab-hover-background-color: #00000016;
|
--inactive-tab-hover-background-color: #00000016;
|
||||||
--inactive-tab-text-color: #4e4e4e;
|
--inactive-tab-text-color: #4e4e4e;
|
||||||
|
|
||||||
|
--alert-bar-background: #32637b29;
|
||||||
|
|
||||||
--new-tab-button-background: #d8d8d8;
|
--new-tab-button-background: #d8d8d8;
|
||||||
--new-tab-button-color: #3a3a3a;
|
--new-tab-button-color: #3a3a3a;
|
||||||
--new-tab-button-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
|
--new-tab-button-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
|
||||||
|
@ -1806,4 +1806,33 @@ div.bookmark-folder-widget .note-link .bx {
|
|||||||
.note-icon-widget .icon-list span:hover {
|
.note-icon-widget .icon-list span:hover {
|
||||||
background: var(--hover-item-background-color);
|
background: var(--hover-item-background-color);
|
||||||
color: var(--hover-item-text-color);
|
color: var(--hover-item-text-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.background-effects.zen #root-widget {
|
||||||
|
--main-background-color: transparent;
|
||||||
|
--root-background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Alert bar */
|
||||||
|
|
||||||
|
@keyframes alert-show {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
} to {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#center-pane div.alert {
|
||||||
|
position: relative;
|
||||||
|
margin: 8px 0 0 0;
|
||||||
|
border: unset;
|
||||||
|
border-radius: 0;
|
||||||
|
padding: 8px 16px;
|
||||||
|
background: var(--alert-bar-background) !important;
|
||||||
|
font-size: .9em;
|
||||||
|
font-weight: normal;
|
||||||
|
animation: alert-show 300ms ease-in;
|
||||||
|
border-bottom: 2px solid #0000001c !important;
|
||||||
|
}
|
||||||
|
@ -642,7 +642,8 @@
|
|||||||
"show_help": "Show Help",
|
"show_help": "Show Help",
|
||||||
"about": "About TriliumNext Notes",
|
"about": "About TriliumNext Notes",
|
||||||
"logout": "Logout",
|
"logout": "Logout",
|
||||||
"show-cheatsheet": "Show Cheatsheet"
|
"show-cheatsheet": "Show Cheatsheet",
|
||||||
|
"toggle-zen-mode": "Zen Mode"
|
||||||
},
|
},
|
||||||
"sync_status": {
|
"sync_status": {
|
||||||
"unknown": "<p>Sync status will be known once the next sync attempt starts.</p><p>Click to trigger sync now.</p>",
|
"unknown": "<p>Sync status will be known once the next sync attempt starts.</p><p>Click to trigger sync now.</p>",
|
||||||
|
@ -593,7 +593,8 @@
|
|||||||
"zoom": "Zoom",
|
"zoom": "Zoom",
|
||||||
"zoom_in": "Mărește",
|
"zoom_in": "Mărește",
|
||||||
"zoom_out": "Micșorează",
|
"zoom_out": "Micșorează",
|
||||||
"show-cheatsheet": "Afișează ghidul rapid"
|
"show-cheatsheet": "Afișează ghidul rapid",
|
||||||
|
"toggle-zen-mode": "Mod zen"
|
||||||
},
|
},
|
||||||
"heading_style": {
|
"heading_style": {
|
||||||
"markdown": "Stil Markdown",
|
"markdown": "Stil Markdown",
|
||||||
|
@ -238,6 +238,12 @@ function getDefaultKeyboardActions() {
|
|||||||
description: t("keyboard_actions.toggle-tray"),
|
description: t("keyboard_actions.toggle-tray"),
|
||||||
scope: "window"
|
scope: "window"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
actionName: "toggleZenMode",
|
||||||
|
defaultShortcuts: ["Alt+Z"],
|
||||||
|
description: t("keyboard_actions.toggle-zen-mode"),
|
||||||
|
scope: "window"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
actionName: "firstTab",
|
actionName: "firstTab",
|
||||||
defaultShortcuts: ["CommandOrControl+1"],
|
defaultShortcuts: ["CommandOrControl+1"],
|
||||||
|
@ -35,6 +35,7 @@ const enum KeyboardActionNamesEnum {
|
|||||||
activatePreviousTab,
|
activatePreviousTab,
|
||||||
openNewWindow,
|
openNewWindow,
|
||||||
toggleTray,
|
toggleTray,
|
||||||
|
toggleZenMode,
|
||||||
firstTab,
|
firstTab,
|
||||||
secondTab,
|
secondTab,
|
||||||
thirdTab,
|
thirdTab,
|
||||||
|
@ -92,7 +92,8 @@
|
|||||||
"toggle-book-properties": "Toggle Book Properties",
|
"toggle-book-properties": "Toggle Book Properties",
|
||||||
"toggle-classic-editor-toolbar": "Toggle the Formatting tab for the editor with fixed toolbar",
|
"toggle-classic-editor-toolbar": "Toggle the Formatting tab for the editor with fixed toolbar",
|
||||||
"export-as-pdf": "Exports the current note as a PDF",
|
"export-as-pdf": "Exports the current note as a PDF",
|
||||||
"show-cheatsheet": "Shows a modal with common keyboard operations"
|
"show-cheatsheet": "Shows a modal with common keyboard operations",
|
||||||
|
"toggle-zen-mode": "Enables/disables the zen mode (minimal UI for more focused editing)"
|
||||||
},
|
},
|
||||||
"login": {
|
"login": {
|
||||||
"title": "Login",
|
"title": "Login",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user