Skip to content

Commit d56d348

Browse files
authored
Merge pull request #171 from victoralvesf/development
Release v0.9.0
2 parents f0b8580 + 788dffa commit d56d348

272 files changed

Lines changed: 19594 additions & 9330 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.env.example

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,8 @@ APP_AUTH_TYPE=token
2323
# Hide Radios Section
2424
# If enabled, the user will not be able to access the radios page.
2525
HIDE_RADIOS_SECTION=false
26+
27+
# Specify the server type
28+
# Used by the app to adjust some features and improve usability based on the server
29+
# Possible values: subsonic | navidrome | lms
30+
SERVER_TYPE=subsonic

.github/workflows/publish-docker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
with:
4747
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
4848
tags: |
49-
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
49+
type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/') }}
5050
type=raw,value=${{ steps.app_version.outputs.version }}
5151
type=raw,value=${{ github.sha }}
5252

README.md

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -122,21 +122,40 @@ services:
122122
- 8080:8080
123123
```
124124
125+
* Podman Quadlet
126+
```ini
127+
[Unit]
128+
Description=Aonsoku Container
129+
130+
[Container]
131+
ContainerName=aonsoku
132+
Image=ghcr.io/victoralvesf/aonsoku:latest
133+
PublishPort=8080:8080
134+
AutoUpdate=registry
135+
136+
[Service]
137+
Restart=always
138+
139+
[Install]
140+
WantedBy=multi-user.target default.target
141+
```
142+
125143
<details>
126144
<summary>Environment Variables</summary>
127145
</br>
128146

129147
Below is a table describing the environment variables that can be used in this project. Adjust them as necessary in your `.env` file.
130148

131-
| Variable | Default | Description | Required for Automatic Login |
132-
|-----------------------|-----------|-------------------------------------------------------------------------------------------------------------------|------------------------------|
133-
| `PORT` | `8080` | The port the application runs on. | |
134-
| `SERVER_URL` | | If you want the app to access a predefined Subsonic server. </br> **Format:** `http://your-subsonic-server:port`. | ✅ |
135-
| `HIDE_SERVER` | `false` | Set to `true` to hide the server URL field on login and only show username and password. | ✅ |
136-
| `APP_USER` | | The username for automatic login. | ✅ |
137-
| `APP_PASSWORD` | | The password for automatic login. | ✅ |
138-
| `APP_AUTH_TYPE` | `token` | Specifies the authentication method. </br> **Options:** `token` or `password`. | |
139-
| `HIDE_RADIOS_SECTION` | `false` | Set to `true` to hide the radios page from the sidebar menu. | |
149+
| Variable | Default | Description | Required for Automatic Login |
150+
|-----------------------|------------|-------------------------------------------------------------------------------------------------------------------|------------------------------|
151+
| `PORT` | `8080` | The port the application runs on. | |
152+
| `SERVER_URL` | | If you want the app to access a predefined Subsonic server. </br> **Format:** `http://your-subsonic-server:port`. ||
153+
| `HIDE_SERVER` | `false` | Set to `true` to hide the server URL field on login and only show username and password. ||
154+
| `APP_USER` | | The username for automatic login. ||
155+
| `APP_PASSWORD` | | The password for automatic login. ||
156+
| `APP_AUTH_TYPE` | `token` | Specifies the authentication method. </br> **Options:** `token` or `password`. | |
157+
| `SERVER_TYPE` | `subsonic` | Specifies the server name (important for some fixes). </br> **Options:** `subsonic`, `navidrome` or `lms` | |
158+
| `HIDE_RADIOS_SECTION` | `false` | Set to `true` to hide the radios page from the sidebar menu. | |
140159

141160
**Notes:**
142161
- **Automatic Login:** To enable automatic login across devices. This should only be used in secure local environments to avoid password compromise.

env-config.js.template

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ window.HIDE_SERVER="${HIDE_SERVER}" === "true";
44
window.APP_USER="${APP_USER}" || undefined;
55
window.APP_PASSWORD="${APP_PASSWORD}" || undefined;
66
window.APP_AUTH_TYPE="${APP_AUTH_TYPE}" || "token";
7-
window.HIDE_RADIOS_SECTION="${HIDE_RADIOS_SECTION}" === "true";
7+
window.HIDE_RADIOS_SECTION="${HIDE_RADIOS_SECTION}" === "true";
8+
window.SERVER_TYPE="${SERVER_TYPE}" || undefined;

nginx.conf.template

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,13 @@ server {
3535
try_files $uri /index.html =404;
3636
}
3737

38+
location = /env-config.js {
39+
root /usr/share/nginx/html;
40+
access_log off;
41+
expires -1;
42+
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
43+
}
44+
3845
# Serve static files with cache and security headers
3946
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
4047
root /usr/share/nginx/html;

package.json

