feat(pmoapp): enable PWA support and bump version to 0.3.57
Integrate vite-plugin-pwa to enable progressive web app capabilities, configuring manifest icons and Workbox service worker strategies for API and audio routes. Update index.html with PWA metadata and mobile-specific meta tags, and add 192px/512px icon assets. Resolve version conflicts in PMOMusic and version.txt, advancing the project to 0.3.57 alongside corresponding dependency updates.
This commit is contained in:
2
Cargo.lock
generated
2
Cargo.lock
generated
@@ -4,7 +4,7 @@ version = 4
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "PMOMusic"
|
name = "PMOMusic"
|
||||||
version = "0.3.54"
|
version = "0.3.57"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum 0.8.7",
|
"axum 0.8.7",
|
||||||
"console-subscriber",
|
"console-subscriber",
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ COPY pmoplaylist/ ./pmoplaylist/
|
|||||||
COPY pmoflac/ ./pmoflac/
|
COPY pmoflac/ ./pmoflac/
|
||||||
COPY pmometadata/ ./pmometadata/
|
COPY pmometadata/ ./pmometadata/
|
||||||
COPY pmocontrol/ ./pmocontrol/
|
COPY pmocontrol/ ./pmocontrol/
|
||||||
|
COPY pmourlsource/ ./pmourlsource/
|
||||||
COPY pmoaudio-ext/ ./pmoaudio-ext/
|
COPY pmoaudio-ext/ ./pmoaudio-ext/
|
||||||
COPY pmoapp/ ./pmoapp/
|
COPY pmoapp/ ./pmoapp/
|
||||||
|
|
||||||
|
|||||||
BIN
PMOMusic-A-192.png
Normal file
BIN
PMOMusic-A-192.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
BIN
PMOMusic-A-512.png
Normal file
BIN
PMOMusic-A-512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 228 KiB |
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "PMOMusic"
|
name = "PMOMusic"
|
||||||
version = "0.3.54"
|
version = "0.3.58"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@@ -2,9 +2,15 @@
|
|||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
<link rel="icon" type="image/png" sizes="192x192" href="/app/icons/icon-192.png" />
|
||||||
|
<link rel="apple-touch-icon" href="/app/icons/icon-192.png" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
|
||||||
<title>webapp</title>
|
<meta name="theme-color" content="#111827" />
|
||||||
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
|
||||||
|
<meta name="apple-mobile-web-app-title" content="PMOMusic" />
|
||||||
|
<title>PMOMusic</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="app"></div>
|
<div id="app"></div>
|
||||||
|
|||||||
4858
pmoapp/webapp/package-lock.json
generated
4858
pmoapp/webapp/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -25,6 +25,7 @@
|
|||||||
"@vue/tsconfig": "^0.8.1",
|
"@vue/tsconfig": "^0.8.1",
|
||||||
"typescript": "~5.8.3",
|
"typescript": "~5.8.3",
|
||||||
"vite": "^7.1.7",
|
"vite": "^7.1.7",
|
||||||
|
"vite-plugin-pwa": "^1.3.0",
|
||||||
"vue-tsc": "^3.0.7"
|
"vue-tsc": "^3.0.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
pmoapp/webapp/public/icons/icon-192.png
Normal file
BIN
pmoapp/webapp/public/icons/icon-192.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
BIN
pmoapp/webapp/public/icons/icon-512.png
Normal file
BIN
pmoapp/webapp/public/icons/icon-512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 228 KiB |
@@ -1,10 +1,58 @@
|
|||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from 'vite'
|
||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue'
|
||||||
|
import { VitePWA } from 'vite-plugin-pwa'
|
||||||
import { fileURLToPath, URL } from 'node:url'
|
import { fileURLToPath, URL } from 'node:url'
|
||||||
|
|
||||||
// https://vite.dev/config/
|
// https://vite.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [vue()],
|
plugins: [
|
||||||
|
vue(),
|
||||||
|
VitePWA({
|
||||||
|
registerType: 'autoUpdate',
|
||||||
|
base: '/app/',
|
||||||
|
manifest: {
|
||||||
|
name: 'PMOMusic',
|
||||||
|
short_name: 'PMOMusic',
|
||||||
|
description: 'Contrôleur UPnP/DLNA pour votre musique',
|
||||||
|
start_url: '/app/',
|
||||||
|
display: 'standalone',
|
||||||
|
orientation: 'any',
|
||||||
|
theme_color: '#111827',
|
||||||
|
background_color: '#111827',
|
||||||
|
icons: [
|
||||||
|
{
|
||||||
|
src: '/app/icons/icon-192.png',
|
||||||
|
sizes: '192x192',
|
||||||
|
type: 'image/png',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
src: '/app/icons/icon-512.png',
|
||||||
|
sizes: '512x512',
|
||||||
|
type: 'image/png',
|
||||||
|
purpose: 'any maskable',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
workbox: {
|
||||||
|
navigateFallback: '/app/index.html',
|
||||||
|
globPatterns: ['**/*.{js,css,html,ico,png,svg,woff2}'],
|
||||||
|
runtimeCaching: [
|
||||||
|
{
|
||||||
|
urlPattern: /^\/api\//,
|
||||||
|
handler: 'NetworkFirst',
|
||||||
|
options: {
|
||||||
|
cacheName: 'api-cache',
|
||||||
|
networkTimeoutSeconds: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
urlPattern: /^\/audio\//,
|
||||||
|
handler: 'NetworkOnly',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
],
|
||||||
base: '/app/', // Base path pour le déploiement
|
base: '/app/', // Base path pour le déploiement
|
||||||
resolve: {
|
resolve: {
|
||||||
alias: {
|
alias: {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
0.3.54
|
0.3.58
|
||||||
|
|||||||
Reference in New Issue
Block a user