[READ-ONLY] Mirror of https://github.com/probablykasper/ferrum. Music library app for Mac, Linux and Windows ferrum.kasper.space
electron linux macos music music-library music-player napi windows
0

Configure Feed

Select the types of activity you want to include in your feed.

Fix blank screen

Kasper (Apr 6, 2023, 7:20 AM +0200) d4cdab31 9a756d4d

+18 -166
+3
CHANGELOG.md
··· 1 1 # Changelog 2 2 3 + ## Next 4 + - Fix blank screen 5 + 3 6 ## 0.16.6 - 2023 Apr 6 4 7 - Prevent focus when clicking the player bar 5 8 - Don't count skips from clicking "Previous"
+2 -148
package-lock.json
··· 19 19 "eslint": "^8.37.0", 20 20 "eslint-config-prettier": "^8.8.0", 21 21 "eslint-plugin-svelte3": "^4.0.0", 22 - "ferrum-addon": "file:ferrum-addon", 23 22 "prettier": "^2.8.7", 24 23 "prettier-plugin-svelte": "^2.10.0", 25 24 "sass": "^1.60.0", ··· 28 27 "svelte-preprocess": "^5.0.3", 29 28 "typescript": "^4.9.5", 30 29 "vite": "^4.2.1", 31 - "vite-plugin-electron": "^0.11.1", 32 - "vite-plugin-externals": "^0.6.2" 30 + "vite-plugin-electron": "^0.11.1" 33 31 } 34 32 }, 35 33 "ferrum-addon": { 36 - "dev": true 34 + "extraneous": true 37 35 }, 38 36 "node_modules/@develar/schema-utils": { 39 37 "version": "2.6.5", ··· 2392 2390 "node": ">=6" 2393 2391 } 2394 2392 }, 2395 - "node_modules/es-module-lexer": { 2396 - "version": "0.4.1", 2397 - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", 2398 - "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", 2399 - "dev": true 2400 - }, 2401 2393 "node_modules/es6-error": { 2402 2394 "version": "4.1.1", 2403 2395 "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", ··· 2775 2767 "dependencies": { 2776 2768 "pend": "~1.2.0" 2777 2769 } 2778 - }, 2779 - "node_modules/ferrum-addon": { 2780 - "resolved": "ferrum-addon", 2781 - "link": true 2782 2770 }, 2783 2771 "node_modules/file-entry-cache": { 2784 2772 "version": "6.0.1", ··· 4615 4603 "source-map": "^0.6.0" 4616 4604 } 4617 4605 }, 4618 - "node_modules/sourcemap-codec": { 4619 - "version": "1.4.8", 4620 - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 4621 - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 4622 - "deprecated": "Please use @jridgewell/sourcemap-codec instead", 4623 - "dev": true 4624 - }, 4625 4606 "node_modules/spawn-command": { 4626 4607 "version": "0.0.2-1", 4627 4608 "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", ··· 5198 5179 "integrity": "sha512-pi9Wy4KCGjKIRvp7/5VUOT8BYEAJdZrpy3gI+GhGc5vYs2V9yPxLOtfCqNfSTYqH3uM6hYY6MyifFVku3Wg+2A==", 5199 5180 "dev": true 5200 5181 }, 5201 - "node_modules/vite-plugin-externals": { 5202 - "version": "0.6.2", 5203 - "resolved": "https://registry.npmjs.org/vite-plugin-externals/-/vite-plugin-externals-0.6.2.tgz", 5204 - "integrity": "sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==", 5205 - "dev": true, 5206 - "dependencies": { 5207 - "acorn": "^8.4.0", 5208 - "es-module-lexer": "^0.4.1", 5209 - "fs-extra": "^10.0.0", 5210 - "magic-string": "^0.25.7" 5211 - }, 5212 - "engines": { 5213 - "node": "^14.18.0 || >=16.0.0" 5214 - }, 5215 - "peerDependencies": { 5216 - "vite": ">=2.0.0" 5217 - } 5218 - }, 5219 - "node_modules/vite-plugin-externals/node_modules/fs-extra": { 5220 - "version": "10.1.0", 5221 - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", 5222 - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", 5223 - "dev": true, 5224 - "dependencies": { 5225 - "graceful-fs": "^4.2.0", 5226 - "jsonfile": "^6.0.1", 5227 - "universalify": "^2.0.0" 5228 - }, 5229 - "engines": { 5230 - "node": ">=12" 5231 - } 5232 - }, 5233 - "node_modules/vite-plugin-externals/node_modules/jsonfile": { 5234 - "version": "6.1.0", 5235 - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 5236 - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 5237 - "dev": true, 5238 - "dependencies": { 5239 - "universalify": "^2.0.0" 5240 - }, 5241 - "optionalDependencies": { 5242 - "graceful-fs": "^4.1.6" 5243 - } 5244 - }, 5245 - "node_modules/vite-plugin-externals/node_modules/magic-string": { 5246 - "version": "0.25.9", 5247 - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 5248 - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 5249 - "dev": true, 5250 - "dependencies": { 5251 - "sourcemap-codec": "^1.4.8" 5252 - } 5253 - }, 5254 - "node_modules/vite-plugin-externals/node_modules/universalify": { 5255 - "version": "2.0.0", 5256 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 5257 - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 5258 - "dev": true, 5259 - "engines": { 5260 - "node": ">= 10.0.0" 5261 - } 5262 - }, 5263 5182 "node_modules/vitefu": { 5264 5183 "version": "0.2.4", 5265 5184 "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", ··· 7045 6964 "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 7046 6965 "dev": true 7047 6966 }, 7048 - "es-module-lexer": { 7049 - "version": "0.4.1", 7050 - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.4.1.tgz", 7051 - "integrity": "sha512-ooYciCUtfw6/d2w56UVeqHPcoCFAiJdz5XOkYpv/Txl1HMUozpXjz/2RIQgqwKdXNDPSF1W7mJCFse3G+HDyAA==", 7052 - "dev": true 7053 - }, 7054 6967 "es6-error": { 7055 6968 "version": "4.1.1", 7056 6969 "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", ··· 7354 7267 "requires": { 7355 7268 "pend": "~1.2.0" 7356 7269 } 7357 - }, 7358 - "ferrum-addon": { 7359 - "version": "file:ferrum-addon" 7360 7270 }, 7361 7271 "file-entry-cache": { 7362 7272 "version": "6.0.1", ··· 8710 8620 "source-map": "^0.6.0" 8711 8621 } 8712 8622 }, 8713 - "sourcemap-codec": { 8714 - "version": "1.4.8", 8715 - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 8716 - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 8717 - "dev": true 8718 - }, 8719 8623 "spawn-command": { 8720 8624 "version": "0.0.2-1", 8721 8625 "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", ··· 9103 9007 "resolved": "https://registry.npmjs.org/vite-plugin-electron/-/vite-plugin-electron-0.11.1.tgz", 9104 9008 "integrity": "sha512-pi9Wy4KCGjKIRvp7/5VUOT8BYEAJdZrpy3gI+GhGc5vYs2V9yPxLOtfCqNfSTYqH3uM6hYY6MyifFVku3Wg+2A==", 9105 9009 "dev": true 9106 - }, 9107 - "vite-plugin-externals": { 9108 - "version": "0.6.2", 9109 - "resolved": "https://registry.npmjs.org/vite-plugin-externals/-/vite-plugin-externals-0.6.2.tgz", 9110 - "integrity": "sha512-R5oVY8xDJjLXLTs2XDYzvYbc/RTZuIwOx2xcFbYf+/VXB6eJuatDgt8jzQ7kZ+IrgwQhe6tU8U2fTyy72C25CQ==", 9111 - "dev": true, 9112 - "requires": { 9113 - "acorn": "^8.4.0", 9114 - "es-module-lexer": "^0.4.1", 9115 - "fs-extra": "^10.0.0", 9116 - "magic-string": "^0.25.7" 9117 - }, 9118 - "dependencies": { 9119 - "fs-extra": { 9120 - "version": "10.1.0", 9121 - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", 9122 - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", 9123 - "dev": true, 9124 - "requires": { 9125 - "graceful-fs": "^4.2.0", 9126 - "jsonfile": "^6.0.1", 9127 - "universalify": "^2.0.0" 9128 - } 9129 - }, 9130 - "jsonfile": { 9131 - "version": "6.1.0", 9132 - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", 9133 - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", 9134 - "dev": true, 9135 - "requires": { 9136 - "graceful-fs": "^4.1.6", 9137 - "universalify": "^2.0.0" 9138 - } 9139 - }, 9140 - "magic-string": { 9141 - "version": "0.25.9", 9142 - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 9143 - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 9144 - "dev": true, 9145 - "requires": { 9146 - "sourcemap-codec": "^1.4.8" 9147 - } 9148 - }, 9149 - "universalify": { 9150 - "version": "2.0.0", 9151 - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", 9152 - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", 9153 - "dev": true 9154 - } 9155 - } 9156 9010 }, 9157 9011 "vitefu": { 9158 9012 "version": "0.2.4",
+1 -3
package.json
··· 73 73 "eslint": "^8.37.0", 74 74 "eslint-config-prettier": "^8.8.0", 75 75 "eslint-plugin-svelte3": "^4.0.0", 76 - "ferrum-addon": "file:ferrum-addon", 77 76 "prettier": "^2.8.7", 78 77 "prettier-plugin-svelte": "^2.10.0", 79 78 "sass": "^1.60.0", ··· 82 81 "svelte-preprocess": "^5.0.3", 83 82 "typescript": "^4.9.5", 84 83 "vite": "^4.2.1", 85 - "vite-plugin-electron": "^0.11.1", 86 - "vite-plugin-externals": "^0.6.2" 84 + "vite-plugin-electron": "^0.11.1" 87 85 }, 88 86 "prettier": { 89 87 "printWidth": 100,
+1 -1
src/components/QueueItem.svelte
··· 2 2 import { methods, trackMetadataUpdated } from '@/lib/data' 3 3 import { fade } from 'svelte/transition' 4 4 import { onDestroy } from 'svelte' 5 - import type { Track } from 'ferrum-addon' 5 + import type { Track } from '../../ferrum-addon' 6 6 7 7 export let id: string 8 8
+1 -1
src/components/SidebarItems.svelte
··· 29 29 </script> 30 30 31 31 <script lang="ts"> 32 - import type { TrackListDetails } from 'ferrum-addon' 32 + import type { TrackListDetails } from '../../ferrum-addon' 33 33 import { type Writable, writable } from 'svelte/store' 34 34 import { createEventDispatcher, SvelteComponent } from 'svelte' 35 35 import { getContext } from 'svelte'
+1 -1
src/components/TrackInfo.svelte
··· 10 10 import { checkShortcut } from '@/lib/helpers' 11 11 import Button from './Button.svelte' 12 12 import { methods } from '@/lib/data' 13 - import type { Track, TrackID } from 'ferrum-addon' 13 + import type { Track, TrackID } from '../../ferrum-addon' 14 14 import { ipcRenderer } from '@/lib/window' 15 15 import { playingId, reload } from '@/lib/player' 16 16 import { onDestroy, tick } from 'svelte'
+1 -1
src/components/TrackList.svelte
··· 15 15 import { onDestroy } from 'svelte' 16 16 import { dragged } from '../lib/drag-drop' 17 17 import * as dragGhost from './DragGhost.svelte' 18 - import type { TrackID } from 'ferrum-addon' 18 + import type { TrackID } from '../../ferrum-addon' 19 19 import { modalCount } from './Modal.svelte' 20 20 21 21 export let onTrackInfo: (allIds: TrackID[], index: number) => void
+1 -1
src/electron/preload.ts
··· 1 1 import path from 'path' 2 2 import is from './is' 3 - import addon from 'ferrum-addon' 3 + import addon from '../../ferrum-addon' 4 4 5 5 window.addon = addon 6 6 window.isDev = is.dev
+1 -1
src/electron/typed_ipc.ts
··· 8 8 dialog, 9 9 } from 'electron' 10 10 import { ipcMain as electronIpcMain } from 'electron' 11 - import type { TrackID } from 'ferrum-addon' 11 + import type { TrackID } from '../../ferrum-addon' 12 12 13 13 type OptionalPromise<T> = T | Promise<T> 14 14 type InputMap = {
+1 -1
src/lib/data.ts
··· 1 1 import { writable } from 'svelte/store' 2 2 import { ipcRenderer } from '@/lib/window' 3 - import type { MsSinceUnixEpoch, TrackID, TrackList, TrackListID, TrackMd } from 'ferrum-addon' 3 + import type { MsSinceUnixEpoch, TrackID, TrackList, TrackListID, TrackMd } from '../../ferrum-addon' 4 4 import { selection as pageSelection } from './page' 5 5 import { queue } from './queue' 6 6
+1 -1
src/lib/helpers.ts
··· 1 1 import { type Updater, type Writable, writable } from 'svelte/store' 2 - import type { TrackListDetails } from 'ferrum-addon' 2 + import type { TrackListDetails } from '../../ferrum-addon' 3 3 4 4 export function getDuration(dur: number) { 5 5 dur = Math.round(dur)
+1 -1
src/lib/menus.ts
··· 7 7 } from '@/lib/data' 8 8 import { flattenChildLists } from '@/lib/helpers' 9 9 import { ipcRenderer } from '@/lib/window' 10 - import type { TrackID } from 'ferrum-addon' 10 + import type { TrackID } from '../../ferrum-addon' 11 11 import { get } from 'svelte/store' 12 12 import { appendToUserQueue, prependToUserQueue } from './queue' 13 13 import type { ShowTrackMenuOptions } from '@/electron/typed_ipc'
+1 -1
src/lib/player.ts
··· 3 3 import { clamp } from './helpers' 4 4 import quit from './quit' 5 5 import { methods, paths } from './data' 6 - import type { Track, TrackID } from 'ferrum-addon' 6 + import type { Track, TrackID } from '../../ferrum-addon' 7 7 import { ipcRenderer, joinPaths } from './window' 8 8 import { queue, setNewQueue, next as queueNext, prev as queuePrev } from './queue' 9 9
+1 -1
src/lib/queue.ts
··· 1 1 /* eslint-disable @typescript-eslint/no-non-null-assertion */ 2 - import type { TrackID } from 'ferrum-addon' 2 + import type { TrackID } from '../../ferrum-addon' 3 3 import { writable } from 'svelte/store' 4 4 import { methods } from './data' 5 5 import { getterWritable } from './helpers'
+1 -4
vite.config.mjs
··· 1 1 import { resolve } from 'path' 2 - import { viteExternalsPlugin } from 'vite-plugin-externals' 3 2 import { defineConfig } from 'vite' 4 3 import { svelte, vitePreprocess } from '@sveltejs/vite-plugin-svelte' 5 4 import electron from 'vite-plugin-electron' ··· 19 18 target: 'chrome93', 20 19 }, 21 20 plugins: [ 22 - viteExternalsPlugin({ 23 - 'ferrum-addon': 'ferrum-addon', 24 - }), 25 21 svelte({ 26 22 preprocess: vitePreprocess(), 27 23 }), ··· 30 26 vite: { 31 27 build: { 32 28 outDir: './build/electron', 29 + emptyOutDir: true, 33 30 rollupOptions: { 34 31 external: [/^.*\.node$/], 35 32 },