Lines changed: 83 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "aonsoku",
33
"private": true,
4-
"version": "0.8.3",
4+
"version": "0.9.0",
55
"type": "module",
66
"scripts": {
77
"dev": "vite",
@@ -18,93 +18,104 @@
1818
},
1919
"dependencies": {
2020
"@chriscodesthings/random-css-hex-color": "^1.1.0",
21-
"@hookform/resolvers": "^3.9.0",
22-
"@radix-ui/react-alert-dialog": "^1.0.5",
23-
"@radix-ui/react-aspect-ratio": "^1.1.0",
24-
"@radix-ui/react-avatar": "^1.0.4",
25-
"@radix-ui/react-checkbox": "^1.1.1",
26-
"@radix-ui/react-collapsible": "^1.1.1",
27-
"@radix-ui/react-context-menu": "^2.2.2",
28-
"@radix-ui/react-dialog": "^1.0.5",
29-
"@radix-ui/react-dropdown-menu": "^2.0.6",
30-
"@radix-ui/react-label": "^2.0.2",
31-
"@radix-ui/react-menubar": "^1.0.4",
32-
"@radix-ui/react-popover": "^1.1.0",
33-
"@radix-ui/react-scroll-area": "^1.0.5",
34-
"@radix-ui/react-select": "^2.0.0",
35-
"@radix-ui/react-separator": "^1.0.3",
36-
"@radix-ui/react-slider": "^1.1.2",
37-
"@radix-ui/react-slot": "^1.0.2",
38-
"@radix-ui/react-switch": "^1.0.3",
39-
"@radix-ui/react-tabs": "^1.0.4",
40-
"@radix-ui/react-tooltip": "^1.0.7",
41-
"@tanstack/react-query": "^5.51.23",
42-
"@tanstack/react-table": "^8.17.3",
43-
"@tanstack/react-virtual": "^3.10.8",
44-
"@tauri-apps/api": "^2.0.0",
45-
"@tauri-apps/plugin-os": "^2.0.0",
46-
"@tauri-apps/plugin-process": "^2.0.0",
47-
"@tauri-apps/plugin-shell": "~2",
48-
"@tauri-apps/plugin-updater": "~2",
49-
"class-variance-authority": "^0.7.0",
21+
"@hookform/resolvers": "^3.10.0",
22+
"@radix-ui/react-alert-dialog": "^1.1.6",
23+
"@radix-ui/react-aspect-ratio": "^1.1.2",
24+
"@radix-ui/react-avatar": "^1.1.3",
25+
"@radix-ui/react-checkbox": "^1.1.4",
26+
"@radix-ui/react-collapsible": "^1.1.3",
27+
"@radix-ui/react-context-menu": "^2.2.6",
28+
"@radix-ui/react-dialog": "^1.1.6",
29+
"@radix-ui/react-dropdown-menu": "^2.1.6",
30+
"@radix-ui/react-label": "^2.1.2",
31+
"@radix-ui/react-menubar": "^1.1.6",
32+
"@radix-ui/react-popover": "^1.1.6",
33+
"@radix-ui/react-scroll-area": "^1.2.3",
34+
"@radix-ui/react-select": "^2.1.6",
35+
"@radix-ui/react-separator": "^1.1.2",
36+
"@radix-ui/react-slider": "^1.2.3",
37+
"@radix-ui/react-slot": "^1.1.2",
38+
"@radix-ui/react-switch": "^1.1.3",
39+
"@radix-ui/react-tabs": "^1.1.3",
40+
"@radix-ui/react-tooltip": "^1.1.8",
41+
"@tanstack/react-query": "^5.71.10",
42+
"@tanstack/react-table": "^8.21.2",
43+
"@tanstack/react-virtual": "^3.13.6",
44+
"@tauri-apps/api": "^2.4.1",
45+
"@tauri-apps/plugin-os": "^2.2.1",
46+
"@tauri-apps/plugin-process": "^2.2.1",
47+
"@tauri-apps/plugin-shell": "^2.2.1",
48+
"@tauri-apps/plugin-updater": "^2.7.0",
49+
"@virtual-grid/react": "^2.0.3",
50+
"class-variance-authority": "^0.7.1",
5051
"clsx": "^2.1.1",
51-
"cmdk": "^1.0.0",
52+
"cmdk": "^1.1.1",
5253
"crypto-js": "^4.2.0",
53-
"dayjs": "^1.11.11",
54-
"embla-carousel-autoplay": "^8.1.3",
55-
"embla-carousel-react": "^8.1.3",
56-
"fast-average-color": "^9.4.0",
57-
"i18next": "^23.11.5",
58-
"i18next-browser-languagedetector": "^8.0.0",
54+
"dayjs": "^1.11.13",
55+
"embla-carousel-autoplay": "^8.6.0",
56+
"embla-carousel-react": "^8.6.0",
57+
"fast-average-color": "^9.5.0",
58+
"html-to-text": "^9.0.5",
59+
"i18next": "^23.16.8",
60+
"i18next-browser-languagedetector": "^8.0.4",
5961
"immer": "^10.1.1",
62+
"linkify-it": "^5.0.0",
6063
"lodash": "^4.17.21",
6164
"lucide-react": "^0.378.0",
62-
"react": "^18.2.0",
65+
"react": "^18.3.1",
6366
"react-country-flag": "^3.1.0",
6467
"react-device-detect": "^2.2.3",
65-
"react-dom": "^18.2.0",
68+
"react-dom": "^18.3.1",
6669
"react-fast-marquee": "^1.6.5",
67-
"react-hook-form": "^7.52.2",
68-
"react-hotkeys-hook": "^4.5.0",
69-
"react-i18next": "^14.1.2",
70-
"react-lazy-load-image-component": "^1.6.0",
70+
"react-hook-form": "^7.55.0",
71+
"react-hotkeys-hook": "^4.6.1",
72+
"react-i18next": "^14.1.3",
73+
"react-lazy-load-image-component": "^1.6.3",
7174
"react-lrc": "^3.2.1",
72-
"react-markdown": "^9.0.1",
73-
"react-router-dom": "^6.23.1",
74-
"react-toastify": "^10.0.5",
75-
"remark-gfm": "^4.0.0",
75+
"react-markdown": "^9.1.0",
76+
"react-router-dom": "^6.30.0",
77+
"react-toastify": "^10.0.6",
78+
"remark-gfm": "^4.0.1",
7679
"standardized-audio-context": "^25.3.77",
77-
"tailwind-extended-shadows": "^0.4.0",
78-
"tailwind-extended-shadows-merge": "^0.2.1",
79-
"tailwind-merge": "^2.3.0",
80+
"tailwind-extended-shadows": "^0.4.1",
81+
"tailwind-extended-shadows-merge": "^0.2.2",
82+
"tailwind-merge": "^2.6.0",
8083
"tailwindcss-animate": "^1.0.7",
81-
"use-debounce": "^10.0.3",
82-
"vaul": "^0.9.1",
83-
"yet-another-react-lightbox": "^3.21.6",
84-
"zod": "^3.23.8",
85-
"zustand": "^4.5.4"
84+
"use-debounce": "^10.0.4",
85+
"vaul": "^0.9.9",
86+
"yet-another-react-lightbox": "^3.22.0",
87+
"zod": "^3.24.2",
88+
"zustand": "^4.5.6"
8689
},
8790
"devDependencies": {
8891
"@rocketseat/eslint-config": "^2.2.2",
89-
"@tanstack/eslint-plugin-query": "^5.51.15",
90-
"@tauri-apps/cli": "^2.1.0",
92+
"@tanstack/eslint-plugin-query": "^5.71.5",
93+
"@tauri-apps/cli": "^2.4.1",
9194
"@types/crypto-js": "^4.2.2",
92-
"@types/lodash": "^4.17.4",
93-
"@types/node": "^20.12.12",
94-
"@types/react": "^18.3.12",
95-
"@types/react-dom": "^18.2.7",
95+
"@types/html-to-text": "^9.0.4",
96+
"@types/linkify-it": "^5.0.0",
97+
"@types/lodash": "^4.17.16",
98+
"@types/node": "^20.17.30",
99+
"@types/react": "^18.3.20",
100+
"@types/react-dom": "^18.3.6",
96101
"@types/react-lazy-load-image-component": "^1.6.4",
97-
"@typescript-eslint/parser": "^7.14.1",
98-
"@vitejs/plugin-react": "^4.2.1",
99-
"autoprefixer": "^10.4.19",
100-
"cypress": "^13.14.2",
101-
"cypress-real-events": "^1.13.0",
102+
"@typescript-eslint/parser": "^7.18.0",
103+
"@vitejs/plugin-react": "^4.3.4",
104+
"autoprefixer": "^10.4.21",
105+
"cypress": "^13.17.0",
106+
"cypress-real-events": "^1.14.0",
102107
"eslint": "8.56.0",
103-
"eslint-import-resolver-typescript": "^3.6.1",
104-
"eslint-plugin-import": "^2.29.1",
105-
"postcss": "^8.4.38",
106-
"tailwindcss": "^3.4.3",
107-
"typescript": "^5.0.2",
108-
"vite": "^5.0.0"
108+
"eslint-import-resolver-typescript": "^3.10.0",
109+
"eslint-plugin-import": "^2.31.0",
110+
"postcss": "^8.5.3",
111+
"tailwindcss": "^3.4.17",
112+
"typescript": "^5.8.2",
113+
"vite": "^5.4.17"
114+
},
115+
"pnpm": {
116+
"onlyBuiltDependencies": [
117+
"cypress",
118+
"esbuild"
119+
]
109120
}
110121
}

0 commit comments

Comments
 (0)