diff --git a/apps/client/src/desktop.ts b/apps/client/src/desktop.ts index b88eb8d4a..cb90e998f 100644 --- a/apps/client/src/desktop.ts +++ b/apps/client/src/desktop.ts @@ -1,17 +1,18 @@ -import appContext from "./components/app_context.js"; -import utils from "./services/utils.js"; -import noteTooltipService from "./services/note_tooltip.js"; -import bundleService from "./services/bundle.js"; -import toastService from "./services/toast.js"; -import noteAutocompleteService from "./services/note_autocomplete.js"; -import electronContextMenu from "./menus/electron_context_menu.js"; -import glob from "./services/glob.js"; -import { t } from "./services/i18n.js"; -import options from "./services/options.js"; +import "autocomplete.js/index_jquery.js"; + import type ElectronRemote from "@electron/remote"; import type Electron from "electron"; -import "boxicons/css/boxicons.min.css"; -import "autocomplete.js/index_jquery.js"; + +import appContext from "./components/app_context.js"; +import electronContextMenu from "./menus/electron_context_menu.js"; +import bundleService from "./services/bundle.js"; +import glob from "./services/glob.js"; +import { t } from "./services/i18n.js"; +import noteAutocompleteService from "./services/note_autocomplete.js"; +import noteTooltipService from "./services/note_tooltip.js"; +import options from "./services/options.js"; +import toastService from "./services/toast.js"; +import utils from "./services/utils.js"; await appContext.earlyInit(); diff --git a/apps/client/src/fonts/boxicons.woff2 b/apps/client/src/fonts/boxicons.woff2 new file mode 100644 index 000000000..79c35e4c9 Binary files /dev/null and b/apps/client/src/fonts/boxicons.woff2 differ diff --git a/apps/client/src/mobile.ts b/apps/client/src/mobile.ts index f4daedc16..ed84fa370 100644 --- a/apps/client/src/mobile.ts +++ b/apps/client/src/mobile.ts @@ -1,9 +1,9 @@ -import appContext from "./components/app_context.js"; -import noteAutocompleteService from "./services/note_autocomplete.js"; -import glob from "./services/glob.js"; -import "boxicons/css/boxicons.min.css"; import "autocomplete.js/index_jquery.js"; +import appContext from "./components/app_context.js"; +import glob from "./services/glob.js"; +import noteAutocompleteService from "./services/note_autocomplete.js"; + glob.setupGlobs(); await appContext.earlyInit(); diff --git a/apps/client/src/types-assets.d.ts b/apps/client/src/types-assets.d.ts index 1f5e80432..37b38bdd0 100644 --- a/apps/client/src/types-assets.d.ts +++ b/apps/client/src/types-assets.d.ts @@ -17,5 +17,3 @@ declare module "*?raw" { var content: string; export default content; } - -declare module "boxicons/css/boxicons.min.css" { } diff --git a/apps/server/src/routes/index.ts b/apps/server/src/routes/index.ts index 3c8354ee9..dd9d52da4 100644 --- a/apps/server/src/routes/index.ts +++ b/apps/server/src/routes/index.ts @@ -7,7 +7,7 @@ import assetPath from "../services/asset_path.js"; import attributeService from "../services/attributes.js"; import config from "../services/config.js"; import { getCurrentLocale } from "../services/i18n.js"; -import { generateCss, generateIconRegistry, getIconPacks } from "../services/icon_packs.js"; +import { generateCss, generateIconRegistry, getIconPacks, MIME_TO_EXTENSION_MAPPINGS } from "../services/icon_packs.js"; import log from "../services/log.js"; import optionService from "../services/options.js"; import protectedSessionService from "../services/protected_session.js"; @@ -63,7 +63,9 @@ function index(req: Request, res: Response) { baseApiUrl: 'api/', currentLocale: getCurrentLocale(), iconPackCss: iconPacks - .map(p => generateCss(p, `/api/attachments/${p.fontAttachmentId}/download`)) + .map(p => generateCss(p, p.builtin + ? `${assetPath}/fonts/${p.fontAttachmentId}.${MIME_TO_EXTENSION_MAPPINGS[p.fontMime]}` + : `api/notes/download/${p.manifestNoteId}`)) .filter(Boolean) .join("\n\n"), iconRegistry: generateIconRegistry(iconPacks) diff --git a/apps/server/src/services/icon_packs.ts b/apps/server/src/services/icon_packs.ts index b2b7e2e4c..7db47ff12 100644 --- a/apps/server/src/services/icon_packs.ts +++ b/apps/server/src/services/icon_packs.ts @@ -40,16 +40,19 @@ export interface ProcessedIconPack { fontAttachmentId: string; title: string; icon: string; + /** Indicates whether this icon pack is built-in (shipped with Trilium) or user-defined. */ + builtin: boolean; } export function getIconPacks() { const defaultIconPack: ProcessedIconPack = { manifest: boxiconsManifest, - manifestNoteId: "builtin-boxicons-v2", + manifestNoteId: "boxicons", fontMime: "font/woff2", - fontAttachmentId: "builtin-boxicons-v2", + fontAttachmentId: "boxicons", title: "Boxicons", - icon: "bx bx-package" + icon: "bx bx-package", + builtin: true }; const customIconPacks = search.searchNotes("#iconPack") .filter(note => !note.isProtected) @@ -104,7 +107,8 @@ export function processIconPack(iconPackNote: BNote): ProcessedIconPack | undefi fontAttachmentId: attachment.attachmentId, title: iconPackNote.title, manifestNoteId: iconPackNote.noteId, - icon: iconPackNote.getIcon() + icon: iconPackNote.getIcon(), + builtin: false }; }