Merge branch 'main' of https://github.com/TriliumNext/Trilium into feat/restyle-canvas

This commit is contained in:
Adorian Doran 2025-10-14 22:24:53 +03:00
commit 5951072f03
44 changed files with 486 additions and 77 deletions

View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)

View File

@ -1979,6 +1979,10 @@ body.electron.platform-darwin:not(.native-titlebar) .tab-row-container {
-webkit-app-region: drag; -webkit-app-region: drag;
} }
body.electron.platform-darwin:not(.native-titlebar) #tab-row-left-spacer {
width: 80px;
}
.tab-row-widget { .tab-row-widget {
padding-inline-end: calc(100vw - env(titlebar-area-width, 100vw)); padding-inline-end: calc(100vw - env(titlebar-area-width, 100vw));
} }

View File

@ -100,7 +100,7 @@ body.layout-horizontal > .horizontal {
align-items: center; align-items: center;
} }
#launcher-container { body[dir=ltr] #launcher-container {
scrollbar-gutter: stable both-edges; scrollbar-gutter: stable both-edges;
} }

View File

@ -1 +1,8 @@
{} {
"about": {
"title": "Om Trilium Notes",
"homepage": "Hemsida:",
"app_version": "App version:",
"db_version": "DB version:"
}
}

View File

