Commit Graph
100 Commits
Author SHA1 Message Date
Fernando Fernández a1e76a972a chore(devcontainer): add new lockfile
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-07-09 17:24:01 +02:00
Fernando Fernández 6e49cad77c fix(devcontainer): local devcontainer (no Codespaces) on VSCode installed with Flatpak
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-07-09 17:23:04 +02:00
Fernando Fernández 7169c5d8ef style: automatic eslint fix
Signed-off-by: GitHub <noreply@github.com>
2026-07-06 17:05:06 +02:00
Fernando Fernández 127f13836f chore: disable aggressive unicorn rules, manual fix for promise-related errors
Signed-off-by: GitHub <noreply@github.com>
2026-07-06 17:05:06 +02:00
Fernando Fernández 267bc0ed4c fix(build): endless screen
Disable experimental lazyBarrel to fix Vuetify modules failing to import.

See https://github.com/vitejs/vite/issues/22779 and https://github.com/rolldown/rolldown/issues/9964

Signed-off-by: GitHub <noreply@github.com>
2026-06-26 19:18:40 +00:00
Fernando Fernández 605bc1e7f8 chore(build): enable chunkImportMap
This reduces the amount of cache busting needed when updating modules

Signed-off-by: GitHub <noreply@github.com>
2026-06-26 19:17:31 +00:00
Fernando Fernández 8cc217661d style: automatic eslint fix
Signed-off-by: GitHub <noreply@github.com>
2026-06-17 12:30:15 +00:00
Fernando Fernández 9d14ef0e57 chore(lint): update rules
Signed-off-by: GitHub <noreply@github.com>
2026-06-17 11:52:28 +00:00
Fernando Fernández d17f85be4d fix(router): circular dependency
Signed-off-by: GitHub <noreply@github.com>
2026-06-17 13:41:52 +02:00
Fernando Fernández f74c6e6122 fix(build): cycle check after upgrading to Vite 8
Vite 8 changed the bundler to rolldown, which didn't emit a CIRCULAR_DEPENDENCY warning by default, so our logic stopped working.

