Merge branch 'main' of github.com:TriliumNext/Trilium
@@ -270,6 +270,7 @@ export type CommandMappings = {
|
|||||||
closeThisNoteSplit: CommandData;
|
closeThisNoteSplit: CommandData;
|
||||||
moveThisNoteSplit: CommandData & { isMovingLeft: boolean };
|
moveThisNoteSplit: CommandData & { isMovingLeft: boolean };
|
||||||
jumpToNote: CommandData;
|
jumpToNote: CommandData;
|
||||||
|
openTodayNote: CommandData;
|
||||||
commandPalette: CommandData;
|
commandPalette: CommandData;
|
||||||
|
|
||||||
// Keyboard shortcuts
|
// Keyboard shortcuts
|
||||||
|
|||||||
@@ -159,6 +159,16 @@ export default class Entrypoints extends Component {
|
|||||||
this.openInWindowCommand({ notePath: "", hoistedNoteId: "root" });
|
this.openInWindowCommand({ notePath: "", hoistedNoteId: "root" });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async openTodayNoteCommand() {
|
||||||
|
const todayNote = await dateNoteService.getTodayNote();
|
||||||
|
if (!todayNote) {
|
||||||
|
console.warn("Missing today note.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
await appContext.tabManager.openInSameTab(todayNote.noteId);
|
||||||
|
}
|
||||||
|
|
||||||
async runActiveNoteCommand() {
|
async runActiveNoteCommand() {
|
||||||
const noteContext = appContext.tabManager.getActiveContext();
|
const noteContext = appContext.tabManager.getActiveContext();
|
||||||
if (!noteContext) {
|
if (!noteContext) {
|
||||||
|
|||||||
@@ -417,7 +417,7 @@ export default class FNote {
|
|||||||
return notePaths;
|
return notePaths;
|
||||||
}
|
}
|
||||||
|
|
||||||
getSortedNotePathRecords(hoistedNoteId = "root"): NotePathRecord[] {
|
getSortedNotePathRecords(hoistedNoteId = "root", activeNotePath: string | null = null): NotePathRecord[] {
|
||||||
const isHoistedRoot = hoistedNoteId === "root";
|
const isHoistedRoot = hoistedNoteId === "root";
|
||||||
|
|
||||||
const notePaths: NotePathRecord[] = this.getAllNotePaths().map((path) => ({
|
const notePaths: NotePathRecord[] = this.getAllNotePaths().map((path) => ({
|
||||||
@@ -428,7 +428,23 @@ export default class FNote {
|
|||||||
isHidden: path.includes("_hidden")
|
isHidden: path.includes("_hidden")
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
// Calculate the length of the prefix match between two arrays
|
||||||
|
const prefixMatchLength = (path: string[], target: string[]) => {
|
||||||
|
const diffIndex = path.findIndex((seg, i) => seg !== target[i]);
|
||||||
|
return diffIndex === -1 ? Math.min(path.length, target.length) : diffIndex;
|
||||||
|
};
|
||||||
|
|
||||||
notePaths.sort((a, b) => {
|
notePaths.sort((a, b) => {
|
||||||
|
if (activeNotePath) {
|
||||||
|
const activeSegments = activeNotePath.split('/');
|
||||||
|
const aOverlap = prefixMatchLength(a.notePath, activeSegments);
|
||||||
|
const bOverlap = prefixMatchLength(b.notePath, activeSegments);
|
||||||
|
// Paths with more matching prefix segments are prioritized
|
||||||
|
// when the match count is equal, other criteria are used for sorting
|
||||||
|
if (bOverlap !== aOverlap) {
|
||||||
|
return bOverlap - aOverlap;
|
||||||
|
}
|
||||||
|
}
|
||||||
if (a.isInHoistedSubTree !== b.isInHoistedSubTree) {
|
if (a.isInHoistedSubTree !== b.isInHoistedSubTree) {
|
||||||
return a.isInHoistedSubTree ? -1 : 1;
|
return a.isInHoistedSubTree ? -1 : 1;
|
||||||
} else if (a.isArchived !== b.isArchived) {
|
} else if (a.isArchived !== b.isArchived) {
|
||||||
@@ -449,10 +465,11 @@ export default class FNote {
|
|||||||
* Returns the note path considered to be the "best"
|
* Returns the note path considered to be the "best"
|
||||||
*
|
*
|
||||||
* @param {string} [hoistedNoteId='root']
|
* @param {string} [hoistedNoteId='root']
|
||||||
|
* @param {string|null} [activeNotePath=null]
|
||||||
* @return {string[]} array of noteIds constituting the particular note path
|
* @return {string[]} array of noteIds constituting the particular note path
|
||||||
*/
|
*/
|
||||||
getBestNotePath(hoistedNoteId = "root") {
|
getBestNotePath(hoistedNoteId = "root", activeNotePath: string | null = null) {
|
||||||
return this.getSortedNotePathRecords(hoistedNoteId)[0]?.notePath;
|
return this.getSortedNotePathRecords(hoistedNoteId, activeNotePath)[0]?.notePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -26,21 +26,12 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
|
|||||||
}
|
}
|
||||||
|
|
||||||
const path = notePath.split("/").reverse();
|
const path = notePath.split("/").reverse();
|
||||||
|
|
||||||
if (!path.includes("root")) {
|
|
||||||
path.push("root");
|
|
||||||
}
|
|
||||||
|
|
||||||
const effectivePathSegments: string[] = [];
|
const effectivePathSegments: string[] = [];
|
||||||
let childNoteId: string | null = null;
|
let childNoteId: string | null = null;
|
||||||
let i = 0;
|
let i = 0;
|
||||||
|
|
||||||
while (true) {
|
for (let i = 0; i < path.length; i++) {
|
||||||
if (i >= path.length) {
|
const parentNoteId = path[i];
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
const parentNoteId = path[i++];
|
|
||||||
|
|
||||||
if (childNoteId !== null) {
|
if (childNoteId !== null) {
|
||||||
const child = await froca.getNote(childNoteId, !logErrors);
|
const child = await froca.getNote(childNoteId, !logErrors);
|
||||||
@@ -65,7 +56,7 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!parents.some((p) => p.noteId === parentNoteId)) {
|
if (!parents.some(p => p.noteId === parentNoteId) || (i === path.length - 1 && parentNoteId !== 'root')) {
|
||||||
if (logErrors) {
|
if (logErrors) {
|
||||||
const parent = froca.getNoteFromCache(parentNoteId);
|
const parent = froca.getNoteFromCache(parentNoteId);
|
||||||
|
|
||||||
@@ -77,7 +68,8 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const bestNotePath = child.getBestNotePath(hoistedNoteId);
|
const activeNotePath = appContext.tabManager.getActiveContextNotePath();
|
||||||
|
const bestNotePath = child.getBestNotePath(hoistedNoteId, activeNotePath);
|
||||||
|
|
||||||
if (bestNotePath) {
|
if (bestNotePath) {
|
||||||
const pathToRoot = bestNotePath.reverse().slice(1);
|
const pathToRoot = bestNotePath.reverse().slice(1);
|
||||||
@@ -108,7 +100,9 @@ async function resolveNotePathToSegments(notePath: string, hoistedNoteId = "root
|
|||||||
if (!note) {
|
if (!note) {
|
||||||
throw new Error(`Unable to find note: ${notePath}.`);
|
throw new Error(`Unable to find note: ${notePath}.`);
|
||||||
}
|
}
|
||||||
const bestNotePath = note.getBestNotePath(hoistedNoteId);
|
|
||||||
|
const activeNotePath = appContext.tabManager.getActiveContextNotePath();
|
||||||
|
const bestNotePath = note.getBestNotePath(hoistedNoteId, activeNotePath);
|
||||||
|
|
||||||
if (!bestNotePath) {
|
if (!bestNotePath) {
|
||||||
throw new Error(`Did not find any path segments for '${note.toString()}', hoisted note '${hoistedNoteId}'`);
|
throw new Error(`Did not find any path segments for '${note.toString()}', hoisted note '${hoistedNoteId}'`);
|
||||||
|
|||||||
@@ -11,8 +11,12 @@ export function reloadFrontendApp(reason?: string) {
|
|||||||
logInfo(`Frontend app reload: ${reason}`);
|
logInfo(`Frontend app reload: ${reason}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isElectron()) {
|
||||||
|
dynamicRequire("@electron/remote").BrowserWindow.getFocusedWindow()?.reload();
|
||||||
|
} else {
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function restartDesktopApp() {
|
export function restartDesktopApp() {
|
||||||
if (!isElectron()) {
|
if (!isElectron()) {
|
||||||
|
|||||||
@@ -79,8 +79,8 @@ export default function ExportDialog() {
|
|||||||
values={[
|
values={[
|
||||||
{ value: "html", label: t("export.format_html_zip") },
|
{ value: "html", label: t("export.format_html_zip") },
|
||||||
{ value: "markdown", label: t("export.format_markdown") },
|
{ value: "markdown", label: t("export.format_markdown") },
|
||||||
{ value: "opml", label: t("export.format_opml") },
|
{ value: "share", label: t("export.share-format") },
|
||||||
{ value: "share", label: t("export.share-format") }
|
{ value: "opml", label: t("export.format_opml") }
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
|||||||
2
apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json
generated
vendored
21
apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Desktop Installation/System Requirements.html
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<p>The desktop version of Trilium supports all three main operating systems:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Windows
|
||||||
|
<ul>
|
||||||
|
<li>Windows 11 is officially supported.</li>
|
||||||
|
<li>Windows on ARM is also supported</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>Linux:
|
||||||
|
<ul>
|
||||||
|
<li>Most modern distributions are supported, including NixOS.</li>
|
||||||
|
<li>ARM is supported in <code>aarch64</code> (no ARM v7 support).</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>macOS
|
||||||
|
<ul>
|
||||||
|
<li>Minimum supported operating system: macOS Monterey</li>
|
||||||
|
<li>Both Intel and Apple Silicon devices are supported.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
16
apps/server/src/assets/doc_notes/en/User Guide/User Guide/Installation & Setup/Server Installation/System Requirements.html
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<ul>
|
||||||
|
<li>Using Docker, the server can be run on Windows, Linux and macOS devices.</li>
|
||||||
|
<li>Native binaries are provided for Linux x64 and ARM (<code>aarch64</code>).</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Legacy ARM support</h2>
|
||||||
|
<p>The Docker builds also provide <code>linux/arm/v7</code> and <code>linux/arm/v8</code> platforms.
|
||||||
|
These platforms are considered legacy since Trilium uses Node.js version
|
||||||
|
24 which have <a href="https://github.com/nodejs/node/commit/6682861d6f">officially downgraded support</a> for
|
||||||
|
these platforms to “experimental”.</p>
|
||||||
|
<p>As a result, Trilium needs to use Node.js 22 for these versions. As soon
|
||||||
|
as soon Node.js 22 will no longer be compatible, support for <code>armv7</code> and <code>armv8</code> will
|
||||||
|
be dropped entirely.</p>
|
||||||
|
<p>Regardless of upstream support, these platforms are supported on a best-effort
|
||||||
|
basis and are not officially supported by the Trilium development team.
|
||||||
|
Bug reports are accepted but they will not be treated with priority; contributions
|
||||||
|
are welcome.</p>
|
||||||
@@ -36,9 +36,9 @@
|
|||||||
starts to grow, and I see how <em>some</em> parts could be split out, I move
|
starts to grow, and I see how <em>some</em> parts could be split out, I move
|
||||||
them out into separate sub notes. As an example I have a book review for <em>The Fellowship of the Ring</em>:</p>
|
them out into separate sub notes. As an example I have a book review for <em>The Fellowship of the Ring</em>:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e014cdda874b3afa265620405ac664225">Book reviews
|
<li>Book reviews
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="eb71eb18cab8130d57c921f0d2be2ce7a">The Fellowship of the Ring</li>
|
<li>The Fellowship of the Ring</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -47,12 +47,12 @@
|
|||||||
too many book highlights and overall review is also rather long, so I want
|
too many book highlights and overall review is also rather long, so I want
|
||||||
to change the structure to the following:</p>
|
to change the structure to the following:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e95d447a4545a6fff27b6672dda4b65bb">Book reviews
|
<li>Book reviews
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e515c90d48187340c7cf8edc51ef0200b">The Fellowship of the Ring <em>(still contains basic info)</em>
|
<li>The Fellowship of the Ring <em>(still contains basic info)</em>
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e79281e84f0048909678b69fca208e01b">Highlights</li>
|
<li>Highlights</li>
|
||||||
<li data-list-item-id="e389fa061d4b6b1c0fd34e6e1e37be4e5">Review</li>
|
<li>Review</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -113,15 +113,15 @@
|
|||||||
and move all irrelevant notes there. So my credentials note might look
|
and move all irrelevant notes there. So my credentials note might look
|
||||||
something like this:</p>
|
something like this:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e7b3783f701225194d86196f0475bd942">Credentials
|
<li>Credentials
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e580b39918e97b257a23a807479e3ab7c">Personal
|
<li>Personal
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="eba2958dae6c7cbe187af4c99780fe571">OLD <em>(contains a bunch of notes with credentials for services I don't use anymore)</em>
|
<li>OLD <em>(contains a bunch of notes with credentials for services I don't use anymore)</em>
|
||||||
</li>
|
</li>
|
||||||
<li data-list-item-id="e837f86b22c3ffa29be1f98a0865bebc5">Gmail</li>
|
<li>Gmail</li>
|
||||||
<li data-list-item-id="e1c9d712ef07078c8410af4800975b9c3">Github</li>
|
<li>Github</li>
|
||||||
<li data-list-item-id="ecadc93e95b537580013b2e85f7c22c85">...</li>
|
<li>...</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -132,14 +132,14 @@
|
|||||||
<p>Every day has its note which contains or references everything related
|
<p>Every day has its note which contains or references everything related
|
||||||
to the given day. Structure looks like this:</p>
|
to the given day. Structure looks like this:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="ee6821b6cce470161686fe2feee3d93ea">2018
|
<li>2018
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e497e79bb02a92b13bdfa6a644238a4e8">11 - November
|
<li>11 - November
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e629d7121225a4a49f93586c5420e8e18">26 - Monday</li>
|
<li>26 - Monday</li>
|
||||||
<li data-list-item-id="ea77c915376a6a96c7c9b5b068f2b540f">27 - Tuesday
|
<li>27 - Tuesday
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e6a5f10ca531a2f958db0cceab2b9482e">subnote 1</li>
|
<li>subnote 1</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -157,26 +157,24 @@
|
|||||||
create new note in the day note.</p>
|
create new note in the day note.</p>
|
||||||
<p>What notes do I keep under this day note?</p>
|
<p>What notes do I keep under this day note?</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="ee3e9512cfacd13a91129178bf213bc82">TODO list for given day (this can be automated - see <a class="reference-link"
|
<li>TODO list for given day (this can be automated - see <a class="reference-link"
|
||||||
href="#root/pOsGYCXsbNQG/tC7s2alapj8V/5668rwcirq1t/_help_xYjQUYhpbUEW">Task Manager</a>)</li>
|
href="#root/_help_xYjQUYhpbUEW">Task Manager</a>)</li>
|
||||||
<li
|
<li>Personal diary</li>
|
||||||
data-list-item-id="e122fba5e5f752294338c63d652d0caa1">Personal diary</li>
|
<li><a href="#root/_help_IakOLONlIfGI">clones</a> of notes I created during this
|
||||||
<li data-list-item-id="e1765ff9fbdb3975e1ff524b615394d13"><a href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/BFs8mudNFgCS/_help_IakOLONlIfGI">clones</a> of
|
day (which kind of represents what I've been working on).</li>
|
||||||
notes I created during this day (which kind of represents what I've been
|
<li>I often clone notes (or sub-trees) of e.g. projects I'm working on at
|
||||||
working on).</li>
|
|
||||||
<li data-list-item-id="e937262fd7fcd7330ae50e9caaa8ffb4b">I often clone notes (or sub-trees) of e.g. projects I'm working on at
|
|
||||||
given day so they are at hand</li>
|
given day so they are at hand</li>
|
||||||
<li data-list-item-id="e538922885f7a7991236c09b74b0ae62b">I have some <a href="#root/pOsGYCXsbNQG/_help_CdNpE2pqjmI6">scripts</a> which
|
<li>I have some <a href="#root/_help_CdNpE2pqjmI6">scripts</a> which allow me to track
|
||||||
allow me to track certain daily metrics (like weight). These are saved
|
certain daily metrics (like weight). These are saved into one daily "data
|
||||||
into one daily "data note" (actually JSON <a href="#root/pOsGYCXsbNQG/KSZ04uQ2D1St/_help_6f9hih2hXXZk">code note</a>).
|
note" (actually JSON <a href="#root/_help_6f9hih2hXXZk">code note</a>).
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e5eb22957b0cdf5881ff7efc3b3671914">I have other scripts which then help me to visualize these data (see a
|
<li>I have other scripts which then help me to visualize these data (see a
|
||||||
<a
|
<a
|
||||||
class="reference-link" href="#root/pOsGYCXsbNQG/tC7s2alapj8V/5668rwcirq1t/_help_R7abl2fc6Mxi">Weight Tracker</a> example)</li>
|
class="reference-link" href="#root/_help_R7abl2fc6Mxi">Weight Tracker</a> example)</li>
|
||||||
<li data-list-item-id="ea748fe94bf10774baf5da985dde9cf19">I have a script which automatically imports all my comments from reddit
|
<li>I have a script which automatically imports all my comments from reddit
|
||||||
into the day note.
|
into the day note.
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="e4e1db895dcdb1b3fba6d5ad6b5e27320">People are sometimes wondering why. The answer is that I usually put some
|
<li>People are sometimes wondering why. The answer is that I usually put some
|
||||||
effort and thought into a comment and that's why I feel it's worth preserving,
|
effort and thought into a comment and that's why I feel it's worth preserving,
|
||||||
especially if it can be done automatically.</li>
|
especially if it can be done automatically.</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -187,8 +185,8 @@
|
|||||||
<p>For most notes, this day note placement is <em>secondary</em> and their
|
<p>For most notes, this day note placement is <em>secondary</em> and their
|
||||||
primary location is somewhere else (e.g. for a book review I've been working
|
primary location is somewhere else (e.g. for a book review I've been working
|
||||||
on it's <em>Book / Reviews</em>, not the day note). So for this pattern
|
on it's <em>Book / Reviews</em>, not the day note). So for this pattern
|
||||||
to work, ability to <a href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/BFs8mudNFgCS/_help_IakOLONlIfGI">clone</a> notes
|
to work, ability to <a href="#root/_help_IakOLONlIfGI">clone</a> notes into multiple
|
||||||
into multiple places is pretty fundamental.</p>
|
places is pretty fundamental.</p>
|
||||||
<h3>Projects</h3>
|
<h3>Projects</h3>
|
||||||
<p><em>Project</em> is pretty self-explanatory, for me specifically it also
|
<p><em>Project</em> is pretty self-explanatory, for me specifically it also
|
||||||
means being long term (years) - an example of a project might be Trilium
|
means being long term (years) - an example of a project might be Trilium
|
||||||
@@ -210,11 +208,11 @@
|
|||||||
<h3>Credentials</h3>
|
<h3>Credentials</h3>
|
||||||
<p>I keep all my credentials in the knowledge base, they are sorted into
|
<p>I keep all my credentials in the knowledge base, they are sorted into
|
||||||
categories - work related, project related, personal per country etc. These
|
categories - work related, project related, personal per country etc. These
|
||||||
notes are of course <a href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/BFs8mudNFgCS/_help_bwg0e8ewQMak">protected</a> and
|
notes are of course <a href="#root/_help_bwg0e8ewQMak">protected</a> and are often
|
||||||
are often cloned into other places (e.g. project credentials are cloned
|
cloned into other places (e.g. project credentials are cloned into the
|
||||||
into the project itself). This is a pretty important advantage compared
|
project itself). This is a pretty important advantage compared to traditional
|
||||||
to traditional tools like KeePass - all the relevant information is centralized
|
tools like KeePass - all the relevant information is centralized into one
|
||||||
into one place without compromising security.</p>
|
place without compromising security.</p>
|
||||||
<h3>People profiles</h3>
|
<h3>People profiles</h3>
|
||||||
<p>This might seem creepy to some, but I keep a profile on most people. It
|
<p>This might seem creepy to some, but I keep a profile on most people. It
|
||||||
contains pretty standard things like date of birth, contacts, address,
|
contains pretty standard things like date of birth, contacts, address,
|
||||||
@@ -231,25 +229,25 @@
|
|||||||
further organization is by <em>clan</em> (as in "Smiths"). Some people are
|
further organization is by <em>clan</em> (as in "Smiths"). Some people are
|
||||||
members of several such circles, so they are just cloned into multiple
|
members of several such circles, so they are just cloned into multiple
|
||||||
places.</p>
|
places.</p>
|
||||||
<p>For family specifically it's pretty useful to create <a href="#root/pOsGYCXsbNQG/KSZ04uQ2D1St/_help_iRwzGnHPzonm">relation map</a> to
|
<p>For family specifically it's pretty useful to create <a href="#root/_help_iRwzGnHPzonm">relation map</a> to
|
||||||
visualize relationships:</p>
|
visualize relationships:</p>
|
||||||
<figure class="image">
|
<figure class="image">
|
||||||
<img style="aspect-ratio:941/758;" src="Patterns of personal knowl.png"
|
<img style="aspect-ratio:941/758;" src="Patterns of personal knowl.png"
|
||||||
width="941" height="758">
|
width="941" height="758">
|
||||||
</figure>
|
</figure>
|
||||||
<p><a class="reference-link" href="/images/relation-map-family.png|width=800">[missing note]</a>
|
<p><a class="reference-link" href="#root/_help_lQcnSv5DMSe1">[missing note]</a>
|
||||||
</p>
|
</p>
|
||||||
<h3>Books</h3>
|
<h3>Books</h3>
|
||||||
<p>Of course, I keep standard "To read" list. I also keep a record on the
|
<p>Of course, I keep standard "To read" list. I also keep a record on the
|
||||||
books I've read - typically one book has one subtree where the root has
|
books I've read - typically one book has one subtree where the root has
|
||||||
some basic info like author, page count, publication date, date started,
|
some basic info like author, page count, publication date, date started,
|
||||||
date finished (in the form of <a class="reference-link" href="#root/pOsGYCXsbNQG/tC7s2alapj8V/zEY4DaJG4YT5/_help_OFXdgB2nNk1F">Promoted Attributes</a>).
|
date finished (in the form of <a class="reference-link" href="#root/_help_OFXdgB2nNk1F">Promoted Attributes</a>).
|
||||||
I also write a (private) review and keep list of highlights from Kindle,
|
I also write a (private) review and keep list of highlights from Kindle,
|
||||||
optionally with some commentary, these are usually stored in sub notes
|
optionally with some commentary, these are usually stored in sub notes
|
||||||
(unless they are pretty short).</p>
|
(unless they are pretty short).</p>
|
||||||
<p>To keep the list of books manageable, I sort them per year (of reading
|
<p>To keep the list of books manageable, I sort them per year (of reading
|
||||||
them), this also gives me some basic overview of "reading performance"
|
them), this also gives me some basic overview of "reading performance"
|
||||||
for given year. I plan to create a <a href="#root/pOsGYCXsbNQG/_help_CdNpE2pqjmI6">script</a> which
|
for given year. I plan to create a <a href="#root/_help_CdNpE2pqjmI6">script</a> which
|
||||||
would show some timeline chart visualizing book attributes <code>dateStarted</code> - <code>dateFinished</code> to
|
would show some timeline chart visualizing book attributes <code>dateStarted</code> - <code>dateFinished</code> to
|
||||||
have nicer view of my reading sprints and trends.</p>
|
have nicer view of my reading sprints and trends.</p>
|
||||||
<p>Some specific authors also have their own note which contains cloned book
|
<p>Some specific authors also have their own note which contains cloned book
|
||||||
@@ -262,15 +260,15 @@
|
|||||||
<p>I sort personal diary notes directly under <em>day note</em> (explained
|
<p>I sort personal diary notes directly under <em>day note</em> (explained
|
||||||
above), but it can be cloned also to e.g. "trip note" (if the diary note
|
above), but it can be cloned also to e.g. "trip note" (if the diary note
|
||||||
is about given trip) or to person's profile (if the person plays a role
|
is about given trip) or to person's profile (if the person plays a role
|
||||||
in the diary note). All my diary notes are <a href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/BFs8mudNFgCS/_help_bwg0e8ewQMak">protected</a> since
|
in the diary note). All my diary notes are <a href="#root/_help_bwg0e8ewQMak">protected</a> since
|
||||||
they are usually pretty sensitive.</p>
|
they are usually pretty sensitive.</p>
|
||||||
<h3>Documents</h3>
|
<h3>Documents</h3>
|
||||||
<p>I keep all my personal documents (ID, passport, education certificates
|
<p>I keep all my personal documents (ID, passport, education certificates
|
||||||
...) scanned in the knowledge base. They are <a href="#root/pOsGYCXsbNQG/Otzi9La2YAUX/_help_cbkrhQjrkKrh">synchronized</a> across
|
...) scanned in the knowledge base. They are <a href="#root/_help_cbkrhQjrkKrh">synchronized</a> across
|
||||||
every PC which provides decent backup and makes them available everywhere.</p>
|
every PC which provides decent backup and makes them available everywhere.</p>
|
||||||
<p>Advantage compared to e.g. keeping them in Dropbox or Google Drive is
|
<p>Advantage compared to e.g. keeping them in Dropbox or Google Drive is
|
||||||
that they are not stored on some 3rd party server and they can be encrypted
|
that they are not stored on some 3rd party server and they can be encrypted
|
||||||
(<a href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/BFs8mudNFgCS/_help_bwg0e8ewQMak">protected</a>).</p>
|
(<a href="#root/_help_bwg0e8ewQMak">protected</a>).</p>
|
||||||
<h3>Inventory</h3>
|
<h3>Inventory</h3>
|
||||||
<p>Inventory contains documents and other relevant importation for my important
|
<p>Inventory contains documents and other relevant importation for my important
|
||||||
belongings - e.g. for car you can keep the registration card, maintenance
|
belongings - e.g. for car you can keep the registration card, maintenance
|
||||||
@@ -286,7 +284,7 @@
|
|||||||
<h3>Work knowledge base</h3>
|
<h3>Work knowledge base</h3>
|
||||||
<p>I usually keep top level note for the company I currently work at (past
|
<p>I usually keep top level note for the company I currently work at (past
|
||||||
jobs are moved elsewhere). I track basic organization of the company (divisions,
|
jobs are moved elsewhere). I track basic organization of the company (divisions,
|
||||||
business units), who is who (<a href="#root/pOsGYCXsbNQG/KSZ04uQ2D1St/_help_iRwzGnHPzonm">relation maps</a>)
|
business units), who is who (<a href="#root/_help_iRwzGnHPzonm">relation maps</a>)
|
||||||
are again useful for visualization), projects I work at etc.</p>
|
are again useful for visualization), projects I work at etc.</p>
|
||||||
<p>There's a number of credentials to various company services I need to
|
<p>There's a number of credentials to various company services I need to
|
||||||
use. Companies usually have a bunch of complex processes and tools. I record
|
use. Companies usually have a bunch of complex processes and tools. I record
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
/ installed applications, without any intermediary.</p>
|
/ installed applications, without any intermediary.</p>
|
||||||
<p>Automatic network activity consists of:</p>
|
<p>Automatic network activity consists of:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li data-list-item-id="edb71d4fe0be295aea582b3bd69ae896e">Trilium periodically queries URL <a href="https://github.com/TriliumNext/Trilium/releases">https://github.com/TriliumNext/Trilium/releases</a> to
|
<li>Trilium periodically queries URL <a href="https://github.com/TriliumNext/Trilium/releases">https://github.com/TriliumNext/Trilium/releases</a> to
|
||||||
see if there's a new stable version released. (check only, there's no automatic
|
see if there's a new stable version released. (check only, there's no automatic
|
||||||
download and/or installation).</li>
|
download and/or installation).</li>
|
||||||
<li data-list-item-id="ea0de29e780d3a00603386fa133584eba">Trilium will download spelling dictionaries automatically as needed based
|
<li>Trilium will download spelling dictionaries automatically as needed based
|
||||||
on language settings</li>
|
on language settings</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h3>Trilium Web Clipper</h3>
|
<h3>Trilium Web Clipper</h3>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 871 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 871 B |
|
Before Width: | Height: | Size: 219 B After Width: | Height: | Size: 249 B |
BIN
apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/13_Tables_image.png
generated
vendored
Normal file
|
After Width: | Height: | Size: 219 B |
BIN
apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/14_Tables_image.png
generated
vendored
Normal file
|
After Width: | Height: | Size: 473 B |
BIN
apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/9_Tables_image.png
generated
vendored
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 541 B |
41
apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Text/Tables.html
generated
vendored
@@ -9,7 +9,7 @@
|
|||||||
<h2>Formatting toolbar</h2>
|
<h2>Formatting toolbar</h2>
|
||||||
<p>When a table is selected, a special formatting toolbar will appear:</p>
|
<p>When a table is selected, a special formatting toolbar will appear:</p>
|
||||||
<img
|
<img
|
||||||
src="9_Tables_image.png" width="384"
|
src="10_Tables_image.png" width="384"
|
||||||
height="100">
|
height="100">
|
||||||
|
|
||||||
<h2>Navigating a table</h2>
|
<h2>Navigating a table</h2>
|
||||||
@@ -18,7 +18,7 @@ height="100">
|
|||||||
<ul>
|
<ul>
|
||||||
<li>Click on a cell to focus it.</li>
|
<li>Click on a cell to focus it.</li>
|
||||||
<li>Click the
|
<li>Click the
|
||||||
<img src="10_Tables_image.png"
|
<img src="11_Tables_image.png"
|
||||||
width="28" height="27">button at the top or the bottom of a table to insert an empty paragraph
|
width="28" height="27">button at the top or the bottom of a table to insert an empty paragraph
|
||||||
near it.</li>
|
near it.</li>
|
||||||
<li>Click the
|
<li>Click the
|
||||||
@@ -82,7 +82,7 @@ height="100">
|
|||||||
width="312" height="311">
|
width="312" height="311">
|
||||||
</figure>
|
</figure>
|
||||||
<p>The table properties can be accessed via the
|
<p>The table properties can be accessed via the
|
||||||
<img src="12_Tables_image.png"
|
<img src="13_Tables_image.png"
|
||||||
width="19" height="19">button and allows for the following adjustments:</p>
|
width="19" height="19">button and allows for the following adjustments:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Border (not the border of the cells, but the outer rim of the table),
|
<li>Border (not the border of the cells, but the outer rim of the table),
|
||||||
@@ -106,7 +106,7 @@ height="100">
|
|||||||
width="320" height="386">
|
width="320" height="386">
|
||||||
</figure>
|
</figure>
|
||||||
<p>Similarly to table properties, the
|
<p>Similarly to table properties, the
|
||||||
<img src="11_Tables_image.png"
|
<img src="12_Tables_image.png"
|
||||||
width="19" height="19">button opens a popup which adjusts the styling of one or more cells (based
|
width="19" height="19">button opens a popup which adjusts the styling of one or more cells (based
|
||||||
on the user's selection).</p>
|
on the user's selection).</p>
|
||||||
<p>The following options can be adjusted:</p>
|
<p>The following options can be adjusted:</p>
|
||||||
@@ -127,7 +127,38 @@ height="100">
|
|||||||
<img src="4_Tables_image.png"
|
<img src="4_Tables_image.png"
|
||||||
width="18" height="17">button to insert a caption or a text description of the table, which is
|
width="18" height="17">button to insert a caption or a text description of the table, which is
|
||||||
going to be displayed above the table.</p>
|
going to be displayed above the table.</p>
|
||||||
<h2>Tables with invisible borders</h2>
|
<h2>Table borders</h2>
|
||||||
|
<p>By default, tables will come with a predefined gray border.</p>
|
||||||
|
<p>To adjust the borders, follow these steps:</p>
|
||||||
|
<ol>
|
||||||
|
<li>Select the table.</li>
|
||||||
|
<li>In the floating panel, select the <em>Table properties</em> option (
|
||||||
|
<img
|
||||||
|
src="14_Tables_image.png" width="21"
|
||||||
|
height="21">).
|
||||||
|
<ol>
|
||||||
|
<li>Look for the <em>Border</em> section at the top of the newly opened panel.</li>
|
||||||
|
<li>This will control the outer borders of the table.</li>
|
||||||
|
<li>Select a style for the border. Generally <em>Single</em> is the desirable
|
||||||
|
option.</li>
|
||||||
|
<li>Select a color for the border.</li>
|
||||||
|
<li>Select a width for the border, expressed in pixels.</li>
|
||||||
|
</ol>
|
||||||
|
</li>
|
||||||
|
<li>Select all the cells of the table and then press the <em>Cell properties</em> option
|
||||||
|
(
|
||||||
|
<img src="9_Tables_image.png" width="21"
|
||||||
|
height="21">).
|
||||||
|
<ol>
|
||||||
|
<li>This will control the inner borders of the table, at cell level.</li>
|
||||||
|
<li>Note that it's possible to change the borders individually by selecting
|
||||||
|
one or more cells, case in which it will only change the borders that intersect
|
||||||
|
these cells.</li>
|
||||||
|
<li>Repeat the same steps as from step (2).</li>
|
||||||
|
</ol>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
<h3>Tables with invisible borders</h3>
|
||||||
<p>Tables can be set to have invisible borders in order to allow for basic
|
<p>Tables can be set to have invisible borders in order to allow for basic
|
||||||
layouts (columns, grids) of text or <a href="#root/_help_mT0HEkOsz6i1">images</a> without
|
layouts (columns, grids) of text or <a href="#root/_help_mT0HEkOsz6i1">images</a> without
|
||||||
the distraction of their border:</p>
|
the distraction of their border:</p>
|
||||||
|
|||||||
2
apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Script API.html
generated
vendored
@@ -1,4 +1,4 @@
|
|||||||
<p>For <a href="#root/_help_CdNpE2pqjmI6">script code notes</a>, Trilium offers
|
<p>tFor <a href="#root/_help_CdNpE2pqjmI6">script code notes</a>, Trilium offers
|
||||||
an API that gives them access to various features of the application.</p>
|
an API that gives them access to various features of the application.</p>
|
||||||
<p>There are two APIs:</p>
|
<p>There are two APIs:</p>
|
||||||
<ul>
|
<ul>
|
||||||
|
|||||||
@@ -402,7 +402,7 @@
|
|||||||
"end-date": "終了日",
|
"end-date": "終了日",
|
||||||
"start-time": "開始時刻",
|
"start-time": "開始時刻",
|
||||||
"end-time": "終了時間",
|
"end-time": "終了時間",
|
||||||
"board": "ボード",
|
"board": "カンバンボード",
|
||||||
"status": "ステータス",
|
"status": "ステータス",
|
||||||
"board_note_first": "最初のノート",
|
"board_note_first": "最初のノート",
|
||||||
"board_note_second": "2番目のノート",
|
"board_note_second": "2番目のノート",
|
||||||
|
|||||||
@@ -417,7 +417,7 @@
|
|||||||
"end-time": "結束時間",
|
"end-time": "結束時間",
|
||||||
"geolocation": "地理位置",
|
"geolocation": "地理位置",
|
||||||
"built-in-templates": "內建模版",
|
"built-in-templates": "內建模版",
|
||||||
"board": "看板",
|
"board": "儀表板",
|
||||||
"status": "狀態",
|
"status": "狀態",
|
||||||
"board_note_first": "第一個筆記",
|
"board_note_first": "第一個筆記",
|
||||||
"board_note_second": "第二個筆記",
|
"board_note_second": "第二個筆記",
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import type { Application } from "express";
|
|||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import { type SQLiteSessionStore } from "./session_parser.js";
|
import { type SQLiteSessionStore } from "./session_parser.js";
|
||||||
import { SessionData } from "express-session";
|
import { SessionData } from "express-session";
|
||||||
|
import cls from "../services/cls.js";
|
||||||
|
|
||||||
let app: Application;
|
let app: Application;
|
||||||
let sessionStore: SQLiteSessionStore;
|
let sessionStore: SQLiteSessionStore;
|
||||||
@@ -106,7 +107,7 @@ describe("Login Route test", () => {
|
|||||||
expect(expiry).toBeTruthy();
|
expect(expiry).toBeTruthy();
|
||||||
|
|
||||||
vi.setSystemTime(expiry!);
|
vi.setSystemTime(expiry!);
|
||||||
vi.advanceTimersByTime(CLEAN_UP_INTERVAL);
|
cls.init(() => vi.advanceTimersByTime(CLEAN_UP_INTERVAL));
|
||||||
({ session } = await getSessionFromCookie(setCookieHeader));
|
({ session } = await getSessionFromCookie(setCookieHeader));
|
||||||
expect(session).toBeFalsy();
|
expect(session).toBeFalsy();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -41,6 +41,14 @@ function getDefaultKeyboardActions() {
|
|||||||
scope: "window",
|
scope: "window",
|
||||||
ignoreFromCommandPalette: true
|
ignoreFromCommandPalette: true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
actionName: "openTodayNote",
|
||||||
|
friendlyName: t("hidden-subtree.open-today-journal-note-title"),
|
||||||
|
iconClass: "bx bx-calendar",
|
||||||
|
defaultShortcuts: [],
|
||||||
|
description: t("hidden-subtree.open-today-journal-note-title"),
|
||||||
|
scope: "window"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
actionName: "commandPalette",
|
actionName: "commandPalette",
|
||||||
friendlyName: t("keyboard_action_names.command-palette"),
|
friendlyName: t("keyboard_action_names.command-palette"),
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import { highlightAuto } from "@triliumnext/highlightjs";
|
|||||||
import becca from "../becca/becca.js";
|
import becca from "../becca/becca.js";
|
||||||
import { BAttachment } from "../services/backend_script_entrypoint.js";
|
import { BAttachment } from "../services/backend_script_entrypoint.js";
|
||||||
import SAttachment from "./shaca/entities/sattachment.js";
|
import SAttachment from "./shaca/entities/sattachment.js";
|
||||||
|
import { sanitizeUrl } from "@braintree/sanitize-url";
|
||||||
|
|
||||||
const shareAdjustedAssetPath = isDev ? assetPath : `../${assetPath}`;
|
const shareAdjustedAssetPath = isDev ? assetPath : `../${assetPath}`;
|
||||||
const templateCache: Map<string, string> = new Map();
|
const templateCache: Map<string, string> = new Map();
|
||||||
@@ -250,6 +251,8 @@ export function getContent(note: SNote | BNote) {
|
|||||||
renderFile(note, result);
|
renderFile(note, result);
|
||||||
} else if (note.type === "book") {
|
} else if (note.type === "book") {
|
||||||
result.isEmpty = true;
|
result.isEmpty = true;
|
||||||
|
} else if (note.type === "webView") {
|
||||||
|
renderWebView(note, result);
|
||||||
} else {
|
} else {
|
||||||
result.content = `<p>${t("content_renderer.note-cannot-be-displayed")}</p>`;
|
result.content = `<p>${t("content_renderer.note-cannot-be-displayed")}</p>`;
|
||||||
}
|
}
|
||||||
@@ -414,6 +417,13 @@ function renderFile(note: SNote | BNote, result: Result) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function renderWebView(note: SNote | BNote, result: Result) {
|
||||||
|
const url = note.getLabelValue("webViewSrc");
|
||||||
|
if (!url) return;
|
||||||
|
|
||||||
|
result.content = `<iframe class="webview" src="${sanitizeUrl(url)}" sandbox="allow-same-origin allow-scripts allow-popups"></iframe>`;
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
getContent
|
getContent
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
"calendar_description": "カレンダーを使って、個人的な予定や仕事上の予定を管理しましょう。終日イベントと複数日イベントに対応しています。週、月、年表示でイベントを一目で確認できます。イベントの追加やドラッグ操作で簡単に行えます。",
|
"calendar_description": "カレンダーを使って、個人的な予定や仕事上の予定を管理しましょう。終日イベントと複数日イベントに対応しています。週、月、年表示でイベントを一目で確認できます。イベントの追加やドラッグ操作で簡単に行えます。",
|
||||||
"table_title": "テーブル",
|
"table_title": "テーブル",
|
||||||
"table_description": "ノートに関する情報を表形式で表示・編集できます。テキスト、数値、チェックボックス、日時、リンク、色など、様々な列タイプに対応し、リレーションもサポートしています。オプションで、ノートを表内のツリー階層に表示することもできます。",
|
"table_description": "ノートに関する情報を表形式で表示・編集できます。テキスト、数値、チェックボックス、日時、リンク、色など、様々な列タイプに対応し、リレーションもサポートしています。オプションで、ノートを表内のツリー階層に表示することもできます。",
|
||||||
"board_title": "ボード",
|
"board_title": "カンバンボード",
|
||||||
"board_description": "新しい項目や列を簡単に作成し、ボード上でドラッグするだけでステータスを変更できるカンバン ボードで、タスクやプロジェクトのステータスを整理できます。",
|
"board_description": "新しい項目や列を簡単に作成し、ボード上でドラッグするだけでステータスを変更できるカンバン ボードで、タスクやプロジェクトのステータスを整理できます。",
|
||||||
"geomap_title": "ジオマップ",
|
"geomap_title": "ジオマップ",
|
||||||
"geomap_description": "カスタマイズ可能なマーカーを使って、休暇を計画したり、興味のある場所を地図上に直接マークしたりできます。記録されたGPXトラックを表示して、旅程を追跡できます。",
|
"geomap_description": "カスタマイズ可能なマーカーを使って、休暇を計画したり、興味のある場所を地図上に直接マークしたりできます。記録されたGPXトラックを表示して、旅程を追跡できます。",
|
||||||
|
|||||||
@@ -1 +1,22 @@
|
|||||||
{}
|
{
|
||||||
|
"get-started": {
|
||||||
|
"title": "Começar",
|
||||||
|
"architecture": "Arquitetura:",
|
||||||
|
"older_releases": "Ver versões anteriores",
|
||||||
|
"server_title": "Configurar um servidor para aceder a partir de vários dispositivos"
|
||||||
|
},
|
||||||
|
"hero_section": {
|
||||||
|
"title": "Organiza as tuas ideias. Constrói a tua base de conhecimento pessoal.",
|
||||||
|
"subtitle": "O Trilium é uma solução de código aberto para tomar notas e organizar a tua base de conhecimento pessoal. Usa-o localmente no teu computador ou sincroniza-o com o teu próprio servidor para teres as tuas notas acessíveis em qualquer lugar.",
|
||||||
|
"get_started": "Começar",
|
||||||
|
"github": "GitHub",
|
||||||
|
"dockerhub": "Docker Hub",
|
||||||
|
"screenshot_alt": "Captura de ecrã da aplicação Trilium Notes para computador"
|
||||||
|
},
|
||||||
|
"organization_benefits": {
|
||||||
|
"title": "Organização",
|
||||||
|
"note_structure_description": "As notas podem ser organizadas de forma hierárquica. Não há necessidade de pastas, pois cada nota pode conter sub notas. Uma única nota pode ser adicionada em vários locais da hierarquia.",
|
||||||
|
"attributes_description": "Utiliza relações entre notas ou adiciona etiquetas para uma categorização fácil. Usa atributos promovidos para inserir informação estruturada, que pode ser utilizada em tabelas ou quadros.",
|
||||||
|
"hoisting_description": "Separa facilmente as tuas notas pessoais e de trabalho agrupando-as num espaço de trabalho, que focaliza a árvore de notas para mostrar apenas um conjunto específico de notas."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
"calendar_description": "使用行事曆規劃個人或專業活動,支援全天及多日活動。透過週、月、年檢視模式,一覽所有活動。通過簡單互動即可新增或拖曳活動。",
|
"calendar_description": "使用行事曆規劃個人或專業活動,支援全天及多日活動。透過週、月、年檢視模式,一覽所有活動。通過簡單互動即可新增或拖曳活動。",
|
||||||
"table_title": "表格",
|
"table_title": "表格",
|
||||||
"table_description": "以表格結構顯示並編輯筆記資訊,支援多種欄位類型,包括文字、數字、核取方塊、日期與時間、連結及顏色,並支援關聯功能。可選擇性地在表格內以樹狀層級結構顯示筆記內容。",
|
"table_description": "以表格結構顯示並編輯筆記資訊,支援多種欄位類型,包括文字、數字、核取方塊、日期與時間、連結及顏色,並支援關聯功能。可選擇性地在表格內以樹狀層級結構顯示筆記內容。",
|
||||||
"board_title": "看板",
|
"board_title": "儀表板",
|
||||||
"board_description": "將您的任務或專案狀態整理成看板,輕鬆建立新項目與欄位,並透過在看板上拖曳即可簡單變更狀態。",
|
"board_description": "將您的任務或專案狀態整理成看板,輕鬆建立新項目與欄位,並透過在看板上拖曳即可簡單變更狀態。",
|
||||||
"geomap_title": "地理地圖",
|
"geomap_title": "地理地圖",
|
||||||
"geomap_description": "使用可自訂的標記,直接在地圖上規劃您的假期行程或標記感興趣的地點。顯示已記錄的GPX軌跡,以便追蹤行程路線。",
|
"geomap_description": "使用可自訂的標記,直接在地圖上規劃您的假期行程或標記感興趣的地點。顯示已記錄的GPX軌跡,以便追蹤行程路線。",
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
},
|
},
|
||||||
"social_buttons": {
|
"social_buttons": {
|
||||||
"github": "GitHub",
|
"github": "GitHub",
|
||||||
"github_discussions": "GitHub Discussions",
|
"github_discussions": "GitHub 討論",
|
||||||
"matrix": "Matrix",
|
"matrix": "Matrix",
|
||||||
"reddit": "Reddit"
|
"reddit": "Reddit"
|
||||||
},
|
},
|
||||||
|
|||||||
13
docs/README-pt.md
vendored
@@ -25,27 +25,28 @@ status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted
|
|||||||
| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) |
|
| [Japanese](./docs/README-ja.md) | [Italian](./docs/README-it.md) |
|
||||||
[Spanish](./docs/README-es.md)
|
[Spanish](./docs/README-es.md)
|
||||||
|
|
||||||
Trilium Notes is a free and open-source, cross-platform hierarchical note taking
|
Trilium Notes é uma aplicação gratuita e de código aberto, multiplataforma, para
|
||||||
application with focus on building large personal knowledge bases.
|
a criação hierárquica de notas, com foco na construção de grandes bases de
|
||||||
|
conhecimento pessoais.
|
||||||
|
|
||||||
See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for
|
See [screenshots](https://triliumnext.github.io/Docs/Wiki/screenshot-tour) for
|
||||||
quick overview:
|
quick overview:
|
||||||
|
|
||||||
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="./docs/app.png" alt="Trilium Screenshot" width="1000"></a>
|
<a href="https://triliumnext.github.io/Docs/Wiki/screenshot-tour"><img src="./docs/app.png" alt="Trilium Screenshot" width="1000"></a>
|
||||||
|
|
||||||
## ⏬ Download
|
## ⏬ Transferir
|
||||||
- [Latest release](https://github.com/TriliumNext/Trilium/releases/latest) –
|
- [Latest release](https://github.com/TriliumNext/Trilium/releases/latest) –
|
||||||
stable version, recommended for most users.
|
stable version, recommended for most users.
|
||||||
- [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) –
|
- [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) –
|
||||||
unstable development version, updated daily with the latest features and
|
unstable development version, updated daily with the latest features and
|
||||||
fixes.
|
fixes.
|
||||||
|
|
||||||
## 📚 Documentation
|
## 📚 Documentação
|
||||||
|
|
||||||
**Visit our comprehensive documentation at
|
**Visit our comprehensive documentation at
|
||||||
[docs.triliumnotes.org](https://docs.triliumnotes.org/)**
|
[docs.triliumnotes.org](https://docs.triliumnotes.org/)**
|
||||||
|
|
||||||
Our documentation is available in multiple formats:
|
A nossa documentação está disponível em múltiplos formatos:
|
||||||
- **Online Documentation**: Browse the full documentation at
|
- **Online Documentation**: Browse the full documentation at
|
||||||
[docs.triliumnotes.org](https://docs.triliumnotes.org/)
|
[docs.triliumnotes.org](https://docs.triliumnotes.org/)
|
||||||
- **In-App Help**: Press `F1` within Trilium to access the same documentation
|
- **In-App Help**: Press `F1` within Trilium to access the same documentation
|
||||||
@@ -53,7 +54,7 @@ Our documentation is available in multiple formats:
|
|||||||
- **GitHub**: Navigate through the [User
|
- **GitHub**: Navigate through the [User
|
||||||
Guide](./docs/User%20Guide/User%20Guide/) in this repository
|
Guide](./docs/User%20Guide/User%20Guide/) in this repository
|
||||||
|
|
||||||
### Quick Links
|
### Links rápidos
|
||||||
- [Getting Started Guide](https://docs.triliumnotes.org/)
|
- [Getting Started Guide](https://docs.triliumnotes.org/)
|
||||||
- [Installation
|
- [Installation
|
||||||
Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md)
|
Instructions](./docs/User%20Guide/User%20Guide/Installation%20&%20Setup/Server%20Installation.md)
|
||||||
|
|||||||
156
docs/User Guide/!!!meta.json
vendored
@@ -331,6 +331,41 @@
|
|||||||
"format": "markdown",
|
"format": "markdown",
|
||||||
"dataFileName": "Using the desktop application .md",
|
"dataFileName": "Using the desktop application .md",
|
||||||
"attachments": []
|
"attachments": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isClone": false,
|
||||||
|
"noteId": "Rp0q8bSP6Ayl",
|
||||||
|
"notePath": [
|
||||||
|
"pOsGYCXsbNQG",
|
||||||
|
"Otzi9La2YAUX",
|
||||||
|
"poXkQfguuA0U",
|
||||||
|
"Rp0q8bSP6Ayl"
|
||||||
|
],
|
||||||
|
"title": "System Requirements",
|
||||||
|
"notePosition": 20,
|
||||||
|
"prefix": null,
|
||||||
|
"isExpanded": false,
|
||||||
|
"type": "text",
|
||||||
|
"mime": "text/html",
|
||||||
|
"attributes": [
|
||||||
|
{
|
||||||
|
"type": "label",
|
||||||
|
"name": "shareAlias",
|
||||||
|
"value": "system-requirements",
|
||||||
|
"isInheritable": false,
|
||||||
|
"position": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "label",
|
||||||
|
"name": "iconClass",
|
||||||
|
"value": "bx bx-chip",
|
||||||
|
"isInheritable": false,
|
||||||
|
"position": 40
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"format": "markdown",
|
||||||
|
"dataFileName": "System Requirements.md",
|
||||||
|
"attachments": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1151,6 +1186,41 @@
|
|||||||
"format": "markdown",
|
"format": "markdown",
|
||||||
"dataFileName": "Third-party cloud hosting.md",
|
"dataFileName": "Third-party cloud hosting.md",
|
||||||
"attachments": []
|
"attachments": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"isClone": false,
|
||||||
|
"noteId": "iGTnKjubbXkA",
|
||||||
|
"notePath": [
|
||||||
|
"pOsGYCXsbNQG",
|
||||||
|
"Otzi9La2YAUX",
|
||||||
|
"WOcw2SLH6tbX",
|
||||||
|
"iGTnKjubbXkA"
|
||||||
|
],
|
||||||
|
"title": "System Requirements",
|
||||||
|
"notePosition": 140,
|
||||||
|
"prefix": null,
|
||||||
|
"isExpanded": false,
|
||||||
|
"type": "text",
|
||||||
|
"mime": "text/html",
|
||||||
|
"attributes": [
|
||||||
|
{
|
||||||
|
"type": "label",
|
||||||
|
"name": "shareAlias",
|
||||||
|
"value": "system-requirements",
|
||||||
|
"isInheritable": false,
|
||||||
|
"position": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "label",
|
||||||
|
"name": "iconClass",
|
||||||
|
"value": "bx bx-chip",
|
||||||
|
"isInheritable": false,
|
||||||
|
"position": 40
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"format": "markdown",
|
||||||
|
"dataFileName": "System Requirements.md",
|
||||||
|
"attachments": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -8281,7 +8351,7 @@
|
|||||||
"dataFileName": "8_Tables_image.png"
|
"dataFileName": "8_Tables_image.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"attachmentId": "UdhsypjV4pzZ",
|
"attachmentId": "rrLM5BQCZ5ci",
|
||||||
"title": "image.png",
|
"title": "image.png",
|
||||||
"role": "image",
|
"role": "image",
|
||||||
"mime": "image/png",
|
"mime": "image/png",
|
||||||
@@ -8289,7 +8359,7 @@
|
|||||||
"dataFileName": "9_Tables_image.png"
|
"dataFileName": "9_Tables_image.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"attachmentId": "VerzwlO9y6Na",
|
"attachmentId": "UdhsypjV4pzZ",
|
||||||
"title": "image.png",
|
"title": "image.png",
|
||||||
"role": "image",
|
"role": "image",
|
||||||
"mime": "image/png",
|
"mime": "image/png",
|
||||||
@@ -8297,7 +8367,7 @@
|
|||||||
"dataFileName": "10_Tables_image.png"
|
"dataFileName": "10_Tables_image.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"attachmentId": "wYkQvargZlNF",
|
"attachmentId": "VerzwlO9y6Na",
|
||||||
"title": "image.png",
|
"title": "image.png",
|
||||||
"role": "image",
|
"role": "image",
|
||||||
"mime": "image/png",
|
"mime": "image/png",
|
||||||
@@ -8305,12 +8375,28 @@
|
|||||||
"dataFileName": "11_Tables_image.png"
|
"dataFileName": "11_Tables_image.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"attachmentId": "YFGeAN41kvZY",
|
"attachmentId": "wYkQvargZlNF",
|
||||||
"title": "image.png",
|
"title": "image.png",
|
||||||
"role": "image",
|
"role": "image",
|
||||||
"mime": "image/png",
|
"mime": "image/png",
|
||||||
"position": 10,
|
"position": 10,
|
||||||
"dataFileName": "12_Tables_image.png"
|
"dataFileName": "12_Tables_image.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"attachmentId": "YFGeAN41kvZY",
|
||||||
|
"title": "image.png",
|
||||||
|
"role": "image",
|
||||||
|
"mime": "image/png",
|
||||||
|
"position": 10,
|
||||||
|
"dataFileName": "13_Tables_image.png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"attachmentId": "zRLxHrKJiK8N",
|
||||||
|
"title": "image.png",
|
||||||
|
"role": "image",
|
||||||
|
"mime": "image/png",
|
||||||
|
"position": 10,
|
||||||
|
"dataFileName": "14_Tables_image.png"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -15102,41 +15188,55 @@
|
|||||||
"name": "internalLink",
|
"name": "internalLink",
|
||||||
"value": "xYjQUYhpbUEW",
|
"value": "xYjQUYhpbUEW",
|
||||||
"isInheritable": false,
|
"isInheritable": false,
|
||||||
"position": 30
|
"position": 10
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "relation",
|
"type": "relation",
|
||||||
"name": "internalLink",
|
"name": "internalLink",
|
||||||
"value": "IakOLONlIfGI",
|
"value": "IakOLONlIfGI",
|
||||||
"isInheritable": false,
|
"isInheritable": false,
|
||||||
"position": 40
|
"position": 20
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "relation",
|
|
||||||
"name": "internalLink",
|
|
||||||
"value": "CdNpE2pqjmI6",
|
|
||||||
"isInheritable": false,
|
|
||||||
"position": 50
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "relation",
|
|
||||||
"name": "internalLink",
|
|
||||||
"value": "6f9hih2hXXZk",
|
|
||||||
"isInheritable": false,
|
|
||||||
"position": 60
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "relation",
|
"type": "relation",
|
||||||
"name": "internalLink",
|
"name": "internalLink",
|
||||||
"value": "R7abl2fc6Mxi",
|
"value": "R7abl2fc6Mxi",
|
||||||
"isInheritable": false,
|
"isInheritable": false,
|
||||||
"position": 70
|
"position": 30
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "relation",
|
"type": "relation",
|
||||||
"name": "internalLink",
|
"name": "internalLink",
|
||||||
"value": "bwg0e8ewQMak",
|
"value": "bwg0e8ewQMak",
|
||||||
"isInheritable": false,
|
"isInheritable": false,
|
||||||
|
"position": 40
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "relation",
|
||||||
|
"name": "internalLink",
|
||||||
|
"value": "OFXdgB2nNk1F",
|
||||||
|
"isInheritable": false,
|
||||||
|
"position": 50
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "relation",
|
||||||
|
"name": "internalLink",
|
||||||
|
"value": "cbkrhQjrkKrh",
|
||||||
|
"isInheritable": false,
|
||||||
|
"position": 60
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "relation",
|
||||||
|
"name": "internalLink",
|
||||||
|
"value": "CdNpE2pqjmI6",
|
||||||
|
"isInheritable": false,
|
||||||
|
"position": 70
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "relation",
|
||||||
|
"name": "internalLink",
|
||||||
|
"value": "6f9hih2hXXZk",
|
||||||
|
"isInheritable": false,
|
||||||
"position": 80
|
"position": 80
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -15146,20 +15246,6 @@
|
|||||||
"isInheritable": false,
|
"isInheritable": false,
|
||||||
"position": 90
|
"position": 90
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"type": "relation",
|
|
||||||
"name": "internalLink",
|
|
||||||
"value": "OFXdgB2nNk1F",
|
|
||||||
"isInheritable": false,
|
|
||||||
"position": 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "relation",
|
|
||||||
"name": "internalLink",
|
|
||||||
"value": "cbkrhQjrkKrh",
|
|
||||||
"isInheritable": false,
|
|
||||||
"position": 110
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"type": "label",
|
"type": "label",
|
||||||
"name": "shareAlias",
|
"name": "shareAlias",
|
||||||
|
|||||||
12
docs/User Guide/User Guide/Installation & Setup/Desktop Installation/System Requirements.md
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# System Requirements
|
||||||
|
The desktop version of Trilium supports all three main operating systems:
|
||||||
|
|
||||||
|
* Windows
|
||||||
|
* Windows 11 is officially supported.
|
||||||
|
* Windows on ARM is also supported
|
||||||
|
* Linux:
|
||||||
|
* Most modern distributions are supported, including NixOS.
|
||||||
|
* ARM is supported in `aarch64` (no ARM v7 support).
|
||||||
|
* macOS
|
||||||
|
* Minimum supported operating system: macOS Monterey
|
||||||
|
* Both Intel and Apple Silicon devices are supported.
|
||||||
11
docs/User Guide/User Guide/Installation & Setup/Server Installation/System Requirements.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# System Requirements
|
||||||
|
* Using Docker, the server can be run on Windows, Linux and macOS devices.
|
||||||
|
* Native binaries are provided for Linux x64 and ARM (`aarch64`).
|
||||||
|
|
||||||
|
## Legacy ARM support
|
||||||
|
|
||||||
|
The Docker builds also provide `linux/arm/v7` and `linux/arm/v8` platforms. These platforms are considered legacy since Trilium uses Node.js version 24 which have [officially downgraded support](https://github.com/nodejs/node/commit/6682861d6f) for these platforms to “experimental”.
|
||||||
|
|
||||||
|
As a result, Trilium needs to use Node.js 22 for these versions. As soon as soon Node.js 22 will no longer be compatible, support for `armv7` and `armv8` will be dropped entirely.
|
||||||
|
|
||||||
|
Regardless of upstream support, these platforms are supported on a best-effort basis and are not officially supported by the Trilium development team. Bug reports are accepted but they will not be treated with priority; contributions are welcome.
|
||||||
@@ -112,7 +112,7 @@ For family specifically it's pretty useful to create [relation map](../Note%20Ty
|
|||||||
|
|
||||||
<figure class="image"><img style="aspect-ratio:941/758;" src="Patterns of personal knowl.png" width="941" height="758"></figure>
|
<figure class="image"><img style="aspect-ratio:941/758;" src="Patterns of personal knowl.png" width="941" height="758"></figure>
|
||||||
|
|
||||||
<a class="reference-link" href="/images/relation-map-family.png|width=800">[missing note]</a>
|
<a class="reference-link" href="#root/lQcnSv5DMSe1">[missing note]</a>
|
||||||
|
|
||||||
### Books
|
### Books
|
||||||
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 871 B After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 249 B After Width: | Height: | Size: 871 B |
|
Before Width: | Height: | Size: 219 B After Width: | Height: | Size: 249 B |
BIN
docs/User Guide/User Guide/Note Types/Text/13_Tables_image.png
vendored
Normal file
|
After Width: | Height: | Size: 219 B |
BIN
docs/User Guide/User Guide/Note Types/Text/14_Tables_image.png
vendored
Normal file
|
After Width: | Height: | Size: 473 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 541 B |
@@ -9,13 +9,13 @@ To create a table, simply press the table button and select with the mouse the d
|
|||||||
|
|
||||||
When a table is selected, a special formatting toolbar will appear:
|
When a table is selected, a special formatting toolbar will appear:
|
||||||
|
|
||||||
<img src="9_Tables_image.png" width="384" height="100">
|
<img src="10_Tables_image.png" width="384" height="100">
|
||||||
|
|
||||||
## Navigating a table
|
## Navigating a table
|
||||||
|
|
||||||
* Using the mouse:
|
* Using the mouse:
|
||||||
* Click on a cell to focus it.
|
* Click on a cell to focus it.
|
||||||
* Click the <img src="10_Tables_image.png" width="28" height="27"> button at the top or the bottom of a table to insert an empty paragraph near it.
|
* Click the <img src="11_Tables_image.png" width="28" height="27"> button at the top or the bottom of a table to insert an empty paragraph near it.
|
||||||
* Click the <img src="5_Tables_image.png" width="24" height="26"> button at the top-left of the table to select it entirely (for easy copy-pasting or cutting) or drag and drop it to relocate the table.
|
* Click the <img src="5_Tables_image.png" width="24" height="26"> button at the top-left of the table to select it entirely (for easy copy-pasting or cutting) or drag and drop it to relocate the table.
|
||||||
* Using the keyboard:
|
* Using the keyboard:
|
||||||
* Use the arrow keys on the keyboard to easily navigate between cells.
|
* Use the arrow keys on the keyboard to easily navigate between cells.
|
||||||
@@ -48,7 +48,7 @@ More options are available by pressing the arrow next to it:
|
|||||||
|
|
||||||
<figure class="image image-style-align-right"><img style="aspect-ratio:312/311;" src="2_Tables_image.png" width="312" height="311"></figure>
|
<figure class="image image-style-align-right"><img style="aspect-ratio:312/311;" src="2_Tables_image.png" width="312" height="311"></figure>
|
||||||
|
|
||||||
The table properties can be accessed via the <img src="12_Tables_image.png" width="19" height="19"> button and allows for the following adjustments:
|
The table properties can be accessed via the <img src="13_Tables_image.png" width="19" height="19"> button and allows for the following adjustments:
|
||||||
|
|
||||||
* Border (not the border of the cells, but the outer rim of the table), which includes the style (single, double), color and width.
|
* Border (not the border of the cells, but the outer rim of the table), which includes the style (single, double), color and width.
|
||||||
* The background color, with none set by default.
|
* The background color, with none set by default.
|
||||||
@@ -63,7 +63,7 @@ The table will immediately update to reflect the changes, but the _Save_ button
|
|||||||
|
|
||||||
<figure class="image image-style-align-right"><img style="aspect-ratio:320/386;" src="3_Tables_image.png" width="320" height="386"></figure>
|
<figure class="image image-style-align-right"><img style="aspect-ratio:320/386;" src="3_Tables_image.png" width="320" height="386"></figure>
|
||||||
|
|
||||||
Similarly to table properties, the <img src="11_Tables_image.png" width="19" height="19"> button opens a popup which adjusts the styling of one or more cells (based on the user's selection).
|
Similarly to table properties, the <img src="12_Tables_image.png" width="19" height="19"> button opens a popup which adjusts the styling of one or more cells (based on the user's selection).
|
||||||
|
|
||||||
The following options can be adjusted:
|
The following options can be adjusted:
|
||||||
|
|
||||||
@@ -79,7 +79,25 @@ The cell will immediately update to reflect the changes, but the _Save_ button m
|
|||||||
|
|
||||||
Press the <img src="4_Tables_image.png" width="18" height="17"> button to insert a caption or a text description of the table, which is going to be displayed above the table.
|
Press the <img src="4_Tables_image.png" width="18" height="17"> button to insert a caption or a text description of the table, which is going to be displayed above the table.
|
||||||
|
|
||||||
## Tables with invisible borders
|
## Table borders
|
||||||
|
|
||||||
|
By default, tables will come with a predefined gray border.
|
||||||
|
|
||||||
|
To adjust the borders, follow these steps:
|
||||||
|
|
||||||
|
1. Select the table.
|
||||||
|
2. In the floating panel, select the _Table properties_ option (<img src="14_Tables_image.png" width="21" height="21">).
|
||||||
|
1. Look for the _Border_ section at the top of the newly opened panel.
|
||||||
|
2. This will control the outer borders of the table.
|
||||||
|
3. Select a style for the border. Generally _Single_ is the desirable option.
|
||||||
|
4. Select a color for the border.
|
||||||
|
5. Select a width for the border, expressed in pixels.
|
||||||
|
3. Select all the cells of the table and then press the _Cell properties_ option (<img src="9_Tables_image.png" width="21" height="21">).
|
||||||
|
1. This will control the inner borders of the table, at cell level.
|
||||||
|
2. Note that it's possible to change the borders individually by selecting one or more cells, case in which it will only change the borders that intersect these cells.
|
||||||
|
3. Repeat the same steps as from step (2).
|
||||||
|
|
||||||
|
### Tables with invisible borders
|
||||||
|
|
||||||
Tables can be set to have invisible borders in order to allow for basic layouts (columns, grids) of text or [images](Images.md) without the distraction of their border:
|
Tables can be set to have invisible borders in order to allow for basic layouts (columns, grids) of text or [images](Images.md) without the distraction of their border:
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Script API
|
# Script API
|
||||||
For [script code notes](../Scripting.md), Trilium offers an API that gives them access to various features of the application.
|
tFor [script code notes](../Scripting.md), Trilium offers an API that gives them access to various features of the application.
|
||||||
|
|
||||||
There are two APIs:
|
There are two APIs:
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ const enum KeyboardActionNamesEnum {
|
|||||||
activateNextTab,
|
activateNextTab,
|
||||||
activatePreviousTab,
|
activatePreviousTab,
|
||||||
openNewWindow,
|
openNewWindow,
|
||||||
|
openTodayNote,
|
||||||
toggleTray,
|
toggleTray,
|
||||||
toggleZenMode,
|
toggleZenMode,
|
||||||
firstTab,
|
firstTab,
|
||||||
|
|||||||
@@ -53,3 +53,18 @@
|
|||||||
body:not(.math-loaded) .math-tex {
|
body:not(.math-loaded) .math-tex {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
body.type-webView #main {
|
||||||
|
max-width: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
body.type-webView #content {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
iframe.webview {
|
||||||
|
width: 100%;
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||