@ -1,11 +1,10 @@
import { Dropdown as BootstrapDropdown } from "bootstrap"; import { Dropdown as BootstrapDropdown } from "bootstrap";
import { ComponentChildren } from "preact"; import { ComponentChildren } from "preact";
import { CSSProperties } from "preact/compat"; import { CSSProperties, HTMLProps } from "preact/compat";
import { useCallback, useEffect, useRef, useState } from "preact/hooks"; import { useCallback, useEffect, useRef, useState } from "preact/hooks";
import { useUniqueName } from "./hooks"; import { useUniqueName } from "./hooks";
export interface DropdownProps { export interface DropdownProps extends Pick<HTMLProps<HTMLDivElement>, "id" | "className"> {
className?: string;
buttonClassName?: string; buttonClassName?: string;
isStatic?: boolean; isStatic?: boolean;
children: ComponentChildren; children: ComponentChildren;
@ -22,7 +21,7 @@ export interface DropdownProps {
forceShown?: boolean; forceShown?: boolean;
} }
export default function Dropdown({ className, buttonClassName, isStatic, children, title, text, dropdownContainerStyle, dropdownContainerClassName, hideToggleArrow, iconAction, disabled, noSelectButtonStyle, noDropdownListStyle, forceShown }: DropdownProps) { export default function Dropdown({ id, className, buttonClassName, isStatic, children, title, text, dropdownContainerStyle, dropdownContainerClassName, hideToggleArrow, iconAction, disabled, noSelectButtonStyle, noDropdownListStyle, forceShown }: DropdownProps) {
const dropdownRef = useRef<HTMLDivElement | null>(null); const dropdownRef = useRef<HTMLDivElement | null>(null);
const triggerRef = useRef<HTMLButtonElement | null>(null); const triggerRef = useRef<HTMLButtonElement | null>(null);
@ -74,7 +73,7 @@ export default function Dropdown({ className, buttonClassName, isStatic, childre
aria-haspopup="true" aria-haspopup="true"
aria-expanded="false" aria-expanded="false"
title={title} title={title}
id={ariaId} id={id ?? ariaId}
disabled={disabled} disabled={disabled}
> >
{text} {text}

View File

@ -5,7 +5,7 @@ import { FormDropdownDivider, FormListBadge, FormListItem } from "../react/FormL
import { getAvailableLocales, t } from "../../services/i18n"; import { getAvailableLocales, t } from "../../services/i18n";
import { useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent, useTriliumOption } from "../react/hooks"; import { useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent, useTriliumOption } from "../react/hooks";
import mime_types from "../../services/mime_types"; import mime_types from "../../services/mime_types";
import { Locale, NoteType, ToggleInParentResponse } from "@triliumnext/commons"; import { Locale, LOCALES, NoteType, ToggleInParentResponse } from "@triliumnext/commons";
import server from "../../services/server"; import server from "../../services/server";
import dialog from "../../services/dialog"; import dialog from "../../services/dialog";
import FormToggle from "../react/FormToggle"; import FormToggle from "../react/FormToggle";
@ -20,6 +20,7 @@ import { TabContext } from "./ribbon-interface";
import Modal from "../react/Modal"; import Modal from "../react/Modal";
import { CodeMimeTypesList } from "../type_widgets/options/code_notes"; import { CodeMimeTypesList } from "../type_widgets/options/code_notes";
import { ContentLanguagesList } from "../type_widgets/options/i18n"; import { ContentLanguagesList } from "../type_widgets/options/i18n";
import { LocaleSelector } from "../type_widgets/options/components/LocaleSelector";
export default function BasicPropertiesTab({ note }: TabContext) { export default function BasicPropertiesTab({ note }: TabContext) {
return ( return (
@ -290,68 +291,31 @@ function NoteLanguageSwitch({ note }: { note?: FNote | null }) {
id: "", id: "",
name: t("note_language.not_set") name: t("note_language.not_set")
}; };
const [ currentNoteLanguage, setCurrentNoteLanguage ] = useNoteLabel(note, "language"); const [ currentNoteLanguage, setCurrentNoteLanguage ] = useNoteLabel(note, "language");
const [ modalShown, setModalShown ] = useState(false); const [ modalShown, setModalShown ] = useState(false);
const locales = useMemo(() => { const locales = useMemo(() => {
const enabledLanguages = JSON.parse(languages ?? "[]") as string[]; const enabledLanguages = JSON.parse(languages ?? "[]") as string[];
const filteredLanguages = getAvailableLocales().filter((l) => typeof l !== "object" || enabledLanguages.includes(l.id)); const filteredLanguages = getAvailableLocales().filter((l) => typeof l !== "object" || enabledLanguages.includes(l.id));
const leftToRightLanguages = filteredLanguages.filter((l) => !l.rtl); return filteredLanguages;
const rightToLeftLanguages = filteredLanguages.filter((l) => l.rtl);
let locales: ("---" | Locale)[] = [
DEFAULT_LOCALE
];
if (leftToRightLanguages.length > 0) {
locales = [
...locales,
"---",
...leftToRightLanguages
];
}
if (rightToLeftLanguages.length > 0) {
locales = [
...locales,
"---",
...rightToLeftLanguages
];
}
// This will separate the list of languages from the "Configure languages" button.
// If there is at least one language.
locales.push("---");
return locales;
}, [ languages ]); }, [ languages ]);
const currentLocale = useMemo(() => {
return locales.find(locale => typeof locale === "object" && locale.id === currentNoteLanguage) as Locale | undefined;
}, [ currentNoteLanguage ]);
return ( return (
<div className="note-language-container"> <div className="note-language-container">
<span>{t("basic_properties.language")}:</span> <span>{t("basic_properties.language")}:</span>
&nbsp; &nbsp;
<Dropdown text={currentLocale?.name ?? DEFAULT_LOCALE.name}> <LocaleSelector
{locales.map(locale => { locales={locales}
if (typeof locale === "object") { defaultLocale={DEFAULT_LOCALE}
const checked = locale.id === (currentNoteLanguage ?? ""); currentValue={currentNoteLanguage ?? ""} onChange={setCurrentNoteLanguage}
return <FormListItem extraChildren={(
rtl={locale.rtl} <FormListItem
checked={checked} onClick={() => setModalShown(true)}
onClick={() => setCurrentNoteLanguage(locale.id || null)} icon="bx bx-cog"
>{locale.name}</FormListItem> >{t("note_language.configure-languages")}</FormListItem>
} else { )}
return <FormDropdownDivider /> >
}
})}
<FormListItem </LocaleSelector>
onClick={() => setModalShown(true)}
>{t("note_language.configure-languages")}</FormListItem>
</Dropdown>
<HelpButton helpPage="B0lcI9xz1r8K" style={{ marginInlineStart: "4px" }} /> <HelpButton helpPage="B0lcI9xz1r8K" style={{ marginInlineStart: "4px" }} />
@ -364,7 +328,7 @@ function NoteLanguageSwitch({ note }: { note?: FNote | null }) {
<ContentLanguagesList /> <ContentLanguagesList />
</Modal> </Modal>
</div> </div>
) );
} }
function findTypeTitle(type?: NoteType, mime?: string | null) { function findTypeTitle(type?: NoteType, mime?: string | null) {

View File

@ -0,0 +1,63 @@
import { Locale } from "@triliumnext/commons";
import Dropdown from "../../../react/Dropdown";
import { FormDropdownDivider, FormListItem } from "../../../react/FormList";
import { ComponentChildren } from "preact";
import { useMemo, useState } from "preact/hooks";
export function LocaleSelector({ id, locales, currentValue, onChange, defaultLocale, extraChildren }: {
id?: string;
locales: Locale[],
currentValue: string,
onChange: (newLocale: string) => void,
defaultLocale?: Locale,
extraChildren?: ComponentChildren
}) {
const [ activeLocale, setActiveLocale ] = useState(defaultLocale?.id === currentValue ? defaultLocale : locales.find(l => l.id === currentValue));
console.log("defaultLocale ", defaultLocale, currentValue, activeLocale)
const processedLocales = useMemo(() => {
const leftToRightLanguages = locales.filter((l) => !l.rtl);
const rightToLeftLanguages = locales.filter((l) => l.rtl);
let items: ("---" | Locale)[] = [];
if (defaultLocale) items.push(defaultLocale);
if (leftToRightLanguages.length > 0) {
if (items.length > 0) items.push("---");
items = [ ...items, ...leftToRightLanguages ];
}
if (rightToLeftLanguages.length > 0) {
items = [
...items,
"---",
...rightToLeftLanguages
];
}
if (extraChildren) {
items.push("---");
}
return items;
}, [ locales ]);
return (
<Dropdown id={id} text={activeLocale?.name}>
{processedLocales.map(locale => {
if (typeof locale === "object") {
return <FormListItem
rtl={locale.rtl}
checked={locale.id === currentValue}
onClick={() => {
setActiveLocale(locale);
onChange(locale.id);
}}
>{locale.name}</FormListItem>
} else {
return <FormDropdownDivider />
}
})}
{extraChildren}
</Dropdown>
)
}

View File

@ -10,10 +10,16 @@
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
.option-row > select { .option-row > select,
.option-row > .dropdown {
width: 60%; width: 60%;
} }
.option-row > .dropdown button {
width: 100%;
text-align: start;
}
.option-row:last-of-type { .option-row:last-of-type {
border-bottom: unset; border-bottom: unset;
} }

View File

@ -5,13 +5,14 @@ import OptionsRow from "./components/OptionsRow";
import OptionsSection from "./components/OptionsSection"; import OptionsSection from "./components/OptionsSection";
import { useTriliumOption, useTriliumOptionJson } from "../../react/hooks"; import { useTriliumOption, useTriliumOptionJson } from "../../react/hooks";
import type { Locale } from "@triliumnext/commons"; import type { Locale } from "@triliumnext/commons";
import { isElectron, restartDesktopApp } from "../../../services/utils"; import { restartDesktopApp } from "../../../services/utils";
import FormRadioGroup, { FormInlineRadioGroup } from "../../react/FormRadioGroup"; import FormRadioGroup from "../../react/FormRadioGroup";
import FormText from "../../react/FormText"; import FormText from "../../react/FormText";
import RawHtml from "../../react/RawHtml"; import RawHtml from "../../react/RawHtml";
import Admonition from "../../react/Admonition"; import Admonition from "../../react/Admonition";
import Button from "../../react/Button"; import Button from "../../react/Button";
import CheckboxList from "./components/CheckboxList"; import CheckboxList from "./components/CheckboxList";
import { LocaleSelector } from "./components/LocaleSelector";
export default function InternationalizationOptions() { export default function InternationalizationOptions() {
return ( return (
@ -32,7 +33,6 @@ function LocalizationOptions() {
return true; return true;
}), }),
formattingLocales: [ formattingLocales: [
{ id: "", name: t("i18n.formatting-locale-auto") },
...allLocales.filter(locale => locale.electronLocale) ...allLocales.filter(locale => locale.electronLocale)
] ]
} }
@ -48,7 +48,7 @@ function LocalizationOptions() {
</OptionsRow> </OptionsRow>
{<OptionsRow name="formatting-locale" label={t("i18n.formatting-locale")}> {<OptionsRow name="formatting-locale" label={t("i18n.formatting-locale")}>
<LocaleSelector locales={contentLocales} currentValue={formattingLocale} onChange={setFormattingLocale} /> <LocaleSelector locales={contentLocales} currentValue={formattingLocale} onChange={setFormattingLocale} defaultLocale={{ id: "", name: t("i18n.formatting-locale-auto") }} />
</OptionsRow>} </OptionsRow>}
<DateSettings /> <DateSettings />
@ -56,15 +56,6 @@ function LocalizationOptions() {
) )
} }
function LocaleSelector({ id, locales, currentValue, onChange }: { id?: string; locales: Locale[], currentValue: string, onChange: (newLocale: string) => void }) {
return <FormSelect
id={id}
values={locales}
keyProperty="id" titleProperty="name"
currentValue={currentValue} onChange={onChange}
/>;
}
function DateSettings() { function DateSettings() {
const [ firstDayOfWeek, setFirstDayOfWeek ] = useTriliumOption("firstDayOfWeek"); const [ firstDayOfWeek, setFirstDayOfWeek ] = useTriliumOption("firstDayOfWeek");
const [ firstWeekOfYear, setFirstWeekOfYear ] = useTriliumOption("firstWeekOfYear"); const [ firstWeekOfYear, setFirstWeekOfYear ] = useTriliumOption("firstWeekOfYear");

View File

@ -12,6 +12,7 @@ import { deferred } from "@triliumnext/server/src/services/utils.js";
import { PRODUCT_NAME } from "./app-info"; import { PRODUCT_NAME } from "./app-info";
import port from "@triliumnext/server/src/services/port.js"; import port from "@triliumnext/server/src/services/port.js";
import { join } from "path"; import { join } from "path";
import { LOCALES } from "../../../packages/commons/src";
async function main() { async function main() {
const userDataPath = getUserData(); const userDataPath = getUserData();
@ -30,7 +31,7 @@ async function main() {
// needed for excalidraw export https://github.com/zadam/trilium/issues/4271 // needed for excalidraw export https://github.com/zadam/trilium/issues/4271
app.commandLine.appendSwitch("enable-experimental-web-platform-features"); app.commandLine.appendSwitch("enable-experimental-web-platform-features");
app.commandLine.appendSwitch("lang", options.getOptionOrNull("formattingLocale") || options.getOptionOrNull("locale") || "en"); app.commandLine.appendSwitch("lang", getElectronLocale());
// Disable smooth scroll if the option is set // Disable smooth scroll if the option is set
const smoothScrollEnabled = options.getOptionOrNull("smoothScrollEnabled"); const smoothScrollEnabled = options.getOptionOrNull("smoothScrollEnabled");
@ -128,4 +129,15 @@ async function onReady() {
await windowService.registerGlobalShortcuts(); await windowService.registerGlobalShortcuts();
} }
function getElectronLocale() {
const uiLocale = options.getOptionOrNull("locale");
const formattingLocale = options.getOptionOrNull("formattingLocale");
const correspondingLocale = LOCALES.find(l => l.id === uiLocale);
// For RTL, we have to force the UI locale to align the window buttons properly.
if (formattingLocale && !correspondingLocale?.rtl) return formattingLocale;
return uiLocale || "en"
}
main(); main();

View File

@ -1 +1,7 @@
{} {
"keyboard_actions": {
"back-in-note-history": "Gå till föregående anteckning i historiken",
"forward-in-note-history": "Gå till nästa anteckning i historiken",
"open-jump-to-note-dialog": "Öppna \"Hoppa till anteckning\" dialog"
}
}

View File

@ -1 +1,7 @@
{} {
"get-started": {
"title": "Kom igång",
"desktop_title": "Ladda ner skrivbordsprogrammet (v{{version}})",
"architecture": "Arkitektur:"
}
}

11
docs/README-ZH_CN.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-ZH_TW.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-ar.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# ملاحظات تريليوم # ملاحظات تريليوم
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-ca.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-cs.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-de.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-el.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-es.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-fa.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-fi.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-fr.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-hr.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-hu.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-id.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-it.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-ja.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-ko.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-md.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-nb_NO.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-nl.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsoren](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsoren](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-pl.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-pt.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-pt_BR.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-ro.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![Sponsori prin GitHub](https://img.shields.io/github/sponsors/eliandoran) ![Sponsori prin GitHub](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-ru.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-sl.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-sr.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-sv.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-tr.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-uk.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

11
docs/README-vi.md vendored
View File

@ -1,3 +1,14 @@
<div align="center">
<sup>Special thanks to:</sup><br />
<a href="https://go.warp.dev/Trilium" target="_blank">
<img alt="Warp sponsorship" width="400" src="https://github.com/warpdotdev/brand-assets/blob/main/Github/Sponsor/Warp-Github-LG-03.png"><br />
Warp, built for coding with multiple AI agents<br />
</a>
<sup>Available for macOS, Linux and Windows</sup>
</div>
<hr />
# Trilium Notes # Trilium Notes
![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) ![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran)

View File

@ -47,7 +47,6 @@ const UNSORTED_LOCALES = [
id: "ar", id: "ar",
name: "اَلْعَرَبِيَّةُ", name: "اَلْعَرَبِيَّةُ",
rtl: true, rtl: true,
devOnly: true,
electronLocale: "ar" electronLocale: "ar"
}, },
{ // Hebrew { // Hebrew