Signed-off-by: GitHub <noreply@github.com>
2026-06-17 13:41:52 +02:00
Fernando Fernández 12dc9da12b refactor(pages): switch to definePage macro (#2817)
definePage provides typings and extra functionality (like beforeEnter route guard)

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-06-05 11:51:57 +00:00
Fernando Fernández 4b948813f1 chore: automatic eslint fix
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-06-05 13:16:05 +02:00
Fernando Fernández f50cbfd60e ci: harden
After the release 3.1.0 release of eps1lon/actions-label-merge-conflict, documentation about how to harden the token was provided.
The action now uses the default GITHUB_TOKEN

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-06-05 12:43:58 +02:00
Fernando Fernández aaf2256030 chore: update routes.d.ts
This file is autogenerated

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-06-05 12:14:51 +02:00
Fernando Fernández d356d11905 chore: upgrade deprecated eslint rule
Signed-off-by: GitHub <noreply@github.com>
2026-05-16 13:07:10 +00:00
Fernando Fernández 7aa9a8c3d6 chore(pnpm): update workspace settings
Signed-off-by: GitHub <noreply@github.com>
2026-05-16 14:40:08 +02:00
Fernando Fernández 0c8e674b0a chore(pnpm): switch to pnpm ci
Signed-off-by: GitHub <noreply@github.com>
2026-05-16 14:40:08 +02:00
Fernando Fernández cc320b9e50 chore(pnpm): set allowBuild property
Signed-off-by: GitHub <noreply@github.com>
2026-05-16 14:40:08 +02:00
Fernando Fernández 141bcddbb0 ci(renovate): match stability days with pnpm v11
See https://pnpm.io/supply-chain-security#delay-dependency-updates

pnpm 11 also reduces the attack surface by blocking preinstall scripts by default.
2026-05-16 14:06:20 +02:00
Fernando Fernández 3c793907dc ci(renovate): separate major pnpm updates only
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-05-08 12:20:09 +02:00
Fernando Fernández cd73b17966 ci(renovate): extract pnpm to its own group 2026-05-08 11:48:42 +02:00
Fernando Fernández 1e33c3a303 chore(dx): add unocss extension as recommended 2026-04-08 00:53:13 +02:00
Fernando Fernández 9a9b4252be ci(renovate): separate catalogs for runtime and development dependencies
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 23:02:13 +02:00
Fernando Fernández 06703c8e6c fix: add extension to imports
Adding the extensions to imports simplify module resolution for TypeScript.
This is also now enforced by an ESLint rule.

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández eadb131c2b fix(eslint): typescript resolver
This prevented linting altogether in the whole monorepo

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández 4172c836f3 chore(deps): update eslint-plugin-file-progress & eslint-plugin-sonarjs
This was one of the dependencies that was blocking the upgrade to eslint v10

eslint-plugin-sonarjs had vulnerabilities in transitive dependencies

Also sort the package.json in all the projects to follow the schema (https://json.schemastore.org/package.json)

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández de6989c152 ci(pnpm): run a check for monorepo dependency cycles, switch to pnpm i
pnpm i is an alias to pnpm install, so the shorter version is desired

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández de14c404e6 fix(monorepo): cyclic workspace dependency between shared and configs
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández 68673a092f chore(monorepo): move frontend under packages folder
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández f82cf2bdea ci(renovate): run pnpm dedupe on every dependency update
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández f00e60fcd3 chore: migrate to pnpm
NPM refuses to acknowledge their limitations when working with monorepos

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández bd0809953b chore(typescript): remove deprecated baseUrl option
The baseUrl tsconfig option was deprecated in TypeScript 6.

Also fixed the TypeScript monorepo config, making type checking isolated to each project and resolution of monorepo's types outside the package that it's running the check.

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-07 18:58:12 +02:00
Fernando Fernández 3f06a18efa chore: remove deprecated VSCode settings
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-01 20:32:43 +02:00
Fernando Fernández ddce7a7a53 style: automatic eslint fix
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-04-01 20:31:00 +02:00
Fernando Fernández ba835146d0 fix(tauri-runtime): missing unocss config (#2760)
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-03-30 14:43:54 +00:00
Fernando Fernández 427fc68e53 chore(deps): move @unocss/reset to devDependencies
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-03-30 16:06:18 +02:00
Fernando Fernández 1c23f65588 ci: move back attestation to origin jobs
The collector job didn't take into account attestations for multiple arches.
The fix for that would be a bit overengineered, so we make it back to the original jobs. The permissions given to the jobs are minimal (only attestattion creation would be possible), so the attack surface of scripts would be minimal

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-03-30 11:28:19 +02:00
Fernando Fernández 36088021cb ci: replace actions/attest-build-provenance with actions/attest
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-03-30 11:06:55 +02:00
Fernando Fernández 2588d8e4ce ci: more explicit permissions, separate artifact attestations in different job
To satisfy the requirements pointed at https://github.com/jellyfin/jellyfin-vue/pull/2735

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-03-30 11:06:55 +02:00
Fernando Fernández 0d567a1234 revert: "Mitigate pull_request_target privilege escalation (#2735)"
This reverts commit 1a9c256903.

See https://github.com/jellyfin/jellyfin-vue/pull/2735#issuecomment-4077194367 and
https://github.com/jellyfin/jellyfin-vue/pull/2735#issuecomment-4148987114 for more details.
2026-03-30 11:05:07 +02:00
Fernando Fernández 6c42ad1bfa ci(renovate): pin gh actions versions by sha
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-03-30 11:05:07 +02:00
Fernando Fernández 3398fefdcd feat(ecmascript)!: switch to ES2024 (#2505)
The ECMAScript upgrade is needed for `Object.groupBy`, which we use across the codebase
2026-03-22 11:25:36 +01:00
Fernando Fernández 9d8c9080ed fix(login): loop (#2749)
Ensure the order where modules are loaded is strict

Signed-off-by: GitHub <noreply@github.com>
2026-03-21 12:01:49 +00:00
Fernando Fernández 5d262e5552 refactor(deps): update bundler logic for Vite 8
Signed-off-by: GitHub <noreply@github.com>
2026-03-16 17:10:44 +01:00
Fernando Fernández d325b00a94 chore(deps): upgrade to Vite 8
Signed-off-by: GitHub <noreply@github.com>
2026-03-16 17:10:44 +01:00
Fernando Fernández 4faf77011c chore(deps): add @unocss/reset explicitly
This was working previously because @unocss/astro was included in the core package, but now it isn't. With this, we are sure it's always included

See https://github.com/unocss/unocss/issues/5152#issuecomment-4067846093

Signed-off-by: GitHub <noreply@github.com>
2026-03-16 16:43:44 +01:00
Fernando Fernández e75ea6bdc8 chore(deps): remove stylus npm override (#2740)
eslint-plugin-vue-scoped-css finally moved processor deps to peer dependencies, so we no longer need the override to avoid warnings

Signed-off-by: GitHub <noreply@github.com>
2026-03-03 11:25:24 +00:00
Fernando Fernández f3bf2741af chore: update to vue-router v5 2026-02-22 22:53:02 +01:00
Fernando Fernández 38fcd50f54 ci: use new ubuntu-slim runners
For lightweight tasks, will probably allow for more concurrency across the entire org

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2026-01-28 23:38:09 +01:00
Fernando Fernández da58793546 fix: apply vuetify update with further memory leak fixes
Signed-off-by: GitHub <noreply@github.com>
2025-12-13 19:49:22 +00:00
Fernando Fernández 1f4e44b638 style: automatic eslint fixes
Signed-off-by: GitHub <noreply@github.com>
2025-11-24 18:02:58 +00:00
Fernando Fernández 67d9f6048e fix(vuetify): dependency cycle
The dependency loop we had was fixed in Vuetify v3.11.0

Signed-off-by: GitHub <noreply@github.com>
2025-11-24 18:02:50 +00:00
Fernando Fernández c6b982a631 ci(devcontainer): fix build on debian trixie 2025-11-24 18:53:30 +01:00
Fernando Fernández 4fd64f8a26 chore: fix potential script injection in GitHub Actions [security]
Signed-off-by: GitHub <noreply@github.com>
2025-10-29 10:37:44 +00:00
Fernando Fernández 16e20f3f4d chore: update minimum requirements to node 24
Node 24 was promted to stable th 28/10/2025

Signed-off-by: GitHub <noreply@github.com>
2025-10-29 10:02:49 +00:00
Fernando Fernández a4a88bea36 fix: workaround swiper's slide index calculation (#2705)
There is a bug with the Vue's component of swiper that does not like how slides are passed as slots

Signed-off-by: GitHub <noreply@github.com>
2025-10-29 02:03:10 +01:00
Fernando Fernández 50a217c5ea chore(package): add packageManager field
The `actions/setup-node` makes use of this field, and I guess it
makes sense to use the new "official" way (though it's still experimental)
to hint environments of which package managers are being used
in the project.

Signed-off-by: GitHub <noreply@github.com>
2025-10-12 15:30:24 +00:00
Fernando Fernández 5c7db7cc75 chore: update generated files
Signed-off-by: GitHub <noreply@github.com>
2025-10-12 15:15:23 +00:00
Fernando Fernández 8f8c1874a8 fix(playback): guard against track restart on swiper update
Signed-off-by: GitHub <noreply@github.com>
2025-10-12 15:15:14 +00:00
Fernando Fernández ca3786b0f3 fix(JAnchor): don't render on unsupported browsers 2025-07-10 08:16:45 +00:00
Fernando Fernández da80655bd9 perf(JVirtual): reduce iterations when accessing, improve keying (#2676)
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-07-06 20:17:06 +00:00
Fernando Fernández 898e4ae770 chore(sonda): update report handling 2025-06-20 21:37:24 +02:00
Fernando Fernández e1ede821a8 chore: simplify dependency tree
The current strict peer dependency graph confused npm. This way, peer deps should be resolved in a much better way
2025-06-05 23:49:33 +00:00
Fernando Fernández 456f93b008 chore(deps): update storybook to v9 2025-06-05 22:37:46 +00:00
Fernando Fernández e567ed58d3 chore(eslint): point eslint-plugin-import-x to the appropiate package.json paths 2025-06-05 22:37:46 +00:00
Fernando Fernández b187fc5968 fix: redirect on playback finish on fullscren pages 2025-05-20 20:44:00 +00:00
Fernando Fernández a23d625508 docs(README): add screenshot, info for users without a Jellyfin server 2025-05-18 14:24:54 +02:00
Fernando Fernández fb620197d9 feat: use IndexedDB for api layer storage (#2652)
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-18 09:37:33 +00:00
Fernando Fernández 8a624c02e5 fix(JVirtual): check for existence on slot
When changing arrays, given there is a tiny delay caused by the worker,
the visibleItems array might not match with the current passed one.

Fixes #2624

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-18 02:22:05 +02:00
Fernando Fernández 2b6868dfd3 fix(vite): analyze:bundle command not working
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-18 02:21:50 +02:00
Fernando Fernández 6cd39aa1b0 fix(api): extract unrefing logic to separate function
Also allow normal for loops in eslint, since
they are the most efficient for accessing collections
where the index is also needed during normal interation

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-15 18:04:45 +02:00
Fernando Fernández 0b7c27797f chore: minor typescript improvements
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-13 09:19:04 +02:00
Fernando Fernández e3cf091d3b fix(composables): narrow BaseItem typing at api composable, allow getters for methodNames 2025-05-12 22:00:22 +00:00
Fernando Fernández e576b7348f fix: lint errors
Some of them weren't solved previously because it was needed to be verified that the lifecycle of the logout process was correct

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-08 16:44:15 +02:00
Fernando Fernández ae2e53a36d feat(playback): fix concurrency
Even though we handled the connection/disconnection of nodes properly, the AudioContext marks an HTMLMediaElement as already attached to a node, so our best bet is to instantiate/dispose the AudioContext on demand (removing the console warning that appeared when booting the client along the way)

Also create a PromiseQueue class for enqueuing promises easily

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-08 16:15:11 +02:00
Fernando Fernández 58404e1fce fix(i18n): re-fix types
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-07 15:17:57 +02:00
Fernando Fernández 5e0bae0812 refactor: re-export some utils from @vue/shared
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-07 00:37:33 +02:00
Fernando Fernández c5d0423d7b fix(i18n): types
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-07 00:21:22 +02:00
Fernando Fernández b26208592f perf: load only the used locales into memory
This reduces the memory footprint by 2 MB

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-06 20:56:54 +02:00
Fernando Fernández ed169bd523 chore: vite as peerDependencies in @jellyfin-vue/tauri-packaging
Vite is now a monorepo-wide package anyway

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-05 19:38:29 +02:00
Fernando Fernández 1d2986d228 chore: add @eslint/json and @eslint/css
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-05 19:18:45 +02:00
Fernando Fernández 127f6329e2 chore: remove npm warnings
By overriding the version of the stylus package, we can
fix all the given warnings.

Patches will be filed upstream, but this is a bandaid
for now.
2025-05-05 06:24:37 +00:00
Fernando Fernández 5d7da806e4 test: update import paths 2025-05-04 10:45:48 +00:00
Fernando Fernández e9f234aa2a chore: remove missing unused imports 2025-05-04 10:24:19 +00:00
Fernando Fernández bbadeb029a chore: fix invalid ampersand escaping introduced by Weblate 2025-05-04 10:15:50 +00:00
Fernando Fernández da2116b1fb perf(JVirtual): avoid unnecessary call
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-01 10:38:52 +02:00
Fernando Fernández 4cee2cf280 fix: dev mode with i18n virtual modules
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-05-01 10:38:52 +02:00
Fernando Fernández 81a60d2050 refactor(shared): extract node utils to their own namespace 2025-04-30 15:01:31 +00:00
Fernando Fernández ccbd5d02aa style: automatic eslint fix 2025-04-30 14:49:29 +00:00
Fernando Fernández bd674d8337 chore(lint): force props destructuring 2025-04-30 14:39:07 +00:00
Fernando Fernández 70cc8faa88 feat: use fully spinning cursor in splashcreen
Previously, we used the `cursor: wait` whenever the application was globally loading. However, it
was switched to `cursor: progress`, since the application is still clickable and responsive while loading is in progress and it made sense to show a spinner alongside a pointer.

However, during the splashscreen, besides the button, there is no other interaction possible, so this is the only place where it still makes sense to show the `cursor: wait`

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-30 00:55:22 +02:00
Fernando Fernández 401e3203e8 perf: reduce messaging time between workers
Having 2 workers allowed more parallelism, since we could be decoding and drawing at the same time.
However, this taxed more the main thread, which had to coordinate both jobs, increasing the messaging time.

Having more than one worker also increases the memory footprint of the whole application

Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-30 00:36:49 +02:00
Fernando Fernández 87a40c1667 refactor: remove unnecessary signature from useTemplateRef
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-29 23:58:42 +02:00
Fernando Fernández 4c93f8ad88 refactor(i18n): replace vue-i18n interpolation with i18next style
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-29 21:53:39 +02:00
Fernando Fernández 57bb098bd8 ci(renovate): don't pin peerDependencies
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-29 20:27:08 +02:00
Fernando Fernández 2567d33d69 chore: further monorepo cleanup
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-29 20:18:21 +02:00
Fernando Fernández f20498a05f refactor(i18next): finish bundling setup
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-29 20:05:38 +02:00
Fernando Fernández 6fa8d7f818 refactor: migrate all vue-i18n usages to i18next
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-29 20:05:38 +02:00
Fernando Fernández a84a419b69 refactor: use peer dependencies in monorepo
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-29 20:05:38 +02:00
Fernando Fernández 769c2a3cef refactor: use getPackagePath helper
Signed-off-by: Fernando Fernández <ferferga@hotmail.com>
2025-04-29 20:05:38 +02:00