桌面端首次启动需手动指定 MPV 二进制路径并重启应用,MPV v0.34.x 为已知损坏版本;Linux 上若禁用非特权命名空间会报 SUID sandbox 错误,需 chmod 4755 chrome-sandbox 并改属主为 root;Docker 默认监听 9180 端口,托管在子路径时需设置 PUBLIC_PATH。
feishin
jeffvliGPL-3.0活跃维护一款现代化的自托管音乐播放器,可连接 Navidrome、Jellyfin、Subsonic 等音乐服务器,在浏览器或桌面端管理和播放自己的音乐库。
A modern self-hosted music player.
docker run --name feishin -p 9180:9180 ghcr.io/jeffvli/feishin:latestREADME 未说明硬件要求;桌面端依赖本机安装的 MPV 二进制,Web 与 Docker 版仅支持 Web 播放后端。
自托管的现代音乐播放器客户端,连接 Navidrome、Jellyfin 或 OpenSubsonic 服务器播放你的音乐库
一款现代化的自托管音乐播放器,可连接 Navidrome、Jellyfin、Subsonic 等音乐服务器,在浏览器或桌面端管理和播放自己的音乐库。
核心能力
- 提供 MPV 与 Web 两种播放后端
- 支持 Navidrome、Jellyfin、OpenSubsonic 兼容服务器
- 可将播放记录 scrobble 回服务器
- 内置同步与非同步歌词支持
- 含 Navidrome 智能播放列表编辑器
容易踩的坑
- v1.17.01.17.0最新正式版2026-09-15 · 2026-09-15 08:42 UTC
1.17.0 is here! This is a quick release due to a few breaking bugs introduced in 1.16.0.
Thanks everyone for the quick bug reports and contributors who assisted in pushing hotfixes.
Changed
- Moved to a unified edit positioning between smart playlists and regular playlists (#2445) (Thanks @nova77)
- When Player Repeat is set to "off", finishing the queue will now reset to the first song instead of staying at the end (#2453) (Thanks @msanlop)
- Re-added Refresh button on the lyrics actions panel on the web client (Thanks @Allinen)
Fixed
- Fixed web player crossfade stuck after song transition (#2466)
- Fixed web player crossfade being bounded to a max of 10 seconds (#2466)
- Fixed mpv player not correctly reinitializing on system wake (#2471)
- Fixed broken header styling on the Settings page (Thanks @kgarner7)
- Fixed metadata display on the "Compact" grid view cards
- Fixed grid item height when all metadata rows are disabled (#2468) (Thanks @GerardGascon)
- Fixed tray behavior on Linux (#2469) (Thanks @ilgabbo)
- Fixed Minimize to Tray setting switch state (#2476) (Thanks @ilgabbo)
- Fixed waveform seekbar erroring in certain cases (#2477) (Thanks @ilgabbo)
- Fixed glassy dark theme inconsistent positioning of the playerbar and sidebar player
- Fixed sidebar player showing up on the Now Playing route when no applicable panels are enabled (#2458)
- Fixed item table from erroring when scrolling fast (#2474)
- Fixed maximize button on the playerbar image to expand into the sidebar being hidden
- Fixed incorrect border-radius rounding on images in some places
What's Changed
- feat(player): add setting to restart queue on end by @msanlop in https://github.com/jeffvli/feishin/pull/2453
- FIX: tray icon missing on Linux and app not exiting with "Exit to tray" by @ilgabbo in https://github.com/jeffvli/feishin/pull/2469
- fix(library): keep grid item height when all rows are disabled by @GerardGascon in https://github.com/jeffvli/feishin/pull/2468
- feat(library): unify smart playlist editing with the edit button by @nova77 in https://github.com/jeffvli/feishin/pull/2445
- feat: refresh lyrics on web client by @Allinen in https://github.com/jeffvli/feishin/pull/2447
- fix(ui): show correct state for minimize to tray switch by @ilgabbo in https://github.com/jeffvli/feishin/pull/2476
- fix(player): guard waveform seek against infinite stream duration (#2… by @ilgabbo in https://github.com/jeffvli/feishin/pull/2477
New Contributors
- @msanlop made their first contribution in https://github.com/jeffvli/feishin/pull/2453
Full Changelog: https://github.com/jeffvli/feishin/compare/v1.16.0...v1.17.0
- v1.16.01.16.02026-09-14 · 2026-09-14 01:09 UTC
查看更新说明
1.16.0 is here! Been a while, but this large release brings quite a few new enhancements with some highlights being:
- Casting to local DLNA devices
- Feishin remote now supports library browsing and queue modification with a full interface overhaul
- A refreshed fullscreen player design with more customization options
As always, thank you to all the contributors!
Added
- Added DLNA casting support (#1887) (Thanks @Villhume)
- Added a new fullscreen player design (#2227) (Thanks @Kevin)
- (Jellyfin) Added Jellyfin Quick Connect authentication support (#2238) (Thanks @samsalonen)
- Added playlists section to the home page (#2435) (Thanks @KaranGoel)
- Enhanced the Feishin Remote with support for library browsing, queue management, and action sheets (#2337) (Thanks @mihaitom)
- Added an option to view top rated songs in the Favorite Songs section (#2289) (Thanks @dsimonds)
- Added an option to configure default share expiration (#2283) (Thanks @Yunus)
- Added options to make ratings/favourites more customizable (#2262) (Thanks @Kernald)
- Added confirmation dialog before discarding the current play queue (#2300) (Thanks @york9675)
- Added random sort to the playlist song list
- Added play action to the queue context menu
- Added scrobble minimum mode setting (#2414) (Thanks @ermmmwafle)
- Added option to exclude other artists from artist play (#2404) (Thanks @GerardGascon)
- (Navidrome / Jellyfin) Added support for hashed image placeholders
- (Jellyfin) Report the play queue window to Jellyfin sessions (#2387) (Thanks @pbr85)
- (Jellyfin) Use the ID3 getArtistInfo2 endpoint for artist info (#2309) (Thanks @noctuum)
- (Mpris) Added xesam:asText lyrics to mpris output (#2411)
- (OS) Added support for the topSongsByArtistId OS extension
- (Navidrome) Added support for v0.64.0 smart playlist fields
- Added library rescan action to the server selector menu
- Added MPV reload button to the audio player selector
- Added overflow menu for play queue controls (#2326)
- Added sidebar player / lyrics support on the Now Playing route (#2134)
- (macOS) Added a Window menu item that re-opens the main window (#2269) (Thanks @dsimonds)
- Added F11 hotkey to fullscreen the app (#2280) (Thanks @jaxi)
- Added various missing butterchurn visualizer presets (#2280) (Thanks @jaxi)
Changed
- (mpv) Reverted the volume max limit feature from v1.15.0 (#2288) (Thanks @SimonSlamka)
- Expanded date fields across the app (#2276) (Thanks @ermmmwafle)
Fixed
- (OS) Fixed parsing for OS songLyrics v1 (#2327)
- Fixed the renderer whitescreening and crashing while playing music if volume expanded outside of valid bounds (#2449 / #2450) (Thanks @SteffenR)
- Fixed the global lyrics delay offset not being applied from settings (#2456)
- Fixed the seekbar getting stuck in some situations (#2441) (Thanks @Allinen)
- Fixed the radio web player not updating player volume (#2438) (Thanks @GerardGascon)
- Fixed radio cover and metadata being incorrect or missing in some cases (#2407) (Thanks @GerardGascon)
- (macOS) Fixed the menu bar disappearing (#2428) (Thanks @york9675)
- (MPV) Fixed stale commands being queued during runtime player switches (#2399) (Thanks @mattvanhorn)
- (MPV) Fixed the pitch toggle not working with the MPV backend (#2297) (Thanks @Sekiryl)
- (MPV) Fixed seeking getting stuck when the waveform fails to load by keeping a fallback seek control (#2257) (Thanks @mattvanhorn)
- (Web Player) Fixed the AudioContext being locked until first user gesture (#2275) (Thanks @Inspiractus01)
- (Web Player) Fixed playback resuming on queue modification (#2250)
- Fixed the settings route scrolling (Thanks @kgarner7)
- Fixed the seek timestamp not resetting on song play (#2397) (Thanks @ermmmwafle)
- Fixed the resume timestamp not correctly restoring on app launch (#2395) (Thanks @AndrewHerron)
- Fixed empty grid row configuration being lost (#2393) (Thanks @Atirna)
- Fixed a redundant menu d
- v1.15.11.15.12026-07-19 · 2026-07-19 23:54 UTC
查看更新说明
A quick hotfix release for some issues identified in 1.15.0.
Changed
- Lyrics search form now uses custom lyrics styling instead of the configured lyrics settings to prevent size mismatch
- A new version available indicator is now displayed in the the settings header and app menu (#2259)
Fixed
- Fixed regression on scrobbling behavior for Jellyfin/Navidrome/Subsonic when the scrobble is submitted
- Fixed mediasession handlers breaking after a player stop event or end of queue reached
- Fixed updater continuing to download/install updates on the 6 hour update-check interval even when auto update is disabled (#2259)
- Adjusted some tag editor setting defaults
Full Changelog: https://github.com/jeffvli/feishin/compare/v1.15.0...v1.15.1
- v1.15.01.15.02026-07-19 · 2026-07-19 07:20 UTC
查看更新说明
1.15.0 is here!
If you are using the nightly release channel, you may need to toggle it back and forth between stable and alpha for it to work again following the changes in v1.13.0.
As always, thank you to all the contributors!
Added
- (Desktop) Added local file tag/metadata editor which can be accesed from the song/album context menus (#2252) (Thanks @ChrisScott9456)
- Added button to the queue action buttons to create a playlist from the play queue (#2210) (Thanks @Keviddle)
- Added vertical album group layout for the item table - this is the new default and can be adjusted in the album group settings
- Added Alt+click on previous/next to jump to the previous/next album in the queue (#2220) (Thanks @eramdam)
- (macOS) Improved native application menu (#2242) (Thanks @york9675)
- (mpv) Volume control now follows mpv's volume max limit if set by
--volume-max(#2198) (Thanks @danglingptr0x0) - Added support for loading custom themes from files (#2218) (Thanks @make-42)
- See here for how you can add your own themes
- Added server logout button
Fixed
- Fixed item table columns and scroll breaking on resize, reorder, and pin
- Fixed album group image size when set to 0 (#2221)
- Fixed album group row styles and height calculations
- Fixed furigana and romaji display/export issues (#2219) (Thanks @york9675)
- Fixed pronunciation lyrics line not syncing on toggle (#2225)
- Fixed lyrics overlay visibility not persisting (#2226) (Thanks @cyphercodes)
- Fixed incorrect lyric scroll position when resuming playback after being paused for an extended period of time
- Fixed missing horizontal padding on synchronized lyric lines
- Fixed sleep timer countdown being too fast (#2235) (Thanks @york9675)
- Fixed compilation release type label on album details being displayed twice in certain conditions (#2236) (Thanks @york9675)
- Fixed pitch display unit (
%→x) (Thanks @kgarner7) - Show system default audio device in the device select when unset (#2216) (Thanks @anbarsaleem)
- Fixed Discord RPC not clearing on player stop (#2239)
- Fixed invalid text wrap in various places around the app when displaying artist names (#2249)
- Prevented images from flickering in certain cases
- Fixed invalid credentials not properly logging a user out (#2230)
- (Jellyfin) Fixed stop event firing on song change during scrobble (#2243)
- (Jellyfin) Send timestamp update after scrobble submission so it continues displaying in dashboard after Stop scrubble is submitted
- (Subsonic) Fixed
reportPlaybackrequest chain so that the starting event is sent first before the playing event (#2131)
What's Changed
- fix: unify scrobbling behavior across subsonic servers by @Spyboticsguy in https://github.com/jeffvli/feishin/pull/2229
- fix: persist lyrics overlay visibility by @cyphercodes in https://github.com/jeffvli/feishin/pull/2226
- fix furigana and romaji issues by @york9675 in https://github.com/jeffvli/feishin/pull/2219
- fix: show system default audio device in the device select when unset by @anbarsaleem in https://github.com/jeffvli/feishin/pull/2216
- fix: sleep timer countdown (#2233) by @york9675 in https://github.com/jeffvli/feishin/pull/2235
- fix: use compilation release type label on album details by @york9675 in https://github.com/jeffvli/feishin/pull/2236
- feat: support furigana and romaji generation on web by @york9675 in https://github.com/jeffvli/feishin/pull/2232
- Support using alt+click on prev/next to jump to previous/next album in queue by @eramdam in https://github.com/jeffvli/feishin/pull/2220
- feat(player): set right ctrl vol max to mpv's vol max if player==local by @danglingptr0x0 in https://github.com/jeffvli/feishin/pull/2198
- feat: added playlist from queue creation by @Keviddle in https://github.com/jeffvli/feishin/pull/2210
- feat(tag-editor): add batch metadata editor with artwo
- v1.14.01.14.02026-07-12 · 2026-07-12 03:18 UTC
查看更新说明
1.14.0 is here!
This release includes support for the new OpenSubsonic Song Lyrics v2 extension which allows for word-level timed karaoke-style lyrics which is supported by Navidrome v63.0+. No additional lyric fetchers have been added to support this, but in the meantime I highly recommend using the Navidrome Lyrics Plugin by @J0R6IT0 which supports fetching and returning karaoke style lyrics directly from your Navidrome server. In this case, you will want to enable the Feishin setting to
Prefer local lyrics.As always, thank you to all the contributors!
Added
- Lyrics enhancements
- (Subsonic) Added support for enhanced / karaoke-style time-synced lyrics (#2208)
- Added Japanese Furigana support to lyrics display (#2161) (Thanks @york9675)
- Added Japanese Romaji support to lyrics display (#2180) (Thanks @york9675)
- Added graphic EQ and compressor with presets (#1972) (Thanks @keebsxd)
- (Subsonic) Added jukebox player engine for server-side playback via OpenSubsonic jukeboxControl (#2109) (Thanks @mannansainidev)
- Added musical speed controls (semitone pitch buttons when preserve pitch is disabled) (#2191) (Thanks @vimaexd)
- Added right-click on volume icon to switch audio output device (#2189) (Thanks @LoganRupe)
- Added Zenburn theme (#2112) (Thanks @mathieu-lemay)
- Added setting for static window title (#2183) (Thanks @mihawk90)
- Added configurable album group image size in the queue (#2153) (Thanks @nova77)
- Added additional metadata, links, favorite, and rating controls to album group column for the item table (#2139)
- (Navidrome) Added
isMissingandisPresentoperators to smart playlist form (#2149) (Thanks @bramjohnson) - Highlight the playing playlist in the left sidebar on play (#2025) (Thanks @nova77)
- (Genre) Added support for sorting by track / album count (Thanks @kgarner7)
- (Jellyfin) Added missing album replaygain (#2199)
- (Jellyfin) Added unknown MediaType handling for playlist fetch (#2063)
Changed
- (Jellyfin) Improved playlist loading and modification performance (#2184) (Thanks @BlackHoleFox)
- Improved shuffle quality using
crypto.getRandomValues()(#2181) (Thanks @alabsi91) - Defaulted sidebar playlist folders setting to false
- Format playlist header title without folder names
- Reduced opacity of fullscreen player header when not hovered
Fixed
- Fixed playback report / scrobble event chain on song change and queue end (#2131)
- (Subsonic) Fixed
reportPlaybacksending non-integer values (Thanks @kgarner7) - Fixed replaygain volume jump on web player (#1576)
- Fixed mpv playback recovery after OS resume from sleep (#2172) (Thanks @ryankupk)
- Fixed startup resume-seek being cancelled when shuffle is enabled (#2203) (Thanks @WhoCarrot)
- Fixed infinite list cache reset on remount that reshuffled random sort (#2097) (Thanks @pedrovieira)
- Fixed function keys (F1–F24) not being recognized when assigning hotkeys (#2157) (Thanks @ryankupk)
- Fixed list select-all hotkey (#2195)
- Fixed share link clipboard copy failing in Firefox/Safari (#2135) (Thanks @elushaX)
- Fixed lyrics desync caused by scroll issues (#2110) (Thanks @iiPythonx)
- Fixed lyrics export when furigana is enabled (#2175) (Thanks @york9675)
- Fixed romaji duplicate lines for non-Japanese lyrics (#2188) (Thanks @york9675)
- Fixed item table scroll sync when pinned columns change
- Fixed playlist search ranking (#1935)
- Fixed alpha updater rolling back to the previous stable version (#2217)
- Fixed sidebar from re-expanding when the setting is disabled (Thanks @kgarner7)
- Fixed Discord RPC disconnect on unmount (Thanks @kgarner7)
Other
- Upgraded dependencies (#2133) (Thanks @kgarner7)
- Added support for pnpm v11 (Thanks @oHaoDaio)
- Excluded feature/en
- Lyrics enhancements
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Feishin
Rewrite of Sonixd.
Features
- MPV player backend
- Web player backend
- Modern UI
- Scrobble playback to your server
- Smart playlist editor (Navidrome)
- Synchronized and unsynchronized lyrics support
- Request a feature or view taskboard
Screenshots
Getting Started
Desktop (recommended)
Download the latest desktop client. The desktop client is the recommended way to use Feishin. It supports both the MPV and web player backends, as well as includes built-in fetching for lyrics.
macOS Notes
If you're using a device running macOS 12 (Monterey) or higher, check here for instructions on how to remove the app from quarantine.
For media keys to work, you will be prompted to allow Feishin to be a Trusted Accessibility Client. After allowing, you will need to restart Feishin for the privacy settings to take effect.
Linux Notes
Feishin is available in Flathub.
Alternatively, you can install it as an Appimage. We provide a small install script to download the latest .AppImage, make it executable, and also download the icons required by Desktop Environments. Finally, it generates a .desktop file to add Feishin to your Application Launcher.
Simply run the installer like this:
dir=/your/application/directory
curl 'https://raw.githubusercontent.com/jeffvli/feishin/refs/heads/development/install-feishin-appimage' | sh -s -- "$dir"
The script also has an option to add launch arguments to run Feishin in native Wayland mode. Note that this is experimental in Electron and therefore not officially supported. If you want to use it, run this instead:
dir=/your/application/directory
curl 'https://raw.githubusercontent.com/jeffvli/feishin/refs/heads/development/install-feishin-appimage' | sh -s -- "$dir" wayland-native
It also provides a simple uninstall routine, removing the downloaded files:
dir=/your/application/directory
curl 'https://raw.githubusercontent.com/jeffvli/feishin/refs/heads/development/install-feishin-appimage' | sh -s -- "$dir" remove
The entry should show up in your Application Launcher immediately. If it does not, simply log out, wait 10 seconds, and log back in. Your Desktop Environment may alternatively provide a way to reload entries.
Web and Docker
Visit https://feishin.vercel.app to use the hosted web version of Feishin. The web client only supports the web player backend.
Feishin is also available as a Docker image. The images are hosted via ghcr.io and are available to view here. You can run the container using the following commands:
# Run the latest version
docker run --name feishin -p 9180:9180 ghcr.io/jeffvli/feishin:latest
# Build the image locally
docker build -t feishin .
docker run --name feishin -p 9180:9180 feishin
Docker Compose
To install via Docker Compose, use the following snippet. This also works on Portainer.
services:
feishin:
container_name: feishin
image: 'ghcr.io/jeffvli/feishin:latest'
restart: unless-stopped
environment:
- SERVER_NAME=jellyfin # pre-defined server name
- SERVER_LOCK=true # When true AND name/type/url are set, only username/password can be toggled
- SERVER_TYPE=jellyfin # the allowed types are: jellyfin, navidrome, subsonic. These values are case insensitive
- SERVER_URL= # http://address:port or https://address:port
- REMOTE_URL= # http://address or https://address
- LEGACY_AUTHENTICATION=false # When SERVER_LOCK is true, sets the legacy (plaintext) authentication flag for Subsonic/OpenSubsonic servers
- ANALYTICS_DISABLED=true # Set to true to disable Umami analytics tracking
ports:
- 9180:9180
# Alternatively, to restrict to only localhost, - 127.0.0.1:9180:8190
Configuration
-
Upon startup you will be greeted with a prompt to select the path to your MPV binary. If you do not have MPV installed, you can download it here or install it using any package manager supported by your OS. After inputting the path, restart the app.
-
After restarting the app, you will be prompted to select a server. Click the
Open menubutton and selectManage servers. Click theAdd serverbutton in the popup and fill out all applicable details. You will need to enter the full URL to your server, including the protocol and port if applicable (e.g.https://navidrome.my-server.comorhttp://192.168.0.1:4533).
- Navidrome - For the best experience, select "Save password" when creating the server and configure the
SessionTimeoutsetting in your Navidrome config to a larger value (e.g. 72h).- Linux users - The default password store uses
libsecret.kwallet4/5/6are also supported, but must be explicitly set in Settings > Window > Passwords/secret store.
- Linux users - The default password store uses
-
Optional - If you want to host Feishin on a subpath (not
/), then pass in the following environment variable:PUBLIC_PATH=PATH. For example, to host on/feishin, pass inPUBLIC_PATH=/feishin. -
Optional - To hard code the server url, pass the following environment variables:
SERVER_NAME,SERVER_TYPE(one ofjellyfinornavidromeorsubsonic),SERVER_URL. To prevent users from changing these settings, passSERVER_LOCK=true. This can only be set if all three of the previous values are set. WhenSERVER_LOCK=true, you can also setLEGACY_AUTHENTICATION=trueorLEGACY_AUTHENTICATION=falseto configure the legacy authentication flag for the server (only applicable for Subsonic/OpenSubsonic servers). -
Optional - If your server uses a separate public-facing URL than what integrating applications use internally to communicate with your server, such as a separate Navidrome
ShareURL, setREMOTE_URLto said public-facing URL. -
Optional - To disable Umami analytics tracking in the Docker/web version, set the environment variable
ANALYTICS_DISABLED=true. When enabled, the analytics script will not be loaded and all tracking will be disabled. -
Optional - App settings (theme, language, sidebar options, etc.) can be overridden with environment variables on first run. The variables use the
FS_prefix (e.g.FS_GENERAL_THEME=defaultDark,FS_GENERAL_LANGUAGE=de). See the settings environment variable documentation for the full list.
FAQ
MPV is either not working or is rapidly switching between pause/play states
First thing to do is check that your MPV binary path is correct. Navigate to the settings page and re-set the path and restart the app. If your issue still isn't resolved, try reinstalling MPV. Known working versions include v0.35.x and v0.36.x. v0.34.x is a known broken version.
What music servers does Feishin support?
Feishin supports any music server that implements a Navidrome, Jellyfin, or OpenSubsonic compatible API.
-
OpenSubsonic compatible servers, such as...
-
- Feishin fork by lux032 - Plex is not natively supported. Use the fork by lux032 to use Plex with Feishin.
I have the issue "The SUID sandbox helper binary was found, but is not configured correctly" on Linux
This happens when you have user (unprivileged) namespaces disabled (sysctl kernel.unprivileged_userns_clone returns 0). You can fix this by either enabling unprivileged namespaces, or by making the chrome-sandbox Setuid.
chmod 4755 chrome-sandbox
sudo chown root:root chrome-sandbox
Ubuntu 24.04 specifically introduced breaking changes that affect how namespaces work. Please see https://discourse.ubuntu.com/t/ubuntu-24-04-lts-noble-numbat-release-notes/39890#:~:text=security%20improvements%20 for possible fixes.
How can I add custom themes?
On the desktop app, you can add custom themes by dropping JSON files into the Themes folder (Settings → General → Theme → Open Folder). See the custom themes documentation for the file format and examples.
Development
Built and tested using Node v23.11.0.
This project is built off of electron-vite
pnpm run dev- Start the development serverpnpm run dev:watch- Start the development server in watch mode (for main / preload HMR)pnpm run start- Starts the app in production preview modepnpm run build- Builds the app for desktoppnpm run build:electron- Build the electron app (main, preload, and renderer)pnpm run build:remote- Build the remote app (remote)pnpm run build:web- Build the standalone web app (renderer)pnpm run package- Package the projectpnpm run package:dev- Package the project for development locallypnpm run package:linux- Package the project for Linux locallypnpm run package:mac- Package the project for Mac locallypnpm run package:win- Package the project for Windows locallypnpm run publish:linux- Publish the project for Linuxpnpm run publish:linux:beta- Publish the project for Linux (beta channel)pnpm run publish:linux-arm64- Publish the project for Linux ARM64pnpm run publish:linux-arm64:beta- Publish the project for Linux ARM64 (beta channel)pnpm run publish:mac- Publish the project for Macpnpm run publish:mac:beta- Publish the project for Mac (beta channel)pnpm run publish:win- Publish the project for Windowspnpm run publish:win:beta- Publish the project for Windows (beta channel)pnpm run typecheck- Type check the projectpnpm run typecheck:node- Type check the project with tsconfig.node.jsonpnpm run typecheck:web- Type check the project with tsconfig.web.jsonpnpm run lint- Lint the projectpnpm run lint:fix- Lint the project and fix linting errorspnpm run i18next- Generate i18n files
Translation
This project uses Weblate for translations. If you would like to contribute, please visit the link and submit a translation.