diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 5084d20111..201814f9d9 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -12,7 +12,7 @@ jobs: steps: - name: Check if PRs have conflicts uses: eps1lon/actions-label-merge-conflict@v3 - if: github.repository == ${{ vars.REPO_MAIN }} + if: github.repository == ${{ vars.REPO_MAIN }} && ${{secrets.MERGE_CONFLICT_LABEL_PAT}} with: dirtyLabel: "merge-conflicts" repoToken: "${{ secrets.MERGE_CONFLICT_LABEL_PAT }}" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 876273d644..c523c2f1da 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -67,7 +67,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} @@ -95,6 +95,6 @@ jobs: exit 1 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 6abd9af47e..6a1376a61f 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -55,7 +55,7 @@ jobs: - name: Setup Python uses: actions/setup-python@v6 with: - python-version: '3.13' + python-version: '3.14' cache: 'pip' cache-dependency-path: 'requirements-docs.txt' @@ -118,6 +118,7 @@ jobs: - name: Deploy uses: ./.github/actions/deploy-to-cloudflare-pages + if: github.repository == ${{ vars.REPO_MAIN }} && ${{secrets.CLOUDFLARE_API_TOKEN}} with: project_name: "trilium-docs" comment_body: "📚 Documentation preview is ready" diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 15dd91acb5..50c97417c8 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -77,7 +77,7 @@ jobs: GPG_SIGNING_KEY: ${{ secrets.GPG_SIGN_KEY }} - name: Publish release - uses: softprops/action-gh-release@v2.3.4 + uses: softprops/action-gh-release@v2.4.0 if: ${{ github.event_name != 'pull_request' }} with: make_latest: false @@ -118,7 +118,7 @@ jobs: arch: ${{ matrix.arch }} - name: Publish release - uses: softprops/action-gh-release@v2.3.4 + uses: softprops/action-gh-release@v2.4.0 if: ${{ github.event_name != 'pull_request' }} with: make_latest: false diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f73cdb54cc..f8e77159a8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -127,7 +127,7 @@ jobs: path: upload - name: Publish stable release - uses: softprops/action-gh-release@v2.3.4 + uses: softprops/action-gh-release@v2.4.0 with: draft: false body_path: docs/Release Notes/Release Notes/${{ github.ref_name }}.md diff --git a/.github/workflows/website.yml b/.github/workflows/website.yml index 377c7544e7..bfb2c47214 100644 --- a/.github/workflows/website.yml +++ b/.github/workflows/website.yml @@ -11,6 +11,9 @@ on: paths: - "apps/website/**" + release: + types: [ released ] + jobs: build-and-deploy: runs-on: ubuntu-latest diff --git a/README.md b/README.md index b84fd1003a..1fb4e0b95c 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ Please view the [documentation guide](https://github.com/TriliumNext/Trilium/blo ## 👏 Shoutouts * [zadam](https://github.com/zadam) for the original concept and implementation of the application. -* [Larsa](https://github.com/LarsaSara) for designing the application icon. +* [Sarah Hussein](https://github.com/Sarah-Hussein) for designing the application icon. * [nriver](https://github.com/nriver) for his work on internationalization. * [Thomas Frei](https://github.com/thfrei) for his original work on the Canvas. * [antoniotejada](https://github.com/nriver) for the original syntax highlight widget. diff --git a/_regroup/package.json b/_regroup/package.json index b8cc7ce85f..35aa4e35e8 100644 --- a/_regroup/package.json +++ b/_regroup/package.json @@ -35,16 +35,16 @@ "chore:generate-openapi": "tsx bin/generate-openapi.js" }, "devDependencies": { - "@playwright/test": "1.55.1", + "@playwright/test": "1.56.0", "@stylistic/eslint-plugin": "5.4.0", "@types/express": "5.0.3", - "@types/node": "22.18.8", + "@types/node": "22.18.9", "@types/yargs": "17.0.33", "@vitest/coverage-v8": "3.2.4", "eslint": "9.37.0", "eslint-plugin-simple-import-sort": "12.1.1", "esm": "3.2.25", - "jsdoc": "4.0.4", + "jsdoc": "4.0.5", "lorem-ipsum": "2.0.8", "rcedit": "4.0.1", "rimraf": "6.0.1", diff --git a/apps/client/package.json b/apps/client/package.json index c03e621bfe..cfb4afcc4f 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -51,9 +51,9 @@ "leaflet": "1.9.4", "leaflet-gpx": "2.2.0", "mark.js": "8.11.1", - "marked": "16.3.0", + "marked": "16.4.0", "mermaid": "11.12.0", - "mind-elixir": "5.3.1", + "mind-elixir": "5.3.2", "normalize.css": "8.0.1", "panzoom": "9.4.3", "preact": "10.27.2", @@ -73,7 +73,7 @@ "@types/mark.js": "8.11.12", "@types/tabulator-tables": "6.2.11", "copy-webpack-plugin": "13.0.1", - "happy-dom": "19.0.2", + "happy-dom": "20.0.0", "script-loader": "0.7.2", "vite-plugin-static-copy": "3.1.3" } diff --git a/apps/client/src/desktop.ts b/apps/client/src/desktop.ts index 6fa4286564..cca6c8c0f4 100644 --- a/apps/client/src/desktop.ts +++ b/apps/client/src/desktop.ts @@ -10,7 +10,6 @@ import { t } from "./services/i18n.js"; import options from "./services/options.js"; import type ElectronRemote from "@electron/remote"; import type Electron from "electron"; -import "bootstrap/dist/css/bootstrap.min.css"; import "boxicons/css/boxicons.min.css"; import "autocomplete.js/index_jquery.js"; diff --git a/apps/client/src/layouts/mobile_layout.tsx b/apps/client/src/layouts/mobile_layout.tsx index 88505c0a34..0bed126e37 100644 --- a/apps/client/src/layouts/mobile_layout.tsx +++ b/apps/client/src/layouts/mobile_layout.tsx @@ -40,8 +40,8 @@ kbd { border: none; cursor: pointer; font-size: 1.25em; - padding-left: 0.5em; - padding-right: 0.5em; + padding-inline-start: 0.5em; + padding-inline-end: 0.5em; color: var(--main-text-color); } .quick-search { @@ -59,7 +59,7 @@ const FANCYTREE_CSS = ` margin-top: 0px; overflow-y: auto; contain: content; - padding-left: 10px; + padding-inline-start: 10px; } .fancytree-custom-icon { @@ -68,7 +68,7 @@ const FANCYTREE_CSS = ` .fancytree-title { font-size: 1.5em; - margin-left: 0.6em !important; + margin-inline-start: 0.6em !important; } .fancytree-node { @@ -81,7 +81,7 @@ const FANCYTREE_CSS = ` span.fancytree-expander { width: 24px !important; - margin-right: 5px; + margin-inline-end: 5px; } .fancytree-loading span.fancytree-expander { @@ -101,7 +101,7 @@ span.fancytree-expander { .tree-wrapper .scroll-to-active-note-button, .tree-wrapper .tree-settings-button { position: fixed; - margin-right: 16px; + margin-inline-end: 16px; display: none; } @@ -126,8 +126,8 @@ export default class MobileLayout { .class("d-md-flex d-lg-flex d-xl-flex col-12 col-sm-5 col-md-4 col-lg-3 col-xl-3") .id("mobile-sidebar-wrapper") .css("max-height", "100%") - .css("padding-left", "0") - .css("padding-right", "0") + .css("padding-inline-start", "0") + .css("padding-inline-end", "0") .css("contain", "content") .child(new FlexContainer("column").filling().id("mobile-sidebar-wrapper").child(new QuickSearchWidget()).child(new NoteTreeWidget().cssBlock(FANCYTREE_CSS))) ) diff --git a/apps/client/src/login.ts b/apps/client/src/login.ts index 351ed4c1e5..e707678401 100644 --- a/apps/client/src/login.ts +++ b/apps/client/src/login.ts @@ -1,5 +1,3 @@ -import "bootstrap/dist/css/bootstrap.min.css"; - // @ts-ignore - module = undefined // Required for correct loading of scripts in Electron if (typeof module === 'object') {window.module = module; module = undefined;} diff --git a/apps/client/src/menus/context_menu.ts b/apps/client/src/menus/context_menu.ts index 574d3091c1..9efdac65f8 100644 --- a/apps/client/src/menus/context_menu.ts +++ b/apps/client/src/menus/context_menu.ts @@ -150,8 +150,8 @@ class ContextMenu { this.$widget .css({ display: "block", - top: top, - left: left + top, + left }) .addClass("show"); } @@ -187,7 +187,7 @@ class ContextMenu { } // Create a new group to avoid column breaks before and after the seaparator / header. - // This is a workaround for Firefox not supporting break-before / break-after: avoid + // This is a workaround for Firefox not supporting break-before / break-after: avoid // for columns. if (shouldStartNewGroup) { $group = $("`; -const DAYS_OF_WEEK = [t("calendar.sun"), t("calendar.mon"), t("calendar.tue"), t("calendar.wed"), t("calendar.thu"), t("calendar.fri"), t("calendar.sat")]; +const DAYS_OF_WEEK = [ + t("calendar.sun"), + t("calendar.mon"), + t("calendar.tue"), + t("calendar.wed"), + t("calendar.thu"), + t("calendar.fri"), + t("calendar.sat") +]; interface DateNotesForMonth { [date: string]: string; @@ -90,7 +100,8 @@ export default class CalendarWidget extends RightDropdownButtonWidget { private $nextYear!: JQuery; private $previousYear!: JQuery; private monthDropdown!: Dropdown; - private firstDayOfWeek!: number; + // stored in ISO 1–7 + private firstDayOfWeekISO!: number; private weekCalculationOptions!: WeekCalculationOptions; private activeDate: Dayjs | null = null; private todaysDate!: Dayjs; @@ -126,6 +137,7 @@ export default class CalendarWidget extends RightDropdownButtonWidget { this.createMonth(); } }); + this.$next = this.$dropdownContent.find('[data-calendar-toggle="next"]'); this.$next.on("click", () => { this.date = this.date.add(1, 'month'); @@ -144,23 +156,24 @@ export default class CalendarWidget extends RightDropdownButtonWidget { this.date = this.date.year(parseInt(target.value)); this.createMonth(); }); + this.$nextYear = this.$dropdownContent.find('[data-calendar-toggle="nextYear"]'); this.$nextYear.on("click", () => { this.date = this.date.add(1, 'year'); this.createMonth(); }); + this.$previousYear = this.$dropdownContent.find('[data-calendar-toggle="previousYear"]'); this.$previousYear.on("click", () => { this.date = this.date.subtract(1, 'year'); this.createMonth(); }); + // Date click this.$dropdownContent.on("click", ".calendar-date", async (ev) => { const date = $(ev.target).closest(".calendar-date").attr("data-calendar-date"); - if (date) { const note = await dateNoteService.getDayNote(date); - if (note) { appContext.tabManager.getActiveContext()?.setNote(note.noteId); this.dropdown?.hide(); @@ -168,10 +181,10 @@ export default class CalendarWidget extends RightDropdownButtonWidget { toastService.showError(t("calendar.cannot_find_day_note")); } } - ev.stopPropagation(); }); + // Week click this.$dropdownContent.on("click", ".calendar-week-number", async (ev) => { if (!this.weekNoteEnable) { return; @@ -218,23 +231,17 @@ export default class CalendarWidget extends RightDropdownButtonWidget { return; } const noteAttributes = await server.get(`notes/${noteId}/attributes`); - - for (const attribute of noteAttributes) { - if (attribute.name === 'enableWeekNote') { - this.weekNoteEnable = true; - return - } - } - this.weekNoteEnable = false; + this.weekNoteEnable = noteAttributes.some(a => a.name === 'enableWeekNote'); } + // Store firstDayOfWeek as ISO (1–7) manageFirstDayOfWeek() { - this.firstDayOfWeek = options.getInt("firstDayOfWeek") || 0; + const rawFirstDayOfWeek = options.getInt("firstDayOfWeek") || 0; + this.firstDayOfWeekISO = rawFirstDayOfWeek === 0 ? 7 : rawFirstDayOfWeek; - // Generate the list of days of the week taking into consideration the user's selected first day of week. let localeDaysOfWeek = [...DAYS_OF_WEEK]; - const daysToBeAddedAtEnd = localeDaysOfWeek.splice(0, this.firstDayOfWeek); - localeDaysOfWeek = ['', ...localeDaysOfWeek, ...daysToBeAddedAtEnd]; + const shifted = localeDaysOfWeek.splice(0, rawFirstDayOfWeek); + localeDaysOfWeek = ['', ...localeDaysOfWeek, ...shifted]; this.$weekHeader.html(localeDaysOfWeek.map((el) => `${el}`).join('')); } @@ -245,72 +252,15 @@ export default class CalendarWidget extends RightDropdownButtonWidget { }; } + getWeekStartDate(date: Dayjs): Dayjs { + const currentISO = date.isoWeekday(); + const diff = (currentISO - this.firstDayOfWeekISO + 7) % 7; + return date.clone().subtract(diff, "day").startOf("day"); + } + getWeekNumber(date: Dayjs): number { - const year = date.year(); - const dayOfWeek = (day: number) => (day - this.firstDayOfWeek + 7) % 7; - - // Get first day of the year and adjust to first week start - const jan1 = date.clone().year(year).month(0).date(1); - const jan1Weekday = jan1.day(); - const dayOffset = dayOfWeek(jan1Weekday); - let firstWeekStart = jan1.clone().subtract(dayOffset, 'day'); - - // Adjust based on week rule - switch (this.weekCalculationOptions.firstWeekType) { - case 1: { // ISO 8601: first week contains Thursday - const thursday = firstWeekStart.clone().add(3, 'day'); // Monday + 3 = Thursday - if (thursday.year() < year) { - firstWeekStart = firstWeekStart.add(7, 'day'); - } - break; - } - case 2: { // minDaysInFirstWeek rule - const daysInFirstWeek = 7 - dayOffset; - if (daysInFirstWeek < this.weekCalculationOptions.minDaysInFirstWeek) { - firstWeekStart = firstWeekStart.add(7, 'day'); - } - break; - } - // default case 0: week containing Jan 1 → already handled - } - - const diffDays = date.startOf('day').diff(firstWeekStart.startOf('day'), 'day'); - const weekNumber = Math.floor(diffDays / 7) + 1; - - // Handle case when date is before first week start → belongs to last week of previous year - if (weekNumber <= 0) { - return this.getWeekNumber(date.subtract(1, 'day')); - } - - // Handle case when date belongs to first week of next year - const nextYear = year + 1; - const jan1Next = date.clone().year(nextYear).month(0).date(1); - const jan1WeekdayNext = jan1Next.day(); - const offsetNext = dayOfWeek(jan1WeekdayNext); - let nextYearWeekStart = jan1Next.clone().subtract(offsetNext, 'day'); - - switch (this.weekCalculationOptions.firstWeekType) { - case 1: { - const thursday = nextYearWeekStart.clone().add(3, 'day'); - if (thursday.year() < nextYear) { - nextYearWeekStart = nextYearWeekStart.add(7, 'day'); - } - break; - } - case 2: { - const daysInFirstWeek = 7 - offsetNext; - if (daysInFirstWeek < this.weekCalculationOptions.minDaysInFirstWeek) { - nextYearWeekStart = nextYearWeekStart.add(7, 'day'); - } - break; - } - } - - if (date.isSameOrAfter(nextYearWeekStart)) { - return 1; - } - - return weekNumber; + const weekStart = this.getWeekStartDate(date); + return weekStart.isoWeek(); } async dropdownShown() { @@ -320,32 +270,25 @@ export default class CalendarWidget extends RightDropdownButtonWidget { } init(activeDate: string | null) { - // attaching time fixes local timezone handling this.activeDate = activeDate ? dayjs(`${activeDate}T12:00:00`) : null; this.todaysDate = dayjs(); this.date = dayjs(this.activeDate || this.todaysDate).startOf('month'); - this.createMonth(); } createDay(dateNotesForMonth: DateNotesForMonth, num: number) { - const $newDay = $("").addClass("calendar-date").attr("data-calendar-date", this.date.local().format('YYYY-MM-DD')); + const $newDay = $("") + .addClass("calendar-date") + .attr("data-calendar-date", this.date.local().format('YYYY-MM-DD')); const $date = $("").html(String(num)); - const dateNoteId = dateNotesForMonth[this.date.local().format('YYYY-MM-DD')]; if (dateNoteId) { - $newDay.addClass("calendar-date-exists"); - $newDay.attr("data-href", `#root/${dateNoteId}`); + $newDay.addClass("calendar-date-exists").attr("data-href", `#root/${dateNoteId}`); } - if (this.date.isSame(this.activeDate, 'day')) { - $newDay.addClass("calendar-date-active"); - } - - if (this.date.isSame(this.todaysDate, 'day')) { - $newDay.addClass("calendar-date-today"); - } + if (this.date.isSame(this.activeDate, 'day')) $newDay.addClass("calendar-date-active"); + if (this.date.isSame(this.todaysDate, 'day')) $newDay.addClass("calendar-date-today"); $newDay.append($date); return $newDay; @@ -353,29 +296,26 @@ export default class CalendarWidget extends RightDropdownButtonWidget { createWeekNumber(weekNumber: number) { const weekNoteId = this.date.local().format('YYYY-') + 'W' + String(weekNumber).padStart(2, '0'); - let $newWeekNumber; + if (this.weekNoteEnable) { - // Utilize the hover effect of calendar-date $newWeekNumber = $("").addClass("calendar-date"); - if (this.weekNotes.includes(weekNoteId)) { - $newWeekNumber.addClass("calendar-date-exists"); - $newWeekNumber.attr("data-href", `#root/${weekNoteId}`); + $newWeekNumber.addClass("calendar-date-exists").attr("data-href", `#root/${weekNoteId}`); } - } else { $newWeekNumber = $("").addClass("calendar-week-number-disabled"); } + $newWeekNumber.addClass("calendar-week-number").attr("data-calendar-week-number", weekNoteId); $newWeekNumber.append($("").html(String(weekNumber))); - return $newWeekNumber; } - private getPrevMonthDays(firstDayOfWeek: number): { weekNumber: number, dates: Dayjs[] } { + // Use isoWeekday() consistently + private getPrevMonthDays(firstDayISO: number): { weekNumber: number, dates: Dayjs[] } { const prevMonthLastDay = this.date.subtract(1, 'month').endOf('month'); - const daysToAdd = (firstDayOfWeek - this.firstDayOfWeek + 7) % 7; + const daysToAdd = (firstDayISO - this.firstDayOfWeekISO + 7) % 7; const dates: Dayjs[] = []; const firstDay = this.date.startOf('month'); @@ -389,18 +329,16 @@ export default class CalendarWidget extends RightDropdownButtonWidget { return { weekNumber, dates }; } - private getNextMonthDays(lastDayOfWeek: number): Dayjs[] { + private getNextMonthDays(lastDayISO: number): Dayjs[] { const nextMonthFirstDay = this.date.add(1, 'month').startOf('month'); const dates: Dayjs[] = []; - const lastDayOfUserWeek = (this.firstDayOfWeek + 6) % 7; - const daysToAdd = (lastDayOfUserWeek - lastDayOfWeek + 7) % 7; + const lastDayOfUserWeek = ((this.firstDayOfWeekISO + 6 - 1) % 7) + 1; // ISO wrap + const daysToAdd = (lastDayOfUserWeek - lastDayISO + 7) % 7; - // Get dates from next month for (let i = 0; i < daysToAdd; i++) { dates.push(nextMonthFirstDay.add(i, 'day')); } - return dates; } @@ -411,12 +349,11 @@ export default class CalendarWidget extends RightDropdownButtonWidget { this.$month.empty(); const firstDay = this.date.startOf('month'); - const firstDayOfWeek = firstDay.day(); - - // Add dates from previous month - if (firstDayOfWeek !== this.firstDayOfWeek) { - const { weekNumber, dates } = this.getPrevMonthDays(firstDayOfWeek); + const firstDayISO = firstDay.isoWeekday(); + // Previous month filler + if (firstDayISO !== this.firstDayOfWeekISO) { + const { weekNumber, dates } = this.getPrevMonthDays(firstDayISO); const prevMonth = this.date.subtract(1, 'month').format('YYYY-MM'); const dateNotesForPrevMonth: DateNotesForMonth = await server.get(`special-notes/notes-for-month/${prevMonth}`); @@ -435,18 +372,16 @@ export default class CalendarWidget extends RightDropdownButtonWidget { const currentMonth = this.date.month(); + // Main month while (this.date.month() === currentMonth) { const weekNumber = this.getWeekNumber(this.date); - - // Add week number if it's first day of week - if (this.date.day() === this.firstDayOfWeek) { + if (this.date.isoWeekday() === this.firstDayOfWeekISO) { const $weekNumber = this.createWeekNumber(weekNumber); this.$month.append($weekNumber); } const $day = this.createDay(dateNotesForMonth, this.date.date()); this.$month.append($day); - this.date = this.date.add(1, 'day'); } // while loop trips over and day is at 30/31, bring it back @@ -454,11 +389,11 @@ export default class CalendarWidget extends RightDropdownButtonWidget { // Add dates from next month const lastDayOfMonth = this.date.endOf('month'); - const lastDayOfWeek = lastDayOfMonth.day(); - const lastDayOfUserWeek = (this.firstDayOfWeek + 6) % 7; - if (lastDayOfWeek !== lastDayOfUserWeek) { - const dates = this.getNextMonthDays(lastDayOfWeek); + const lastDayISO = lastDayOfMonth.isoWeekday(); + const lastDayOfUserWeek = ((this.firstDayOfWeekISO + 6 - 1) % 7) + 1; + if (lastDayISO !== lastDayOfUserWeek) { + const dates = this.getNextMonthDays(lastDayISO); const nextMonth = this.date.add(1, 'month').format('YYYY-MM'); const dateNotesForNextMonth: DateNotesForMonth = await server.get(`special-notes/notes-for-month/${nextMonth}`); @@ -477,9 +412,12 @@ export default class CalendarWidget extends RightDropdownButtonWidget { } async entitiesReloadedEvent({ loadResults }: EventData<"entitiesReloaded">) { - if (!loadResults.getOptionNames().includes("firstDayOfWeek") && - !loadResults.getOptionNames().includes("firstWeekOfYear") && - !loadResults.getOptionNames().includes("minDaysInFirstWeek")) { + const WEEK_OPTIONS: (keyof OptionDefinitions)[] = [ + "firstDayOfWeek", + "firstWeekOfYear", + "minDaysInFirstWeek", + ]; + if (!WEEK_OPTIONS.some(opt => loadResults.getOptionNames().includes(opt))) { return; } diff --git a/apps/client/src/widgets/buttons/global_menu.css b/apps/client/src/widgets/buttons/global_menu.css index 2145b76f9f..0d14456e1a 100644 --- a/apps/client/src/widgets/buttons/global_menu.css +++ b/apps/client/src/widgets/buttons/global_menu.css @@ -55,7 +55,7 @@ button.global-menu-button { .global-menu-button-update-available { position: absolute; - right: -30px; + inset-inline-end: -30px; bottom: -30px; width: 100%; height: 100%; @@ -69,7 +69,7 @@ button.global-menu-button { } .global-menu .zoom-buttons { - margin-left: 2em; + margin-inline-start: 2em; } .global-menu .zoom-buttons a { @@ -79,7 +79,7 @@ button.global-menu-button { color: var(--button-text-color); background-color: var(--button-background-color); padding: 3px; - margin-left: 3px; + margin-inline-start: 3px; text-decoration: none; } @@ -88,15 +88,15 @@ button.global-menu-button { } .global-menu .zoom-state { - margin-left: 5px; - margin-right: 5px; + margin-inline-start: 5px; + margin-inline-end: 5px; } .global-menu .dropdown-item .bx { position: relative; top: 3px; font-size: 120%; - margin-right: 6px; + margin-inline-end: 6px; } /* #region Update available */ diff --git a/apps/client/src/widgets/buttons/global_menu.tsx b/apps/client/src/widgets/buttons/global_menu.tsx index 5c442cb76d..aaf6a785f6 100644 --- a/apps/client/src/widgets/buttons/global_menu.tsx +++ b/apps/client/src/widgets/buttons/global_menu.tsx @@ -58,7 +58,7 @@ export default function GlobalMenu({ isHorizontalLayout }: { isHorizontalLayout: - {isUpdateAvailable && window.open("https://github.com/TriliumNext/Trilium/releases/latest")} icon="bx bx-sync" text={`Version ${latestVersion} is available, click to download.`} /> } + {isUpdateAvailable && window.open("https://github.com/TriliumNext/Trilium/releases/latest")} icon="bx bx-sync" text={t("global_menu.update_available", { latestVersion })} /> } {!isElectron() && } ) diff --git a/apps/client/src/widgets/buttons/right_dropdown_button.ts b/apps/client/src/widgets/buttons/right_dropdown_button.ts index 7442ebdfdf..6d896eae28 100644 --- a/apps/client/src/widgets/buttons/right_dropdown_button.ts +++ b/apps/client/src/widgets/buttons/right_dropdown_button.ts @@ -1,3 +1,4 @@ +import { handleRightToLeftPlacement } from "../../services/utils.js"; import BasicWidget from "../basic_widget.js"; import { Tooltip, Dropdown } from "bootstrap"; type PopoverPlacement = Tooltip.PopoverPlacement; @@ -48,8 +49,8 @@ export default class RightDropdownButtonWidget extends BasicWidget { this.$tooltip = this.$widget.find(".tooltip-trigger").attr("title", this.title); this.tooltip = new Tooltip(this.$tooltip[0], { - placement: this.settings.titlePlacement, - fallbackPlacements: [this.settings.titlePlacement] + placement: handleRightToLeftPlacement(this.settings.titlePlacement), + fallbackPlacements: [ handleRightToLeftPlacement(this.settings.titlePlacement) ] }); this.$widget diff --git a/apps/client/src/widgets/close_zen_button.css b/apps/client/src/widgets/close_zen_button.css index 3ec9f93153..52bbbc086c 100644 --- a/apps/client/src/widgets/close_zen_button.css +++ b/apps/client/src/widgets/close_zen_button.css @@ -11,7 +11,7 @@ body.zen .close-zen-container { display: block; position: fixed; top: 2px; - right: 2px; + inset-inline-end: 2px; z-index: 9999; -webkit-app-region: no-drag; } @@ -21,6 +21,6 @@ body.zen.mobile .close-zen-container { } body.zen.electron:not(.platform-darwin):not(.native-titlebar) .close-zen-container { - left: calc(env(titlebar-area-width) - var(--zen-button-size) - 2px); - right: unset; + inset-inline-start: calc(env(titlebar-area-width) - var(--zen-button-size) - 2px); + inset-inline-end: unset; } \ No newline at end of file diff --git a/apps/client/src/widgets/collections/board/card.tsx b/apps/client/src/widgets/collections/board/card.tsx index 5b663e141a..2879f3a43e 100644 --- a/apps/client/src/widgets/collections/board/card.tsx +++ b/apps/client/src/widgets/collections/board/card.tsx @@ -63,6 +63,14 @@ export default function Card({ setBranchIdToEdit?.(branch.branchId); }, [ setBranchIdToEdit, branch ]); + const handleKeyDown = useCallback((e: KeyboardEvent) => { + if (e.key === "Enter") { + api.openNote(note.noteId); + } else if (e.key === "F2") { + setBranchIdToEdit?.(branch.branchId); + } + }, [ setBranchIdToEdit, note ]); + useEffect(() => { editorRef.current?.focus(); }, [ isEditing ]); @@ -83,9 +91,11 @@ export default function Card({ onDragEnd={handleDragEnd} onContextMenu={handleContextMenu} onClick={!isEditing ? handleOpen : undefined} + onKeyDown={handleKeyDown} style={{ display: !isVisible ? "none" : undefined }} + tabIndex={300} > {!isEditing ? ( <> diff --git a/apps/client/src/widgets/collections/board/column.tsx b/apps/client/src/widgets/collections/board/column.tsx index 01e71c8fff..a6779f30d1 100644 --- a/apps/client/src/widgets/collections/board/column.tsx +++ b/apps/client/src/widgets/collections/board/column.tsx @@ -50,6 +50,12 @@ export default function Column({ openColumnContextMenu(api, e, column); }, [ api, column ]); + const handleTitleKeyDown = useCallback((e: KeyboardEvent) => { + if (e.key === "F2") { + setColumnNameToEdit?.(column); + } + }, [ column ]); + /** Allow using mouse wheel to scroll inside card, while also maintaining column horizontal scrolling. */ const handleScroll = useCallback((event: JSX.TargetedWheelEvent) => { const el = event.currentTarget; @@ -82,7 +88,6 @@ export default function Column({ onDragOver={isAnyColumnDragging ? handleColumnDragOver : handleDragOver} onDragLeave={handleDragLeave} onDrop={handleDrop} - onWheel={handleScroll} style={{ display: !isVisible ? "none" : undefined }} @@ -93,6 +98,8 @@ export default function Column({ onDragStart={handleColumnDragStart} onDragEnd={handleColumnDragEnd} onContextMenu={handleContextMenu} + onKeyDown={handleTitleKeyDown} + tabIndex={300} > {!isEditing ? ( <> @@ -112,33 +119,35 @@ export default function Column({ )} - {(columnItems ?? []).map(({ note, branch }, index) => { - const showIndicatorBefore = dropPosition?.column === column && - dropPosition.index === index && - draggedCard?.noteId !== note.noteId; +
+ {(columnItems ?? []).map(({ note, branch }, index) => { + const showIndicatorBefore = dropPosition?.column === column && + dropPosition.index === index && + draggedCard?.noteId !== note.noteId; - return ( - <> - {showIndicatorBefore && ( -
- )} - - - ); - })} - {dropPosition?.column === column && dropPosition.index === (columnItems?.length ?? 0) && ( -
- )} + return ( + <> + {showIndicatorBefore && ( +
+ )} + + + ); + })} + {dropPosition?.column === column && dropPosition.index === (columnItems?.length ?? 0) && ( +
+ )} - + +
) } @@ -146,11 +155,18 @@ export default function Column({ function AddNewItem({ column, api }: { column: string, api: BoardApi }) { const [ isCreatingNewItem, setIsCreatingNewItem ] = useState(false); const addItemCallback = useCallback(() => setIsCreatingNewItem(true), []); + const handleKeyDown = useCallback((e: KeyboardEvent) => { + if (!isCreatingNewItem && e.key === "Enter") { + setIsCreatingNewItem(true); + } + }, []); return (
{!isCreatingNewItem ? ( <> diff --git a/apps/client/src/widgets/collections/board/index.css b/apps/client/src/widgets/collections/board/index.css index a89a6c5ffa..581408cf61 100644 --- a/apps/client/src/widgets/collections/board/index.css +++ b/apps/client/src/widgets/collections/board/index.css @@ -23,11 +23,12 @@ flex-shrink: 0; border: 2px solid transparent; border-radius: 8px; - padding: 0.5em; background-color: var(--accented-background-color); transition: border-color 0.2s ease; overflow-y: auto; max-height: 100%; + display: flex; + flex-direction: column; } .board-view-container .board-column.drag-over { @@ -37,7 +38,7 @@ .board-view-container .board-column h3 { font-size: 1em; - margin-bottom: 0.75em; + margin: 0; padding: 0.5em 0.5em 0.5em 0.5em; border-bottom: 1px solid var(--main-border-color); cursor: grab; @@ -92,12 +93,18 @@ .board-view-container .board-column .edit-icon { opacity: 0; - margin-left: 0.5em; + margin-inline-start: 0.5em; transition: opacity 0.2s ease; color: var(--muted-text-color); cursor: pointer; } +.board-view-container .board-column > .board-column-content { + flex-grow: 1; + overflow: scroll; + padding: 0.5em; +} + .board-view-container .board-column h3:hover .edit-icon, .board-view-container .board-note:hover .edit-icon { opacity: 1; @@ -121,6 +128,15 @@ font-size: var(--card-font-size); } +.board-view-container .board-note:first-of-type { + margin-top: 0; +} + +.board-view-container :focus { + outline: 3px solid var(--input-focus-outline-color); + outline-offset: 0; +} + .board-view-container .board-note { transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.15s ease, margin-top 0.2s ease; } @@ -130,14 +146,14 @@ } .board-view-container .board-note .icon { - margin-right: 0.25em; + margin-inline-end: 0.25em; display: inline; } .board-view-container .board-note > .edit-icon { position: absolute; top: 8px; - right: 4px; + inset-inline-end: 4px; padding: 2px; background-color: var(--main-background-color); } @@ -149,10 +165,10 @@ .board-view-container .board-note:hover > .edit-icon { position: absolute; top: 8px; - right: 4px; + inset-inline-end: 4px; color: var(--main-text-color); background-color: var(--main-background-color); - padding-left: 6px; + padding-inline-start: 6px; } .board-view-container .board-note.fade-in { @@ -253,7 +269,7 @@ } .board-new-item .icon { - margin-right: 0.25em; + margin-inline-end: 0.25em; } .board-add-column { @@ -280,7 +296,7 @@ } .board-add-column .icon { - margin-right: 0.5em; + margin-inline-end: 0.5em; font-size: 1.2em; } diff --git a/apps/client/src/widgets/collections/board/index.tsx b/apps/client/src/widgets/collections/board/index.tsx index 2e8add6b42..26757229d1 100644 --- a/apps/client/src/widgets/collections/board/index.tsx +++ b/apps/client/src/widgets/collections/board/index.tsx @@ -227,10 +227,12 @@ export function TitleEditor({ currentValue, placeholder, save, dismiss, multilin isNewItem?: boolean; }) { const inputRef = useRef(null); + const focusElRef = useRef(null); const dismissOnNextRefreshRef = useRef(false); const shouldDismiss = useRef(false); useEffect(() => { + focusElRef.current = document.activeElement; inputRef.current?.focus(); inputRef.current?.select(); }, [ inputRef ]); @@ -254,8 +256,11 @@ export function TitleEditor({ currentValue, placeholder, save, dismiss, multilin onKeyDown={(e: TargetedKeyboardEvent) => { if (e.key === "Enter" || e.key === "Escape") { e.preventDefault(); + e.stopPropagation(); shouldDismiss.current = (e.key === "Escape"); - e.currentTarget.blur(); + if (focusElRef.current instanceof HTMLElement) { + focusElRef.current.focus(); + } } }} onBlur={(newValue) => { diff --git a/apps/client/src/widgets/collections/calendar/index.css b/apps/client/src/widgets/collections/calendar/index.css index 2255cc1d0a..e6649e53f3 100644 --- a/apps/client/src/widgets/collections/calendar/index.css +++ b/apps/client/src/widgets/collections/calendar/index.css @@ -13,8 +13,8 @@ .search-result-widget-content .calendar-view { position: absolute; top: 0; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; bottom: 0; } @@ -67,10 +67,10 @@ } body.desktop:not(.zen) .calendar-view .calendar-header { - padding-right: 5em; + padding-inline-end: 5em; } .search-result-widget-content .calendar-view .calendar-header { - padding-right: unset !important; + padding-inline-end: unset !important; } /* #endregion */ \ No newline at end of file diff --git a/apps/client/src/widgets/collections/calendar/index.tsx b/apps/client/src/widgets/collections/calendar/index.tsx index d7112ca39a..6527826460 100644 --- a/apps/client/src/widgets/collections/calendar/index.tsx +++ b/apps/client/src/widgets/collections/calendar/index.tsx @@ -4,7 +4,7 @@ import Calendar from "./calendar"; import { useCallback, useEffect, useMemo, useRef, useState } from "preact/hooks"; import "./index.css"; import { useNoteLabel, useNoteLabelBoolean, useResizeObserver, useSpacedUpdate, useTriliumEvent, useTriliumOption, useTriliumOptionInt } from "../../react/hooks"; -import { LOCALE_IDS } from "@triliumnext/commons"; +import { DISPLAYABLE_LOCALE_IDS } from "@triliumnext/commons"; import { Calendar as FullCalendar } from "@fullcalendar/core"; import { parseStartEndDateFromEvent, parseStartEndTimeFromEvent } from "./utils"; import dialog from "../../../services/dialog"; @@ -62,7 +62,7 @@ const CALENDAR_VIEWS = [ const SUPPORTED_CALENDAR_VIEW_TYPE = CALENDAR_VIEWS.map(v => v.type); // Here we hard-code the imports in order to ensure that they are embedded by webpack without having to load all the languages. -export const LOCALE_MAPPINGS: Record Promise<{ default: LocaleInput }>) | null> = { +export const LOCALE_MAPPINGS: Record Promise<{ default: LocaleInput }>) | null> = { de: () => import("@fullcalendar/core/locales/de"), es: () => import("@fullcalendar/core/locales/es"), fr: () => import("@fullcalendar/core/locales/fr"), @@ -71,9 +71,12 @@ export const LOCALE_MAPPINGS: Record Promise<{ default: Local ro: () => import("@fullcalendar/core/locales/ro"), ru: () => import("@fullcalendar/core/locales/ru"), ja: () => import("@fullcalendar/core/locales/ja"), + pt: () => import("@fullcalendar/core/locales/pt"), "pt_br": () => import("@fullcalendar/core/locales/pt-br"), uk: () => import("@fullcalendar/core/locales/uk"), - en: null + en: null, + "en_rtl": null, + ar: () => import("@fullcalendar/core/locales/ar") }; export default function CalendarView({ note, noteIds }: ViewModeProps) { diff --git a/apps/client/src/widgets/collections/geomap/index.css b/apps/client/src/widgets/collections/geomap/index.css index 6b8b27d457..9fc5dee636 100644 --- a/apps/client/src/widgets/collections/geomap/index.css +++ b/apps/client/src/widgets/collections/geomap/index.css @@ -36,14 +36,14 @@ .geo-map-container .leaflet-div-icon .icon-shadow { position: absolute; top: 0; - left: 0; + inset-inline-start: 0; z-index: -1; } .geo-map-container .leaflet-div-icon .bx { position: absolute; top: 3px; - left: 2px; + inset-inline-start: 2px; background-color: white; color: black; padding: 2px; @@ -55,7 +55,7 @@ display: block; position: absolute; top: 100%; - left: 50%; + inset-inline-start: 50%; transform: translateX(-50%); font-size: 0.75rem; height: 1rem; @@ -68,6 +68,10 @@ overflow: hidden; } +body[dir=rtl] .geo-map-container .leaflet-div-icon .title-label { + transform: translateX(50%); +} + .geo-map-container .leaflet-div-icon .archived { opacity: 0.5; } diff --git a/apps/client/src/widgets/collections/legacy/ListOrGridView.css b/apps/client/src/widgets/collections/legacy/ListOrGridView.css index 784dcfa49c..3a62b85b37 100644 --- a/apps/client/src/widgets/collections/legacy/ListOrGridView.css +++ b/apps/client/src/widgets/collections/legacy/ListOrGridView.css @@ -57,7 +57,7 @@ .note-book-header .note-icon { font-size: 100%; display: inline-block; - padding-right: 7px; + padding-inline-end: 7px; position: relative; } diff --git a/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx b/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx index b88812d729..274ef21110 100644 --- a/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx +++ b/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx @@ -59,8 +59,8 @@ function ListNoteCard({ note, parentNote, expand, highlightedTokens }: { note: F const [ isExpanded, setExpanded ] = useState(expand); const notePath = getNotePath(parentNote, note); - // Reset expand state if switching to another note. - useEffect(() => setExpanded(expand), [ note ]); + // Reset expand state if switching to another note, or if user manually toggled expansion state. + useEffect(() => setExpanded(expand), [ note, expand ]); return (
- {persistenceProps && ( + {rowData !== undefined && persistenceProps && ( <> extends Omit({ className, columns, data, modules, tabulatorRef: externalTabulatorRef, footerElement, events, index, ...restProps }: TableProps) { +export default function Tabulator({ className, columns, data, modules, tabulatorRef: externalTabulatorRef, footerElement, events, index, dataTree, ...restProps }: TableProps) { const parentComponent = useContext(ParentComponent); const containerRef = useRef(null); const tabulatorRef = useRef(null); @@ -36,6 +36,7 @@ export default function Tabulator({ className, columns, data, modules, tabula data, footerElement: (parentComponent && isValidElement(footerElement) ? renderReactWidget(parentComponent, footerElement)[0] : undefined), index: index as string | number | undefined, + dataTree, ...restProps }); @@ -45,7 +46,7 @@ export default function Tabulator({ className, columns, data, modules, tabula }); return () => tabulator.destroy(); - }, []); + }, [ dataTree ] ); useEffect(() => { const tabulator = tabulatorRef.current; diff --git a/apps/client/src/widgets/containers/root_container.ts b/apps/client/src/widgets/containers/root_container.ts index 6c2d87521d..bd1ae9719a 100644 --- a/apps/client/src/widgets/containers/root_container.ts +++ b/apps/client/src/widgets/containers/root_container.ts @@ -3,6 +3,7 @@ import FlexContainer from "./flex_container.js"; import options from "../../services/options.js"; import type BasicWidget from "../basic_widget.js"; import utils from "../../services/utils.js"; +import { LOCALES } from "@triliumnext/commons"; /** * The root container is the top-most widget/container, from which the entire layout derives. @@ -32,6 +33,7 @@ export default class RootContainer extends FlexContainer { this.#setMotion(options.is("motionEnabled")); this.#setShadows(options.is("shadowsEnabled")); this.#setBackdropEffects(options.is("backdropEffectsEnabled")); + this.#setLocaleAndDirection(options.get("locale")); return super.render(); } @@ -68,6 +70,12 @@ export default class RootContainer extends FlexContainer { #setBackdropEffects(enabled: boolean) { document.body.classList.toggle("backdrop-effects-disabled", !enabled); } + + #setLocaleAndDirection(locale: string) { + const correspondingLocale = LOCALES.find(l => l.id === locale); + document.body.lang = locale; + document.body.dir = correspondingLocale?.rtl ? "rtl" : "ltr"; + } } function getViewportHeight() { diff --git a/apps/client/src/widgets/dialogs/bulk_actions.css b/apps/client/src/widgets/dialogs/bulk_actions.css index 5f103feea9..d6c8aec20e 100644 --- a/apps/client/src/widgets/dialogs/bulk_actions.css +++ b/apps/client/src/widgets/dialogs/bulk_actions.css @@ -4,7 +4,7 @@ .bulk-actions-dialog .bulk-available-action-list button { padding: 2px 7px; - margin-right: 10px; + margin-inline-end: 10px; margin-bottom: 5px; } @@ -19,7 +19,7 @@ .bulk-actions-dialog .bulk-existing-action-list .button-column { width: 50px; white-space: nowrap; - text-align: right; + text-align: end; } .bulk-actions-dialog .bulk-existing-action-list .button-column > * { diff --git a/apps/client/src/widgets/dialogs/export.css b/apps/client/src/widgets/dialogs/export.css index a3916d1be3..a0903b06c6 100644 --- a/apps/client/src/widgets/dialogs/export.css +++ b/apps/client/src/widgets/dialogs/export.css @@ -4,11 +4,11 @@ } .export-dialog form .format-choice { - padding-left: 40px; + padding-inline-start: 40px; } .export-dialog form .opml-versions { - padding-left: 60px; + padding-inline-start: 60px; } .export-dialog form .form-check-label { diff --git a/apps/client/src/widgets/dialogs/popup_editor.ts b/apps/client/src/widgets/dialogs/popup_editor.ts index 2da80a3d82..128aadc6ed 100644 --- a/apps/client/src/widgets/dialogs/popup_editor.ts +++ b/apps/client/src/widgets/dialogs/popup_editor.ts @@ -45,8 +45,8 @@ const TPL = /*html*/`\ .modal.popup-editor-dialog .classic-toolbar-widget { position: sticky; top: 0; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; background: var(--modal-background-color); z-index: 998; } diff --git a/apps/client/src/widgets/dialogs/revisions.tsx b/apps/client/src/widgets/dialogs/revisions.tsx index 65c7dfd2c6..b21a36fafc 100644 --- a/apps/client/src/widgets/dialogs/revisions.tsx +++ b/apps/client/src/widgets/dialogs/revisions.tsx @@ -91,7 +91,7 @@ export default function RevisionsDialog() { ) } - footer={} + footer={} footerStyle={{ paddingTop: 0, paddingBottom: 0 }} onHidden={() => { setShown(false); @@ -115,16 +115,16 @@ export default function RevisionsDialog() {
- { setRefreshCounter(c => c + 1); @@ -138,7 +138,7 @@ export default function RevisionsDialog() { function RevisionsList({ revisions, onSelect, currentRevision }: { revisions: RevisionItem[], onSelect: (val: string) => void, currentRevision?: RevisionItem }) { return ( - {revisions.map((item) => + {revisions.map((item) => >, onRevisionDeleted?: () => void @@ -163,7 +163,7 @@ function RevisionPreview({noteContent, revisionItem, showDiff, setShown, onRevis if (revisionItem) { server.get(`revisions/${revisionItem.revisionId}`).then(setFullRevision); } else { - setFullRevision(undefined); + setFullRevision(undefined); } }, [revisionItem]); @@ -242,11 +242,11 @@ function RevisionContent({ noteContent, revisionItem, fullRevision, showDiff }: return case "code": return
{content}
; - case "image": + case "image": switch (revisionItem.mime) { case "image/svg+xml": { //Base64 of other format images may be embedded in svg - const encodedSVG = encodeURIComponent(content as string); + const encodedSVG = encodeURIComponent(content as string); return ; @@ -355,7 +355,7 @@ function RevisionFooter({ note }: { note?: FNote }) { if (revisionsNumberLimit === -1) { revisionsNumberLimit = "∞"; } - + return <> {t("revisions.snapshot_interval", { seconds: options.getInt("revisionSnapshotTimeInterval") })} @@ -376,4 +376,4 @@ async function getNote(noteId?: string | null) { } else { return appContext.tabManager.getActiveContextNote(); } -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/find.ts b/apps/client/src/widgets/find.ts index 68d61541fe..d694d087ad 100644 --- a/apps/client/src/widgets/find.ts +++ b/apps/client/src/widgets/find.ts @@ -32,7 +32,7 @@ const TPL = /*html*/` } .find-widget-box > *, .replace-widget-box > *{ - margin-right: 15px; + margin-inline-end: 15px; } .find-widget-box, .replace-widget-box { @@ -167,7 +167,7 @@ export default class FindWidget extends NoteContextAwareWidget { if (isIMEComposing(e.originalEvent as KeyboardEvent)) { return; } - + if ((e.metaKey || e.ctrlKey) && (e.key === "F" || e.key === "f")) { // If ctrl+f is pressed when the findbox is shown, select the // whole input to find diff --git a/apps/client/src/widgets/highlights_list.ts b/apps/client/src/widgets/highlights_list.ts index c9843a4797..5023facb90 100644 --- a/apps/client/src/widgets/highlights_list.ts +++ b/apps/client/src/widgets/highlights_list.ts @@ -24,7 +24,7 @@ const TPL = /*html*/`
} .highlights-list > ol { - padding-left: 20px; + padding-inline-start: 20px; } .highlights-list li { diff --git a/apps/client/src/widgets/icon_list.ts b/apps/client/src/widgets/icon_list.ts index 6282d8b606..a152e9a342 100644 --- a/apps/client/src/widgets/icon_list.ts +++ b/apps/client/src/widgets/icon_list.ts @@ -2090,14 +2090,14 @@ const icons: Icon[] = [ term: ["keypad"] }, { - name: "border-right", - slug: "border-right-regular", + name: "border-inline-end", + slug: "border-inline-end-regular", category_id: 111, type_of_icon: "REGULAR" }, { - name: "border-left", - slug: "border-left-regular", + name: "border-inline-start", + slug: "border-inline-start-regular", category_id: 111, type_of_icon: "REGULAR" }, diff --git a/apps/client/src/widgets/llm_chat/ui.ts b/apps/client/src/widgets/llm_chat/ui.ts index a17167840d..15d4802ca8 100644 --- a/apps/client/src/widgets/llm_chat/ui.ts +++ b/apps/client/src/widgets/llm_chat/ui.ts @@ -9,7 +9,7 @@ import { formatMarkdown, applyHighlighting } from "./utils.js"; export const TPL = `
- +
diff --git a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx index a9e88246e3..255ac8c99e 100644 --- a/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx +++ b/apps/client/src/widgets/mobile_widgets/mobile_detail_menu.tsx @@ -25,7 +25,7 @@ export default function MobileDetailMenu() { { title: t("mobile_detail_menu.insert_child_note"), command: "insertChildNote", uiIcon: "bx bx-plus", enabled: note?.type !== "search" }, { title: t("mobile_detail_menu.delete_this_note"), command: "delete", uiIcon: "bx bx-trash", enabled: note?.noteId !== "root" }, { kind: "separator" }, - { title: "Note revisions", command: "showRevisions", uiIcon: "bx bx-history" } + { title: t("mobile_detail_menu.note_revisions"), command: "showRevisions", uiIcon: "bx bx-history" } ], selectMenuItemHandler: async ({ command }) => { if (command === "insertChildNote") { diff --git a/apps/client/src/widgets/mobile_widgets/sidebar_container.ts b/apps/client/src/widgets/mobile_widgets/sidebar_container.ts index b01d5ff12e..ef719d36a9 100644 --- a/apps/client/src/widgets/mobile_widgets/sidebar_container.ts +++ b/apps/client/src/widgets/mobile_widgets/sidebar_container.ts @@ -27,6 +27,7 @@ export default class SidebarContainer extends FlexContainer { private backdropEl!: HTMLElement; private originalSidebarTransition: string; private originalBackdropTransition: string; + private screenWidth: number; constructor(screenName: Screen, direction: FlexDirection) { super(direction); @@ -37,6 +38,7 @@ export default class SidebarContainer extends FlexContainer { this.dragState = DRAG_STATE_NONE; this.originalSidebarTransition = ""; this.originalBackdropTransition = ""; + this.screenWidth = document.body.getBoundingClientRect().width; } doRender() { @@ -51,7 +53,9 @@ export default class SidebarContainer extends FlexContainer { const x = "touches" in e ? e.touches[0].clientX : e.clientX; this.startX = x; - if (x > 30 && this.currentTranslate === -100) { + // Prevent dragging if too far from the edge of the screen and the menu is closed. + let dragRefX = glob.isRtl ? this.screenWidth - x : x; + if (dragRefX > 30 && this.currentTranslate === -100) { return; } @@ -66,7 +70,7 @@ export default class SidebarContainer extends FlexContainer { } const x = "touches" in e ? e.touches[0].clientX : e.clientX; - const deltaX = x - this.startX; + const deltaX = glob.isRtl ? this.startX - x : x - this.startX; if (this.dragState === DRAG_STATE_INITIAL_DRAG) { if (this.currentTranslate === -100 ? deltaX > DRAG_CLOSED_START_THRESHOLD : deltaX < -DRAG_OPENED_START_THRESHOLD) { /* Disable the transitions since they affect performance, they are going to reenabled once drag ends. */ @@ -85,10 +89,15 @@ export default class SidebarContainer extends FlexContainer { } } else if (this.dragState === DRAG_STATE_DRAGGING) { const width = this.sidebarEl.offsetWidth; - const translatePercentage = Math.min(0, Math.max(this.currentTranslate + (deltaX / width) * 100, -100)); + let translatePercentage = Math.min(0, Math.max(this.currentTranslate + (deltaX / width) * 100, -100)); + const backdropOpacity = Math.max(0, 1 + translatePercentage / 100); this.translatePercentage = translatePercentage; - this.sidebarEl.style.transform = `translateX(${translatePercentage}%)`; - this.backdropEl.style.opacity = String(Math.max(0, 1 + translatePercentage / 100)); + if (glob.isRtl) { + this.sidebarEl.style.transform = `translateX(${-translatePercentage}%)`; + } else { + this.sidebarEl.style.transform = `translateX(${translatePercentage}%)`; + } + this.backdropEl.style.opacity = String(backdropOpacity); } // Consume the event to prevent the user from doing the back to previous page gesture on iOS. @@ -149,7 +158,15 @@ export default class SidebarContainer extends FlexContainer { } this.sidebarEl.classList.toggle("show", isOpen); - this.sidebarEl.style.transform = isOpen ? "translateX(0)" : "translateX(-100%)"; + if (isOpen) { + this.sidebarEl.style.transform = "translateX(0)"; + } else { + if (glob.isRtl) { + this.sidebarEl.style.transform = "translateX(100%)" + } else { + this.sidebarEl.style.transform = "translateX(-100%)"; + } + } this.sidebarEl.style.transition = this.originalSidebarTransition; this.backdropEl.classList.toggle("show", isOpen); diff --git a/apps/client/src/widgets/note_icon.css b/apps/client/src/widgets/note_icon.css index 8dbea40b55..a05be824d8 100644 --- a/apps/client/src/widgets/note_icon.css +++ b/apps/client/src/widgets/note_icon.css @@ -1,6 +1,6 @@ .note-icon-widget { - padding-left: 7px; - margin-right: 0; + padding-inline-start: 7px; + margin-inline-end: 0; width: 50px; height: 50px; } @@ -29,15 +29,15 @@ .note-icon-widget .filter-row { padding-top: 10px; padding-bottom: 10px; - padding-right: 20px; + padding-inline-end: 20px; display: flex; align-items: baseline; } .note-icon-widget .filter-row span { display: block; - padding-left: 15px; - padding-right: 15px; + padding-inline-start: 15px; + padding-inline-end: 15px; font-weight: bold; } diff --git a/apps/client/src/widgets/note_map/NoteMap.css b/apps/client/src/widgets/note_map/NoteMap.css index e350af7398..fa49bb39c6 100644 --- a/apps/client/src/widgets/note_map/NoteMap.css +++ b/apps/client/src/widgets/note_map/NoteMap.css @@ -17,7 +17,7 @@ /* removing default appearance */ -webkit-appearance: none; appearance: none; - margin-left: 15px; + margin-inline-start: 15px; width: 150px; } diff --git a/apps/client/src/widgets/note_tree.ts b/apps/client/src/widgets/note_tree.ts index 4636cd60d1..f4f600929a 100644 --- a/apps/client/src/widgets/note_tree.ts +++ b/apps/client/src/widgets/note_tree.ts @@ -61,7 +61,7 @@ const TPL = /*html*/` display: flex; align-items: flex-end; justify-content: flex-end; - right: 17px; + inset-inline-end: 17px; border-radius: 7px; border: 1px solid var(--main-border-color); } @@ -82,15 +82,15 @@ const TPL = /*html*/` } .collapse-tree-button { - right: 100px; + inset-inline-end: 100px; } .scroll-to-active-note-button { - right: 55px; + inset-inline-end: 55px; } .tree-settings-button { - right: 10px; + inset-inline-end: 10px; } .tree-settings-popup { diff --git a/apps/client/src/widgets/promoted_attributes.ts b/apps/client/src/widgets/promoted_attributes.ts index 1b67ecec16..5853e1d87e 100644 --- a/apps/client/src/widgets/promoted_attributes.ts +++ b/apps/client/src/widgets/promoted_attributes.ts @@ -45,7 +45,7 @@ const TPL = /*html*/` } .promoted-attribute-cell div.input-group { - margin-left: 10px; + margin-inline-start: 10px; display: flex; min-height: 40px; } @@ -95,8 +95,8 @@ const TPL = /*html*/` content: ""; position: absolute; top: 10px; - left: 0px; - right: 0; + inset-inline-start: 0px; + inset-inline-end: 0; height: 2px; background: rgba(0, 0, 0, 0.5); transform: rotate(45deg); diff --git a/apps/client/src/widgets/quick_search.ts b/apps/client/src/widgets/quick_search.ts index 33b770a745..cc326df983 100644 --- a/apps/client/src/widgets/quick_search.ts +++ b/apps/client/src/widgets/quick_search.ts @@ -2,7 +2,7 @@ import BasicWidget from "./basic_widget.js"; import server from "../services/server.js"; import linkService from "../services/link.js"; import froca from "../services/froca.js"; -import utils from "../services/utils.js"; +import utils, { handleRightToLeftPlacement } from "../services/utils.js"; import appContext from "../components/app_context.js"; import shortcutService, { isIMEComposing } from "../services/shortcuts.js"; import { t } from "../services/i18n.js"; @@ -15,12 +15,12 @@ const TPL = /*html*/` padding: 10px 10px 10px 0px; height: 50px; } - + .quick-search button, .quick-search input { border: 0; font-size: 100% !important; } - + .quick-search .dropdown-menu { --quick-search-item-delimiter-color: var(--dropdown-border-color); @@ -32,40 +32,40 @@ const TPL = /*html*/` text-overflow: ellipsis; box-shadow: -30px 50px 93px -50px black; } - + .quick-search .dropdown-item { white-space: normal; padding: 12px 16px; line-height: 1.4; position: relative; } - + .quick-search .dropdown-item + .dropdown-item::after { content: ''; position: absolute; - left: 0; + inset-inline-start: 0; top: 0; width: 100%; height: 1px; border-bottom: 1px solid var(--quick-search-item-delimiter-color); } - + .quick-search .dropdown-item:last-child::after { display: none; } - + .quick-search .dropdown-item.disabled::after { display: none; } - + .quick-search .dropdown-item.show-in-full-search::after { display: none; } - + .quick-search-item.dropdown-item:hover { background-color: #f8f9fa; } - + .quick-search .quick-search-item { width: 100%; } @@ -151,7 +151,7 @@ export default class QuickSearchWidget extends BasicWidget { private dropdown!: bootstrap.Dropdown; private $searchString!: JQuery; private $dropdownMenu!: JQuery; - + // State for infinite scrolling private allSearchResults: Array = []; private allSearchResultNoteIds: string[] = []; @@ -172,7 +172,7 @@ export default class QuickSearchWidget extends BasicWidget { }); this.$widget.find(".input-group-prepend").on("shown.bs.dropdown", () => this.search()); - + // Add scroll event listener for infinite scrolling this.$dropdownMenu.on("scroll", () => { this.handleScroll(); @@ -187,7 +187,7 @@ export default class QuickSearchWidget extends BasicWidget { if (originalEvent && isIMEComposing(originalEvent)) { return; } - + if (e.which === 13) { if (this.$dropdownMenu.is(":visible")) { this.search(); // just update already visible dropdown @@ -248,7 +248,7 @@ export default class QuickSearchWidget extends BasicWidget { let tooltip = new Tooltip(this.$searchString[0], { trigger: "manual", title: `Search error: ${error}`, - placement: "right" + placement: handleRightToLeftPlacement("right") }); tooltip.show(); @@ -293,40 +293,40 @@ export default class QuickSearchWidget extends BasicWidget { if (!noteId) continue; const $item = $(''); - + // Build the display HTML with content snippet below the title let itemHtml = `
${result.highlightedNotePathTitle}
`; - + // Add attribute snippet (tags/attributes) below the title if available if (result.highlightedAttributeSnippet) { // Replace
with a blank space to join the atributes on the same single line const snippet = (result.highlightedAttributeSnippet as string).replace(//g, " "); itemHtml += `
${snippet}
`; } - + // Add content snippet below the attributes if available if (result.highlightedContentSnippet) { itemHtml += `
${result.highlightedContentSnippet}
`; } - + itemHtml += `
`; - + $item.html(itemHtml); - + $item.on("click", (e) => { this.dropdown.hide(); e.preventDefault(); - + const activeContext = appContext.tabManager.getActiveContext(); if (activeContext) { activeContext.setNote(noteId); } }); - + shortcutService.bindElShortcut($item, "return", () => { this.dropdown.hide(); @@ -390,7 +390,7 @@ export default class QuickSearchWidget extends BasicWidget { // Trigger loading more when user scrolls near the bottom (within 50px) if (scrollTop + clientHeight >= scrollHeight - 50) { const totalResults = this.allSearchResults.length > 0 ? this.allSearchResults.length : this.allSearchResultNoteIds.length; - + if (this.currentDisplayedCount < totalResults) { this.displayMoreResults(LOAD_MORE_BATCH_SIZE).then(() => { this.addShowInFullSearchButton(); diff --git a/apps/client/src/widgets/react/FormList.tsx b/apps/client/src/widgets/react/FormList.tsx index 3ab37c7bf5..ca5fcf66e0 100644 --- a/apps/client/src/widgets/react/FormList.tsx +++ b/apps/client/src/widgets/react/FormList.tsx @@ -5,7 +5,7 @@ import { useEffect, useMemo, useRef, useState, type CSSProperties } from "preact import "./FormList.css"; import { CommandNames } from "../../components/app_context"; import { useStaticTooltip } from "./hooks"; -import { isMobile } from "../../services/utils"; +import { handleRightToLeftPlacement, isMobile } from "../../services/utils"; interface FormListOpts { children: ComponentChildren; @@ -95,8 +95,8 @@ interface FormListItemOpts { } const TOOLTIP_CONFIG: Partial = { - placement: "right", - fallbackPlacements: [ "right" ] + placement: handleRightToLeftPlacement("right"), + fallbackPlacements: [ handleRightToLeftPlacement("right") ] } export function FormListItem({ className, icon, value, title, active, disabled, checked, container, onClick, selected, rtl, triggerCommand, description, ...contentProps }: FormListItemOpts) { diff --git a/apps/client/src/widgets/react/FormToggle.css b/apps/client/src/widgets/react/FormToggle.css index f727bc5ff6..9418391430 100644 --- a/apps/client/src/widgets/react/FormToggle.css +++ b/apps/client/src/widgets/react/FormToggle.css @@ -18,7 +18,7 @@ .switch-widget .switch-button { display: block; position: relative; - margin-left: 8px; + margin-inline-start: 8px; width: var(--switch-track-width); height: var(--switch-track-height); border-radius: 24px; @@ -40,7 +40,7 @@ content: ""; position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: var(--switch-thumb-width); height: var(--switch-thumb-height); background-color: var(--switch-off-thumb-background); @@ -50,6 +50,10 @@ background 200ms ease-out; } +body[dir=rtl] .switch-widget .switch-button:after { + --x: calc(var(--y) * -1); +} + .switch-widget .switch-button.on:after { --x: calc(var(--switch-track-width) - var(--switch-thumb-width) - var(--y)); @@ -58,12 +62,16 @@ background 100ms ease-in; } +body[dir=rtl] .switch-widget .switch-button.on:after { + --x: calc((var(--switch-track-width) - var(--switch-thumb-width) - var(--y)) * -1); +} + .switch-widget .switch-button input[type="checkbox"] { /* A hidden check box for accesibility purposes */ position: absolute; top: 0; - left: 0; + inset-inline-start: 0; width: 100%; height: 100%; opacity: 0; @@ -86,7 +94,7 @@ .switch-widget .switch-help-button { border: 0; - margin-left: 4px; + margin-inline-start: 4px; background: none; cursor: pointer; font-size: 1.1em; diff --git a/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx b/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx index 6039053b50..b7ef4fa0ed 100644 --- a/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx +++ b/apps/client/src/widgets/ribbon/BasicPropertiesTab.tsx @@ -353,7 +353,7 @@ function NoteLanguageSwitch({ note }: { note?: FNote | null }) { >{t("note_language.configure-languages")} - + -
{t("ancestor.depth_label")}:
+
{t("ancestor.depth_label")}:
(null); const editorRef = useRef(); + const [ locale ] = useTriliumOption("locale"); const { showTooltip, hideTooltip } = useTooltip(wrapperRef, { trigger: "focus", @@ -308,7 +309,8 @@ export default function AttributeEditor({ api, note, componentId, notePath, ntxI toolbar: { items: [] }, placeholder: t("attribute_editor.placeholder"), mention: { feeds: mentionSetup }, - licenseKey: "GPL" + licenseKey: "GPL", + language: "en" }} onChange={(currentValue) => { currentValueRef.current = currentValue ?? ""; diff --git a/apps/client/src/widgets/ribbon/style.css b/apps/client/src/widgets/ribbon/style.css index 276256e252..495032457f 100644 --- a/apps/client/src/widgets/ribbon/style.css +++ b/apps/client/src/widgets/ribbon/style.css @@ -11,7 +11,7 @@ display: flex; flex-direction: row; justify-content: center; - margin-left: 10px; + margin-inline-start: 10px; flex-grow: 1; flex-flow: row wrap; } @@ -49,7 +49,7 @@ } .ribbon-tab-title:first-of-type { - padding-left: 10px; + padding-inline-start: 10px; } .ribbon-tab-spacer { @@ -70,19 +70,19 @@ .ribbon-button-container { display: flex; border-bottom: 1px solid var(--main-border-color); - margin-right: 5px; + margin-inline-end: 5px; } .ribbon-button-container > * { position: relative; top: -3px; - margin-left: 10px; + margin-inline-start: 10px; } .ribbon-body { border-bottom: 1px solid var(--main-border-color); - margin-left: 10px; - margin-right: 5px; /* needs to have this value so that the bottom border is the same width as the top one */ + margin-inline-start: 10px; + margin-inline-end: 5px; /* needs to have this value so that the bottom border is the same width as the top one */ } .ribbon-body.active { @@ -105,7 +105,7 @@ .basic-properties-widget > * { margin-top: 9px; margin-bottom: 2px; - margin-right: 30px; + margin-inline-end: 30px; } .note-type-container, @@ -262,7 +262,7 @@ .note-map-ribbon-widget .open-full-button, .note-map-ribbon-widget .collapse-button { position: absolute; - right: 5px; + inset-inline-end: 5px; bottom: 5px; z-index: 1000; } @@ -285,6 +285,11 @@ transition: opacity .1s linear; } +body[dir=rtl] .attribute-list-editor { + padding: 0 5px 0 100px !important; + text-align: right !important; +} + .attribute-list-editor.ck-content .mention { color: var(--muted-text-color) !important; background: transparent !important; @@ -294,7 +299,7 @@ display: flex; position: absolute; top: 0; - right: 0; + inset-inline-end: 0; bottom: 0; align-items: center; gap: 10px; @@ -308,8 +313,8 @@ /* #region Owned Attributes */ .attribute-list { - margin-left: 7px; - margin-right: 7px; + margin-inline-start: 7px; + margin-inline-end: 7px; margin-top: 5px; margin-bottom: 2px; position: relative; @@ -359,7 +364,7 @@ } .book-properties-widget input[type="checkbox"] { - margin-right: 5px; + margin-inline-end: 5px; } .book-properties-widget label { @@ -394,7 +399,7 @@ /* minimal width so that table remains static sized and most space remains for middle column with settings */ width: 50px; white-space: nowrap; - text-align: right; + text-align: end; vertical-align: middle; } @@ -446,7 +451,7 @@ position: relative; top: 3px; font-size: 120%; - margin-right: 5px; + margin-inline-end: 5px; } .note-actions .dropdown-item[disabled], .note-actions .dropdown-item[disabled]:hover { diff --git a/apps/client/src/widgets/sql_table_schemas.css b/apps/client/src/widgets/sql_table_schemas.css index d13a71dfd4..d6c1c8f95e 100644 --- a/apps/client/src/widgets/sql_table_schemas.css +++ b/apps/client/src/widgets/sql_table_schemas.css @@ -1,6 +1,6 @@ .sql-table-schemas-widget { padding: 12px; - padding-right: 10%; + padding-inline-end: 10%; contain: none !important; } diff --git a/apps/client/src/widgets/sync_status.ts b/apps/client/src/widgets/sync_status.ts index d6bd8b6756..3ce6710348 100644 --- a/apps/client/src/widgets/sync_status.ts +++ b/apps/client/src/widgets/sync_status.ts @@ -3,7 +3,7 @@ import BasicWidget from "./basic_widget.js"; import ws from "../services/ws.js"; import options from "../services/options.js"; import syncService from "../services/sync.js"; -import { escapeQuotes } from "../services/utils.js"; +import { escapeQuotes, handleRightToLeftPlacement } from "../services/utils.js"; import { Tooltip } from "bootstrap"; import { WebSocketMessage } from "@triliumnext/commons"; @@ -27,7 +27,7 @@ const TPL = /*html*/` .sync-status .sync-status-sub-icon { font-size: 40%; position: absolute; - left: 0; + inset-inline-start: 0; top: 16px; } @@ -109,8 +109,8 @@ export default class SyncStatusWidget extends BasicWidget { Tooltip.getOrCreateInstance(this.$widget.find(`.sync-status-${className}`)[0], { html: true, - placement: this.settings.titlePlacement, - fallbackPlacements: [this.settings.titlePlacement] + placement: handleRightToLeftPlacement(this.settings.titlePlacement), + fallbackPlacements: [ handleRightToLeftPlacement(this.settings.titlePlacement) ] }); this.$widget.show(); diff --git a/apps/client/src/widgets/tab_row.ts b/apps/client/src/widgets/tab_row.ts index c13aa4969b..c2405aaed7 100644 --- a/apps/client/src/widgets/tab_row.ts +++ b/apps/client/src/widgets/tab_row.ts @@ -155,8 +155,8 @@ const TAB_ROW_TPL = ` } .tab-row-widget .note-tab[is-mini] .note-tab-wrapper { - padding-left: 2px; - padding-right: 2px; + padding-inline-start: 2px; + padding-inline-end: 2px; } .tab-row-widget .note-tab .note-tab-title { @@ -168,11 +168,11 @@ const TAB_ROW_TPL = ` .tab-row-widget .note-tab .note-tab-icon { position: relative; - padding-right: 3px; + padding-inline-end: 3px; } .tab-row-widget .note-tab[is-small] .note-tab-title { - margin-left: 0; + margin-inline-start: 0; } .tab-row-widget .note-tab .note-tab-drag-handle { @@ -240,14 +240,14 @@ const TAB_ROW_TPL = ` } .tab-row-widget .note-tab[is-smaller] .note-tab-close { - margin-left: auto; + margin-inline-start: auto; } .tab-row-widget .note-tab[is-mini]:not([active]) .note-tab-close { display: none; } .tab-row-widget .note-tab[is-mini][active] .note-tab-close { - margin-left: auto; - margin-right: auto; + margin-inline-start: auto; + margin-inline-end: auto; } @-moz-keyframes note-tab-was-just-added { to { @@ -500,6 +500,9 @@ export default class TabRowWidget extends BasicWidget { position -= MARGIN_WIDTH; // the last margin should not be applied const anchorPosition = position; + if (glob.isRtl) { + tabPositions.reverse(); + } return { tabPositions, anchorPosition }; } diff --git a/apps/client/src/widgets/toc.ts b/apps/client/src/widgets/toc.ts index e49368283e..a58ea2fa73 100644 --- a/apps/client/src/widgets/toc.ts +++ b/apps/client/src/widgets/toc.ts @@ -29,13 +29,13 @@ const TPL = /*html*/`
contain: none; overflow: auto; position: relative; - padding-left:0px !important; + padding-inline-start:0px !important; } .toc ol { position: relative; overflow: hidden; - padding-left: 0px; + padding-inline-start: 0px; transition: max-height 0.3s ease; } @@ -47,7 +47,7 @@ const TPL = /*html*/`
content: ""; position: absolute; height: 100%; - border-left: 1px solid var(--main-border-color); + border-inline-start: 1px solid var(--main-border-color); z-index: 10; } @@ -56,7 +56,7 @@ const TPL = /*html*/`
position: relative; list-style: none; align-items: center; - padding-left: 7px; + padding-inline-start: 7px; cursor: pointer; text-align: justify; word-wrap: break-word; @@ -80,11 +80,11 @@ const TPL = /*html*/`
} .toc > ol ol::before { - left: calc((var(--toc-depth-level) - 2) * 20px + 14px); + inset-inline-start: calc((var(--toc-depth-level) - 2) * 20px + 14px); } .toc li { - padding-left: calc((var(--toc-depth-level) - 1) * 20px + 4px); + padding-inline-start: calc((var(--toc-depth-level) - 1) * 20px + 4px); } .toc li .collapse-button { @@ -103,12 +103,12 @@ const TPL = /*html*/`
} .toc li .item-content { - margin-left: 25px; + margin-inline-start: 25px; flex: 1; } .toc li .collapse-button + .item-content { - margin-left: 4px; + margin-inline-start: 4px; } .toc li:hover { diff --git a/apps/client/src/widgets/type_widgets/Attachment.css b/apps/client/src/widgets/type_widgets/Attachment.css index 4c5a58d7bc..8a6221fc7f 100644 --- a/apps/client/src/widgets/type_widgets/Attachment.css +++ b/apps/client/src/widgets/type_widgets/Attachment.css @@ -1,7 +1,7 @@ /* #region Attachment list */ .attachment-list { - padding-left: 15px; - padding-right: 15px; + padding-inline-start: 15px; + padding-inline-end: 15px; } .attachment-list .links-wrapper { @@ -31,7 +31,7 @@ } .attachment-details { - margin-left: 10px; + margin-inline-start: 10px; } .attachment-content-wrapper { @@ -126,7 +126,7 @@ position: relative; top: 3px; font-size: 120%; - margin-right: 5px; + margin-inline-end: 5px; } .attachment-actions .dropdown-item[disabled], .attachment-actions .dropdown-item[disabled]:hover { diff --git a/apps/client/src/widgets/type_widgets/MindMap.css b/apps/client/src/widgets/type_widgets/MindMap.css index 0a14addf43..adeb32f212 100644 --- a/apps/client/src/widgets/type_widgets/MindMap.css +++ b/apps/client/src/widgets/type_widgets/MindMap.css @@ -10,7 +10,7 @@ .map-container .node-menu { position: absolute; top: 60px; - right: 20px; + inset-inline-end: 20px; bottom: 80px; overflow: auto; background: var(--panel-bgcolor); diff --git a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.css b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.css index 5788ca3efc..7ea0a003ca 100644 --- a/apps/client/src/widgets/type_widgets/helpers/SplitEditor.css +++ b/apps/client/src/widgets/type_widgets/helpers/SplitEditor.css @@ -44,7 +44,7 @@ /* Horizontal layout */ .note-detail-split.split-horizontal > .note-detail-split-preview-col { - border-left: 1px solid var(--main-border-color); + border-inline-start: 1px solid var(--main-border-color); } .note-detail-split.split-horizontal > .note-detail-split-editor-col, diff --git a/apps/client/src/widgets/type_widgets/options/code_notes.css b/apps/client/src/widgets/type_widgets/options/code_notes.css index 7b51f619d1..c8f8ad9fdf 100644 --- a/apps/client/src/widgets/type_widgets/options/code_notes.css +++ b/apps/client/src/widgets/type_widgets/options/code_notes.css @@ -2,7 +2,7 @@ .options-mime-types { list-style-type: none; column-width: 250px; - padding-left: 0; + padding-inline-start: 0; } .options-mime-types > section { @@ -11,6 +11,6 @@ } .options-mime-types ul { - padding-left: 0; + padding-inline-start: 0; } /* #endregion */ \ No newline at end of file diff --git a/apps/client/src/widgets/type_widgets/options/i18n.tsx b/apps/client/src/widgets/type_widgets/options/i18n.tsx index 309f164bb6..4e6ec61e81 100644 --- a/apps/client/src/widgets/type_widgets/options/i18n.tsx +++ b/apps/client/src/widgets/type_widgets/options/i18n.tsx @@ -23,11 +23,18 @@ export default function InternationalizationOptions() { } function LocalizationOptions() { - const { uiLocales, formattingLocales: contentLocales } = useMemo(() => { - const allLocales = getAvailableLocales(); + const { uiLocales, formattingLocales: contentLocales } = useMemo<{ uiLocales: Locale[], formattingLocales: Locale[] }>(() => { + const allLocales = getAvailableLocales(); return { - uiLocales: allLocales.filter(locale => !locale.contentOnly), - formattingLocales: allLocales.filter(locale => locale.electronLocale), + uiLocales: allLocales.filter(locale => { + if (locale.contentOnly) return false; + if (locale.devOnly && !glob.isDev) return false; + return true; + }), + formattingLocales: [ + { id: "", name: t("i18n.formatting-locale-auto") }, + ...allLocales.filter(locale => locale.electronLocale) + ] } }, []); @@ -40,7 +47,7 @@ function LocalizationOptions() { - {isElectron() && + { } @@ -53,7 +60,7 @@ function LocaleSelector({ id, locales, currentValue, onChange }: { id?: string; return ; } @@ -66,15 +73,23 @@ function DateSettings() { return ( <> - - + ({ days: String(i + 1) }))} /> } @@ -139,4 +154,4 @@ export function ContentLanguagesList() { columnWidth="300px" /> ); -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/type_widgets/options/text_notes.tsx b/apps/client/src/widgets/type_widgets/options/text_notes.tsx index 5c8ed90af1..4e24759227 100644 --- a/apps/client/src/widgets/type_widgets/options/text_notes.tsx +++ b/apps/client/src/widgets/type_widgets/options/text_notes.tsx @@ -62,7 +62,7 @@ function FormattingToolbar() { name="multiline-toolbar" label={t("editing.editor_type.multiline-toolbar")} currentValue={textNoteEditorMultilineToolbar} onChange={setTextNoteEditorMultilineToolbar} - containerStyle={{ marginLeft: "1em" }} + containerStyle={{ marginInlineStart: "1em" }} /> ) diff --git a/apps/client/src/widgets/type_widgets/relation_map/RelationMap.css b/apps/client/src/widgets/type_widgets/relation_map/RelationMap.css index 7213da78f0..67444e5aa7 100644 --- a/apps/client/src/widgets/type_widgets/relation_map/RelationMap.css +++ b/apps/client/src/widgets/type_widgets/relation_map/RelationMap.css @@ -62,7 +62,7 @@ .note-detail-relation-map .endpoint { position: absolute; bottom: 37%; - right: 5px; + inset-inline-end: 5px; width: 1em; height: 1em; background-color: #333; diff --git a/apps/client/src/widgets/type_widgets/text/EditableText.css b/apps/client/src/widgets/type_widgets/text/EditableText.css index 48aa06dde7..6346b4d95c 100644 --- a/apps/client/src/widgets/type_widgets/text/EditableText.css +++ b/apps/client/src/widgets/type_widgets/text/EditableText.css @@ -1,6 +1,6 @@ .note-detail-editable-text { font-family: var(--detail-font-family); - padding-left: 14px; + padding-inline-start: 14px; padding-top: 10px; height: 100%; } @@ -11,7 +11,7 @@ body.desktop.electron .note-detail-editable-text { } body.mobile .note-detail-editable-text { - padding-left: 4px; + padding-inline-start: 4px; } .note-detail-editable-text a:hover { diff --git a/apps/client/src/widgets/type_widgets/text/ReadOnlyText.css b/apps/client/src/widgets/type_widgets/text/ReadOnlyText.css index 4ab25d9735..ddda64ad9b 100644 --- a/apps/client/src/widgets/type_widgets/text/ReadOnlyText.css +++ b/apps/client/src/widgets/type_widgets/text/ReadOnlyText.css @@ -29,7 +29,7 @@ body.heading-style-underline .note-detail-readonly-text h6 { border-bottom: 1px } body.mobile .note-detail-readonly-text { - padding-left: 10px; + padding-inline-start: 10px; } .note-detail-readonly-text p:first-child, .note-detail-readonly-text::before { @@ -44,7 +44,7 @@ body.mobile .note-detail-readonly-text { .edit-text-note-button { position: absolute; top: 5px; - right: 10px; + inset-inline-end: 10px; font-size: 150%; padding: 5px; cursor: pointer; diff --git a/apps/client/src/widgets/type_widgets/text/config.ts b/apps/client/src/widgets/type_widgets/text/config.ts index 05608f459a..7f39c4ea2f 100644 --- a/apps/client/src/widgets/type_widgets/text/config.ts +++ b/apps/client/src/widgets/type_widgets/text/config.ts @@ -1,5 +1,4 @@ -import { ALLOWED_PROTOCOLS } from "../../../services/link.js"; -import { MIME_TYPE_AUTO } from "@triliumnext/commons"; +import { ALLOWED_PROTOCOLS, MIME_TYPE_AUTO } from "@triliumnext/commons"; import { buildExtraCommands, type EditorConfig, PREMIUM_PLUGINS, TemplateDefinition } from "@triliumnext/ckeditor5"; import { getHighlightJsNameForMime } from "../../../services/mime_types.js"; import options from "../../../services/options.js"; diff --git a/apps/client/src/widgets/type_widgets/text/mobile_editor_toolbar.css b/apps/client/src/widgets/type_widgets/text/mobile_editor_toolbar.css index 06dccd699f..db469fcbdd 100644 --- a/apps/client/src/widgets/type_widgets/text/mobile_editor_toolbar.css +++ b/apps/client/src/widgets/type_widgets/text/mobile_editor_toolbar.css @@ -12,26 +12,26 @@ #root-widget.virtual-keyboard-opened .classic-toolbar-outer-container.ios { position: absolute; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; bottom: 0; } .classic-toolbar-widget { position: absolute; bottom: 0; - left: 0; - right: 0; + inset-inline-start: 0; + inset-inline-end: 0; height: 38px; overflow: scroll; display: flex; align-items: flex-end; user-select: none; + scrollbar-width: 0 !important; } -.classic-toolbar-widget::-webkit-scrollbar { +.classic-toolbar-widget::-webkit-scrollbar:horizontal { height: 0 !important; - width: 0 !important; } .classic-toolbar-widget.dropdown-active { diff --git a/apps/desktop/electron-forge/forge.config.ts b/apps/desktop/electron-forge/forge.config.ts index 4b5dcde754..0b78b3e1f8 100644 --- a/apps/desktop/electron-forge/forge.config.ts +++ b/apps/desktop/electron-forge/forge.config.ts @@ -90,6 +90,10 @@ const config: ForgeConfig = { base: "org.electronjs.Electron2.BaseApp", baseVersion: "24.08", baseFlatpakref: "https://flathub.org/repo/flathub.flatpakrepo", + finishArgs: [ + "--socket=fallback-x11", + "--socket=wayland" + ], modules: [ { name: "zypak", diff --git a/apps/desktop/package.json b/apps/desktop/package.json index bf27b33b94..2a8e1c1279 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -34,15 +34,15 @@ "@triliumnext/commons": "workspace:*", "@triliumnext/server": "workspace:*", "copy-webpack-plugin": "13.0.1", - "electron": "38.2.1", - "@electron-forge/cli": "7.9.0", - "@electron-forge/maker-deb": "7.9.0", - "@electron-forge/maker-dmg": "7.9.0", - "@electron-forge/maker-flatpak": "7.9.0", - "@electron-forge/maker-rpm": "7.9.0", - "@electron-forge/maker-squirrel": "7.9.0", - "@electron-forge/maker-zip": "7.9.0", - "@electron-forge/plugin-auto-unpack-natives": "7.9.0", + "electron": "38.2.2", + "@electron-forge/cli": "7.10.2", + "@electron-forge/maker-deb": "7.10.2", + "@electron-forge/maker-dmg": "7.10.2", + "@electron-forge/maker-flatpak": "7.10.2", + "@electron-forge/maker-rpm": "7.10.2", + "@electron-forge/maker-squirrel": "7.10.2", + "@electron-forge/maker-zip": "7.10.2", + "@electron-forge/plugin-auto-unpack-natives": "7.10.2", "prebuild-install": "7.1.3" } } \ No newline at end of file diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts index 000d4c4588..52ebe458b0 100644 --- a/apps/desktop/src/main.ts +++ b/apps/desktop/src/main.ts @@ -30,7 +30,7 @@ async function main() { // needed for excalidraw export https://github.com/zadam/trilium/issues/4271 app.commandLine.appendSwitch("enable-experimental-web-platform-features"); - app.commandLine.appendSwitch("lang", options.getOptionOrNull("formattingLocale") ?? "en"); + app.commandLine.appendSwitch("lang", options.getOptionOrNull("formattingLocale") || options.getOptionOrNull("locale") || "en"); // Disable smooth scroll if the option is set const smoothScrollEnabled = options.getOptionOrNull("smoothScrollEnabled"); diff --git a/apps/edit-docs/demo/!!!meta.json b/apps/edit-docs/demo/!!!meta.json index f5f319d92a..57b5377063 100644 --- a/apps/edit-docs/demo/!!!meta.json +++ b/apps/edit-docs/demo/!!!meta.json @@ -1,6 +1,6 @@ { "formatVersion": 2, - "appVersion": "0.98.1", + "appVersion": "0.99.1", "files": [ { "isClone": false, @@ -60,6 +60,13 @@ "value": "dayGridMonth", "isInheritable": false, "position": 40 + }, + { + "type": "relation", + "name": "dateTemplate", + "value": "bRQvb9VCkc3t", + "isInheritable": false, + "position": 50 } ], "dataFileName": "Journal.dat", @@ -75,7 +82,7 @@ "title": "Trilium Demo", "notePosition": 20, "prefix": null, - "isExpanded": true, + "isExpanded": false, "type": "text", "mime": "text/html", "attributes": [ @@ -6033,6 +6040,68 @@ ] } ] + }, + { + "isClone": false, + "noteId": "fhNlr1V1o3d8", + "notePath": [ + "root", + "fhNlr1V1o3d8" + ], + "title": "Miscellaneous", + "notePosition": 30, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-dots-horizontal-rounded", + "isInheritable": false, + "position": 10 + } + ], + "format": "html", + "attachments": [], + "dirFileName": "Miscellaneous", + "children": [ + { + "isClone": false, + "noteId": "bRQvb9VCkc3t", + "notePath": [ + "root", + "fhNlr1V1o3d8", + "bRQvb9VCkc3t" + ], + "title": "Day Note Template", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "label", + "name": "iconClass", + "value": "bx bx-notepad", + "isInheritable": false, + "position": 10 + }, + { + "type": "label", + "name": "excludeFromNoteMap", + "value": "", + "isInheritable": false, + "position": 20 + } + ], + "format": "html", + "dataFileName": "Day Note Template.html", + "attachments": [] + } + ] } ] }, diff --git a/apps/edit-docs/demo/navigation.html b/apps/edit-docs/demo/navigation.html index 62e56a007c..1d4d5d57b8 100644 --- a/apps/edit-docs/demo/navigation.html +++ b/apps/edit-docs/demo/navigation.html @@ -637,6 +637,12 @@ +
  • Miscellaneous + +
  • diff --git a/apps/edit-docs/demo/root/Miscellaneous/Day Note Template.html b/apps/edit-docs/demo/root/Miscellaneous/Day Note Template.html new file mode 100644 index 0000000000..8f2333bf02 --- /dev/null +++ b/apps/edit-docs/demo/root/Miscellaneous/Day Note Template.html @@ -0,0 +1,24 @@ + + + + + + + + Day Note Template + + + +
    +

    Day Note Template

    + +
    +

    ☑️ Tasks

    +
      +
    • […]
    • +
    +
    +
    + + + \ No newline at end of file diff --git a/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html index 214ef212e7..e562046eff 100644 --- a/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html +++ b/apps/edit-docs/demo/root/Trilium Demo/Formatting examples/Code blocks.html @@ -23,10 +23,18 @@ + + + + alert("Hello world"); + + + + }

    For larger pieces of code it is better to use a code note, which uses a fully-fledged code editor (CodeMirror). For an example of a code note, diff --git a/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html index 5edac5b2a0..1704941afc 100644 --- a/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html +++ b/apps/edit-docs/demo/root/Trilium Demo/Tech/Linux/Bash scripting/While loop.html @@ -18,6 +18,10 @@ + + + + # This script opens 4 terminal windows. @@ -26,18 +30,38 @@ + + + + + + + + i="0" + + + + while [ $i -lt 4 ] + + + + do + + + + xterm & @@ -46,10 +70,22 @@ do + + + + + + + + i=$[$i+1] + + + + done

    diff --git a/apps/edit-docs/package.json b/apps/edit-docs/package.json index 2fb17e9ab2..91fe601ac5 100644 --- a/apps/edit-docs/package.json +++ b/apps/edit-docs/package.json @@ -12,7 +12,7 @@ "@triliumnext/desktop": "workspace:*", "@types/fs-extra": "11.0.4", "copy-webpack-plugin": "13.0.1", - "electron": "38.2.1", + "electron": "38.2.2", "fs-extra": "11.3.2" }, "scripts": { diff --git a/apps/server/package.json b/apps/server/package.json index 9852f1a4ff..275d6274d2 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -81,7 +81,7 @@ "debounce": "2.2.0", "debug": "4.4.3", "ejs": "3.1.10", - "electron": "38.2.1", + "electron": "38.2.2", "electron-debug": "4.1.0", "electron-window-state": "5.0.3", "escape-html": "1.0.3", @@ -105,12 +105,12 @@ "is-svg": "6.1.0", "jimp": "1.6.0", "js-yaml": "4.1.0", - "marked": "16.3.0", + "marked": "16.4.0", "mime-types": "3.0.1", "multer": "2.0.2", "normalize-strings": "1.1.1", "ollama": "0.6.0", - "openai": "6.1.0", + "openai": "6.3.0", "rand-token": "1.0.1", "safe-compare": "1.1.4", "sanitize-filename": "1.6.3", diff --git a/apps/server/src/assets/db/demo.zip b/apps/server/src/assets/db/demo.zip index d042dd83e1..5ddc6a7681 100644 Binary files a/apps/server/src/assets/db/demo.zip and b/apps/server/src/assets/db/demo.zip differ diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Relations.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Relations.html index 40294d6acf..6d85137f6a 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Relations.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Attributes/Relations.html @@ -116,6 +116,13 @@ class="admonition tip"> JavaScript note which will be injected into the share page. JS note must be in the shared sub-tree as well. Consider using share_hidden_from_tree. + + shareHtml + + HTML note which will be injected into the share page at locations specified + by the shareHtmlLocation label. HTML note must be in the shared + sub-tree as well. Consider using share_hidden_from_tree. + shareTemplate diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html index 1c7240c480..95cae2d8d8 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Sharing.html @@ -234,6 +234,34 @@ class="image"> This allows you to access note attributes or traverse the note tree using the fetchNote() API, which retrieves note data based on its ID.

    +

    Adding custom HTML

    +

    You can inject custom HTML snippets into specific locations of the shared + page using the ~shareHtml relation. The HTML note should contain + the raw HTML content you want to inject, and you can control where it appears + by adding the #shareHtmlLocation label to the HTML snippet note + itself.

    +

    The #shareHtmlLocation label accepts values in the format location:position:

    +
      +
    • Locations: head, body, content +
    • +
    • Positions: start, end +
    • +
    +

    For example:

    +
      +
    • #shareHtmlLocation=head:start - Injects HTML at the beginning + of the <head> section
    • +
    • #shareHtmlLocation=head:end - Injects HTML at the end of the <head> section + (default)
    • +
    • #shareHtmlLocation=body:start - Injects HTML at the beginning + of the <body> section
    • +
    • #shareHtmlLocation=content:start - Injects HTML at the beginning + of the content area
    • +
    • #shareHtmlLocation=content:end - Injects HTML at the end of + the content area
    • +
    +

    If no location is specified, the HTML will be injected at content:end by + default.

    Example:

    const currentNote = await fetchNote();
     const parentNote = await fetchNote(currentNote.parentNoteIds[0]);
     
    @@ -344,6 +372,14 @@ for (const attr of parentNote.attributes) {
             
             Note with this label will list all roots of shared notes.
           
    +      
    +        shareHtmlLocation
    +        
    +        defines where custom HTML injected via ~shareHtml relation
    +          should be placed. Applied to the HTML snippet note itself. Format: location:position where
    +          location is head, body, or content and
    +          position is start or end. Defaults to content:end.
    +      
         
       
       
    diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html
    index 2602f66044..67a7276567 100644
    --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html	
    +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Collections/Board View.html	
    @@ -15,61 +15,74 @@
       in a hierarchy.

    Interaction with columns

      -
    • Create a new column by pressing Add Column near the last column. +
    • Create a new column by pressing Add Column near the last column.
        -
      • Once pressed, a text box will be displayed to set the name of the column. +
      • Once pressed, a text box will be displayed to set the name of the column. Press Enter to confirm, or Escape to dismiss.
    • -
    • To reorder a column, simply hold the mouse over the title and drag it +
    • To reorder a column, simply hold the mouse over the title and drag it to the desired position.
    • -
    • To delete a column, right click on its title and select Delete column.
    • -
    • To rename a column, click on the note title. +
    • To delete a column, right click on its title and select Delete column.
    • +
    • To rename a column, click on the note title.
        -
      • Press Enter to confirm.
      • -
      • Upon renaming a column, the corresponding status attribute of all its +
      • Press Enter to confirm.
      • +
      • Upon renaming a column, the corresponding status attribute of all its notes will be changed in bulk.
      -
    • -
    • If there are many columns, use the mouse wheel to scroll.
    • + +
    • If there are many columns, use the mouse wheel to scroll.

    Interaction with notes

      -
    • Create a new note in any column by pressing New item +
    • Create a new note in any column by pressing New item
        -
      • Enter the name of the note and press Enter or click away. To +
      • Enter the name of the note and press Enter or click away. To dismiss the creation of a new note, simply press Escape or leave the name empty.
      • -
      • Once created, the new note will have an attribute (status label +
      • Once created, the new note will have an attribute (status label by default) set to the name of the column.
    • -
    • To open the note, simply click on it.
    • -
    • To change the title of the note directly from the board, hover the mouse +
    • To open the note, simply click on it.
    • +
    • To change the title of the note directly from the board, hover the mouse over its card and press the edit button on the right.
    • -
    • To change the state of a note, simply drag a note from one column to the +
    • To change the state of a note, simply drag a note from one column to the other to change its state.
    • -
    • The order of the notes in each column corresponds to their position in +
    • The order of the notes in each column corresponds to their position in the tree.
        -
      • It's possible to reorder notes simply by dragging them to the desired +
      • It's possible to reorder notes simply by dragging them to the desired position within the same columns.
      • -
      • It's also possible to drag notes across columns, at the desired position.
      • +
      • It's also possible to drag notes across columns, at the desired position.
    • -
    • For more options, right click on a note to display a context menu with +
    • For more options, right click on a note to display a context menu with the following options:
        -
      • Open the note in a new tab/split/window or quick edit.
      • -
      • Move the note to any column.
      • -
      • Insert a new note above/below the current one.
      • -
      • Archive/unarchive the current note.
      • -
      • Delete the current note.
      • +
      • Open the note in a new tab/split/window or quick edit.
      • +
      • Move the note to any column.
      • +
      • Insert a new note above/below the current one.
      • +
      • Archive/unarchive the current note.
      • +
      • Delete the current note.
    • -
    • If there are many notes within the column, move the mouse over the column +
    • If there are many notes within the column, move the mouse over the column and use the mouse wheel to scroll.
    +

    Keyboard interaction

    +

    The board view has mild support for keyboard-based navigation:

    +
      +
    • Use Tab and Shift+Tab to navigate between + column titles, notes and the “New item” button for each of the columns, + in sequential order.
    • +
    • To rename a column or a note, press F2 while it is focused.
    • +
    • To open a specific note or create a new item, press Enter while + it is focused.
    • +
    • To dismiss a rename of a note or a column, press Escape.
    • +

    Configuration

    Grouping by another attribute

    By default, the label used to group the notes is #status. @@ -83,5 +96,5 @@ class="admonition note">

    Interaction

    Limitations

      -
    • It is not possible yet to use group by a relation, only by label.
    • +
    • It is not possible yet to use group by a relation, only by label.
    \ No newline at end of file diff --git a/apps/server/src/assets/translations/ar/server.json b/apps/server/src/assets/translations/ar/server.json index 0967ef424b..bb4cd5f705 100644 --- a/apps/server/src/assets/translations/ar/server.json +++ b/apps/server/src/assets/translations/ar/server.json @@ -1 +1,236 @@ -{} +{ + "keyboard_actions": { + "open-jump-to-note-dialog": "فتح مربع الحوار \"الانتقال الى الملاحظة\"", + "open-command-palette": "فتح لوحة الاوامر", + "quick-search": "تفعيل شريط البحث السريع", + "collapse-tree": "طي جميع الملاحظات", + "collapse-subtree": "طي الفروع التابعة للملاحظة الحالية", + "sort-child-notes": "ترتيب الملاحظات الفرعية", + "creating-and-moving-notes": "انشاء الملاحظات ونقلها", + "create-note-after": "انشاء ملاحظة بعد الملاحظة الحالية", + "create-note-into": "انشاء ملاحظة فرعية تابعة للملاحظة الحالية", + "delete-note": "حذف ملاحظة", + "move-note-up": "نقل الملاحظة للاعلى", + "move-note-down": "نثل الملاحظة للاسفل", + "clone-notes-to": "استنساخ الملاحظات المحددة", + "move-notes-to": "نقل الملاحظات للمحددة", + "note-clipboard": "حافظة الملاحظات", + "copy-notes-to-clipboard": "نسخ الملاحظات المحددة الى الحافظة", + "paste-notes-from-clipboard": "لصق الملاحظا من الحافظة الى الملاحظة الحالية", + "cut-notes-to-clipboard": "قص الملاحظات المحددة الى الحافظة", + "select-all-notes-in-parent": "تحديد جميع الملاحظات من مستوى الملاحظة الحالي", + "back-in-note-history": "الانتقال الى الملاحظة السابقة في السجل", + "forward-in-note-history": "الانتقال الى الملاحظة التالية في السجل", + "scroll-to-active-note": "تمرير شجرة الملاحظات الى الملاحظة النشطة", + "search-in-subtree": "البحث عن الملاحظات في الشجرة الفرعية للملاحظة النشطة", + "expand-subtree": "توسيع الشجرة الفرعية للملاحظة الحالية", + "create-note-into-inbox": "انشاء ملاحظة في صندوق الوارد (اذا كان معرفا) او في ملاحظة اليوم", + "move-note-up-in-hierarchy": "نقل الملاحظة للاعلى في التسلسل الهرمي", + "move-note-down-in-hierarchy": "نقل الملاحظة للاسفل في التسلسل الهرمي", + "edit-note-title": "الانتقال من شجرة الملاحظات إلى تفاصيل الملاحظة وتحرير العنوان", + "edit-branch-prefix": "عرض مربع حوار \"تعديل بادئة الفرع\"", + "add-note-above-to-the-selection": "اضافة ملاحظة فوق الملاحظة المحددة", + "add-note-below-to-selection": "اضافة ملاحظة اسفل الملاحظة المحددة", + "duplicate-subtree": "استنساخ الشجرة الفرعية", + "tabs-and-windows": "التبويبات والنوافذ", + "open-new-tab": "فتح تبويب جديد", + "close-active-tab": "غلق التبويب النشط", + "reopen-last-tab": "اعادة فتح اخر تبويب مغلق", + "activate-next-tab": "تنشيط التبويب الموجود على اليمين", + "activate-previous-tab": "تنشيط التبويب الموجود على اليسار", + "open-new-window": "فتح نافذة جديدة فارغة", + "first-tab": "تنشيط التبويب الاول في القائمة", + "second-tab": "تنشيط التبويب الثاني في القائمة", + "third-tab": "تنشيط التبويب الثالث في الثائمة", + "fourth-tab": "تنشيط التبويب الرابع في القائمة", + "fifth-tab": "تنشيط التبويب الخامس في القائمة", + "sixth-tab": "تنشيط التبويب السادس في القائمة", + "seventh-tab": "تنشيط التبويب السابع في القائمة", + "eight-tab": "تنشيط التبويب الثامن في القائمة", + "ninth-tab": "تنشيط التبويب التاسع في القائمة", + "last-tab": "تنشيط التبويب الاخير في القائمة", + "other": "أخرى", + "dialogs": "مربعات الحوار", + "ribbon-tabs": "علامات التبويب في الشريط", + "reload-frontend-app": "اعادة تحميل الواجهة", + "zoom-out": "تصغير العرض", + "zoom-in": "تكبير العرض", + "note-navigation": "التنقل بين الملاحظات" + }, + "setup_sync-from-server": { + "note": "ملاحظة:", + "password": "كلمة المرور", + "password-placeholder": "كلمة المرور", + "back": "رجوع", + "server-host-placeholder": "https://:", + "proxy-server-placeholder": "https://:", + "finish-setup": "اكمال التثبيت" + }, + "weekdays": { + "monday": "الاثنين", + "tuesday": "الثلاثاء", + "wednesday": "الاربعاء", + "thursday": "الخميس", + "friday": "الجمعة", + "saturday": "السبت", + "sunday": "الأحد" + }, + "months": { + "january": "يناير", + "february": "فبراير", + "march": "مارس", + "april": "ابريل", + "may": "مايو", + "june": "يونيو", + "july": "يوليو", + "august": "أغسطس", + "september": "سبتمبر", + "october": "أكتوبر", + "november": "نوفمبر", + "december": "ديسمبر" + }, + "special_notes": { + "search_prefix": "بحث:" + }, + "hidden-subtree": { + "calendar-title": "تقويم", + "bookmarks-title": "العلامات المرجعية", + "settings-title": "أعدادات", + "options-title": "خيارات", + "appearance-title": "المظهر", + "shortcuts-title": "أختصارات", + "images-title": "صور", + "password-title": "كلمة المرور", + "backup-title": "نسخة أحتياطية", + "sync-title": "مزامنة", + "other": "أخرى", + "advanced-title": "متقدم", + "inbox-title": "صندوق الوارد", + "spacer-title": "فاصل", + "spellcheck-title": "التدقيق الاملائي", + "multi-factor-authentication-title": "المصادقة متعددة العوامل", + "root-title": "الملاحظات المخفية", + "search-history-title": "سجل البحث", + "note-map-title": "خريطة الملاحظات", + "shared-notes-title": "الملاحظات المشتركة", + "bulk-action-title": "اجراء جماعي", + "backend-log-title": "سجل الخادم", + "user-hidden-title": "مخفي عن المستخدم", + "command-launcher-title": "مشغل الاوامر", + "note-launcher-title": "مشغل الملاحظة", + "script-launcher-title": "مشغل السكربت", + "built-in-widget-title": "عنصر واجهة مدمج", + "custom-widget-title": "عنصر واجهة مخصص", + "launch-bar-title": "شريط التشغيل", + "available-launchers-title": "المشغلات المتاحة", + "new-note-title": "ملاحظة جديدة", + "search-notes-title": "البحث في الملاحظات", + "jump-to-note-title": "انتقل الى...", + "recent-changes-title": "التغيرات الاخيرة", + "quick-search-title": "البحث السريع", + "protected-session-title": "الجلسة المحمية", + "sync-status-title": "حالة المزامنة", + "text-notes": "ملاحظات نصية", + "code-notes-title": "ملاحظات برمجية", + "visible-launchers-title": "المشغلات المرئية", + "user-guide": "دليل المستخدم", + "ai-llm-title": "AI/LLM", + "etapi-title": "ETAPI" + }, + "tray": { + "bookmarks": "العلامات المرجعية", + "tooltip": "ملاحظات تريليوم", + "close": "انهاء تريليوم", + "recents": "الملاحظات الحديثة", + "new-note": "ملاحظة جديدة", + "show-windows": "اظهار النوافذ" + }, + "modals": { + "error_title": "خطأ" + }, + "share_theme": { + "search_placeholder": "بحث...", + "subpages": "الصفحات الفرعية:", + "expand": "توسيع", + "site-theme": "المظهر العام للموقع", + "image_alt": "صورة المقال" + }, + "hidden_subtree_templates": { + "description": "الوصف", + "calendar": "التقويم", + "table": "جدول", + "geolocation": "الموقع الجغرافي", + "board": "لوحة", + "status": "الحالة", + "board_status_done": "تمت", + "start-time": "وقت البدء", + "end-time": "وقت الانتهاء", + "built-in-templates": "القوالب المدمجة", + "board_note_first": "الملاحظة الاولى", + "board_note_second": "الملاحظة الثانية", + "board_note_third": "الملاحظة الرابعة", + "board_status_todo": "قائمة المهام", + "board_status_progress": "قيد التنفيذ", + "text-snippet": "مقتطف نصي", + "list-view": "عرض القائمة", + "grid-view": "عرض شبكي", + "geo-map": "خريطة جغرافية", + "start-date": "تاريخ البدء", + "end-date": "تاريخ الانتهاء" + }, + "login": { + "title": "تسجيل الدخول", + "password": "كلمة المرور", + "button": "تسجيل الدخول", + "heading": "تسجيل الدخول الى تريليوم", + "remember-me": "تذكرني" + }, + "set_password": { + "password": "كلمة المرور", + "title": "تعين كلمة المرور", + "heading": "تعين كلمة المرور", + "password-confirmation": "تاكيد كلمة المرور", + "button": "تعين كلمة المرور" + }, + "setup": { + "next": "التالي", + "title": "تثبيت" + }, + "setup_sync-from-desktop": { + "step6-here": "هنا" + }, + "setup_sync-in-progress": { + "outstanding-items-default": "غير متوفر" + }, + "share_page": { + "parent": "الأصل:", + "child-notes": "الملاحظات الفرعية:" + }, + "notes": { + "duplicate-note-suffix": "(مكرر)", + "new-note": "ملاحظة جديدة" + }, + "keyboard_action_names": { + "jump-to-note": "انتقل الى ...", + "command-palette": "لوحة الاوامر", + "quick-search": "البحث السريع", + "expand-subtree": "توسيع الشجرة الفرعية", + "collapse-tree": "طي الشجرة", + "collapse-subtree": "طي الشجرة الفرعية", + "delete-notes": "حذف الملاحظات", + "duplicate-subtree": "تكرار الشجرة الفرعية", + "show-options": "عرض الخيارات", + "show-revisions": "عرض المراجعات", + "show-help": "عرض المساعدة", + "show-cheatsheet": "عرض دليل الاختصارات", + "unhoist-note": "الغاء تثبيت الملاحظة", + "zoom-out": "تصغير العرض", + "zoom-in": "تكبير العرض" + }, + "share_404": { + "title": "غير موجود", + "heading": "غير موجود" + }, + "weekdayNumber": "الاسبوع{رقم الاسيوع}", + "quarterNumber": "الربع {رقم الربع}" +} diff --git a/apps/server/src/assets/translations/id/server.json b/apps/server/src/assets/translations/id/server.json new file mode 100644 index 0000000000..9a6086a1a1 --- /dev/null +++ b/apps/server/src/assets/translations/id/server.json @@ -0,0 +1,8 @@ +{ + "keyboard_actions": { + "back-in-note-history": "Navigasi ke catatan sebelumnya di history", + "forward-in-note-history": "Navigasi ke catatan selanjutnya di history", + "open-jump-to-note-dialog": "Buka dialog \"Menuju ke catatan\"", + "open-command-palette": "Buka palet perintah" + } +} diff --git a/apps/server/src/assets/translations/ja/server.json b/apps/server/src/assets/translations/ja/server.json index fcdde2f7ea..cdf149cdca 100644 --- a/apps/server/src/assets/translations/ja/server.json +++ b/apps/server/src/assets/translations/ja/server.json @@ -338,7 +338,7 @@ "sync-status-title": "同期状態", "settings-title": "設定", "llm-chat-title": "ノートとチャット", - "options-title": "オプション", + "options-title": "設定", "multi-factor-authentication-title": "多要素認証", "etapi-title": "ETAPI", "visible-launchers-title": "可視化されたランチャー", diff --git a/apps/server/src/assets/translations/md/server.json b/apps/server/src/assets/translations/md/server.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/apps/server/src/assets/translations/md/server.json @@ -0,0 +1 @@ +{} diff --git a/apps/server/src/assets/translations/pt/server.json b/apps/server/src/assets/translations/pt/server.json index dbebf00b6d..d2c3d0db38 100644 --- a/apps/server/src/assets/translations/pt/server.json +++ b/apps/server/src/assets/translations/pt/server.json @@ -1,26 +1,26 @@ { "keyboard_actions": { "back-in-note-history": "Navegar para a nota anterior no histórico", - "forward-in-note-history": "Navegar para a próxima nota no histórico", + "forward-in-note-history": "Navegar para a nota seguinte no histórico", "open-jump-to-note-dialog": "Abrir diálogo \"Ir para nota\"", "open-command-palette": "Abrir paleta de comandos", "scroll-to-active-note": "Rolar a árvore de notas até a nota atual", "quick-search": "Ativar barra de pesquisa rápida", - "search-in-subtree": "Pesquisar notas na subárvore da nota atual", - "expand-subtree": "Expandir subárvore da nota atual", - "collapse-tree": "Colapsar a árvore completa de notas", - "collapse-subtree": "Colapsar subárvore da nota atual", + "search-in-subtree": "Pesquisar notas na sub-árvore da nota atual", + "expand-subtree": "Expandir sub-árvore da nota atual", + "collapse-tree": "Colapsar a árvore de notas completa", + "collapse-subtree": "Colapsar sub-árvore da nota atual", "sort-child-notes": "Ordenar notas filhas", "creating-and-moving-notes": "A criar e mover notas", "create-note-after": "Criar nota após nota atual", - "create-note-into": "Criar nota como subnota da nota atual", - "create-note-into-inbox": "Crie uma nota na caixa de entrada (se definida) ou na nota do dia", + "create-note-into": "Criar nota como sub-nota da nota atual", + "create-note-into-inbox": "Criar uma nota na caixa de entrada (se definida) ou na nota do dia", "delete-note": "Apagar nota", "move-note-up": "Mover nota para cima", "move-note-down": "Mover nota para baixo", "move-note-up-in-hierarchy": "Mover nota para cima na hierarquia", "move-note-down-in-hierarchy": "Mover nota para baixo na hierarquia", - "edit-note-title": "Pular da árvore para os pormenores da nota e editar o título", + "edit-note-title": "Saltar da árvore para os pormenores da nota e editar o título", "edit-branch-prefix": "Exibir o diálogo \"Editar prefixo da ramificação\"", "clone-notes-to": "Clonar notas selecionadas", "move-notes-to": "Mover notas selecionadas", @@ -31,36 +31,36 @@ "select-all-notes-in-parent": "Selecionar todas as notas do nível atual da nota", "add-note-above-to-the-selection": "Adicionar nota acima à seleção", "add-note-below-to-selection": "Adicionar nota abaixo à seleção", - "duplicate-subtree": "Duplicar subárvores", - "tabs-and-windows": "Guias & Janelas", - "open-new-tab": "Abre nova guia", - "close-active-tab": "Fecha guia ativa", - "reopen-last-tab": "Reabre a última guia fechada", - "activate-next-tab": "Ativa guia à direita", - "activate-previous-tab": "Ativa guia à esquerda", + "duplicate-subtree": "Duplicar subárvore", + "tabs-and-windows": "Separadores & Janelas", + "open-new-tab": "Abre novo separador", + "close-active-tab": "Fechar separador ativo", + "reopen-last-tab": "Reabre o último separador fechado", + "activate-next-tab": "Ativa separador à direita", + "activate-previous-tab": "Ativa separador à esquerda", "open-new-window": "Abre nova janela vazia", - "toggle-tray": "Mostrar/ocultar a aplicação da bandeja do sistema", - "first-tab": "Ativa a primeira guia na lista", - "second-tab": "Ativa a segunda guia na lista", - "third-tab": "Ativa a terceira guia na lista", - "fourth-tab": "Ativa a quarta guia na lista", - "fifth-tab": "Ativa a quinta guia na lista", - "sixth-tab": "Ativa a sexta guia na lista", - "seventh-tab": "Ativa a sétima guia na lista", - "eight-tab": "Ativa a oitava guia na lista", - "ninth-tab": "Ativa a nona guia na lista", - "last-tab": "Ativa a última guia na lista", + "toggle-tray": "Mostrar/ocultar a aplicação na bandeja do sistema", + "first-tab": "Ativar o primeiro separador na lista", + "second-tab": "Ativa o segundo separador na lista", + "third-tab": "Ativar o terceiro separador na lista", + "fourth-tab": "Ativar o quarto separador na lista", + "fifth-tab": "Ativar o quinto separador na lista", + "sixth-tab": "Ativar o sexto separador na lista", + "seventh-tab": "Ativar o sétimo separador na lista", + "eight-tab": "Ativar o oitavo separador na lista", + "ninth-tab": "Ativar o novo separador na lista", + "last-tab": "Ativar o último separador na lista", "dialogs": "Diálogos", - "show-note-source": "Exibe o diálogo de origem da nota", - "show-options": "Mostrar página de configurações", - "show-revisions": "Exibe diálogo de revisões de nota", - "show-recent-changes": "Exibe o diálogo de alterações recentes", - "show-sql-console": "Exibe a página do console SQL", - "show-backend-log": "Exibe a página do backend", - "show-help": "Exibir Ajuda integrada / colinha", - "show-cheatsheet": "Exibir um modal com operações comuns de teclado", + "show-note-source": "Exibe o diálogo \"origem da nota\"", + "show-options": "Abrir página de configurações", + "show-revisions": "Exibe diálogo \"revisões de nota\"", + "show-recent-changes": "Exibe o diálogo \"alterações recentes\"", + "show-sql-console": "Exibe a página \"consola SQL\"", + "show-backend-log": "Exibe a página \"registo do backend\"", + "show-help": "Exibir o guia de utilizador integrado", + "show-cheatsheet": "Exibir um modal com atalhos de teclado", "text-note-operations": "Operações de nota de texto", - "add-link-to-text": "Abrir diálogo e adicionar ligação ao texto", + "add-link-to-text": "Abrir diálogo para adicionar ligação ao texto", "follow-link-under-cursor": "Seguir a ligação sob o cursor", "insert-date-and-time-to-text": "Inserir data e hora atual no texto", "paste-markdown-into-text": "Colar Markdown da área de transferência na nota de texto", diff --git a/apps/server/src/assets/translations/vi/server.json b/apps/server/src/assets/translations/vi/server.json index d5c1ec1c52..8b0479d17b 100644 --- a/apps/server/src/assets/translations/vi/server.json +++ b/apps/server/src/assets/translations/vi/server.json @@ -1,6 +1,7 @@ { - "keyboard_actions": { - "delete-note": "Xoá ghi chép", - "move-notes-to": "Di chuyển ghi chép được chọn" - } + "keyboard_actions": { + "delete-note": "Xoá ghi chép", + "move-notes-to": "Di chuyển ghi chép được chọn", + "back-in-note-history": "Điều hướng đến ghi chú trước đó trong lịch sử" + } } diff --git a/apps/server/src/assets/views/desktop.ejs b/apps/server/src/assets/views/desktop.ejs index 6ebe751aeb..a86b7e7a05 100644 --- a/apps/server/src/assets/views/desktop.ejs +++ b/apps/server/src/assets/views/desktop.ejs @@ -8,8 +8,13 @@ Trilium Notes + - + - @@ -57,7 +61,6 @@ - diff --git a/apps/server/src/assets/views/login.ejs b/apps/server/src/assets/views/login.ejs index 4cd3c6a000..4ffab51011 100644 --- a/apps/server/src/assets/views/login.ejs +++ b/apps/server/src/assets/views/login.ejs @@ -7,18 +7,17 @@ - <% // TriliumNextTODO: move the css file to ${assetPath}/stylesheets/ %> - + - + - diff --git a/apps/server/src/assets/views/mobile.ejs b/apps/server/src/assets/views/mobile.ejs index d210c5ca75..b5ea77a164 100644 --- a/apps/server/src/assets/views/mobile.ejs +++ b/apps/server/src/assets/views/mobile.ejs @@ -96,8 +96,13 @@ } } + + - +
    @@ -108,11 +113,9 @@ <%- include("./partials/windowGlobal.ejs", locals) %> - - <% if (themeCssUrl) { %> diff --git a/apps/server/src/assets/views/partials/windowGlobal.ejs b/apps/server/src/assets/views/partials/windowGlobal.ejs index 1258030d12..3536d52654 100644 --- a/apps/server/src/assets/views/partials/windowGlobal.ejs +++ b/apps/server/src/assets/views/partials/windowGlobal.ejs @@ -18,6 +18,7 @@ appPath: "<%= appPath %>", platform: "<%= platform %>", hasNativeTitleBar: <%= hasNativeTitleBar %>, - TRILIUM_SAFE_MODE: <%= !!process.env.TRILIUM_SAFE_MODE %> + TRILIUM_SAFE_MODE: <%= !!process.env.TRILIUM_SAFE_MODE %>, + isRtl: <%= !!currentLocale.rtl %> }; \ No newline at end of file diff --git a/apps/server/src/assets/views/set_password.ejs b/apps/server/src/assets/views/set_password.ejs index 9dddfca504..2610716474 100644 --- a/apps/server/src/assets/views/set_password.ejs +++ b/apps/server/src/assets/views/set_password.ejs @@ -6,13 +6,18 @@ <%= t("set_password.title") %> - <% // TriliumNextTODO: move the css file to ${assetPath}/stylesheets/ %> - + + - +

    <%= t("set_password.heading") %>

    @@ -46,7 +51,6 @@
    - diff --git a/apps/server/src/assets/views/setup.ejs b/apps/server/src/assets/views/setup.ejs index c11368867a..68ee58b517 100644 --- a/apps/server/src/assets/views/setup.ejs +++ b/apps/server/src/assets/views/setup.ejs @@ -6,10 +6,11 @@ <%= t("setup.title") %> - <% // TriliumNextTODO: move the css file to ${assetPath}/stylesheets/ %> - - + - +
    +<%- renderSnippets("body:end") %> diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9074b0736..87514a6f46 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,7 +8,7 @@ overrides: mermaid: 11.12.0 preact: 10.27.2 roughjs: 4.6.6 - '@types/express-serve-static-core': 5.0.7 + '@types/express-serve-static-core': 5.1.0 flat@<5.0.1: '>=5.0.1' debug@>=3.2.0 <3.2.7: '>=3.2.7' nanoid@<3.3.8: '>=3.3.8' @@ -41,8 +41,8 @@ importers: specifier: 4.0.1 version: 4.0.1 '@playwright/test': - specifier: 1.55.1 - version: 1.55.1 + specifier: 1.56.0 + version: 1.56.0 '@triliumnext/server': specifier: workspace:* version: link:apps/server @@ -50,8 +50,8 @@ importers: specifier: 5.0.3 version: 5.0.3 '@types/node': - specifier: 22.18.8 - version: 22.18.8 + specifier: 22.18.9 + version: 22.18.9 '@vitest/coverage-v8': specifier: 3.2.4 version: 3.2.4(@vitest/browser@3.2.4)(vitest@3.2.4) @@ -80,11 +80,11 @@ importers: specifier: 2.2.2 version: 2.2.2(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-react-hooks: - specifier: 6.1.1 - version: 6.1.1(eslint@9.37.0(jiti@2.6.1)) + specifier: 7.0.0 + version: 7.0.0(eslint@9.37.0(jiti@2.6.1)) happy-dom: - specifier: ~19.0.0 - version: 19.0.2 + specifier: ~20.0.0 + version: 20.0.0 jiti: specifier: 2.6.1 version: 2.6.1 @@ -95,8 +95,8 @@ importers: specifier: 0.18.0 version: 0.18.0 rollup-plugin-webpack-stats: - specifier: 2.1.5 - version: 2.1.5(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + specifier: 2.1.6 + version: 2.1.6(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) tslib: specifier: 2.8.1 version: 2.8.1 @@ -107,20 +107,20 @@ importers: specifier: ~5.9.0 version: 5.9.3 typescript-eslint: - specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) upath: specifier: 2.0.1 version: 2.0.1 vite: specifier: 7.1.9 - version: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) vite-plugin-dts: specifier: ~4.5.0 - version: 4.5.4(@types/node@22.18.8)(rollup@4.52.0)(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.5.4(@types/node@22.18.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) apps/client: dependencies: @@ -156,7 +156,7 @@ importers: version: 0.2.0(mermaid@11.12.0) '@mind-elixir/node-menu': specifier: 5.0.0 - version: 5.0.0(mind-elixir@5.3.1) + version: 5.0.0(mind-elixir@5.3.2) '@popperjs/core': specifier: 2.11.8 version: 2.11.8 @@ -233,14 +233,14 @@ importers: specifier: 8.11.1 version: 8.11.1 marked: - specifier: 16.3.0 - version: 16.3.0 + specifier: 16.4.0 + version: 16.4.0 mermaid: specifier: 11.12.0 version: 11.12.0 mind-elixir: - specifier: 5.3.1 - version: 5.3.1 + specifier: 5.3.2 + version: 5.3.2 normalize.css: specifier: 8.0.1 version: 8.0.1 @@ -294,8 +294,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) happy-dom: - specifier: 19.0.2 - version: 19.0.2 + specifier: 20.0.0 + version: 20.0.0 script-loader: specifier: 0.7.2 version: 0.7.2 @@ -322,7 +322,7 @@ importers: dependencies: '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@38.2.1) + version: 2.1.3(electron@38.2.2) better-sqlite3: specifier: 12.4.1 version: 12.4.1 @@ -343,29 +343,29 @@ importers: version: 2.38.5(jquery@3.7.1) devDependencies: '@electron-forge/cli': - specifier: 7.9.0 - version: 7.9.0(encoding@0.1.13) + specifier: 7.10.2 + version: 7.10.2(encoding@0.1.13)(esbuild@0.25.10) '@electron-forge/maker-deb': - specifier: 7.9.0 - version: 7.9.0 + specifier: 7.10.2 + version: 7.10.2 '@electron-forge/maker-dmg': - specifier: 7.9.0 - version: 7.9.0 + specifier: 7.10.2 + version: 7.10.2 '@electron-forge/maker-flatpak': - specifier: 7.9.0 - version: 7.9.0 + specifier: 7.10.2 + version: 7.10.2 '@electron-forge/maker-rpm': - specifier: 7.9.0 - version: 7.9.0 + specifier: 7.10.2 + version: 7.10.2 '@electron-forge/maker-squirrel': - specifier: 7.9.0 - version: 7.9.0 + specifier: 7.10.2 + version: 7.10.2 '@electron-forge/maker-zip': - specifier: 7.9.0 - version: 7.9.0 + specifier: 7.10.2 + version: 7.10.2 '@electron-forge/plugin-auto-unpack-natives': - specifier: 7.9.0 - version: 7.9.0 + specifier: 7.10.2 + version: 7.10.2 '@triliumnext/commons': specifier: workspace:* version: link:../../packages/commons @@ -379,8 +379,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) electron: - specifier: 38.2.1 - version: 38.2.1 + specifier: 38.2.2 + version: 38.2.2 prebuild-install: specifier: 7.1.3 version: 7.1.3 @@ -435,8 +435,8 @@ importers: specifier: 13.0.1 version: 13.0.1(webpack@5.101.3(esbuild@0.25.10)) electron: - specifier: 38.2.1 - version: 38.2.1 + specifier: 38.2.2 + version: 38.2.2 fs-extra: specifier: 11.3.2 version: 11.3.2 @@ -458,7 +458,7 @@ importers: version: 7.1.1 '@electron/remote': specifier: 2.1.3 - version: 2.1.3(electron@38.2.1) + version: 2.1.3(electron@38.2.2) '@preact/preset-vite': specifier: 2.10.2 version: 2.10.2(@babel/core@7.28.0)(preact@10.27.2)(vite@7.1.9(@types/node@24.6.0)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) @@ -607,8 +607,8 @@ importers: specifier: 3.1.10 version: 3.1.10 electron: - specifier: 38.2.1 - version: 38.2.1 + specifier: 38.2.2 + version: 38.2.2 electron-debug: specifier: 4.1.0 version: 4.1.0 @@ -679,8 +679,8 @@ importers: specifier: 4.1.0 version: 4.1.0 marked: - specifier: 16.3.0 - version: 16.3.0 + specifier: 16.4.0 + version: 16.4.0 mime-types: specifier: 3.0.1 version: 3.0.1 @@ -694,8 +694,8 @@ importers: specifier: 0.6.0 version: 0.6.0 openai: - specifier: 6.1.0 - version: 6.1.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4) + specifier: 6.3.0 + version: 6.3.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4) rand-token: specifier: 1.0.1 version: 1.0.1 @@ -819,8 +819,8 @@ importers: version: 47.0.0(bufferutil@4.0.9)(ckeditor5@47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41))(utf-8-validate@6.0.5) devDependencies: '@smithy/middleware-retry': - specifier: 4.4.0 - version: 4.4.0 + specifier: 4.4.1 + version: 4.4.1 '@types/jquery': specifier: 3.5.33 version: 3.5.33 @@ -835,16 +835,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 4.1.0 - version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) + version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ~8.46.0 + version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4) @@ -871,16 +871,16 @@ importers: version: 12.1.1(stylelint@16.25.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: 9.20.0 version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -895,16 +895,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 4.1.0 - version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) + version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ~8.46.0 + version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4) @@ -931,16 +931,16 @@ importers: version: 12.1.1(stylelint@16.25.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: 9.20.0 version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -955,16 +955,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 4.1.0 - version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) + version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ~8.46.0 + version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4) @@ -991,16 +991,16 @@ importers: version: 12.1.1(stylelint@16.25.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: 9.20.0 version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1022,16 +1022,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 4.1.0 - version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) + version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ~8.46.0 + version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4) @@ -1058,16 +1058,16 @@ importers: version: 12.1.1(stylelint@16.25.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: 9.20.0 version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1089,16 +1089,16 @@ importers: version: 5.0.0 '@ckeditor/ckeditor5-package-tools': specifier: 4.1.0 - version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) + version: 4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': - specifier: ~8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: ~8.46.0 + version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 3.2.4 - version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-istanbul': specifier: 3.2.4 version: 3.2.4(vitest@3.2.4) @@ -1125,16 +1125,16 @@ importers: version: 12.1.1(stylelint@16.25.0(typescript@5.9.3)) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(typescript@5.9.3) typescript: specifier: 5.9.3 version: 5.9.3 vite-plugin-svgo: specifier: ~2.0.0 - version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) webdriverio: specifier: 9.20.0 version: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -1175,89 +1175,89 @@ importers: specifier: 6.5.11 version: 6.5.11 '@codemirror/view': - specifier: 6.38.4 - version: 6.38.4 + specifier: 6.38.5 + version: 6.38.5 '@fsegurai/codemirror-theme-abcdef': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-abyss': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-android-studio': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-andromeda': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-basic-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-basic-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-cobalt2': specifier: 6.0.2 - version: 6.0.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.0.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-forest': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-github-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-github-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-gruvbox-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-gruvbox-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-material-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-material-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-monokai': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-nord': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-palenight': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-solarized-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-solarized-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-tokyo-night-day': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-tokyo-night-storm': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-volcano': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-vscode-dark': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-vscode-light': specifier: 6.2.2 - version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1) + version: 6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1) '@replit/codemirror-indentation-markers': specifier: 6.5.3 - version: 6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4) + version: 6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5) '@replit/codemirror-lang-nix': specifier: 6.0.1 - version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) + version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) '@replit/codemirror-vim': specifier: 6.3.0 - version: 6.3.0(@codemirror/commands@6.9.0)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4) + version: 6.3.0(@codemirror/commands@6.9.0)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5) '@ssddanbrown/codemirror-lang-smarty': specifier: 1.0.0 version: 1.0.0 @@ -1315,11 +1315,11 @@ importers: specifier: 5.21.1 version: 5.21.1 '@typescript-eslint/eslint-plugin': - specifier: 8.45.0 - version: 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.45.0 - version: 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.46.0 + version: 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) dotenv: specifier: 17.2.3 version: 17.2.3 @@ -2015,8 +2015,8 @@ packages: '@codemirror/theme-one-dark@6.1.2': resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} - '@codemirror/view@6.38.4': - resolution: {integrity: sha512-hduz0suCcUSC/kM8Fq3A9iLwInJDl8fD1xLpTIk+5xkNm8z/FT7UsIa9sOXrkpChh+XXc18RzswE8QqELsVl+g==} + '@codemirror/view@6.38.5': + resolution: {integrity: sha512-SFVsNAgsAoou+BjRewMqN+m9jaztB9wCWN9RSRgePqUbq8UVlvJfku5zB2KVhLPgH/h0RLk38tvd4tGeAhygnw==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -2093,85 +2093,85 @@ packages: '@dual-bundle/import-meta-resolve@4.2.1': resolution: {integrity: sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==} - '@electron-forge/cli@7.9.0': - resolution: {integrity: sha512-FIs9rV6gN1v8rY73j/dvhQWF8tht035bN2LatY/z99H2KpWr0lhD03MOkIM2lRgrPEqVTExA4JEl9ja9yXBD3Q==} + '@electron-forge/cli@7.10.2': + resolution: {integrity: sha512-X1RtS5IqNgzGDS2rr1q0Y74wU/m3DbU4vSgllNun1ZQv1BfMpDcKLhnKi3aeetoA0huLTpMVU9eWJ7bziI9fxA==} engines: {node: '>= 16.4.0'} hasBin: true - '@electron-forge/core-utils@7.9.0': - resolution: {integrity: sha512-votOf1+20cUJim0smYZW7OylXrl89JlpuFTgFpn5WFpDfAV6C0iH9202K1sa33v9OQ989JnpWDZtQNQzQHHNtg==} + '@electron-forge/core-utils@7.10.2': + resolution: {integrity: sha512-JXrk2hWR4q8KgZFABpojjuqql3tYeVIH6qmtbkNEkZEQq7YIxajJBCct7J7bWfNQTmHotsQ3k5KLknhyhTaBMw==} engines: {node: '>= 16.4.0'} - '@electron-forge/core@7.9.0': - resolution: {integrity: sha512-S5uFv9sFAVYSO80/K4HZsJL9L2Bs51IxCqR0a2Lk4NdKr9Fpzp6txwuALSJzM1bIpohtqbjmgut49o95wg30ZA==} + '@electron-forge/core@7.10.2': + resolution: {integrity: sha512-HAIuOtpOfGjA0cd55tbEV2gAv+A7tSZg9bonmVDYFEe6dBgbLk8a3+/1fJUdWW8fyFkg1wa8zK7pjP751bAXsA==} engines: {node: '>= 16.4.0'} - '@electron-forge/maker-base@7.9.0': - resolution: {integrity: sha512-u0jo2kaYRxh/Rai6DyFSGJcNLRVWxiKaGUjMhX1LrKolufUkCxxR4TEmv4Hvl03WTr9pQb06umlIrVMaNb+j9A==} + '@electron-forge/maker-base@7.10.2': + resolution: {integrity: sha512-1QN4qnPVTjo+qWYG+s0kYv7XcuIowsPVvbl718FgJUcvkxyRjUA6kWHjFxRvdV6g7Sa2PzZBF+/Mrjpws1lehQ==} engines: {node: '>= 16.4.0'} - '@electron-forge/maker-deb@7.9.0': - resolution: {integrity: sha512-b1TRMKkeuZ2PTKVsTMWLY+82O6UQVPQ17x5hkWe0lyIxRyCfJr6hD+AqYbvEJ50ncDkvyCtENBT6GnhfbKOGxA==} + '@electron-forge/maker-deb@7.10.2': + resolution: {integrity: sha512-4MPr9NW5UbEUbf9geZn5R/0O/QVIiy2EgUXOYOeKkA7oR8U6I1I3+BytYFHYcxbY6+PGhi1H1VTLJLITbHGVWw==} engines: {node: '>= 16.4.0'} - '@electron-forge/maker-dmg@7.9.0': - resolution: {integrity: sha512-W3kqbFuBIqxe/56eZmBv80Fw0RdXIL1DXF0D4O56ILnx7jW/d/j+8fJdie5dcw6nBySDIZbWnxsZiOIV2k2hrg==} + '@electron-forge/maker-dmg@7.10.2': + resolution: {integrity: sha512-ksSX6/Ioxa3h3rEGIg26qfDcJgB3aFGivitRdSkEnzUCLWJSUoThEwLToA7CAq4J/4ZREK0PDJ7FPsB+F8CYfQ==} engines: {node: '>= 16.4.0'} - '@electron-forge/maker-flatpak@7.9.0': - resolution: {integrity: sha512-LqFWp61+ozlioFtqu+UryKjdsIdv+BLunDDjMRcdoMqiAblURz8bRgqq8FAdshiUt+iq4NPz6K9N0dKtSjhvuA==} + '@electron-forge/maker-flatpak@7.10.2': + resolution: {integrity: sha512-LldkYGkIhri99+HqetGjNzi2cdXy32o5uLlr7fDLoiegm8WAkvvWxFTLdSDS1RP94f6PVOKR9KHqPauu5GaIYw==} engines: {node: '>= 16.4.0'} - '@electron-forge/maker-rpm@7.9.0': - resolution: {integrity: sha512-if7Odo/LFn1MIGW6ftEnhP77+0pTeMd9e9YvM8+qiaztV/jVNB0RGuuzKOtQXzbrrjps/YWG15x+U4/XUIUylg==} + '@electron-forge/maker-rpm@7.10.2': + resolution: {integrity: sha512-LQoeYzbY/z1yuBBA+bNutCJmhCA4NcXUbFO4OTqsIX8B6y1zNTYZT4JEuhoK7eBsP4/Rz6u/JnNp0XOyjftOUQ==} engines: {node: '>= 16.4.0'} - '@electron-forge/maker-squirrel@7.9.0': - resolution: {integrity: sha512-Ea3MrieWC1KRct1QSZeOBY+GIqHZO5bXj6xCuj81f6nz8JMCsXdgvKosdbfcJMSKu4SYZ52PtoweA6uAACfLww==} + '@electron-forge/maker-squirrel@7.10.2': + resolution: {integrity: sha512-Y5EhNSBXf4a7qcq+BK/x5qVDlQ1Gez5V+arUpDvVxf1zwvsB1aSyAjmoBrOKGYD9A5pJzjkMWMDw95MStl1W4A==} engines: {node: '>= 16.4.0'} - '@electron-forge/maker-zip@7.9.0': - resolution: {integrity: sha512-UGeziReiz8yuDTjliOjvbdyulIHpKAWkDeW3kOcMTUmRcCgrCkBNr+Pp6ih8Q3aBhG+CCd4++oe2rDnnuVvxFw==} + '@electron-forge/maker-zip@7.10.2': + resolution: {integrity: sha512-APRqVPM+O1rj4O7sk5f8tqJpS5UgxcUJEsCnXN4JRpdRvsOlMopzYZdazlCLH9l7S+r4ZKirjtMluIGeYq8YOg==} engines: {node: '>= 16.4.0'} - '@electron-forge/plugin-auto-unpack-natives@7.9.0': - resolution: {integrity: sha512-PQeTq7Mp2bQkj/fdf+DjnSFKLWyBCSdLqZqNadszA9+2QcxFVv+v2ckTuwkHAdoecVNOdza/VZZIDbVFLhUHkQ==} + '@electron-forge/plugin-auto-unpack-natives@7.10.2': + resolution: {integrity: sha512-uQnahm1DECwqI8hBC7PKccyfovY/YqHNz8de3OxyjQDmwsqQfCA8Ucyh1E9n4NMEpw6Co8KLn+qF2BuIOsftLA==} engines: {node: '>= 16.4.0'} - '@electron-forge/plugin-base@7.9.0': - resolution: {integrity: sha512-2cnShgfes0sqH7A3+54fWhfJEfU++1OC2HE50a4sWtWEDwyWLGbwW7tp9BgSXrvIexO2AGKHQ1pKIjpZYVC0fA==} + '@electron-forge/plugin-base@7.10.2': + resolution: {integrity: sha512-+4YLmkLZxvS6JFXYNI4dHt8Il8iIvwk2o6lCJGwNysOUq2KOZ3Wu1He4Ko8HhKcO1VWbFvslbh57oQn963Aryw==} engines: {node: '>= 16.4.0'} - '@electron-forge/publisher-base@7.9.0': - resolution: {integrity: sha512-z3eH4+C++LiDqlKmri04IbSNNWLRYLvc49uNiOgfvnejplLsos720TTbwgruyI3D2fbpmhrVmz9kp9H9YzXdVg==} + '@electron-forge/publisher-base@7.10.2': + resolution: {integrity: sha512-2k2VOY0wOoAgQoQXn/u3EJ2Ka2v363+wC/+zUMTWGeRHW8pRwX84WX2SpsTttRzbsqAEMJYw5FAzgMBEQUTfpg==} engines: {node: '>= 16.4.0'} - '@electron-forge/shared-types@7.9.0': - resolution: {integrity: sha512-6jZF+zq3SYMnweQpgr5fwlSgOd2yOZ5qlfz/CgXyVljiv0e0UThzpOjfTLuwuVgZX7a60xV+h0mg1h82Glu3wQ==} + '@electron-forge/shared-types@7.10.2': + resolution: {integrity: sha512-e2pd9RsdbKwsNf6UtKoolmJGy92Nc0/XO4SI91doV8cM954hM2XSYz3VHoqXebMFAF1JDfXoEUt6UCRbEDgMgw==} engines: {node: '>= 16.4.0'} - '@electron-forge/template-base@7.9.0': - resolution: {integrity: sha512-DvXdJHh4qP+LBX6xNBlO0nfljvJNTmiQNfLRfSouRdYCWbr5hC7wyWAX803HqwRsVLRZj2oiLYZjmyG3jESp8Q==} + '@electron-forge/template-base@7.10.2': + resolution: {integrity: sha512-D9DbEx3rtikIhUyn4tcz2pJqHNU/+FXKNnzSvmrJoJ9LusR3C42OU9GtbU8oT3nawpnCGgPFIOGXrzexFPp6DA==} engines: {node: '>= 16.4.0'} - '@electron-forge/template-vite-typescript@7.9.0': - resolution: {integrity: sha512-qGK649YnC3iOVrj/hHUu/TXG7Nn/a7QykEOPrCrxROWL7mtw8CMUE+FOVETd+eew7/4ldUNzl+5b9ebP8jHOmg==} + '@electron-forge/template-vite-typescript@7.10.2': + resolution: {integrity: sha512-df7rpxxIOIyZn0RfQ1GIlLW7dXhxkerc9uZ3ozO4C7zfvip3z0Mg+wS1synktPfr4WISaPktIdnj3mVu6Uu7Mw==} engines: {node: '>= 16.4.0'} - '@electron-forge/template-vite@7.9.0': - resolution: {integrity: sha512-m8Fi40XaF7YDJo7YqmfJbkjRRsttN9EEHkmq+McLrDUbln15Ppm59RAwUhizDQzs4enmLcNQPaFllbAg/2t8vQ==} + '@electron-forge/template-vite@7.10.2': + resolution: {integrity: sha512-hR9HBOM902yq7zhFl8bO3w5ufMgitdd5ZwDzAdKITFh2ttZemHy9ha5S0K+R+4GoXHz8t7hUTHk8+iPy09qrpA==} engines: {node: '>= 16.4.0'} - '@electron-forge/template-webpack-typescript@7.9.0': - resolution: {integrity: sha512-z7PB72sI11LBSPz9w9nwwk0le/lZ3VT8TrLc0NYh4F4LbZ19Z+lxcraaAdf21efvWzodhWx8khAyA8WvkNxVSw==} + '@electron-forge/template-webpack-typescript@7.10.2': + resolution: {integrity: sha512-JtrLUAFbxxWJ1kU7b8MNyL5SO9/rY5UeNz1b9hvMvilW8GxyMWUen58dafgdnx3OpKLNZnhOOhgRagNppEzJOA==} engines: {node: '>= 16.4.0'} - '@electron-forge/template-webpack@7.9.0': - resolution: {integrity: sha512-ser22QczYGor7N6bnMUwexdWbLMNApr6zpBoT+Xfn6P4Ks67ttzcfkAges7GXHNjXwox4ePYZ3+D7cWQem5C4g==} + '@electron-forge/template-webpack@7.10.2': + resolution: {integrity: sha512-VIUXA+XHM5SLjg7fIpOOmBsgi0LstkjrEz4gUzVL0AaITM7e+BCziIHld1ceXLbQ1FnKtrUGnQ9X/cHYxYvhHg==} engines: {node: '>= 16.4.0'} - '@electron-forge/tracer@7.9.0': - resolution: {integrity: sha512-7itsjW1WJQADg7Ly61ggI5CCRt+QDVx3HOZC1w69jMUtnipKyPRCbvTBf1oplsNqbIzZxceXdfex6W53YNehvA==} + '@electron-forge/tracer@7.10.2': + resolution: {integrity: sha512-jhLLQbttfZViSOYn/3SJc8HML+jNZAytPVJwgGGd3coUiFysWJ2Xald99iqOiouPAhIigBfNPxQb/q/EbcDu4g==} engines: {node: '>= 14.17.5'} '@electron/asar@3.4.1': @@ -3372,8 +3372,8 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.55.1': - resolution: {integrity: sha512-IVAh/nOJaw6W9g+RJVlIQJ6gSiER+ae6mKQ5CX1bERzQgbC1VSeBlwdvczT7pxb0GWiyrxH4TGKbMfDb4Sq/ig==} + '@playwright/test@1.56.0': + resolution: {integrity: sha512-Tzh95Twig7hUwwNe381/K3PggZBZblKUe2wv25oIpzWLr6Z0m4KgV1ZVIjnR6GM9ANEqjZD7XsZEa6JL/7YEgg==} engines: {node: '>=18'} hasBin: true @@ -4182,6 +4182,10 @@ packages: resolution: {integrity: sha512-XJ4z5FxvY/t0Dibms/+gLJrI5niRoY0BCmE02fwmPcRYFPI4KI876xaE79YGWIKnEslMbuQPsIEsoU/DXa0DoA==} engines: {node: '>=18.0.0'} + '@smithy/core@3.15.0': + resolution: {integrity: sha512-VJWncXgt+ExNn0U2+Y7UywuATtRYaodGQKFo9mDyh70q+fJGedfrqi2XuKU1BhiLeXgg6RZrW7VEKfeqFhHAJA==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.0.6': resolution: {integrity: sha512-hKMWcANhUiNbCJouYkZ9V3+/Qf9pteR1dnwgdyzR09R4ODEYx8BbUysHwRSyex4rZ9zapddZhLFTnT4ZijR4pw==} engines: {node: '>=18.0.0'} @@ -4210,6 +4214,10 @@ packages: resolution: {integrity: sha512-BG3KSmsx9A//KyIfw+sqNmWFr1YBUr+TwpxFT7yPqAk0yyDh7oSNgzfNH7pS6OC099EGx2ltOULvumCFe8bcgw==} engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.3.1': + resolution: {integrity: sha512-3AvYYbB+Dv5EPLqnJIAgYw/9+WzeBiUYS8B+rU0pHq5NMQMvrZmevUROS4V2GAt0jEOn9viBzPLrZE+riTNd5Q==} + engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.0.4': resolution: {integrity: sha512-qnbTPUhCVnCgBp4z4BUJUhOEkVwxiEi1cyFM+Zj6o+aY8OFGxUQleKWq8ltgp3dujuhXojIvJWdoqpm6dVO3lQ==} engines: {node: '>=18.0.0'} @@ -4234,8 +4242,12 @@ packages: resolution: {integrity: sha512-jFVjuQeV8TkxaRlcCNg0GFVgg98tscsmIrIwRFeC74TIUyLE3jmY9xgc1WXrPQYRjQNK3aRoaIk6fhFRGOIoGw==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.0': - resolution: {integrity: sha512-yaVBR0vQnOnzex45zZ8ZrPzUnX73eUC8kVFaAAbn04+6V7lPtxn56vZEBBAhgS/eqD6Zm86o6sJs6FuQVoX5qg==} + '@smithy/middleware-endpoint@4.3.1': + resolution: {integrity: sha512-JtM4SjEgImLEJVXdsbvWHYiJ9dtuKE8bqLlvkvGi96LbejDL6qnVpVxEFUximFodoQbg0Gnkyff9EKUhFhVJFw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.4.1': + resolution: {integrity: sha512-wXxS4ex8cJJteL0PPQmWYkNi9QKDWZIpsndr0wZI2EL+pSSvA/qqxXU60gBOJoIc2YgtZSWY/PE86qhKCCKP1w==} engines: {node: '>=18.0.0'} '@smithy/middleware-serde@4.2.0': @@ -4286,6 +4298,10 @@ packages: resolution: {integrity: sha512-3BDx/aCCPf+kkinYf5QQhdQ9UAGihgOVqI3QO5xQfSaIWvUE4KYLtiGRWsNe1SR7ijXC0QEPqofVp5Sb0zC8xQ==} engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.7.1': + resolution: {integrity: sha512-WXVbiyNf/WOS/RHUoFMkJ6leEVpln5ojCjNBnzoZeMsnCg3A0BRhLK3WYc4V7PmYcYPZh9IYzzAg9XcNSzYxYQ==} + engines: {node: '>=18.0.0'} + '@smithy/types@4.6.0': resolution: {integrity: sha512-4lI9C8NzRPOv66FaY1LL1O/0v0aLVrq/mXP/keUa9mJOApEeae43LsLd2kZRUJw91gxOQfLIrV3OvqPgWz1YsA==} engines: {node: '>=18.0.0'} @@ -4298,6 +4314,10 @@ packages: resolution: {integrity: sha512-+erInz8WDv5KPe7xCsJCp+1WCjSbah9gWcmUXc9NqmhyPx59tf7jqFz+za1tRG1Y5KM1Cy1rWCcGypylFp4mvA==} engines: {node: '>=18.0.0'} + '@smithy/util-base64@4.3.0': + resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} + engines: {node: '>=18.0.0'} + '@smithy/util-body-length-browser@4.2.0': resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} engines: {node: '>=18.0.0'} @@ -4346,6 +4366,10 @@ packages: resolution: {integrity: sha512-vtO7ktbixEcrVzMRmpQDnw/Ehr9UWjBvSJ9fyAbadKkC4w5Cm/4lMO8cHz8Ysb8uflvQUNRcuux/oNHKPXkffg==} engines: {node: '>=18.0.0'} + '@smithy/util-stream@4.5.0': + resolution: {integrity: sha512-0TD5M5HCGu5diEvZ/O/WquSjhJPasqv7trjoqHyWjNh/FBeBl7a0ztl9uFMOsauYtRfd8jvpzIAQhDHbx+nvZw==} + engines: {node: '>=18.0.0'} + '@smithy/util-uri-escape@4.2.0': resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} engines: {node: '>=18.0.0'} @@ -4715,8 +4739,8 @@ packages: '@types/express-http-proxy@1.6.7': resolution: {integrity: sha512-CEp9pbnwVI1RzN9PXc+KESMxwUW5r1O7tkWb5h7Wg/YAIf+KulD/zKev8fbbn+Ljt0Yvs8MXwV2W6Id+cKxe2Q==} - '@types/express-serve-static-core@5.0.7': - resolution: {integrity: sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==} + '@types/express-serve-static-core@5.1.0': + resolution: {integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==} '@types/express-session@1.18.2': resolution: {integrity: sha512-k+I0BxwVXsnEU2hV77cCobC08kIsn4y44C3gC0b46uxZVMaXA04lSPgRLR/bSL2w0t0ShJiG8o4jPzRG/nscFg==} @@ -4841,6 +4865,9 @@ packages: '@types/node@22.18.8': resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} + '@types/node@22.18.9': + resolution: {integrity: sha512-5yBtK0k/q8PjkMXbTfeIEP/XVYnz1R9qZJ3yUicdEW7ppdDJfe+MqXEhpqDL3mtn4Wvs1u0KLEG0RXzCgNpsSg==} + '@types/node@24.6.0': resolution: {integrity: sha512-F1CBxgqwOMc4GKJ7eY22hWhBVQuMYTtqI8L0FcszYcpYX0fzfDGpez22Xau8Mgm7O9fI+zA/TYIdq3tGWfweBA==} @@ -4989,11 +5016,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/eslint-plugin@8.45.0': - resolution: {integrity: sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==} + '@typescript-eslint/eslint-plugin@8.46.0': + resolution: {integrity: sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.45.0 + '@typescript-eslint/parser': ^8.46.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -5004,8 +5031,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.45.0': - resolution: {integrity: sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==} + '@typescript-eslint/parser@8.46.0': + resolution: {integrity: sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5023,8 +5050,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.45.0': - resolution: {integrity: sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==} + '@typescript-eslint/project-service@8.46.0': + resolution: {integrity: sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5037,8 +5064,8 @@ packages: resolution: {integrity: sha512-NdhWHgmynpSvyhchGLXh+w12OMT308Gm25JoRIyTZqEbApiBiQHD/8xgb6LqCWCFcxFtWwaVdFsLPQI3jvhywg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.45.0': - resolution: {integrity: sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==} + '@typescript-eslint/scope-manager@8.46.0': + resolution: {integrity: sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.40.0': @@ -5059,6 +5086,12 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.46.0': + resolution: {integrity: sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.40.0': resolution: {integrity: sha512-eE60cK4KzAc6ZrzlJnflXdrMqOBaugeukWICO2rB0KNvwdIMaEaYiywwHMzA1qFpTxrLhN9Lp4E/00EgWcD3Ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5066,8 +5099,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.45.0': - resolution: {integrity: sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==} + '@typescript-eslint/type-utils@8.46.0': + resolution: {integrity: sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5085,6 +5118,10 @@ packages: resolution: {integrity: sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.46.0': + resolution: {integrity: sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.40.0': resolution: {integrity: sha512-k1z9+GJReVVOkc1WfVKs1vBrR5MIKKbdAjDTPvIK3L8De6KbFfPFt6BKpdkdk7rZS2GtC/m6yI5MYX+UsuvVYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5097,8 +5134,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.45.0': - resolution: {integrity: sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==} + '@typescript-eslint/typescript-estree@8.46.0': + resolution: {integrity: sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5117,8 +5154,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.45.0': - resolution: {integrity: sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==} + '@typescript-eslint/utils@8.46.0': + resolution: {integrity: sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5132,8 +5169,8 @@ packages: resolution: {integrity: sha512-576+u0QD+Jp3tZzvfRfxon0EA2lzcDt3lhUbsC6Lgzy9x2VR4E+JUiNyGHi5T8vk0TV+fpJ5GLG1JsJuWCaKhw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.45.0': - resolution: {integrity: sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==} + '@typescript-eslint/visitor-keys@8.46.0': + resolution: {integrity: sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -5516,10 +5553,6 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} - ansi-styles@6.2.3: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} @@ -7166,8 +7199,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@38.2.1: - resolution: {integrity: sha512-P4pE2RpRg3kM8IeOK+heg6iAxR5wcXnNHrbVchn7M3GBnYAhjfJRkROusdOro5PlKzdtfKjesbbqaG4MqQXccg==} + electron@38.2.2: + resolution: {integrity: sha512-OXSaVNXDlonXDjMRsFNQo1j5tzTKwKXh5/m46IjAFccBcZJZMISI+EjSI07oexIuhvKM8AZLuFuihVn4YjWWrA==} engines: {node: '>= 12.20.55'} hasBin: true @@ -7397,8 +7430,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - eslint-plugin-react-hooks@6.1.1: - resolution: {integrity: sha512-St9EKZzOAQF704nt2oJvAKZHjhrpg25ClQoaAlHmPZuajFldVLqRDW4VBNAS01NzeiQF0m0qhG1ZA807K6aVaQ==} + eslint-plugin-react-hooks@7.0.0: + resolution: {integrity: sha512-fNXaOwvKwq2+pXiRpXc825Vd63+KM4DLL40Rtlycb8m7fYpp6efrTp1sa6ZbP/Ap58K2bEKFXRmhURE+CJAQWw==} engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 @@ -8104,8 +8137,8 @@ packages: handle-thing@2.0.1: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} - happy-dom@19.0.2: - resolution: {integrity: sha512-831CLbgDyjRbd2lApHZFsBDe56onuFcjsCBPodzWpzedTpeDr8CGZjs7iEIdNW1DVwSFRecfwzLpVyGBPamwGA==} + happy-dom@20.0.0: + resolution: {integrity: sha512-GkWnwIFxVGCf2raNrxImLo397RdGhLapj5cT3R2PT7FwL62Ze1DROhzmYW7+J3p9105DYMVenEejEbnq5wA37w==} engines: {node: '>=20.0.0'} has-bigints@1.1.0: @@ -8199,6 +8232,12 @@ packages: resolution: {integrity: sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==} engines: {node: '>=18.0.0'} + hermes-estree@0.25.1: + resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==} + + hermes-parser@0.25.1: + resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} + highlight.js@11.11.1: resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} engines: {node: '>=12.0.0'} @@ -9362,8 +9401,8 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - marked@16.3.0: - resolution: {integrity: sha512-K3UxuKu6l6bmA5FUwYho8CfJBlsUWAooKtdGgMcERSpF7gcBUrCGsLH7wDaaNOzwq18JzSUDyoEb/YsrqMac3w==} + marked@16.4.0: + resolution: {integrity: sha512-CTPAcRBq57cn3R8n3hwc2REddc28hjR7RzDXQ+lXLmMJYqn20BaI2cGw6QjgZGIgVfp2Wdfw4aMzgNteQ6qJgQ==} engines: {node: '>= 20'} hasBin: true @@ -9611,8 +9650,8 @@ packages: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - mind-elixir@5.3.1: - resolution: {integrity: sha512-o40b9MWMP1WCntVKu7OTcxMLtDoUALtCfbwsjo16Jc6sgVgYd+q21HMo2DTeGoN3bnd5HDb8sgXJPqwD+kumpA==} + mind-elixir@5.3.2: + resolution: {integrity: sha512-dAhsRELKAmrs0UFTrCFeItrCEi0vtslr1kKkeBfu5FSDkuuu4U9imBcHdkeYnC0rUVfXe5Henirmz7yTkcdVVg==} mini-css-extract-plugin@2.4.7: resolution: {integrity: sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==} @@ -10096,8 +10135,8 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} - openai@6.1.0: - resolution: {integrity: sha512-5sqb1wK67HoVgGlsPwcH2bUbkg66nnoIYKoyV9zi5pZPqh7EWlmSrSDjAh4O5jaIg/0rIlcDKBtWvZBuacmGZg==} + openai@6.3.0: + resolution: {integrity: sha512-E6vOGtZvdcb4yXQ5jXvDlUG599OhIkb/GjBLZXS+qk0HF+PJReIldEc9hM8Ft81vn+N6dRdFRb7BZNK8bbvXrw==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -10428,13 +10467,13 @@ packages: pkg-types@2.1.0: resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} - playwright-core@1.55.1: - resolution: {integrity: sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==} + playwright-core@1.56.0: + resolution: {integrity: sha512-1SXl7pMfemAMSDn5rkPeZljxOCYAmQnYLBTExuh6E8USHXGSX3dx6lYZN/xPpTz1vimXmPA9CDnILvmJaB8aSQ==} engines: {node: '>=18'} hasBin: true - playwright@1.55.1: - resolution: {integrity: sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==} + playwright@1.56.0: + resolution: {integrity: sha512-X5Q1b8lOdWIE4KAoHpW3SE8HvUB+ZZsUoN64ZhjnN8dOb1UpujxBtENGiZFE+9F/yhzJwYa+ca3u43FeLbboHA==} engines: {node: '>=18'} hasBin: true @@ -11757,14 +11796,16 @@ packages: peerDependencies: rollup: ^3.0.0||^4.0.0 - rollup-plugin-webpack-stats@2.1.5: - resolution: {integrity: sha512-dUYAd/7B7zNxosBQFK0xa2uNeBS1ESoWo8cYYeRX9kYYkI9ciHIBf2jGwAOQNg0V2KJjMmwkJEvqXfE1MColjg==} + rollup-plugin-webpack-stats@2.1.6: + resolution: {integrity: sha512-njKotmo0lWIbrTKJ5CrIPk9DuDsQziOo73rE3aQIAhecJj5o0ECBbE0vxgMor37o6TQ/IEAK8pDxzs4CqLdIJw==} engines: {node: '>=18'} peerDependencies: rolldown: ^1.0.0-beta.0 rollup: ^3.0.0 || ^4.0.0 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 peerDependenciesMeta: + rolldown: + optional: true rollup: optional: true vite: @@ -13012,8 +13053,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - typescript-eslint@8.45.0: - resolution: {integrity: sha512-qzDmZw/Z5beNLUrXfd0HIW6MzIaAV5WNDxmMs9/3ojGOpYavofgNAAD/nC6tGV2PczIi0iw8vot2eAe/sBn7zg==} + typescript-eslint@8.46.0: + resolution: {integrity: sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -13024,6 +13065,11 @@ packages: engines: {node: '>=12.20'} hasBin: true + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.8.2: resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} @@ -13946,7 +13992,7 @@ snapshots: '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 '@smithy/middleware-endpoint': 4.3.0 - '@smithy/middleware-retry': 4.4.0 + '@smithy/middleware-retry': 4.4.1 '@smithy/middleware-serde': 4.2.0 '@smithy/middleware-stack': 4.2.0 '@smithy/node-config-provider': 4.3.0 @@ -13992,7 +14038,7 @@ snapshots: '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 '@smithy/middleware-endpoint': 4.3.0 - '@smithy/middleware-retry': 4.4.0 + '@smithy/middleware-retry': 4.4.1 '@smithy/middleware-serde': 4.2.0 '@smithy/middleware-stack': 4.2.0 '@smithy/node-config-provider': 4.3.0 @@ -14186,7 +14232,7 @@ snapshots: '@smithy/invalid-dependency': 4.0.4 '@smithy/middleware-content-length': 4.0.4 '@smithy/middleware-endpoint': 4.3.0 - '@smithy/middleware-retry': 4.4.0 + '@smithy/middleware-retry': 4.4.1 '@smithy/middleware-serde': 4.2.0 '@smithy/middleware-stack': 4.2.0 '@smithy/node-config-provider': 4.3.0 @@ -14555,8 +14601,6 @@ snapshots: '@ckeditor/ckeditor5-typing': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-autosave@47.0.0': dependencies: @@ -14575,8 +14619,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-block-quote@47.0.0': dependencies: @@ -14587,8 +14629,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-bookmark@47.0.0': dependencies: @@ -14651,8 +14691,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-code-block@47.0.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15250,8 +15288,6 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.0.0 '@ckeditor/ckeditor5-widget': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-mention@47.0.0(patch_hash=5981fb59ba35829e4dff1d39cf771000f8a8fdfa7a34b51d8af9549541f2d62d)': dependencies: @@ -15295,7 +15331,7 @@ snapshots: es-toolkit: 1.39.5 protobufjs: 7.5.0 - '@ckeditor/ckeditor5-package-tools@4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5)': + '@ckeditor/ckeditor5-package-tools@4.1.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(bufferutil@4.0.9)(esbuild@0.25.10)(utf-8-validate@6.0.5)': dependencies: '@ckeditor/ckeditor5-dev-translations': 53.2.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)(typescript@5.0.4)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)) '@ckeditor/ckeditor5-dev-utils': 53.2.0(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)(typescript@5.0.4)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)) @@ -15314,7 +15350,7 @@ snapshots: stylelint-config-ckeditor5: 2.0.1(stylelint@16.25.0(typescript@5.9.3)) terser-webpack-plugin: 5.3.14(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)) ts-loader: 9.5.4(typescript@5.0.4)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)) - ts-node: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.0.4) + ts-node: 10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(typescript@5.0.4) typescript: 5.0.4 webpack: 5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10) webpack-dev-server: 5.2.2(bufferutil@4.0.9)(utf-8-validate@6.0.5)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)) @@ -15404,6 +15440,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.0.0 '@ckeditor/ckeditor5-utils': 47.0.0 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-restricted-editing@47.0.0': dependencies: @@ -15479,7 +15517,7 @@ snapshots: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 ckeditor5: 47.0.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) '@ckeditor/ckeditor5-source-editing@47.0.0': @@ -15665,21 +15703,21 @@ snapshots: dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@codemirror/commands@6.8.1': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@codemirror/commands@6.9.0': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@codemirror/lang-css@6.3.1': @@ -15697,7 +15735,7 @@ snapshots: '@codemirror/lang-javascript': 6.2.4 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@lezer/css': 1.1.11 '@lezer/html': 1.3.12 @@ -15708,7 +15746,7 @@ snapshots: '@codemirror/language': 6.11.0 '@codemirror/lint': 6.8.5 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@lezer/javascript': 1.5.1 @@ -15723,7 +15761,7 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 @@ -15733,7 +15771,7 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 @@ -15759,14 +15797,14 @@ snapshots: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@lezer/xml': 1.0.6 '@codemirror/language@6.11.0': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -15779,13 +15817,13 @@ snapshots: '@codemirror/lint@6.8.5': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 crelt: 1.0.6 '@codemirror/search@6.5.11': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 crelt: 1.0.6 '@codemirror/state@6.5.2': @@ -15796,10 +15834,10 @@ snapshots: dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@codemirror/view@6.38.4': + '@codemirror/view@6.38.5': dependencies: '@codemirror/state': 6.5.2 crelt: 1.0.6 @@ -15865,29 +15903,33 @@ snapshots: '@dual-bundle/import-meta-resolve@4.2.1': {} - '@electron-forge/cli@7.9.0(encoding@0.1.13)': + '@electron-forge/cli@7.10.2(encoding@0.1.13)(esbuild@0.25.10)': dependencies: - '@electron-forge/core': 7.9.0(encoding@0.1.13) - '@electron-forge/core-utils': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/core': 7.10.2(encoding@0.1.13)(esbuild@0.25.10) + '@electron-forge/core-utils': 7.10.2 + '@electron-forge/shared-types': 7.10.2 '@electron/get': 3.1.0 '@inquirer/prompts': 6.0.1 '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@6.0.1) chalk: 4.1.2 commander: 11.1.0 - debug: 4.4.1 + debug: 4.4.3(supports-color@6.0.0) fs-extra: 10.1.0 listr2: 7.0.2 log-symbols: 4.1.0 semver: 7.7.2 transitivePeerDependencies: + - '@swc/core' - bluebird - encoding + - esbuild - supports-color + - uglify-js + - webpack-cli - '@electron-forge/core-utils@7.9.0': + '@electron-forge/core-utils@7.10.2': dependencies: - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/shared-types': 7.10.2 '@electron/rebuild': 3.7.2 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 @@ -15895,24 +15937,25 @@ snapshots: find-up: 5.0.0 fs-extra: 10.1.0 log-symbols: 4.1.0 + parse-author: 2.0.0 semver: 7.7.2 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/core@7.9.0(encoding@0.1.13)': + '@electron-forge/core@7.10.2(encoding@0.1.13)(esbuild@0.25.10)': dependencies: - '@electron-forge/core-utils': 7.9.0 - '@electron-forge/maker-base': 7.9.0 - '@electron-forge/plugin-base': 7.9.0 - '@electron-forge/publisher-base': 7.9.0 - '@electron-forge/shared-types': 7.9.0 - '@electron-forge/template-base': 7.9.0 - '@electron-forge/template-vite': 7.9.0 - '@electron-forge/template-vite-typescript': 7.9.0 - '@electron-forge/template-webpack': 7.9.0 - '@electron-forge/template-webpack-typescript': 7.9.0 - '@electron-forge/tracer': 7.9.0 + '@electron-forge/core-utils': 7.10.2 + '@electron-forge/maker-base': 7.10.2 + '@electron-forge/plugin-base': 7.10.2 + '@electron-forge/publisher-base': 7.10.2 + '@electron-forge/shared-types': 7.10.2 + '@electron-forge/template-base': 7.10.2 + '@electron-forge/template-vite': 7.10.2 + '@electron-forge/template-vite-typescript': 7.10.2 + '@electron-forge/template-webpack': 7.10.2 + '@electron-forge/template-webpack-typescript': 7.10.2(esbuild@0.25.10) + '@electron-forge/tracer': 7.10.2 '@electron/get': 3.1.0 '@electron/packager': 18.3.6 '@electron/rebuild': 3.7.2 @@ -15937,33 +15980,37 @@ snapshots: source-map-support: 0.5.21 username: 5.1.0 transitivePeerDependencies: + - '@swc/core' - bluebird - encoding + - esbuild - supports-color + - uglify-js + - webpack-cli - '@electron-forge/maker-base@7.9.0': + '@electron-forge/maker-base@7.10.2': dependencies: - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/shared-types': 7.10.2 fs-extra: 10.1.0 which: 2.0.2 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/maker-deb@7.9.0': + '@electron-forge/maker-deb@7.10.2': dependencies: - '@electron-forge/maker-base': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/maker-base': 7.10.2 + '@electron-forge/shared-types': 7.10.2 optionalDependencies: electron-installer-debian: 3.2.0 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/maker-dmg@7.9.0': + '@electron-forge/maker-dmg@7.10.2': dependencies: - '@electron-forge/maker-base': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/maker-base': 7.10.2 + '@electron-forge/shared-types': 7.10.2 fs-extra: 10.1.0 optionalDependencies: electron-installer-dmg: 5.0.1 @@ -15971,10 +16018,10 @@ snapshots: - bluebird - supports-color - '@electron-forge/maker-flatpak@7.9.0': + '@electron-forge/maker-flatpak@7.10.2': dependencies: - '@electron-forge/maker-base': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/maker-base': 7.10.2 + '@electron-forge/shared-types': 7.10.2 fs-extra: 10.1.0 optionalDependencies: '@malept/electron-installer-flatpak': 0.11.4 @@ -15982,20 +16029,20 @@ snapshots: - bluebird - supports-color - '@electron-forge/maker-rpm@7.9.0': + '@electron-forge/maker-rpm@7.10.2': dependencies: - '@electron-forge/maker-base': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/maker-base': 7.10.2 + '@electron-forge/shared-types': 7.10.2 optionalDependencies: electron-installer-redhat: 3.4.0 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/maker-squirrel@7.9.0': + '@electron-forge/maker-squirrel@7.10.2': dependencies: - '@electron-forge/maker-base': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/maker-base': 7.10.2 + '@electron-forge/shared-types': 7.10.2 fs-extra: 10.1.0 optionalDependencies: electron-winstaller: 5.4.0 @@ -16003,10 +16050,10 @@ snapshots: - bluebird - supports-color - '@electron-forge/maker-zip@7.9.0': + '@electron-forge/maker-zip@7.10.2': dependencies: - '@electron-forge/maker-base': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/maker-base': 7.10.2 + '@electron-forge/shared-types': 7.10.2 cross-zip: 4.0.1 fs-extra: 10.1.0 got: 11.8.6 @@ -16014,31 +16061,31 @@ snapshots: - bluebird - supports-color - '@electron-forge/plugin-auto-unpack-natives@7.9.0': + '@electron-forge/plugin-auto-unpack-natives@7.10.2': dependencies: - '@electron-forge/plugin-base': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/plugin-base': 7.10.2 + '@electron-forge/shared-types': 7.10.2 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/plugin-base@7.9.0': + '@electron-forge/plugin-base@7.10.2': dependencies: - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/shared-types': 7.10.2 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/publisher-base@7.9.0': + '@electron-forge/publisher-base@7.10.2': dependencies: - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/shared-types': 7.10.2 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/shared-types@7.9.0': + '@electron-forge/shared-types@7.10.2': dependencies: - '@electron-forge/tracer': 7.9.0 + '@electron-forge/tracer': 7.10.2 '@electron/packager': 18.3.6 '@electron/rebuild': 3.7.2 listr2: 7.0.2 @@ -16046,10 +16093,10 @@ snapshots: - bluebird - supports-color - '@electron-forge/template-base@7.9.0': + '@electron-forge/template-base@7.10.2': dependencies: - '@electron-forge/core-utils': 7.9.0 - '@electron-forge/shared-types': 7.9.0 + '@electron-forge/core-utils': 7.10.2 + '@electron-forge/shared-types': 7.10.2 '@malept/cross-spawn-promise': 2.0.0 debug: 4.4.3(supports-color@6.0.0) fs-extra: 10.1.0 @@ -16059,43 +16106,49 @@ snapshots: - bluebird - supports-color - '@electron-forge/template-vite-typescript@7.9.0': + '@electron-forge/template-vite-typescript@7.10.2': dependencies: - '@electron-forge/shared-types': 7.9.0 - '@electron-forge/template-base': 7.9.0 + '@electron-forge/shared-types': 7.10.2 + '@electron-forge/template-base': 7.10.2 fs-extra: 10.1.0 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/template-vite@7.9.0': + '@electron-forge/template-vite@7.10.2': dependencies: - '@electron-forge/shared-types': 7.9.0 - '@electron-forge/template-base': 7.9.0 + '@electron-forge/shared-types': 7.10.2 + '@electron-forge/template-base': 7.10.2 fs-extra: 10.1.0 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/template-webpack-typescript@7.9.0': + '@electron-forge/template-webpack-typescript@7.10.2(esbuild@0.25.10)': dependencies: - '@electron-forge/shared-types': 7.9.0 - '@electron-forge/template-base': 7.9.0 + '@electron-forge/shared-types': 7.10.2 + '@electron-forge/template-base': 7.10.2 + fs-extra: 10.1.0 + typescript: 5.4.5 + webpack: 5.101.3(esbuild@0.25.10) + transitivePeerDependencies: + - '@swc/core' + - bluebird + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@electron-forge/template-webpack@7.10.2': + dependencies: + '@electron-forge/shared-types': 7.10.2 + '@electron-forge/template-base': 7.10.2 fs-extra: 10.1.0 transitivePeerDependencies: - bluebird - supports-color - '@electron-forge/template-webpack@7.9.0': - dependencies: - '@electron-forge/shared-types': 7.9.0 - '@electron-forge/template-base': 7.9.0 - fs-extra: 10.1.0 - transitivePeerDependencies: - - bluebird - - supports-color - - '@electron-forge/tracer@7.9.0': + '@electron-forge/tracer@7.10.2': dependencies: chrome-trace-event: 1.0.4 @@ -16231,9 +16284,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@electron/remote@2.1.3(electron@38.2.1)': + '@electron/remote@2.1.3(electron@38.2.2)': dependencies: - electron: 38.2.1 + electron: 38.2.2 '@electron/universal@2.0.2': dependencies: @@ -16512,172 +16565,172 @@ snapshots: '@floating-ui/utils@0.2.9': {} - '@fsegurai/codemirror-theme-abcdef@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-abcdef@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-abyss@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-abyss@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-android-studio@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-android-studio@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-andromeda@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-andromeda@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-basic-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-basic-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-basic-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-basic-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-cobalt2@6.0.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-cobalt2@6.0.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-forest@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-forest@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-github-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-github-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-github-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-github-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-gruvbox-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-gruvbox-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-gruvbox-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-gruvbox-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-material-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-material-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-material-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-material-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-monokai@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-monokai@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-nord@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-nord@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-palenight@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-palenight@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-solarized-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-solarized-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-solarized-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-solarized-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-tokyo-night-day@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-tokyo-night-day@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-tokyo-night-storm@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-tokyo-night-storm@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-volcano@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-volcano@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-vscode-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-vscode-dark@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-vscode-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-vscode-light@6.2.2(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/highlight': 1.2.1 '@fullcalendar/core@6.1.19': @@ -16756,26 +16809,26 @@ snapshots: '@inquirer/core': 9.2.1 '@inquirer/type': 2.0.0 - '@inquirer/confirm@5.1.18(@types/node@22.18.8)': + '@inquirer/confirm@5.1.18(@types/node@22.18.9)': dependencies: - '@inquirer/core': 10.2.2(@types/node@22.18.8) - '@inquirer/type': 3.0.8(@types/node@22.18.8) + '@inquirer/core': 10.2.2(@types/node@22.18.9) + '@inquirer/type': 3.0.8(@types/node@22.18.9) optionalDependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 optional: true - '@inquirer/core@10.2.2(@types/node@22.18.8)': + '@inquirer/core@10.2.2(@types/node@22.18.9)': dependencies: '@inquirer/ansi': 1.0.0 '@inquirer/figures': 1.0.13 - '@inquirer/type': 3.0.8(@types/node@22.18.8) + '@inquirer/type': 3.0.8(@types/node@22.18.9) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 optional: true '@inquirer/core@9.2.1': @@ -16783,7 +16836,7 @@ snapshots: '@inquirer/figures': 1.0.13 '@inquirer/type': 2.0.0 '@types/mute-stream': 0.0.4 - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 cli-width: 4.1.0 @@ -16865,9 +16918,9 @@ snapshots: dependencies: mute-stream: 1.0.0 - '@inquirer/type@3.0.8(@types/node@22.18.8)': + '@inquirer/type@3.0.8(@types/node@22.18.9)': optionalDependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 optional: true '@isaacs/balanced-match@4.0.1': {} @@ -17304,23 +17357,23 @@ snapshots: dependencies: langium: 3.3.1 - '@microsoft/api-extractor-model@7.30.6(@types/node@22.18.8)': + '@microsoft/api-extractor-model@7.30.6(@types/node@22.18.9)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@22.18.8) + '@rushstack/node-core-library': 5.13.1(@types/node@22.18.9) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.52.8(@types/node@22.18.8)': + '@microsoft/api-extractor@7.52.8(@types/node@22.18.9)': dependencies: - '@microsoft/api-extractor-model': 7.30.6(@types/node@22.18.8) + '@microsoft/api-extractor-model': 7.30.6(@types/node@22.18.9) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.13.1(@types/node@22.18.8) + '@rushstack/node-core-library': 5.13.1(@types/node@22.18.9) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.15.3(@types/node@22.18.8) - '@rushstack/ts-command-line': 5.0.1(@types/node@22.18.8) + '@rushstack/terminal': 0.15.3(@types/node@22.18.9) + '@rushstack/ts-command-line': 5.0.1(@types/node@22.18.9) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.10 @@ -17339,9 +17392,9 @@ snapshots: '@microsoft/tsdoc@0.15.1': {} - '@mind-elixir/node-menu@5.0.0(mind-elixir@5.3.1)': + '@mind-elixir/node-menu@5.0.0(mind-elixir@5.3.2)': dependencies: - mind-elixir: 5.3.1 + mind-elixir: 5.3.2 '@mixmark-io/domino@2.2.0': {} @@ -17481,9 +17534,11 @@ snapshots: '@open-draft/until@2.1.0': optional: true - '@oxc-project/runtime@0.77.3': {} + '@oxc-project/runtime@0.77.3': + optional: true - '@oxc-project/types@0.77.3': {} + '@oxc-project/types@0.77.3': + optional: true '@panva/asn1.js@1.0.0': {} @@ -17555,9 +17610,9 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.55.1': + '@playwright/test@1.56.0': dependencies: - playwright: 1.55.1 + playwright: 1.56.0 '@polka/url@1.0.0-next.29': {} @@ -17919,29 +17974,29 @@ snapshots: '@radix-ui/rect@1.1.0': {} - '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)': + '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 - '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': + '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': dependencies: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@replit/codemirror-vim@6.3.0(@codemirror/commands@6.9.0)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)': + '@replit/codemirror-vim@6.3.0(@codemirror/commands@6.9.0)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.5)': dependencies: '@codemirror/commands': 6.9.0 '@codemirror/language': 6.11.0 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.4 + '@codemirror/view': 6.38.5 '@rolldown/binding-android-arm64@1.0.0-beta.29': optional: true @@ -17987,7 +18042,8 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-beta.29': optional: true - '@rolldown/pluginutils@1.0.0-beta.29': {} + '@rolldown/pluginutils@1.0.0-beta.29': + optional: true '@rollup/plugin-commonjs@25.0.8(rollup@4.40.0)': dependencies: @@ -18188,7 +18244,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.52.0': optional: true - '@rushstack/node-core-library@5.13.1(@types/node@22.18.8)': + '@rushstack/node-core-library@5.13.1(@types/node@22.18.9)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -18199,23 +18255,23 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.15.3(@types/node@22.18.8)': + '@rushstack/terminal@0.15.3(@types/node@22.18.9)': dependencies: - '@rushstack/node-core-library': 5.13.1(@types/node@22.18.8) + '@rushstack/node-core-library': 5.13.1(@types/node@22.18.9) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 - '@rushstack/ts-command-line@5.0.1(@types/node@22.18.8)': + '@rushstack/ts-command-line@5.0.1(@types/node@22.18.9)': dependencies: - '@rushstack/terminal': 0.15.3(@types/node@22.18.8) + '@rushstack/terminal': 0.15.3(@types/node@22.18.9) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -18292,6 +18348,19 @@ snapshots: '@smithy/uuid': 1.1.0 tslib: 2.8.1 + '@smithy/core@3.15.0': + dependencies: + '@smithy/middleware-serde': 4.2.0 + '@smithy/protocol-http': 5.3.0 + '@smithy/types': 4.6.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.0 + '@smithy/util-stream': 4.5.0 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 + tslib: 2.8.1 + '@smithy/credential-provider-imds@4.0.6': dependencies: '@smithy/node-config-provider': 4.3.0 @@ -18338,6 +18407,14 @@ snapshots: '@smithy/util-base64': 4.2.0 tslib: 2.8.1 + '@smithy/fetch-http-handler@5.3.1': + dependencies: + '@smithy/protocol-http': 5.3.0 + '@smithy/querystring-builder': 4.2.0 + '@smithy/types': 4.6.0 + '@smithy/util-base64': 4.3.0 + tslib: 2.8.1 + '@smithy/hash-node@4.0.4': dependencies: '@smithy/types': 4.6.0 @@ -18375,12 +18452,23 @@ snapshots: '@smithy/util-middleware': 4.2.0 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.0': + '@smithy/middleware-endpoint@4.3.1': + dependencies: + '@smithy/core': 3.15.0 + '@smithy/middleware-serde': 4.2.0 + '@smithy/node-config-provider': 4.3.0 + '@smithy/shared-ini-file-loader': 4.3.0 + '@smithy/types': 4.6.0 + '@smithy/url-parser': 4.2.0 + '@smithy/util-middleware': 4.2.0 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.4.1': dependencies: '@smithy/node-config-provider': 4.3.0 '@smithy/protocol-http': 5.3.0 '@smithy/service-error-classification': 4.2.0 - '@smithy/smithy-client': 4.7.0 + '@smithy/smithy-client': 4.7.1 '@smithy/types': 4.6.0 '@smithy/util-middleware': 4.2.0 '@smithy/util-retry': 4.2.0 @@ -18464,6 +18552,16 @@ snapshots: '@smithy/util-stream': 4.4.0 tslib: 2.8.1 + '@smithy/smithy-client@4.7.1': + dependencies: + '@smithy/core': 3.15.0 + '@smithy/middleware-endpoint': 4.3.1 + '@smithy/middleware-stack': 4.2.0 + '@smithy/protocol-http': 5.3.0 + '@smithy/types': 4.6.0 + '@smithy/util-stream': 4.5.0 + tslib: 2.8.1 + '@smithy/types@4.6.0': dependencies: tslib: 2.8.1 @@ -18480,6 +18578,12 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/util-base64@4.3.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/util-body-length-browser@4.2.0': dependencies: tslib: 2.8.1 @@ -18552,6 +18656,17 @@ snapshots: '@smithy/util-utf8': 4.2.0 tslib: 2.8.1 + '@smithy/util-stream@4.5.0': + dependencies: + '@smithy/fetch-http-handler': 5.3.1 + '@smithy/node-http-handler': 4.3.0 + '@smithy/types': 4.6.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.8.1 + '@smithy/util-uri-escape@4.2.0': dependencies: tslib: 2.8.1 @@ -18725,7 +18840,7 @@ snapshots: '@types/appdmg@0.5.5': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 optional: true '@types/archiver@6.0.3': @@ -18743,11 +18858,11 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/bootstrap@5.2.10': dependencies: @@ -18757,7 +18872,7 @@ snapshots: dependencies: '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/responselike': 1.0.3 '@types/chai@5.2.2': @@ -18781,12 +18896,12 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 5.0.7 - '@types/node': 22.18.8 + '@types/express-serve-static-core': 5.1.0 + '@types/node': 22.18.9 '@types/connect@3.4.38': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/cookie-parser@1.4.9(@types/express@5.0.3)': dependencies: @@ -18952,9 +19067,9 @@ snapshots: dependencies: '@types/express': 5.0.3 - '@types/express-serve-static-core@5.0.7': + '@types/express-serve-static-core@5.1.0': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -18966,14 +19081,14 @@ snapshots: '@types/express@4.17.23': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 5.0.7 + '@types/express-serve-static-core': 5.1.0 '@types/qs': 6.14.0 '@types/serve-static': 1.15.9 '@types/express@5.0.3': dependencies: '@types/body-parser': 1.19.6 - '@types/express-serve-static-core': 5.0.7 + '@types/express-serve-static-core': 5.1.0 '@types/serve-static': 1.15.9 '@types/fs-extra@11.0.4': @@ -18983,7 +19098,7 @@ snapshots: '@types/fs-extra@9.0.13': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 optional: true '@types/geojson-vt@3.2.5': @@ -18995,7 +19110,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/hast@3.0.4': dependencies: @@ -19009,7 +19124,7 @@ snapshots: '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/ini@4.1.1': {} @@ -19023,11 +19138,11 @@ snapshots: '@types/jsonfile@6.1.4': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/keyv@3.1.4': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/leaflet-gpx@1.3.8': dependencies: @@ -19077,11 +19192,11 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/node@16.9.1': {} @@ -19101,6 +19216,10 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/node@22.18.9': + dependencies: + undici-types: 6.21.0 + '@types/node@24.6.0': dependencies: undici-types: 7.13.0 @@ -19130,13 +19249,13 @@ snapshots: '@types/readdir-glob@1.1.5': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/resolve@1.20.2': {} '@types/responselike@1.0.3': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/retry@0.12.2': {} @@ -19153,7 +19272,7 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/serve-favicon@2.5.7': dependencies: @@ -19180,7 +19299,7 @@ snapshots: '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/statuses@2.0.6': optional: true @@ -19193,7 +19312,7 @@ snapshots: dependencies: '@types/cookiejar': 2.1.5 '@types/methods': 1.1.4 - '@types/node': 22.18.8 + '@types/node': 22.18.9 form-data: 4.0.4 '@types/supercluster@7.1.3': @@ -19216,7 +19335,7 @@ snapshots: '@types/through2@2.0.41': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 '@types/tmp@0.2.6': {} @@ -19254,7 +19373,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 optional: true '@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': @@ -19274,14 +19393,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/type-utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/type-utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.0 eslint: 9.37.0(jiti@2.6.1) graphemer: 1.4.0 ignore: 7.0.5 @@ -19303,12 +19422,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.46.0 debug: 4.4.3(supports-color@6.0.0) eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 @@ -19333,10 +19452,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.45.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.46.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) - '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) + '@typescript-eslint/types': 8.46.0 debug: 4.4.3(supports-color@6.0.0) typescript: 5.9.3 transitivePeerDependencies: @@ -19352,10 +19471,10 @@ snapshots: '@typescript-eslint/types': 8.44.1 '@typescript-eslint/visitor-keys': 8.44.1 - '@typescript-eslint/scope-manager@8.45.0': + '@typescript-eslint/scope-manager@8.46.0': dependencies: - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/visitor-keys': 8.46.0 '@typescript-eslint/tsconfig-utils@8.40.0(typescript@5.9.3)': dependencies: @@ -19369,6 +19488,10 @@ snapshots: dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.46.0(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.40.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.40.0 @@ -19381,11 +19504,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@6.0.0) eslint: 9.37.0(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -19399,6 +19522,8 @@ snapshots: '@typescript-eslint/types@8.45.0': {} + '@typescript-eslint/types@8.46.0': {} + '@typescript-eslint/typescript-estree@8.40.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.40.0(typescript@5.9.3) @@ -19431,12 +19556,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.45.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.46.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.45.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.45.0(typescript@5.9.3) - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/visitor-keys': 8.45.0 + '@typescript-eslint/project-service': 8.46.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.46.0(typescript@5.9.3) + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/visitor-keys': 8.46.0 debug: 4.4.3(supports-color@6.0.0) fast-glob: 3.3.3 is-glob: 4.0.3 @@ -19469,12 +19594,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.37.0(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.45.0 - '@typescript-eslint/types': 8.45.0 - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.46.0 + '@typescript-eslint/types': 8.46.0 + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -19490,9 +19615,9 @@ snapshots: '@typescript-eslint/types': 8.44.1 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.45.0': + '@typescript-eslint/visitor-keys@8.46.0': dependencies: - '@typescript-eslint/types': 8.45.0 + '@typescript-eslint/types': 8.46.0 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -19528,19 +19653,19 @@ snapshots: - bufferutil - utf-8-validate - '@vitest/browser@3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@vitest/browser@3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@testing-library/dom': 10.4.0 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) - '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/utils': 3.2.4 magic-string: 0.30.18 sirv: 3.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) optionalDependencies: - playwright: 1.55.1 + playwright: 1.56.0 webdriverio: 9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil @@ -19560,7 +19685,7 @@ snapshots: magicast: 0.3.5 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -19579,9 +19704,9 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) optionalDependencies: - '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) transitivePeerDependencies: - supports-color @@ -19593,14 +19718,14 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.18 optionalDependencies: - msw: 2.7.5(@types/node@22.18.8)(typescript@5.9.3) - vite: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + msw: 2.7.5(@types/node@22.18.9)(typescript@5.9.3) + vite: 7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -19631,7 +19756,7 @@ snapshots: sirv: 3.0.1 tinyglobby: 0.2.15 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) '@vitest/utils@3.2.4': dependencies: @@ -19976,11 +20101,10 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} - ansi-styles@6.2.3: {} - ansis@4.2.0: {} + ansis@4.2.0: + optional: true any-base@1.1.0: {} @@ -22123,7 +22247,7 @@ snapshots: - supports-color optional: true - electron@38.2.1: + electron@38.2.2: dependencies: '@electron/get': 2.0.3 '@types/node': 22.18.8 @@ -22513,11 +22637,12 @@ snapshots: dependencies: eslint: 9.37.0(jiti@2.6.1) - eslint-plugin-react-hooks@6.1.1(eslint@9.37.0(jiti@2.6.1)): + eslint-plugin-react-hooks@7.0.0(eslint@9.37.0(jiti@2.6.1)): dependencies: '@babel/core': 7.28.0 '@babel/parser': 7.28.4 eslint: 9.37.0(jiti@2.6.1) + hermes-parser: 0.25.1 zod: 3.24.4 zod-validation-error: 3.5.3(zod@3.24.4) transitivePeerDependencies: @@ -23453,7 +23578,7 @@ snapshots: handle-thing@2.0.1: {} - happy-dom@19.0.2: + happy-dom@20.0.0: dependencies: '@types/node': 20.19.18 '@types/whatwg-mimetype': 3.0.2 @@ -23594,6 +23719,12 @@ snapshots: helmet@8.1.0: {} + hermes-estree@0.25.1: {} + + hermes-parser@0.25.1: + dependencies: + hermes-estree: 0.25.1 + highlight.js@11.11.1: {} highlightjs-cobol@0.3.3: @@ -24227,13 +24358,13 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@27.5.1: dependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -24900,7 +25031,7 @@ snapshots: markdown-table@3.0.4: {} - marked@16.3.0: {} + marked@16.4.0: {} matcher@3.0.0: dependencies: @@ -25095,7 +25226,7 @@ snapshots: katex: 0.16.23 khroma: 2.1.0 lodash-es: 4.17.21 - marked: 16.3.0 + marked: 16.4.0 roughjs: 4.6.6 stylis: 4.3.6 ts-dedent: 2.2.0 @@ -25334,7 +25465,7 @@ snapshots: mimic-response@3.1.0: {} - mind-elixir@5.3.1: {} + mind-elixir@5.3.2: {} mini-css-extract-plugin@2.4.7(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10)): dependencies: @@ -25529,12 +25660,12 @@ snapshots: ms@2.1.3: {} - msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3): + msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3): dependencies: '@bundled-es-modules/cookie': 2.0.1 '@bundled-es-modules/statuses': 1.0.1 '@bundled-es-modules/tough-cookie': 0.1.6 - '@inquirer/confirm': 5.1.18(@types/node@22.18.8) + '@inquirer/confirm': 5.1.18(@types/node@22.18.9) '@mswjs/interceptors': 0.37.6 '@open-draft/deferred-promise': 2.2.0 '@open-draft/until': 2.1.0 @@ -25921,7 +26052,7 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 - openai@6.1.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4): + openai@6.3.0(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5))(zod@3.24.4): optionalDependencies: ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@6.0.5) zod: 3.24.4 @@ -26255,11 +26386,11 @@ snapshots: exsolve: 1.0.5 pathe: 2.0.3 - playwright-core@1.55.1: {} + playwright-core@1.56.0: {} - playwright@1.55.1: + playwright@1.56.0: dependencies: - playwright-core: 1.55.1 + playwright-core: 1.56.0 optionalDependencies: fsevents: 2.3.2 @@ -27267,7 +27398,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.18.8 + '@types/node': 22.18.9 long: 5.3.2 protocol-buffers-schema@3.6.0: {} @@ -27762,12 +27893,13 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.29 '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.29 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.29 + optional: true - rollup-plugin-stats@1.5.1(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + rollup-plugin-stats@1.5.1(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): optionalDependencies: rolldown: 1.0.0-beta.29 rollup: 4.52.0 - vite: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) rollup-plugin-styles@4.0.0(rollup@4.40.0): dependencies: @@ -27796,13 +27928,13 @@ snapshots: '@rollup/pluginutils': 5.1.4(rollup@4.40.0) rollup: 4.40.0 - rollup-plugin-webpack-stats@2.1.5(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + rollup-plugin-webpack-stats@2.1.6(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: - rolldown: 1.0.0-beta.29 - rollup-plugin-stats: 1.5.1(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + rollup-plugin-stats: 1.5.1(rolldown@1.0.0-beta.29)(rollup@4.52.0)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) optionalDependencies: + rolldown: 1.0.0-beta.29 rollup: 4.52.0 - vite: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) rollup@4.40.0: dependencies: @@ -29281,14 +29413,14 @@ snapshots: typescript: 5.0.4 webpack: 5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.25.10) - ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.0.4): + ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(typescript@5.0.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.18.8 + '@types/node': 22.18.9 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -29301,14 +29433,14 @@ snapshots: optionalDependencies: '@swc/core': 1.11.29(@swc/helpers@0.5.17) - ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.8)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@22.18.9)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.18.8 + '@types/node': 22.18.9 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -29438,12 +29570,12 @@ snapshots: transitivePeerDependencies: - supports-color - typescript-eslint@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.45.0(@typescript-eslint/parser@8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.45.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.45.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.46.0(@typescript-eslint/parser@8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.46.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.46.0(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) eslint: 9.37.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -29451,6 +29583,8 @@ snapshots: typescript@5.0.4: {} + typescript@5.4.5: {} + typescript@5.8.2: {} typescript@5.9.3: {} @@ -29677,13 +29811,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite-node@3.2.4(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: cac: 6.7.14 debug: 4.4.3(supports-color@6.0.0) es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -29698,9 +29832,9 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.5.4(@types/node@22.18.8)(rollup@4.52.0)(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + vite-plugin-dts@4.5.4(@types/node@22.18.9)(rollup@4.52.0)(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: - '@microsoft/api-extractor': 7.52.8(@types/node@22.18.8) + '@microsoft/api-extractor': 7.52.8(@types/node@22.18.9) '@rollup/pluginutils': 5.1.4(rollup@4.52.0) '@volar/typescript': 2.4.13 '@vue/language-core': 2.2.0(typescript@5.9.3) @@ -29711,7 +29845,7 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.3 optionalDependencies: - vite: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - rollup @@ -29726,11 +29860,11 @@ snapshots: tinyglobby: 0.2.15 vite: 7.1.9(@types/node@24.6.0)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-plugin-svgo@2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): + vite-plugin-svgo@2.0.0(typescript@5.9.3)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: svgo: 3.3.2 typescript: 5.9.3 - vite: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) vite-prerender-plugin@0.5.11(vite@7.1.9(@types/node@24.6.0)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: @@ -29742,7 +29876,7 @@ snapshots: stack-trace: 1.0.0-pre2 vite: 7.1.9(@types/node@24.6.0)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.10 fdir: 6.5.0(picomatch@4.0.3) @@ -29751,7 +29885,7 @@ snapshots: rollup: 4.52.0 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.18.8 + '@types/node': 22.18.9 fsevents: 2.3.3 jiti: 2.6.1 less: 4.1.3 @@ -29782,11 +29916,11 @@ snapshots: tsx: 4.20.6 yaml: 2.8.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.8)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@19.0.2)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.18.9)(@vitest/browser@3.2.4)(@vitest/ui@3.2.4)(happy-dom@20.0.0)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -29804,15 +29938,15 @@ snapshots: tinyglobby: 0.2.15 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) + vite-node: 3.2.4(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 22.18.8 - '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.8)(typescript@5.9.3))(playwright@1.55.1)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.8)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@types/node': 22.18.9 + '@vitest/browser': 3.2.4(bufferutil@4.0.9)(msw@2.7.5(@types/node@22.18.9)(typescript@5.9.3))(playwright@1.56.0)(utf-8-validate@6.0.5)(vite@7.1.9(@types/node@22.18.9)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@3.2.4)(webdriverio@9.20.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 3.2.4(vitest@3.2.4) - happy-dom: 19.0.2 + happy-dom: 20.0.0 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - jiti @@ -29976,7 +30110,7 @@ snapshots: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 '@types/express': 4.17.23 - '@types/express-serve-static-core': 5.0.7 + '@types/express-serve-static-core': 5.1.0 '@types/serve-index': 1.9.4 '@types/serve-static': 1.15.9 '@types/sockjs': 0.3.36 @@ -30231,7 +30365,7 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 strip-ansi: 7.1.2 diff --git a/scripts/electron-rebuild.mts b/scripts/electron-rebuild.mts index b2d41aa88a..5e343a97c0 100644 --- a/scripts/electron-rebuild.mts +++ b/scripts/electron-rebuild.mts @@ -23,7 +23,7 @@ function copyNativeDependencies(projectRoot: string) { cpSync(sourcePath, destPath, { recursive: true, dereference: true }); } -function rebuildNativeDependencies(projectRoot: string) { +async function rebuildNativeDependencies(projectRoot: string) { const electronVersion = determineElectronVersion(projectRoot); if (!electronVersion) { @@ -35,7 +35,7 @@ function rebuildNativeDependencies(projectRoot: string) { console.log(`Rebuilding ${projectRoot} with ${electronVersion} for ${targetArch}...`); const resolvedPath = resolve(projectRoot); - rebuild({ + await rebuild({ projectRootPath: resolvedPath, buildPath: resolvedPath, electronVersion, @@ -64,5 +64,5 @@ function determineElectronVersion(projectRoot: string) { for (const projectRoot of [ "apps/desktop", "apps/edit-docs" ]) { copyNativeDependencies(projectRoot); - rebuildNativeDependencies(projectRoot); + await rebuildNativeDependencies(projectRoot); }