Merge remote-tracking branch 'origin/main' into feature/kanban_board

This commit is contained in:
Elian Doran
2025-07-21 18:24:36 +03:00
20 changed files with 859 additions and 674 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "@triliumnext/client",
"version": "0.96.0",
"version": "0.97.1",
"description": "JQuery-based client for TriliumNext, used for both web and desktop (via Electron)",
"private": true,
"license": "AGPL-3.0-only",

View File

@@ -80,6 +80,7 @@
.tabulator-tableholder {
padding-top: 10px;
height: unset !important; /* Don't extend on the full height */
}
/* Rows */
@@ -189,3 +190,10 @@
color: var(--menu-text-color);
font-size: 16px;
}
/* Footer */
:root .tabulator .tabulator-footer {
border-top: unset;
padding: 10px 0;
}

View File

@@ -184,7 +184,7 @@ html body .dropdown-item[disabled] {
/* Menu item icon */
.dropdown-item .bx {
transform: translateY(var(--menu-item-icon-vert-offset));
translate: 0 var(--menu-item-icon-vert-offset);
color: var(--menu-item-icon-color) !important;
font-size: 1.1em;
}

View File

@@ -296,6 +296,7 @@ interface AttributeDetailOpts {
y: number;
focus?: "name";
parent?: HTMLElement;
hideMultiplicity?: boolean;
}
interface SearchRelatedResponse {
@@ -478,7 +479,7 @@ export default class AttributeDetailWidget extends NoteContextAwareWidget {
});
}
async showAttributeDetail({ allAttributes, attribute, isOwned, x, y, focus }: AttributeDetailOpts) {
async showAttributeDetail({ allAttributes, attribute, isOwned, x, y, focus, hideMultiplicity }: AttributeDetailOpts) {
if (!attribute) {
this.hide();
@@ -529,7 +530,7 @@ export default class AttributeDetailWidget extends NoteContextAwareWidget {
this.$rowPromotedAlias.toggle(!!definition.isPromoted);
this.$inputPromotedAlias.val(definition.promotedAlias || "").attr("disabled", disabledFn);
this.$rowMultiplicity.toggle(["label-definition", "relation-definition"].includes(this.attrType || ""));
this.$rowMultiplicity.toggle(["label-definition", "relation-definition"].includes(this.attrType || "") && !hideMultiplicity);
this.$inputMultiplicity.val(definition.multiplicity || "").attr("disabled", disabledFn);
this.$rowLabelType.toggle(this.attrType === "label-definition");

View File

@@ -66,7 +66,8 @@ export default class TableColumnEditing extends Component {
isOwned: true,
x: 0,
y: 150,
focus: "name"
focus: "name",
hideMultiplicity: true
});
}

View File

@@ -30,6 +30,7 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
const sorters = tabulator.getSorters();
const sorter = sorters.find(sorter => sorter.field === field);
const isUserDefinedColumn = (!!field && (field?.startsWith("labels.") || field?.startsWith("relations.")));
contextMenu.show({
items: [
@@ -65,7 +66,7 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
{
title: t("table_view.sort-column-clear"),
enabled: sorters.length > 0,
uiIcon: "bx bx-empty",
uiIcon: "bx bx-x-circle",
handler: () => tabulator.clearSort()
},
{
@@ -78,7 +79,7 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
},
{
title: t("table_view.show-hide-columns"),
uiIcon: "bx bx-empty",
uiIcon: "bx bx-columns",
items: buildColumnItems(tabulator)
},
{ title: "----" },
@@ -103,8 +104,8 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
{ title: "----" },
{
title: t("table_view.edit-column"),
uiIcon: "bx bx-edit",
enabled: !!column.getField() && column.getField() !== "title",
uiIcon: "bx bxs-edit-alt",
enabled: isUserDefinedColumn,
handler: () => getParentComponent(e)?.triggerCommand("addNewTableColumn", {
referenceColumn: column,
columnToEdit: column
@@ -113,7 +114,7 @@ function showColumnContextMenu(_e: UIEvent, column: ColumnComponent, parentNote:
{
title: t("table_view.delete-column"),
uiIcon: "bx bx-trash",
enabled: !!column.getField() && column.getField() !== "title",
enabled: isUserDefinedColumn,
handler: () => getParentComponent(e)?.triggerCommand("deleteTableColumn", {
columnToDelete: column
})
@@ -136,7 +137,7 @@ function showHeaderContextMenu(_e: Event, tabulator: Tabulator) {
items: [
{
title: t("table_view.show-hide-columns"),
uiIcon: "bx bx-empty",
uiIcon: "bx bx-columns",
items: buildColumnItems(tabulator)
},
{ title: "----" },
@@ -173,7 +174,7 @@ export function showRowContextMenu(_e: UIEvent, row: RowComponent, parentNote: F
{ title: "----" },
{
title: t("table_view.row-insert-above"),
uiIcon: "bx bx-list-plus",
uiIcon: "bx bx-horizontal-left bx-rotate-90",
handler: () => getParentComponent(e)?.triggerCommand("addNewRow", {
parentNotePath: parentNoteId,
customOpts: {
@@ -184,7 +185,7 @@ export function showRowContextMenu(_e: UIEvent, row: RowComponent, parentNote: F
},
{
title: t("table_view.row-insert-child"),
uiIcon: "bx bx-empty",
uiIcon: "bx bx-subdirectory-right",
handler: async () => {
const branchId = row.getData().branchId;
const note = await froca.getBranch(branchId)?.getNote();
@@ -199,7 +200,7 @@ export function showRowContextMenu(_e: UIEvent, row: RowComponent, parentNote: F
},
{
title: t("table_view.row-insert-below"),
uiIcon: "bx bx-empty",
uiIcon: "bx bx-horizontal-left bx-rotate-270",
handler: () => getParentComponent(e)?.triggerCommand("addNewRow", {
parentNotePath: parentNoteId,
customOpts: {

View File

@@ -11,12 +11,12 @@ export default function buildFooter(parentNote: FNote) {
}
return /*html*/`\
<button class="btn btn-sm" style="padding: 0px 10px 0px 10px;" data-trigger-command="addNewRow">
<button class="btn btn-sm" data-trigger-command="addNewRow">
<span class="bx bx-plus"></span> ${t("table_view.new-row")}
</button>
<button class="btn btn-sm" style="padding: 0px 10px 0px 10px;" data-trigger-command="addNewTableColumn">
<span class="bx bx-columns"></span> ${t("table_view.new-column")}
<button class="btn btn-sm" data-trigger-command="addNewTableColumn">
<span class="bx bx-carousel"></span> ${t("table_view.new-column")}
</button>
`.trimStart();
}

View File

@@ -20,9 +20,7 @@ export function NoteFormatter(cell: CellComponent, _formatterParams, onRendered)
const iconClass = note.getIcon();
const title = note.title;
const { $noteRef } = buildNoteLink(noteId);
$noteRef.text(title);
$noteRef.prepend($("<span>").addClass(iconClass));
const { $noteRef } = buildNoteLink(noteId, title, iconClass, note.getColorClass());
return $noteRef[0];
}
@@ -53,15 +51,12 @@ export function NoteFormatter(cell: CellComponent, _formatterParams, onRendered)
* Custom formatter for the note title that is quite similar to {@link NoteFormatter}, but where the title and icons are read from separate fields.
*/
export function NoteTitleFormatter(cell: CellComponent) {
const { noteId, iconClass } = cell.getRow().getData();
const { noteId, iconClass, colorClass } = cell.getRow().getData();
if (!noteId) {
return "";
}
const { $noteRef } = buildNoteLink(noteId);
$noteRef.text(cell.getValue());
$noteRef.prepend($("<span>").addClass(iconClass));
const { $noteRef } = buildNoteLink(noteId, cell.getValue(), iconClass, colorClass);
return $noteRef[0].outerHTML;
}
@@ -80,10 +75,15 @@ export function MonospaceFormatter(cell: CellComponent) {
return `<code>${cell.getValue()}</code>`;
}
function buildNoteLink(noteId: string) {
function buildNoteLink(noteId: string, title: string, iconClass: string, colorClass?: string) {
const $noteRef = $("<span>");
const href = `#root/${noteId}`;
$noteRef.addClass("reference-link");
$noteRef.attr("data-href", href);
$noteRef.text(title);
$noteRef.prepend($("<span>").addClass(iconClass));
if (colorClass) {
$noteRef.addClass(colorClass);
}
return { $noteRef, href };
}

View File

@@ -9,6 +9,7 @@ export type TableData = {
labels: Record<string, boolean | string | null>;
relations: Record<string, boolean | string | null>;
branchId: string;
colorClass: string | undefined;
_children?: TableData[];
};
@@ -41,6 +42,7 @@ export async function buildRowDefinitions(parentNote: FNote, infos: AttributeDef
labels,
relations,
branchId: branch.branchId,
colorClass: note.getColorClass()
}
if (note.hasChildren() && (maxDepth < 0 || currentDepth < maxDepth)) {

View File

@@ -1,6 +1,6 @@
{
"name": "@triliumnext/desktop",
"version": "0.96.0",
"version": "0.97.1",
"description": "Build your personal knowledge base with Trilium Notes",
"private": true,
"main": "main.cjs",

View File

@@ -1,6 +1,6 @@
{
"name": "@triliumnext/server",
"version": "0.96.0",
"version": "0.97.1",
"description": "The server-side component of TriliumNext, which exposes the client via the web, allows for sync and provides a REST API for both internal and external use.",
"private": true,
"dependencies": {
@@ -49,7 +49,7 @@
"axios": "1.10.0",
"bindings": "1.5.0",
"chardet": "2.1.0",
"cheerio": "1.1.0",
"cheerio": "1.1.1",
"chokidar": "4.0.3",
"cls-hooked": "4.2.2",
"compression": "1.8.1",

View File

@@ -8,31 +8,31 @@
<h2>How it works</h2>
<p>The tabular structure is represented as such:</p>
<ul>
<li data-list-item-id="e2f9c74f491f19544cc8bd91d4f0e2b7b">Each child note is a row in the table.</li>
<li data-list-item-id="e088e11b32fc5e97177413ef35dccf3b1">If child rows also have children, they will be displayed under an expander
<li>Each child note is a row in the table.</li>
<li>If child rows also have children, they will be displayed under an expander
(nested notes).</li>
<li data-list-item-id="e3e02ff50b40091e780be35dd4a141fec">Each column is a <a href="#root/_help_OFXdgB2nNk1F">promoted attribute</a> that
<li>Each column is a <a href="#root/_help_OFXdgB2nNk1F">promoted attribute</a> that
is defined on the Collection note.
<ul>
<li data-list-item-id="ed84d0aaca22ddfa667e0e5e2b8a2b571">Actually, both promoted and unpromoted attributes are supported, but it's
<li>Actually, both promoted and unpromoted attributes are supported, but it's
a requirement to use a label/relation definition.</li>
<li data-list-item-id="ec2c84efcd7687c2cbb0fa46b5b04e035">The promoted attributes are usually defined as inheritable in order to
<li>The promoted attributes are usually defined as inheritable in order to
show up in the child notes, but it's not a requirement.</li>
</ul>
</li>
<li data-list-item-id="e32b3ee6aa63a43bbba2a8127f7573f9e">If there are multiple attribute definitions with the same <code>name</code>,
<li>If there are multiple attribute definitions with the same <code>name</code>,
only one will be displayed.</li>
</ul>
<p>There are also a few predefined columns:</p>
<ul>
<li data-list-item-id="e75fca7a0d17de2b1e99a5d1ae717f1a7">The current item number, identified by the <code>#</code> symbol.
<li>The current item number, identified by the <code>#</code> symbol.
<ul>
<li data-list-item-id="e2f1150a9bdc8e95c23f4453a00d0947b">This simply counts the note and is affected by sorting.</li>
<li>This simply counts the note and is affected by sorting.</li>
</ul>
</li>
<li data-list-item-id="e6cf914471a03a8a06f8aee385da0f21d"><a class="reference-link" href="#root/_help_m1lbrzyKDaRB">Note ID</a>,
<li><a class="reference-link" href="#root/_help_m1lbrzyKDaRB">Note ID</a>,
representing the unique ID used internally by Trilium</li>
<li data-list-item-id="ea8ddddd631b9fb155528ef4757672587">The title of the note.</li>
<li>The title of the note.</li>
</ul>
<h2>Interaction</h2>
<h3>Creating a new table</h3>
@@ -43,18 +43,17 @@
is defined on the Collection note.</p>
<p>To create a new column, either:</p>
<ul>
<li data-list-item-id="e3bb3951707ab03fccab11c9b83d8f7a1">Press <em>Add new column</em> at the bottom of the table.</li>
<li data-list-item-id="e59ac48e5d7f2f1119d27db5b01eb0635">Right click on an existing column and select Add column to the left/right.</li>
<li
data-list-item-id="e681ba5bf3901016423216783a17f13f8">Right click on the empty space of the column header and select <em>Label</em> or <em>Relation</em> in
the <em>New column </em>section.</li>
<li>Press <em>Add new column</em> at the bottom of the table.</li>
<li>Right click on an existing column and select Add column to the left/right.</li>
<li>Right click on the empty space of the column header and select <em>Label</em> or <em>Relation</em> in
the <em>New column</em> section.</li>
</ul>
<h3>Adding new rows</h3>
<p>Each row is actually a note that is a child of the Collection note.</p>
<p>To create a new note, either:</p>
<ul>
<li data-list-item-id="e5b398750eec8daa1284942454b1da03f">Press <em>Add new row</em> at the bottom of the table.</li>
<li data-list-item-id="ed1fafca8d339a070b31ed86735757ad7">Right click on an existing row and select <em>Insert row above, Insert child note</em> or <em>Insert row below</em>.</li>
<li>Press <em>Add new row</em> at the bottom of the table.</li>
<li>Right click on an existing row and select <em>Insert row above, Insert child note</em> or <em>Insert row below</em>.</li>
</ul>
<p>By default it will try to edit the title of the newly created note.</p>
<p>Alternatively, the note can be created from the&nbsp;<a class="reference-link"
@@ -62,28 +61,27 @@
<h3>Context menu</h3>
<p>There are multiple menus:</p>
<ul>
<li data-list-item-id="ec7554ef5c121bbbe605c6a960207ce15">Right clicking on a column, allows:
<li>Right clicking on a column, allows:
<ul>
<li data-list-item-id="ef38b337e0b988758a61114627bb60c4c">Sorting by the selected column and resetting the sort.</li>
<li data-list-item-id="ecf9fc40517000ac6fd34ca1179145a11">Hiding the selected column or adjusting the visibility of every column.</li>
<li
data-list-item-id="ee7af88842f7f7191fa4f928929bb5e09">Adding new columns to the left or the right of the column.</li>
<li data-list-item-id="e4f04719c833b3048900a7fc4edad3aa1">Editing the current column.</li>
<li data-list-item-id="e648918725f9db40574f254ae7e973098">Deleting the current column.</li>
</ul>
</li>
<li data-list-item-id="e17dcbc050ffe71df0177061ea6083077">Right clicking on the space to the right of the columns, allows:
<ul>
<li data-list-item-id="e7245250ae9974578ac22f0804b9359f3">Adjusting the visibility of every column.</li>
<li data-list-item-id="ea854723a7e177b2fab226f2f47e74300">Adding new columns.</li>
<li>Sorting by the selected column and resetting the sort.</li>
<li>Hiding the selected column or adjusting the visibility of every column.</li>
<li>Adding new columns to the left or the right of the column.</li>
<li>Editing the current column.</li>
<li>Deleting the current column.</li>
</ul>
</li>
<li data-list-item-id="e1432be94738a66d9b1b6aeb09a939541">Right clicking on a row, allows:
<li>Right clicking on the space to the right of the columns, allows:
<ul>
<li data-list-item-id="ea2b4133e43708b251b3a513edb37446a">Opening the corresponding note of the row in a new tab, split, window
<li>Adjusting the visibility of every column.</li>
<li>Adding new columns.</li>
</ul>
</li>
<li>Right clicking on a row, allows:
<ul>
<li>Opening the corresponding note of the row in a new tab, split, window
or quick editing it.</li>
<li data-list-item-id="e0b1aecd8bf3fbb9810fc0ad43a8eecdc">Inserting rows above, below or as a child note.</li>
<li data-list-item-id="e9dc521aef229564b75d983e134646dda">Deleting the row.</li>
<li>Inserting rows above, below or as a child note.</li>
<li>Deleting the row.</li>
</ul>
</li>
</ul>
@@ -92,21 +90,20 @@
not only reflect in the table, but also as an attribute of the corresponding
note.</p>
<ul>
<li data-list-item-id="ec968ed99278fdb8197fd621c69e7f6cc">The editing will respect the type of the promoted attribute, by presenting
<li>The editing will respect the type of the promoted attribute, by presenting
a normal text box, a number selector or a date selector for example.</li>
<li
data-list-item-id="ecef0e73fd2da5ac88fe23ba83e725c1e">It also possible to change the title of a note.</li>
<li data-list-item-id="ef7b78a619db0596c6dfbeeb8c4ccb8e2">Editing relations is also possible
<ul>
<li data-list-item-id="eae5e595b5850aba8949d5bfb8e5c7da2">Simply click on a relation and it will become editable. Enter the text
to look for a note and click on it.</li>
<li data-list-item-id="e288ea9202d96e940abbbdc2ea33086b4">To remove a relation, remove the title of the note from the text box and
click outside the cell.</li>
</ul>
</li>
<li>It also possible to change the title of a note.</li>
<li>Editing relations is also possible
<ul>
<li>Simply click on a relation and it will become editable. Enter the text
to look for a note and click on it.</li>
<li>To remove a relation, remove the title of the note from the text box and
click outside the cell.</li>
</ul>
</li>
</ul>
<h3>Editing columns</h3>
<p>It is possible to edit a column by right clicking it and selecting <em>Edit column. </em>This
<p>It is possible to edit a column by right clicking it and selecting <em>Edit column.</em> This
will basically change the label/relation definition at the collection level.</p>
<p>If the <em>Name</em> field of a column is changed, this will trigger a batch
operation in which the corresponding label/relation will be renamed in
@@ -114,22 +111,21 @@
<h2>Working with the data</h2>
<h3>Sorting by column</h3>
<p>By default, the order of the notes matches the order in the&nbsp;<a class="reference-link"
href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/Vc8PjrjAGuOp/_help_oPVyFC7WL2Lp">Note Tree</a>.
However, it is possible to sort the data by the values of a column:</p>
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>. However, it is possible
to sort the data by the values of a column:</p>
<ul>
<li data-list-item-id="e1e0145471fc5258ad92621a89ac2c718">To do so, simply click on a column.</li>
<li data-list-item-id="e821bd86e23576f9eaa14c0db4fb91b83">To switch between ascending or descending sort, simply click again on
<li>To do so, simply click on a column.</li>
<li>To switch between ascending or descending sort, simply click again on
the same column. The arrow next to the column will indicate the direction
of the sort.</li>
<li data-list-item-id="ef51898adc5db8930da95259860497bea">To disable sorting and fall back to the original order, right click any
<li>To disable sorting and fall back to the original order, right click any
column on the header and select <em>Clear sorting.</em>
</li>
</ul>
<h3>Reordering and hiding columns</h3>
<ul>
<li data-list-item-id="ea338c99f7b7e97886b988db91b3dd8d1">Columns can be reordered by dragging the header of the columns.</li>
<li
data-list-item-id="e383f93282db3299145a4371452636ce6">Columns can be hidden or shown by right clicking on a column and clicking
<li>Columns can be reordered by dragging the header of the columns.</li>
<li>Columns can be hidden or shown by right clicking on a column and clicking
the item corresponding to the column.</li>
</ul>
<h3>Reordering rows</h3>
@@ -140,12 +136,10 @@
href="#root/_help_oPVyFC7WL2Lp">Note Tree</a>.</p>
<p>Reordering does have some limitations:</p>
<ul>
<li data-list-item-id="ee5f38e1c946944bf94b2efe364c5b744">If the parent note has <code>#sorted</code>, reordering will be disabled.</li>
<li
data-list-item-id="e0efec2f2857fcddbf66080bd4451e61d">If using nested tables, then reordering will also be disabled.</li>
<li
data-list-item-id="e23e93f53c136142acb82818be192764c">Currently, it's possible to reorder notes even if column sorting is used,
but the result might be inconsistent.</li>
<li>If the parent note has <code>#sorted</code>, reordering will be disabled.</li>
<li>If using nested tables, then reordering will also be disabled.</li>
<li>Currently, it's possible to reorder notes even if column sorting is used,
but the result might be inconsistent.</li>
</ul>
<h3>Nested trees</h3>
<p>If the child notes of the collection also have their own child notes,
@@ -156,21 +150,20 @@
to a certain number of levels or even disable it completely. To do so,
either:</p>
<ul>
<li data-list-item-id="e4b19a78e59f20a154e4c3ee997705226">Go to <em>Collection Properties</em> in the&nbsp;<a class="reference-link"
href="#root/pOsGYCXsbNQG/gh7bpGYxajRS/Vc8PjrjAGuOp/_help_BlN9DFI679QC">Ribbon</a>&nbsp;and
look for the <em>Max nesting depth</em> section.
<li>Go to <em>Collection Properties</em> in the&nbsp;<a class="reference-link"
href="#root/_help_BlN9DFI679QC">Ribbon</a>&nbsp;and look for the <em>Max nesting depth</em> section.
<ul>
<li data-list-item-id="ef74f1b3782dfc806487a991c0355e0bb">To disable nesting, type 0 and press Enter.</li>
<li data-list-item-id="e73d79dbe86cced5465bc7d3df3477d90">To limit to a certain depth, type in the desired number (e.g. 2 to only
<li>To disable nesting, type 0 and press Enter.</li>
<li>To limit to a certain depth, type in the desired number (e.g. 2 to only
display children and sub-children).</li>
<li data-list-item-id="ec208d87bccb6c4dc7bc69dfce7bcf43b">To re-enable unlimited nesting, remove the number and press Enter.</li>
<li>To re-enable unlimited nesting, remove the number and press Enter.</li>
</ul>
</li>
<li data-list-item-id="e51ebf8e9b9d8a2a85714d1d0efb676a6">Manually set <code>maxNestingDepth</code> to the desired value.</li>
<li>Manually set <code>maxNestingDepth</code> to the desired value.</li>
</ul>
<p>Limitations:</p>
<ul>
<li data-list-item-id="ec2c723dc60844af4b399f78b7ee5790c">While in this mode, it's not possible to reorder notes.</li>
<li>While in this mode, it's not possible to reorder notes.</li>
</ul>
<h2>Limitations</h2>
<p>Multi-value labels and relations are not supported. If a&nbsp;<a class="reference-link"
@@ -184,8 +177,8 @@
of the&nbsp;<a class="reference-link" href="#root/_help_eIg8jdvaoNNd">Search</a>.</p>
<p>However, there are also some limitations:</p>
<ul>
<li data-list-item-id="e2f9d55f137f7700d85e0a4d2d22a1f59">It's not possible to reorder notes.</li>
<li data-list-item-id="e2c278adf505c58a9d11c87d1a6238f4c">It's not possible to add a new row.</li>
<li>It's not possible to reorder notes.</li>
<li>It's not possible to add a new row.</li>
</ul>
<p>Columns are supported, by being defined as&nbsp;<a class="reference-link"
href="#root/_help_OFXdgB2nNk1F">Promoted Attributes</a>&nbsp;to the&nbsp;

View File

@@ -1,6 +1,6 @@
{
"formatVersion": 2,
"appVersion": "0.96.0",
"appVersion": "0.97.0",
"files": [
{
"isClone": false,

View File

@@ -1,6 +1,6 @@
{
"formatVersion": 2,
"appVersion": "0.96.0",
"appVersion": "0.97.0",
"files": [
{
"isClone": false,
@@ -61,6 +61,58 @@
"attachments": [],
"dirFileName": "Release Notes",
"children": [
{
"isClone": false,
"noteId": "OtFZ6Nd9vM3n",
"notePath": [
"hD3V4hiu2VW4",
"OtFZ6Nd9vM3n"
],
"title": "v0.97.1",
"notePosition": 10,
"prefix": null,
"isExpanded": false,
"type": "text",
"mime": "text/html",
"attributes": [
{
"type": "relation",
"name": "template",
"value": "wyurrlcDl416",
"isInheritable": false,
"position": 60
}
],
"format": "markdown",
"dataFileName": "v0.97.1.md",
"attachments": []
},
{
"isClone": false,
"noteId": "SJZ5PwfzHSQ1",
"notePath": [
"hD3V4hiu2VW4",
"SJZ5PwfzHSQ1"
],
"title": "v0.97.0",
"notePosition": 20,
"prefix": null,
"isExpanded": false,
"type": "text",
"mime": "text/html",
"attributes": [
{
"type": "relation",
"name": "template",
"value": "wyurrlcDl416",
"isInheritable": false,
"position": 60
}
],
"format": "markdown",
"dataFileName": "v0.97.0.md",
"attachments": []
},
{
"isClone": false,
"noteId": "mYXFde3LuNR7",
@@ -69,7 +121,7 @@
"mYXFde3LuNR7"
],
"title": "v0.96.0",
"notePosition": 10,
"notePosition": 30,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -95,7 +147,7 @@
"jthwbL0FdaeU"
],
"title": "v0.95.0",
"notePosition": 20,
"notePosition": 40,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -121,7 +173,7 @@
"7HGYsJbLuhnv"
],
"title": "v0.94.1",
"notePosition": 30,
"notePosition": 50,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -147,7 +199,7 @@
"Neq53ujRGBqv"
],
"title": "v0.94.0",
"notePosition": 40,
"notePosition": 60,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -173,7 +225,7 @@
"VN3xnce1vLkX"
],
"title": "v0.93.0",
"notePosition": 50,
"notePosition": 70,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -191,7 +243,7 @@
"WRaBfQqPr6qo"
],
"title": "v0.92.7",
"notePosition": 60,
"notePosition": 80,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -217,7 +269,7 @@
"a2rwfKNmUFU1"
],
"title": "v0.92.6",
"notePosition": 70,
"notePosition": 90,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -235,7 +287,7 @@
"fEJ8qErr0BKL"
],
"title": "v0.92.5-beta",
"notePosition": 80,
"notePosition": 100,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -253,7 +305,7 @@
"kkkZQQGSXjwy"
],
"title": "v0.92.4",
"notePosition": 90,
"notePosition": 110,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -271,7 +323,7 @@
"vAroNixiezaH"
],
"title": "v0.92.3-beta",
"notePosition": 100,
"notePosition": 120,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -289,7 +341,7 @@
"mHEq1wxAKNZd"
],
"title": "v0.92.2-beta",
"notePosition": 110,
"notePosition": 130,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -307,7 +359,7 @@
"IykjoAmBpc61"
],
"title": "v0.92.1-beta",
"notePosition": 120,
"notePosition": 140,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -325,7 +377,7 @@
"dq2AJ9vSBX4Y"
],
"title": "v0.92.0-beta",
"notePosition": 130,
"notePosition": 150,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -343,7 +395,7 @@
"3a8aMe4jz4yM"
],
"title": "v0.91.6",
"notePosition": 140,
"notePosition": 160,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -361,7 +413,7 @@
"8djQjkiDGESe"
],
"title": "v0.91.5",
"notePosition": 150,
"notePosition": 170,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -379,7 +431,7 @@
"OylxVoVJqNmr"
],
"title": "v0.91.4-beta",
"notePosition": 160,
"notePosition": 180,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -397,7 +449,7 @@
"tANGQDvnyhrj"
],
"title": "v0.91.3-beta",
"notePosition": 170,
"notePosition": 190,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -415,7 +467,7 @@
"hMoBfwSoj1SC"
],
"title": "v0.91.2-beta",
"notePosition": 180,
"notePosition": 200,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -433,7 +485,7 @@
"a2XMSKROCl9z"
],
"title": "v0.91.1-beta",
"notePosition": 190,
"notePosition": 210,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -451,7 +503,7 @@
"yqXFvWbLkuMD"
],
"title": "v0.90.12",
"notePosition": 200,
"notePosition": 220,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -469,7 +521,7 @@
"veS7pg311yJP"
],
"title": "v0.90.11-beta",
"notePosition": 210,
"notePosition": 230,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -487,7 +539,7 @@
"sq5W9TQxRqMq"
],
"title": "v0.90.10-beta",
"notePosition": 220,
"notePosition": 240,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -505,7 +557,7 @@
"yFEGVCUM9tPx"
],
"title": "v0.90.9-beta",
"notePosition": 230,
"notePosition": 250,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -523,7 +575,7 @@
"o4wAGqOQuJtV"
],
"title": "v0.90.8",
"notePosition": 240,
"notePosition": 260,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -556,7 +608,7 @@
"i4A5g9iOg9I0"
],
"title": "v0.90.7-beta",
"notePosition": 250,
"notePosition": 270,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -574,7 +626,7 @@
"ThNf2GaKgXUs"
],
"title": "v0.90.6-beta",
"notePosition": 260,
"notePosition": 280,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -592,7 +644,7 @@
"G4PAi554kQUr"
],
"title": "v0.90.5-beta",
"notePosition": 270,
"notePosition": 290,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -619,7 +671,7 @@
"zATRobGRCmBn"
],
"title": "v0.90.4",
"notePosition": 280,
"notePosition": 300,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -637,7 +689,7 @@
"sCDLf8IKn3Iz"
],
"title": "v0.90.3",
"notePosition": 290,
"notePosition": 310,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -655,7 +707,7 @@
"VqqyBu4AuTjC"
],
"title": "v0.90.2-beta",
"notePosition": 300,
"notePosition": 320,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -673,7 +725,7 @@
"RX3Nl7wInLsA"
],
"title": "v0.90.1-beta",
"notePosition": 310,
"notePosition": 330,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -691,7 +743,7 @@
"GyueACukPWjk"
],
"title": "v0.90.0-beta",
"notePosition": 320,
"notePosition": 340,
"prefix": null,
"isExpanded": false,
"type": "text",
@@ -709,7 +761,7 @@
"wyurrlcDl416"
],
"title": "Release Template",
"notePosition": 330,
"notePosition": 350,
"prefix": null,
"isExpanded": false,
"type": "text",

View File

@@ -0,0 +1,72 @@
# v0.97.0
> [!CAUTION]
> **Important Security Update**
>
> This release addresses a security vulnerability that could make password-based attacks against your Trilium instance more feasible. We strongly recommend upgrading to this version as soon as possible, especially if your Trilium server is accessible over a network.
>
> For more details about this security fix, please see our published security advisory which will be available 14 days after this release.
> [!IMPORTANT]
> If you enjoyed this release, consider showing a token of appreciation by:
>
> * Pressing the “Star” button on [GitHub](https://github.com/TriliumNext/Notes) (top-right).
> * Considering a one-time or recurrent donation to the [lead developer](https://github.com/eliandoran) via [GitHub Sponsors](https://github.com/sponsors/eliandoran) or [PayPal](https://paypal.me/eliandoran).
## 💡 Key highlights
* “Books” have been renamed to Collections to better match their intentions.
* **A new collection was introduced,** _**table.**_
* See the in-app documentation for more information.
* Custom table theme for Trilium by @adoriandoran
* Geomap: The geomap was converted from a standalone note type to a collection.
* The collections are not displayed directly in “Insert child” in the note tree with predefined configuration such as promoted attributes to make them easier to use (e.g. for calendar, geomap).
* A new editing mechanism was introduced: quick edit. This opens notes for editing in a popup instead of a tab, allowing easy access. This is especially useful for collections, to edit notes without switching context.
## 🐞 Bugfixes
* [Missing note meta. Can't export empty note and involved note tree](https://github.com/TriliumNext/Trilium/issues/6146)
* [Mermaid notes sluggish](https://github.com/TriliumNext/Trilium/issues/5805)
* [In-app help confusing due to ligatures](https://github.com/TriliumNext/Trilium/issues/6224)
* Geo map: tooltip not showing.
* [Nix flake support broke with electron 37 upgrade](https://github.com/TriliumNext/Trilium/issues/6217)
* Signing on Windows did not work on the previous release.
* [When editing a note in Linux, middle-clicking a note title in tree pane triggers a paste action](https://github.com/TriliumNext/Trilium/issues/5812)
* Editor not focused after switching tabs.
* PDF file preview: inconvenient 10px scrollable margin at the bottom.
* Calendar view:
* Subtree children not displayed when in calendar root.
* Title changes to events not reflected.
* [Attributes Dialogue Doesn't Display for existing attributes](https://github.com/TriliumNext/Trilium/issues/5718)
* [Issues on Prometeus dashboard due to timestamps](https://github.com/TriliumNext/Trilium/issues/6354)
* [Ckeditor (re)-creation likely causes important lagging when coming from code note](https://github.com/TriliumNext/Trilium/issues/6367)
## ✨ Improvements
* Export to ZIP:
* Improve error handling
* Improve handling of notes with empty title.
* Tree context menu: reorder the note types of “Insert (child) note...” by @adoriandoran
* [Note map: add attributes to include or exclude relations](https://github.com/TriliumNext/Trilium/pull/6104) by @kieranknowles1
* [iframe sandbox allow popups](https://github.com/TriliumNext/Trilium/issues/5698)
* [Badges for the note type context menu](https://github.com/TriliumNext/Trilium/pull/6229) by @adoriandoran
* The “Book/Collection Properties" ribbon tab no longer focuses automatically.
* Geomap improvements:
* Geolocation now displayed in the context menu.
* Context menu for empty spaces on the map, for quickly viewing the location or adding a new marker.
* Adding markers by drag & dropping from note tree.
* Read-only mode to prevent modification such as dragging.
* Calendar View: Added options to hide weekends & display week numbers directly from the “Collection Properties” in the ribbon.
* [Tree Context Menu: relocate the "Duplicate subtree" menu item](https://github.com/TriliumNext/Trilium/pull/6299) by @adoriandoran
## 📖 Documentation
* New features, table.
* Updated collections.
* Keyboard shortcuts for the note tree.
## 🛠️ Technical updates
* Updated to Electron 37.2.2.
* Mindmap dependency (MindElixir) was updated to the latest major version.
* Mermaid diagrams updated to the latest version (new diagram type tree map supported).
* CKEditor updated to latest major version (46).

View File

@@ -0,0 +1,77 @@
# v0.97.1
> [!TIP]
> This release is functionally identical to v0.97.0, but it fixes the version number not being correctly set in the release, causing some issues with the cache.
> [!CAUTION]
> **Important Security Update**
>
> This release addresses a security vulnerability that could make password-based attacks against your Trilium instance more feasible. We strongly recommend upgrading to this version as soon as possible, especially if your Trilium server is accessible over a network.
>
> For more details about this security fix, please see our published security advisory which will be available 14 days after this release.
> [!IMPORTANT]
> If you enjoyed this release, consider showing a token of appreciation by:
>
> * Pressing the “Star” button on [GitHub](https://github.com/TriliumNext/Notes) (top-right).
> * Considering a one-time or recurrent donation to the [lead developer](https://github.com/eliandoran) via [GitHub Sponsors](https://github.com/sponsors/eliandoran) or [PayPal](https://paypal.me/eliandoran).
## Changes from v0.97.0
### 💡 Key highlights
* “Books” have been renamed to Collections to better match their intentions.
* **A new collection was introduced,** _**table.**_
* See the in-app documentation for more information.
* Custom table theme for Trilium by @adoriandoran
* Geomap: The geomap was converted from a standalone note type to a collection.
* The collections are not displayed directly in “Insert child” in the note tree with predefined configuration such as promoted attributes to make them easier to use (e.g. for calendar, geomap).
* A new editing mechanism was introduced: quick edit. This opens notes for editing in a popup instead of a tab, allowing easy access. This is especially useful for collections, to edit notes without switching context.
### 🐞 Bugfixes
* [Missing note meta. Can't export empty note and involved note tree](https://github.com/TriliumNext/Trilium/issues/6146)
* [Mermaid notes sluggish](https://github.com/TriliumNext/Trilium/issues/5805)
* [In-app help confusing due to ligatures](https://github.com/TriliumNext/Trilium/issues/6224)
* Geo map: tooltip not showing.
* [Nix flake support broke with electron 37 upgrade](https://github.com/TriliumNext/Trilium/issues/6217)
* Signing on Windows did not work on the previous release.
* [When editing a note in Linux, middle-clicking a note title in tree pane triggers a paste action](https://github.com/TriliumNext/Trilium/issues/5812)
* Editor not focused after switching tabs.
* PDF file preview: inconvenient 10px scrollable margin at the bottom.
* Calendar view:
* Subtree children not displayed when in calendar root.
* Title changes to events not reflected.
* [Attributes Dialogue Doesn't Display for existing attributes](https://github.com/TriliumNext/Trilium/issues/5718)
* [Issues on Prometeus dashboard due to timestamps](https://github.com/TriliumNext/Trilium/issues/6354)
* [Ckeditor (re)-creation likely causes important lagging when coming from code note](https://github.com/TriliumNext/Trilium/issues/6367)
### ✨ Improvements
* Export to ZIP:
* Improve error handling
* Improve handling of notes with empty title.
* Tree context menu: reorder the note types of “Insert (child) note...” by @adoriandoran
* [Note map: add attributes to include or exclude relations](https://github.com/TriliumNext/Trilium/pull/6104) by @kieranknowles1
* [iframe sandbox allow popups](https://github.com/TriliumNext/Trilium/issues/5698)
* [Badges for the note type context menu](https://github.com/TriliumNext/Trilium/pull/6229) by @adoriandoran
* The “Book/Collection Properties" ribbon tab no longer focuses automatically.
* Geomap improvements:
* Geolocation now displayed in the context menu.
* Context menu for empty spaces on the map, for quickly viewing the location or adding a new marker.
* Adding markers by drag & dropping from note tree.
* Read-only mode to prevent modification such as dragging.
* Calendar View: Added options to hide weekends & display week numbers directly from the “Collection Properties” in the ribbon.
* [Tree Context Menu: relocate the "Duplicate subtree" menu item](https://github.com/TriliumNext/Trilium/pull/6299) by @adoriandoran
### 📖 Documentation
* New features, table.
* Updated collections.
* Keyboard shortcuts for the note tree.
### 🛠️ Technical updates
* Updated to Electron 37.2.2.
* Mindmap dependency (MindElixir) was updated to the latest major version.
* Mermaid diagrams updated to the latest version (new diagram type tree map supported).
* CKEditor updated to latest major version (46).

View File

@@ -1,6 +1,6 @@
{
"formatVersion": 2,
"appVersion": "0.96.0",
"appVersion": "0.97.0",
"files": [
{
"isClone": false,
@@ -3739,6 +3739,13 @@
"isInheritable": false,
"position": 10
},
{
"type": "relation",
"name": "internalLink",
"value": "m1lbrzyKDaRB",
"isInheritable": false,
"position": 20
},
{
"type": "relation",
"name": "internalLink",
@@ -3763,30 +3770,23 @@
{
"type": "relation",
"name": "internalLink",
"value": "m523cpzocqaD",
"value": "BlN9DFI679QC",
"isInheritable": false,
"position": 60
},
{
"type": "relation",
"name": "internalLink",
"value": "m523cpzocqaD",
"isInheritable": false,
"position": 70
},
{
"type": "label",
"name": "iconClass",
"value": "bx bx-table",
"isInheritable": false,
"position": 10
},
{
"type": "relation",
"name": "internalLink",
"value": "m1lbrzyKDaRB",
"isInheritable": false,
"position": 70
},
{
"type": "relation",
"name": "internalLink",
"value": "BlN9DFI679QC",
"isInheritable": false,
"position": 80
}
],
"format": "markdown",

View File

@@ -1,6 +1,6 @@
{
"name": "@triliumnext/source",
"version": "0.96.0",
"version": "0.97.1",
"description": "Build your personal knowledge base with Trilium Notes",
"directories": {
"doc": "docs"
@@ -27,16 +27,16 @@
"private": true,
"devDependencies": {
"@electron/rebuild": "4.0.1",
"@nx/devkit": "21.3.0",
"@nx/esbuild": "21.3.0",
"@nx/eslint": "21.3.0",
"@nx/eslint-plugin": "21.3.0",
"@nx/express": "21.3.0",
"@nx/js": "21.3.0",
"@nx/node": "21.3.0",
"@nx/playwright": "21.3.0",
"@nx/vite": "21.3.0",
"@nx/web": "21.3.0",
"@nx/devkit": "21.3.1",
"@nx/esbuild": "21.3.1",
"@nx/eslint": "21.3.1",
"@nx/eslint-plugin": "21.3.1",
"@nx/express": "21.3.1",
"@nx/js": "21.3.1",
"@nx/node": "21.3.1",
"@nx/playwright": "21.3.1",
"@nx/vite": "21.3.1",
"@nx/web": "21.3.1",
"@playwright/test": "^1.36.0",
"@triliumnext/server": "workspace:*",
"@types/express": "^5.0.0",
@@ -54,7 +54,7 @@
"jiti": "2.4.2",
"jsdom": "~26.1.0",
"jsonc-eslint-parser": "^2.1.0",
"nx": "21.3.0",
"nx": "21.3.1",
"react-refresh": "^0.17.0",
"rollup-plugin-webpack-stats": "2.1.0",
"tslib": "^2.3.0",

View File

@@ -1,6 +1,6 @@
{
"name": "@triliumnext/commons",
"version": "0.96.0",
"version": "0.97.1",
"description": "Shared library between the clients (e.g. browser, Electron) and the server, mostly for type definitions and utility methods.",
"private": true,
"type": "module",

1000
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff