Compare commits

...

1073 Commits

Author SHA1 Message Date
Thomas Camlong
5077d753b6 v0.10.3
v0.10.3
2022-10-24 07:57:21 +09:00
Thomas Camlong
01fc7b08f3 New Crowdin updates (#478)
* New translations docker.json (French)

* New translations docker.json (Swedish)

* New translations docker.json (Danish)

* New translations docker.json (LOLCAT)

* New translations docker.json (Portuguese, Brazilian)

* New translations docker.json (English)

* New translations docker.json (Chinese Simplified)

* New translations docker.json (Ukrainian)

* New translations docker.json (Slovenian)

* New translations docker.json (Spanish)

* New translations docker.json (Polish)

* New translations docker.json (Dutch)

* New translations docker.json (Korean)

* New translations docker.json (Japanese)

* New translations docker.json (Italian)

* New translations docker.json (German)

* New translations docker.json (Hebrew)

* New translations docker.json (German)

* New translations docker.json (English)

* New translations docker.json (Danish)

* New translations docker.json (Spanish)

* New translations docker.json (Swedish)

* New translations docker.json (Hebrew)

* New translations search-engine.json (Danish)

* New translations search-engine.json (Russian)

* New translations search-engine.json (Portuguese, Brazilian)

* New translations search-engine.json (English)

* New translations search-engine.json (Chinese Simplified)

* New translations search-engine.json (Ukrainian)

* New translations search-engine.json (Swedish)

* New translations search-engine.json (Slovenian)

* New translations search-engine.json (Polish)

* New translations search-engine.json (Hebrew)

* New translations search-engine.json (Dutch)

* New translations search-engine.json (Korean)

* New translations search-engine.json (Japanese)

* New translations search-engine.json (Italian)

* New translations search-engine.json (German)

* New translations search-engine.json (French)

* New translations search-engine.json (Spanish)

* New translations search-engine.json (LOLCAT)

* New translations search-engine.json (Danish)

* New translations search-engine.json (Swedish)

* New translations search-engine.json (Spanish)

* New translations search-engine.json (German)

* New translations search-engine.json (Hebrew)

* New translations search-engine.json (English)

* New translations search-engine.json (Ukrainian)
2022-10-24 07:54:29 +09:00
Momcilo42
fdecf24905 Add switch option to open search box result in same tab #476
This makes it easier to search when homer is set as the default for a new
tab.

Co-authored-by: Momcilo Bajalovic <momcilobajalovic@Momcilos-Air.lan>
2022-10-21 21:58:35 +02:00
Thomas Camlong
e028fe29bb New Crowdin updates (#470)
* New translations docker.json (French)

* New translations docker.json (Spanish)

* New translations docker.json (German)

* New translations docker.json (Italian)

* New translations docker.json (Japanese)

* New translations docker.json (Korean)

* New translations docker.json (Dutch)

* New translations docker.json (Polish)

* New translations docker.json (Russian)

* New translations docker.json (Slovenian)

* New translations docker.json (Swedish)

* New translations docker.json (Ukrainian)

* New translations docker.json (Chinese Simplified)

* New translations docker.json (English)

* New translations docker.json (Portuguese, Brazilian)

* New translations docker.json (LOLCAT)

* New translations docker.json (Swedish)

* New translations docker.json (German)

* New translations docker.json (German)

* New translations docker.json (Spanish)

* New translations docker.json (English)

* New translations docker.json (Italian)

* New translations login.json (Italian)

* New translations docker.json (Ukrainian)

* New translations add-service-app-shelf.json (Korean)

* New translations common-media-cards.json (Korean)

* New translations dashdot.json (Korean)

* New translations dashdot.json (Korean)

* New translations common.json (Danish)

* New translations common.json (Danish)

* New translations usenet.json (Danish)

* New translations widget-positions.json (Danish)

* New translations theme-selector.json (Danish)

* New translations search-engine.json (Danish)

* New translations module-enabler.json (Danish)

* New translations internationalization.json (Danish)

* New translations config-changer.json (Danish)

* New translations color-schema.json (Danish)

* New translations shade-selector.json (Danish)

* New translations page-appearance.json (Danish)

* New translations opacity-selector.json (Danish)

* New translations color-selector.json (Danish)

* New translations app-width.json (Danish)

* New translations weather.json (Danish)

* New translations add-service-app-shelf.json (Danish)

* New translations torrents-status.json (Danish)

* New translations search.json (Danish)

* New translations ping.json (Danish)

* New translations overseerr.json (Danish)

* New translations docker.json (Danish)

* New translations dlspeed.json (Danish)

* New translations date.json (Danish)

* New translations dashdot.json (Danish)

* New translations common.json (Danish)

* New translations common-media-cards.json (Danish)

* New translations calendar.json (Danish)

* New translations app-shelf.json (Danish)

* New translations app-shelf-menu.json (Danish)

* New translations login.json (Danish)

* New translations common.json (Danish)

* New translations add-service-app-shelf.json (Danish)

* New translations config-changer.json (Danish)

* New translations color-schema.json (Danish)

* New translations shade-selector.json (Danish)

* New translations page-appearance.json (Danish)

* New translations opacity-selector.json (Danish)

* New translations color-selector.json (Danish)

* New translations app-width.json (Danish)

* New translations common.json (Danish)

* New translations weather.json (Danish)

* New translations torrents-status.json (Danish)

* New translations overseerr.json (Danish)

* New translations docker.json (Danish)

* New translations dlspeed.json (Danish)

* New translations date.json (Danish)

* New translations dashdot.json (Danish)

* New translations common.json (Danish)

* New translations common-media-cards.json (Danish)

* New translations calendar.json (Danish)

* New translations app-shelf.json (Danish)

* New translations app-shelf-menu.json (Danish)

* New translations usenet.json (Danish)

* New translations login.json (Danish)

* New translations common.json (Danish)

* New translations usenet.json (Danish)

* New translations widget-positions.json (Danish)

* New translations theme-selector.json (Danish)

* New translations search-engine.json (Danish)

* New translations module-enabler.json (Danish)

* New translations internationalization.json (Danish)

* New translations config-changer.json (Danish)

* New translations page-appearance.json (Danish)

* New translations weather.json (Danish)

* New translations add-service-app-shelf.json (Danish)

* New translations torrents-status.json (Danish)

* New translations search.json (Danish)

* New translations ping.json (Danish)

* New translations overseerr.json (Danish)

* New translations docker.json (Danish)

* New translations dlspeed.json (Danish)

* New translations dashdot.json (Danish)

* New translations app-shelf-menu.json (Danish)

* New translations login.json (Danish)

* New translations app-shelf.json (Danish)

* New translations app-shelf.json (Russian)

* New translations app-shelf.json (Portuguese, Brazilian)

* New translations app-shelf.json (English)

* New translations app-shelf.json (Chinese Simplified)

* New translations app-shelf.json (Ukrainian)

* New translations app-shelf.json (Swedish)

* New translations app-shelf.json (Slovenian)

* New translations app-shelf.json (Polish)

* New translations app-shelf.json (French)

* New translations app-shelf.json (Dutch)

* New translations app-shelf.json (Korean)

* New translations app-shelf.json (Japanese)

* New translations app-shelf.json (Italian)

* New translations app-shelf.json (German)

* New translations app-shelf.json (Spanish)

* New translations app-shelf.json (LOLCAT)

* New translations docker.json (German)

* New translations app-shelf.json (Danish)

* New translations app-shelf.json (Spanish)

* New translations app-shelf.json (German)

* New translations usenet.json (German)

* New translations docker.json (English)

* New translations config-changer.json (Hebrew)

* New translations app-width.json (Hebrew)

* New translations color-selector.json (Hebrew)

* New translations opacity-selector.json (Hebrew)

* New translations page-appearance.json (Hebrew)

* New translations shade-selector.json (Hebrew)

* New translations color-schema.json (Hebrew)

* New translations internationalization.json (Hebrew)

* New translations weather.json (Hebrew)

* New translations module-enabler.json (Hebrew)

* New translations search-engine.json (Hebrew)

* New translations theme-selector.json (Hebrew)

* New translations widget-positions.json (Hebrew)

* New translations usenet.json (Hebrew)

* New translations login.json (Hebrew)

* New translations common.json (Hebrew)

* New translations torrents-status.json (Hebrew)

* New translations app-shelf.json (Ukrainian)

* New translations common-media-cards.json (Hebrew)

* New translations app-shelf.json (English)

* New translations common.json (Hebrew)

* New translations add-service-app-shelf.json (Hebrew)

* New translations app-shelf-menu.json (Hebrew)

* New translations app-shelf.json (Hebrew)

* New translations calendar.json (Hebrew)

* New translations common.json (Hebrew)

* New translations search.json (Hebrew)

* New translations dashdot.json (Hebrew)

* New translations date.json (Hebrew)

* New translations dlspeed.json (Hebrew)

* New translations docker.json (Hebrew)

* New translations overseerr.json (Hebrew)

* New translations ping.json (Hebrew)

* New translations app-shelf.json (Swedish)

* New translations docker.json (Hebrew)

* New translations overseerr.json (Hebrew)

* New translations ping.json (Hebrew)

* New translations search.json (Hebrew)

* New translations torrents-status.json (Hebrew)

* New translations weather.json (Hebrew)

* New translations usenet.json (Hebrew)

* New translations weather.json (Hebrew)

* New translations common.json (Hebrew)

* New translations weather.json (Hebrew)

* New translations common.json (Hebrew)

* New translations app-width.json (Hebrew)

* New translations color-selector.json (Hebrew)

* New translations opacity-selector.json (Hebrew)

* New translations page-appearance.json (Hebrew)

* New translations shade-selector.json (Hebrew)

* New translations color-schema.json (Hebrew)

* New translations config-changer.json (Hebrew)

* New translations internationalization.json (Hebrew)

* New translations module-enabler.json (Hebrew)

* New translations search-engine.json (Hebrew)

* New translations theme-selector.json (Hebrew)

* New translations widget-positions.json (Hebrew)

* New translations docker.json (Slovenian)

* New translations app-shelf.json (Slovenian)

* New translations login.json (Danish)

* New translations common.json (Danish)

* New translations common.json (Polish)

* New translations dashdot.json (Polish)

* New translations dlspeed.json (Polish)

* New translations torrents-status.json (Polish)

* New translations usenet.json (Polish)

* New translations page-appearance.json (Spanish)

* New translations docker.json (Polish)

* New translations app-shelf.json (Polish)

* New translations calendar.json (Spanish)

* New translations dashdot.json (Spanish)

* New translations login.json (Polish)

* New translations weather.json (Spanish)

* New translations dlspeed.json (Hebrew)
2022-10-21 15:20:00 +09:00
Manuel Ruwe
e11da0997d 🔖 Bump version to 0.10.3 2022-10-20 21:58:24 +02:00
Manuel Ruwe
9aaf5e0dc0 💄 apple standalone page improvements 2022-10-16 14:43:34 +02:00
Manuel Ruwe
f951bcd750 🐛 wrong absolute position of torrent options menu 2022-10-16 12:31:42 +02:00
Thomas Camlong
096dd4c156 Merge pull request #468 from ajnart/407-fix-typo-stoped-stoping-instead-of-stopped-stopping
407 fix typo stoped stoping instead of stopped stopping
2022-10-11 11:12:04 +09:00
Thomas Camlong
56a277e47e 🌐 Add proper translation for container actions 2022-10-11 11:11:21 +09:00
Manuel
e93343b06b 🚀 v0.10.2: Bugfixes for Dash. and services with API keys 2022-10-11 10:48:19 +09:00
Thomas Camlong
af9c39ea1a Merge branch 'master' into dev 2022-10-11 10:47:15 +09:00
Thomas Camlong
52dce6ae18 🔨Remove the requirements for qbittorrent logins 2022-10-11 10:29:43 +09:00
Thomas Camlong
ba7786d337 🌎 New Crowdin updates 2022-10-10 22:18:12 +02:00
Manuel Ruwe
e23a6bfc3b 🔖 Bumb version to v0.10.2 2022-10-10 19:12:13 +02:00
Norman
62b789321d 🩹 Fix *seerr API key link (#446)
Author:    NormanJS <NormanJS>
2022-09-22 21:14:52 +02:00
Raphaël Catarino
2ee2c70e9e 🐛 do not translate params for dashdot
* fix for #444

* Revert "fix for #444"

This reverts commit 3927198617.

* use id instead of name for param
2022-09-19 21:13:39 +02:00
Manuel
f9d0cd5aff 🚀 v0.10.1 : Bugfixes and performance improvements
v0.10.1
2022-09-16 12:52:16 +02:00
Thomas "ajnart" Camlong
be233c24b2 Fix chinese translation 2022-09-16 09:36:13 +09:00
Thomas "ajnart" Camlong
3a77a0480b 🔖 Bumb version to v0.10.1 2022-09-16 09:31:42 +09:00
Thomas Camlong
f8b95f6e01 New Crowdin updates (#437)
* New translations app-shelf.json (Italian)

* New translations add-service-app-shelf.json (Spanish)

* New translations calendar.json (Spanish)

* New translations calendar.json (Italian)

* New translations app-shelf-menu.json (Chinese Simplified)

* New translations add-service-app-shelf.json (Chinese Simplified)

* New translations add-service-app-shelf.json (Swedish)

* New translations add-service-app-shelf.json (Italian)

* New translations app-shelf-menu.json (Italian)

* New translations common-media-cards.json (Italian)

* New translations common-media-cards.json (Chinese Simplified)

* New translations calendar.json (Chinese Simplified)

* New translations dlspeed.json (Spanish)

* New translations dlspeed.json (Italian)

* New translations docker.json (Spanish)

* New translations docker.json (Italian)

* New translations docker.json (Swedish)

* New translations docker.json (Chinese Simplified)

* New translations dashdot.json (Spanish)

* New translations dashdot.json (Italian)

* New translations dashdot.json (Chinese Simplified)

* New translations torrents-status.json (Spanish)

* New translations torrents-status.json (Italian)

* New translations weather.json (Italian)

* New translations weather.json (Swedish)

* New translations overseerr.json (Spanish)

* New translations overseerr.json (Italian)

* New translations overseerr.json (Chinese Simplified)

* New translations page-appearance.json (Swedish)

* New translations shade-selector.json (German)

* New translations shade-selector.json (Italian)

* New translations shade-selector.json (Swedish)

* New translations opacity-selector.json (Swedish)

* New translations app-width.json (Swedish)

* New translations color-selector.json (Swedish)

* New translations search-engine.json (Italian)

* New translations color-schema.json (Swedish)

* New translations config-changer.json (Spanish)

* New translations config-changer.json (Italian)

* New translations config-changer.json (Swedish)

* New translations add-service-app-shelf.json (Slovenian)

* New translations app-shelf.json (Polish)

* New translations add-service-app-shelf.json (Polish)

* New translations common.json (Swedish)

* New translations common.json (Italian)

* New translations common.json (Chinese Simplified)

* New translations common.json (Swedish)

* New translations common.json (Spanish)

* New translations add-service-app-shelf.json (Portuguese, Brazilian)

* New translations page-appearance.json (Slovenian)

* New translations config-changer.json (Polish)

* New translations module-enabler.json (Polish)

* New translations opacity-selector.json (Polish)

* New translations search-engine.json (Polish)

* New translations common.json (Polish)

* New translations dashdot.json (Polish)

* New translations dashdot.json (Slovenian)

* New translations dlspeed.json (Polish)

* New translations docker.json (Polish)

* New translations docker.json (Slovenian)

* New translations overseerr.json (Polish)

* New translations ping.json (Polish)

* New translations search.json (Polish)

* New translations search.json (Slovenian)

* New translations torrents-status.json (Polish)

* New translations weather.json (Polish)

* New translations app-width.json (Polish)

* New translations common.json (Slovenian)

* New translations common.json (Portuguese, Brazilian)

* New translations calendar.json (Ukrainian)

* New translations dashdot.json (Ukrainian)

* New translations overseerr.json (Ukrainian)

* New translations torrents-status.json (Portuguese, Brazilian)

* New translations dlspeed.json (Portuguese, Brazilian)

* New translations docker.json (Portuguese, Brazilian)

* New translations overseerr.json (Portuguese, Brazilian)

* New translations ping.json (Portuguese, Brazilian)

* New translations search.json (Portuguese, Brazilian)

* New translations weather.json (Portuguese, Brazilian)

* New translations common.json (Portuguese, Brazilian)

* New translations app-width.json (Portuguese, Brazilian)

* New translations color-selector.json (Portuguese, Brazilian)

* New translations opacity-selector.json (Portuguese, Brazilian)

* New translations page-appearance.json (Portuguese, Brazilian)

* New translations shade-selector.json (Portuguese, Brazilian)

* New translations color-schema.json (Portuguese, Brazilian)

* New translations config-changer.json (Portuguese, Brazilian)

* New translations add-service-app-shelf.json (Korean)

* New translations app-shelf-menu.json (Korean)

* New translations app-shelf.json (Korean)

* New translations calendar.json (Korean)

* New translations add-service-app-shelf.json (LOLCAT)

* New translations config-changer.json (Ukrainian)

* New translations config-changer.json (Korean)

* New translations internationalization.json (Korean)

* New translations module-enabler.json (Korean)

* New translations search-engine.json (Korean)

* New translations theme-selector.json (Korean)

* New translations widget-positions.json (Korean)

* New translations shade-selector.json (Korean)

* New translations docker.json (LOLCAT)

* New translations color-schema.json (Korean)

* New translations opacity-selector.json (Korean)

* New translations page-appearance.json (Korean)

* New translations dlspeed.json (Korean)

* New translations search-engine.json (Ukrainian)

* New translations common-media-cards.json (Korean)

* New translations common.json (Korean)

* New translations dashdot.json (Korean)

* New translations date.json (Korean)

* New translations docker.json (Korean)

* New translations overseerr.json (Korean)

* New translations ping.json (Korean)

* New translations search.json (Korean)

* New translations torrents-status.json (Korean)

* New translations weather.json (Korean)

* New translations common.json (Korean)

* New translations app-width.json (Korean)

* New translations color-selector.json (Korean)

* New translations common.json (LOLCAT)

* New translations common.json (Korean)

* New translations usenet.json (LOLCAT)

* New translations usenet.json (Swedish)

* New translations usenet.json (Portuguese, Brazilian)

* New translations login.json (French)

* New translations usenet.json (Dutch)

* New translations login.json (Spanish)

* New translations login.json (German)

* New translations login.json (Italian)

* New translations login.json (Japanese)

* New translations login.json (Korean)

* New translations login.json (Dutch)

* New translations login.json (Polish)

* New translations usenet.json (Polish)

* New translations usenet.json (Slovenian)

* New translations usenet.json (Korean)

* New translations usenet.json (Spanish)

* New translations usenet.json (Italian)

* New translations login.json (Russian)

* New translations login.json (Slovenian)

* New translations login.json (Swedish)

* New translations login.json (Ukrainian)

* New translations login.json (Chinese Simplified)

* New translations login.json (Portuguese, Brazilian)

* New translations login.json (LOLCAT)
2022-09-16 09:27:36 +09:00
Thomas Camlong
9e2857851d Merge pull request #429 from ajnart/fix-calendar-and-aside-ui-issues
🐛 fix calendar and aside UI issues
2022-09-16 09:21:30 +09:00
Thomas Camlong
54062b484f Merge pull request #436 from ajnart/fix-slug-and-login-page-translations
🌐 fix slug and login page translations
2022-09-16 09:18:24 +09:00
Raphaël Catarino
f7c976e6e7 🐛 dashdot params on api call
🐛 dashdot params on api call
2022-09-16 09:15:06 +09:00
Thomas "ajnart" Camlong
646bcf0a28 Merge branch 'master' into dev 2022-09-16 09:09:35 +09:00
Manuel
7fc42a7579 🌐 fix slug and login page translations 2022-09-14 21:58:19 +02:00
Charles Malouin
c64b436234 ✏️ fix typo in README.md 2022-09-14 18:15:09 +02:00
Manuel
cee15effa6 🐛 fix calendar and aside ui issues 2022-09-13 21:15:24 +02:00
Raphaël Catarino
eaef58751d 🐛 dashdot params on api call
🐛 dashdot params on api call
2022-09-12 17:46:46 +02:00
Manuel
0dbf0a9de7 Merge pull request #420 from manuel-rw/fix-dashdot-layout-bugs
🐛 fix dash. layout bugs & compact mode
2022-09-11 20:35:30 +00:00
Manuel
25d66895be Merge pull request #421 from manuel-rw/add-appe-touch-and-startup-icon
 add apple touch and startup headers
2022-09-11 20:14:17 +00:00
Manuel
953c13505b add apple touch and startup headers 2022-09-11 22:09:58 +02:00
Thomas Camlong
5d8e305461 Merge pull request #423 from manuel-rw/adjust-readme-for-docs-update
📝 adjust links for documentation update
2022-09-12 01:01:12 +09:00
Manuel
e7870ab36f 📝 adjust links for documentation update 2022-09-10 10:10:20 +02:00
Manuel
6ab15763ff 🐛 fix dash. layout bugs & compact mode 2022-09-09 21:09:47 +02:00
Thomas Camlong
3111fd0f54 🚀 v0.10.0 2022-09-04 10:36:37 +02:00
Thomas Camlong
bcdbb0dd37 🌎 New Crowdin updates (#400)
* New translations usenet.json (English)

* New translations add-service-app-shelf.json (French)

* New translations add-service-app-shelf.json (Spanish)

* New translations add-service-app-shelf.json (German)

* New translations add-service-app-shelf.json (Italian)

* New translations add-service-app-shelf.json (Japanese)

* New translations add-service-app-shelf.json (Dutch)

* New translations add-service-app-shelf.json (Russian)

* New translations add-service-app-shelf.json (Swedish)

* New translations add-service-app-shelf.json (Chinese Simplified)

* New translations add-service-app-shelf.json (English)

* New translations add-service-app-shelf.json (Polish)

* New translations add-service-app-shelf.json (Slovenian)

* New translations add-service-app-shelf.json (Portuguese, Brazilian)

* New translations add-service-app-shelf.json (Ukrainian)

* New translations add-service-app-shelf.json (Korean)

* New translations add-service-app-shelf.json (LOLCAT)

* New translations dlspeed.json (Swedish)

* New translations dlspeed.json (French)

* New translations dlspeed.json (Spanish)

* New translations dlspeed.json (German)

* New translations dlspeed.json (Italian)

* New translations dlspeed.json (Japanese)

* New translations dlspeed.json (Dutch)

* New translations dlspeed.json (Russian)

* New translations dlspeed.json (Chinese Simplified)

* New translations dlspeed.json (English)

* New translations dashdot.json (German)

* New translations dashdot.json (French)

* New translations dashdot.json (Spanish)

* New translations dashdot.json (Italian)

* New translations dashdot.json (Japanese)

* New translations dashdot.json (Dutch)

* New translations dashdot.json (Russian)

* New translations dashdot.json (Swedish)

* New translations dashdot.json (Chinese Simplified)

* New translations dashdot.json (English)

* New translations dashdot.json (Polish)

* New translations dlspeed.json (Slovenian)

* New translations dlspeed.json (Polish)

* New translations dashdot.json (Slovenian)

* New translations dashdot.json (Ukrainian)

* New translations dlspeed.json (Ukrainian)

* New translations dashdot.json (Portuguese, Brazilian)

* New translations dlspeed.json (Portuguese, Brazilian)

* New translations dlspeed.json (Korean)

* New translations dashdot.json (LOLCAT)

* New translations dashdot.json (Korean)

* New translations dlspeed.json (LOLCAT)

* New translations add-service-app-shelf.json (Ukrainian)

* New translations usenet.json (Ukrainian)

* New translations usenet.json (Polish)

* New translations usenet.json (Polish)

* New translations common.json (Ukrainian)

* New translations docker.json (Ukrainian)

* New translations add-service-app-shelf.json (French)

* New translations add-service-app-shelf.json (German)

* New translations add-service-app-shelf.json (Italian)

* New translations add-service-app-shelf.json (Japanese)

* New translations add-service-app-shelf.json (English)

* New translations add-service-app-shelf.json (Chinese Simplified)

* New translations add-service-app-shelf.json (Dutch)

* New translations docker.json (Italian)

* New translations docker.json (French)

* New translations docker.json (German)

* New translations docker.json (Japanese)

* New translations dashdot.json (German)

* New translations docker.json (Dutch)

* New translations docker.json (Chinese Simplified)

* New translations docker.json (English)

* New translations search.json (German)

* New translations page-appearance.json (German)

* New translations common.json (French)

* New translations common.json (Italian)

* New translations common.json (Japanese)

* New translations common.json (German)

* New translations common.json (Dutch)

* New translations common.json (Chinese Simplified)

* New translations common.json (English)

* New translations usenet.json (German)

* New translations usenet.json (Italian)

* New translations usenet.json (French)

* New translations usenet.json (English)

* New translations usenet.json (Chinese Simplified)

* New translations usenet.json (Dutch)

* New translations usenet.json (Japanese)
2022-09-04 10:35:59 +02:00
ajnart
19b08b2742 🎨 Improve UI by changing dark mode colors 2022-09-04 09:25:09 +02:00
ajnart
bf1e057cc2 🌐 Fix Internationalization issues 2022-09-03 18:00:56 +02:00
ajnart
a38adbbd14 🐛 Fix category oppacity 2022-09-03 17:54:16 +02:00
ajnart
247e950713 🐛 Fix opacity in Header and AppShelf accordion 2022-09-03 00:40:44 +02:00
ajnart
1dc90e1e03 🌐 Fix localization errors 2022-09-02 23:47:30 +02:00
ajnart
87bf8db241 🐛 Fix bug with Space in add item modal 2022-09-02 23:47:13 +02:00
ajnart
f1adfd201a ✏️ Fix torrent module option name 2022-09-02 23:46:24 +02:00
ajnart
e69d2c8f30 ✏️ Fix dashdot module options names 2022-09-02 23:46:07 +02:00
ajnart
601ca9d894 ✏️ Fix module wrapper translation typo 2022-09-02 23:45:47 +02:00
ajnart
ca530feb7c 🐛 Fix bug with download speed module 2022-09-02 23:45:33 +02:00
ajnart
0e4a25a68f 🔖 Bumb version to v0.10.0 2022-09-02 19:29:05 +02:00
ajnart
6ed8f01e7c 🌐 Add descriptor for Sabnzbd module 2022-09-02 19:27:32 +02:00
ajnart
18f0e128b9 🐛 Fix bug with i18n and login screen 2022-09-02 19:19:33 +02:00
Thomas Camlong
cb42592544 🔀 New Crowdin updates (#396)
* New translations calendar.json (Italian)

* New translations app-shelf.json (Chinese Simplified)

* New translations common-media-cards.json (Chinese Simplified)

* New translations calendar.json (Japanese)

* New translations common-media-cards.json (Japanese)

* New translations common-media-cards.json (Italian)

* New translations calendar.json (Chinese Simplified)

* New translations app-shelf.json (Japanese)

* New translations add-service-app-shelf.json (Italian)

* New translations add-service-app-shelf.json (Japanese)

* New translations add-service-app-shelf.json (Chinese Simplified)

* New translations app-shelf-menu.json (Italian)

* New translations app-shelf-menu.json (Japanese)

* New translations app-shelf-menu.json (Chinese Simplified)

* New translations app-shelf.json (Italian)

* New translations docker.json (Spanish)

* New translations dlspeed.json (Japanese)

* New translations dlspeed.json (Italian)

* New translations docker.json (Italian)

* New translations docker.json (Japanese)

* New translations date.json (Japanese)

* New translations dashdot.json (Italian)

* New translations common.json (Italian)

* New translations common.json (Japanese)

* New translations common.json (Chinese Simplified)

* New translations date.json (Italian)

* New translations dashdot.json (Japanese)

* New translations dlspeed.json (Chinese Simplified)

* New translations dashdot.json (Chinese Simplified)

* New translations date.json (Chinese Simplified)

* New translations docker.json (Chinese Simplified)

* New translations torrents-status.json (Japanese)

* New translations torrents-status.json (Italian)

* New translations weather.json (Italian)

* New translations weather.json (Japanese)

* New translations search.json (Japanese)

* New translations ping.json (Italian)

* New translations overseerr.json (Italian)

* New translations overseerr.json (Japanese)

* New translations search.json (Italian)

* New translations ping.json (Japanese)

* New translations torrents-status.json (Chinese Simplified)

* New translations overseerr.json (Chinese Simplified)

* New translations ping.json (Chinese Simplified)

* New translations search.json (Chinese Simplified)

* New translations weather.json (Chinese Simplified)

* New translations page-appearance.json (Japanese)

* New translations page-appearance.json (Italian)

* New translations shade-selector.json (Italian)

* New translations shade-selector.json (Japanese)

* New translations opacity-selector.json (Japanese)

* New translations color-selector.json (Italian)

* New translations app-width.json (Italian)

* New translations app-width.json (Japanese)

* New translations opacity-selector.json (Italian)

* New translations color-selector.json (Japanese)

* New translations page-appearance.json (Chinese Simplified)

* New translations app-width.json (Chinese Simplified)

* New translations color-selector.json (Chinese Simplified)

* New translations opacity-selector.json (Chinese Simplified)

* New translations shade-selector.json (Chinese Simplified)

* New translations module-enabler.json (Japanese)

* New translations module-enabler.json (Italian)

* New translations search-engine.json (Italian)

* New translations search-engine.json (Japanese)

* New translations internationalization.json (Japanese)

* New translations config-changer.json (Italian)

* New translations color-schema.json (Italian)

* New translations color-schema.json (Japanese)

* New translations internationalization.json (Italian)

* New translations config-changer.json (Japanese)

* New translations module-enabler.json (Chinese Simplified)

* New translations color-schema.json (Chinese Simplified)

* New translations config-changer.json (Chinese Simplified)

* New translations internationalization.json (Chinese Simplified)

* New translations search-engine.json (Chinese Simplified)

* New translations common.json (Spanish)

* New translations common.json (Italian)

* New translations common.json (Japanese)

* New translations common.json (Chinese Simplified)

* New translations add-service-app-shelf.json (Polish)

* New translations common.json (Japanese)

* New translations theme-selector.json (Italian)

* New translations theme-selector.json (Japanese)

* New translations widget-positions.json (Italian)

* New translations widget-positions.json (Japanese)

* New translations common.json (Italian)

* New translations theme-selector.json (Chinese Simplified)

* New translations widget-positions.json (Chinese Simplified)

* New translations common.json (Chinese Simplified)

* New translations config-changer.json (Polish)

* New translations common.json (Polish)

* New translations docker.json (Polish)

* New translations overseerr.json (Polish)

* New translations weather.json (Polish)

* New translations common.json (Portuguese, Brazilian)

* New translations usenet.json (Spanish)

* New translations usenet.json (Japanese)

* New translations usenet.json (Italian)

* New translations usenet.json (Chinese Simplified)
2022-09-02 19:03:46 +02:00
Thomas Camlong
008d811d21 🔀 New Crowdin updates (#395)
* New translations add-service-app-shelf.json (German)

* New translations add-service-app-shelf.json (Italian)

* New translations add-service-app-shelf.json (Japanese)

* New translations add-service-app-shelf.json (Dutch)

* New translations add-service-app-shelf.json (Russian)

* New translations add-service-app-shelf.json (Swedish)

* New translations add-service-app-shelf.json (Chinese Simplified)

* New translations app-shelf-menu.json (Spanish)

* New translations app-shelf-menu.json (Swedish)

* New translations dlspeed.json (Swedish)

* New translations dlspeed.json (Spanish)

* New translations docker.json (French)

* New translations docker.json (Spanish)

* New translations docker.json (German)

* New translations docker.json (Italian)

* New translations docker.json (Japanese)

* New translations docker.json (Dutch)

* New translations docker.json (Russian)

* New translations docker.json (Swedish)

* New translations docker.json (Chinese Simplified)

* New translations date.json (Swedish)

* New translations dashdot.json (German)

* New translations common.json (Swedish)

* New translations dashdot.json (French)

* New translations dashdot.json (Spanish)

* New translations dashdot.json (Dutch)

* New translations dashdot.json (Swedish)

* New translations date.json (Spanish)

* New translations docker.json (English)

* New translations torrents-status.json (Swedish)

* New translations torrents-status.json (Spanish)

* New translations torrents-status.json (German)

* New translations search.json (Russian)

* New translations weather.json (French)

* New translations weather.json (Spanish)

* New translations weather.json (Swedish)

* New translations search.json (Swedish)

* New translations search.json (Dutch)

* New translations overseerr.json (Spanish)

* New translations ping.json (German)

* New translations overseerr.json (German)

* New translations overseerr.json (Swedish)

* New translations ping.json (Spanish)

* New translations ping.json (Swedish)

* New translations search.json (French)

* New translations search.json (Spanish)

* New translations search.json (German)

* New translations page-appearance.json (Swedish)

* New translations page-appearance.json (French)

* New translations page-appearance.json (Spanish)

* New translations page-appearance.json (German)

* New translations page-appearance.json (Italian)

* New translations page-appearance.json (Japanese)

* New translations page-appearance.json (Dutch)

* New translations page-appearance.json (Russian)

* New translations page-appearance.json (Chinese Simplified)

* New translations app-width.json (Spanish)

* New translations app-width.json (German)

* New translations opacity-selector.json (German)

* New translations module-enabler.json (Swedish)

* New translations module-enabler.json (Spanish)

* New translations module-enabler.json (German)

* New translations search-engine.json (Spanish)

* New translations search-engine.json (German)

* New translations search-engine.json (Swedish)

* New translations internationalization.json (Swedish)

* New translations config-changer.json (German)

* New translations config-changer.json (Spanish)

* New translations config-changer.json (Swedish)

* New translations calendar.json (Polish)

* New translations app-shelf-menu.json (Polish)

* New translations add-service-app-shelf.json (Slovenian)

* New translations add-service-app-shelf.json (Polish)

* New translations common.json (Italian)

* New translations common.json (French)

* New translations common.json (Spanish)

* New translations common.json (German)

* New translations common.json (Chinese Simplified)

* New translations common.json (Japanese)

* New translations common.json (Dutch)

* New translations common.json (Russian)

* New translations common.json (Swedish)

* New translations common.json (English)

* New translations common.json (Swedish)

* New translations widget-positions.json (German)

* New translations theme-selector.json (German)

* New translations theme-selector.json (Swedish)

* New translations widget-positions.json (Spanish)

* New translations widget-positions.json (Swedish)

* New translations common.json (French)

* New translations common.json (Spanish)

* New translations common.json (German)

* New translations common.json (Polish)

* New translations ping.json (Polish)

* New translations weather.json (Polish)

* New translations torrents-status.json (Polish)

* New translations search.json (Slovenian)

* New translations search.json (Polish)

* New translations add-service-app-shelf.json (Portuguese, Brazilian)

* New translations docker.json (Slovenian)

* New translations docker.json (Polish)

* New translations dlspeed.json (Polish)

* New translations date.json (Polish)

* New translations dashdot.json (Slovenian)

* New translations dashdot.json (Polish)

* New translations widget-positions.json (Polish)

* New translations search-engine.json (Polish)

* New translations theme-selector.json (Polish)

* New translations common.json (Polish)

* New translations common.json (Polish)

* New translations common.json (Slovenian)

* New translations common.json (Portuguese, Brazilian)

* New translations color-schema.json (Polish)

* New translations config-changer.json (Polish)

* New translations shade-selector.json (Polish)

* New translations page-appearance.json (Slovenian)

* New translations page-appearance.json (Polish)

* New translations color-selector.json (Polish)

* New translations app-shelf-menu.json (Portuguese, Brazilian)

* New translations date.json (Ukrainian)

* New translations common.json (Ukrainian)

* New translations common-media-cards.json (Ukrainian)

* New translations calendar.json (Ukrainian)

* New translations app-shelf.json (Ukrainian)

* New translations app-shelf-menu.json (Ukrainian)

* New translations add-service-app-shelf.json (Ukrainian)

* New translations dlspeed.json (Ukrainian)

* New translations docker.json (Ukrainian)

* New translations app-shelf.json (Portuguese, Brazilian)

* New translations overseerr.json (Ukrainian)

* New translations ping.json (Ukrainian)

* New translations search.json (Ukrainian)

* New translations torrents-status.json (Ukrainian)

* New translations weather.json (Ukrainian)

* New translations dashdot.json (Ukrainian)

* New translations overseerr.json (Portuguese, Brazilian)

* New translations date.json (Portuguese, Brazilian)

* New translations calendar.json (Portuguese, Brazilian)

* New translations common-media-cards.json (Portuguese, Brazilian)

* New translations common.json (Portuguese, Brazilian)

* New translations weather.json (Portuguese, Brazilian)

* New translations torrents-status.json (Portuguese, Brazilian)

* New translations search.json (Portuguese, Brazilian)

* New translations ping.json (Portuguese, Brazilian)

* New translations dashdot.json (Portuguese, Brazilian)

* New translations docker.json (Portuguese, Brazilian)

* New translations dlspeed.json (Portuguese, Brazilian)

* New translations opacity-selector.json (Ukrainian)

* New translations app-width.json (Ukrainian)

* New translations shade-selector.json (Ukrainian)

* New translations page-appearance.json (Ukrainian)

* New translations common.json (Ukrainian)

* New translations color-selector.json (Ukrainian)

* New translations theme-selector.json (Portuguese, Brazilian)

* New translations common.json (Ukrainian)

* New translations widget-positions.json (Portuguese, Brazilian)

* New translations search-engine.json (Portuguese, Brazilian)

* New translations module-enabler.json (Portuguese, Brazilian)

* New translations internationalization.json (Portuguese, Brazilian)

* New translations config-changer.json (Portuguese, Brazilian)

* New translations color-schema.json (Portuguese, Brazilian)

* New translations shade-selector.json (Portuguese, Brazilian)

* New translations page-appearance.json (Portuguese, Brazilian)

* New translations opacity-selector.json (Portuguese, Brazilian)

* New translations color-selector.json (Portuguese, Brazilian)

* New translations app-width.json (Portuguese, Brazilian)

* New translations common.json (Portuguese, Brazilian)

* New translations color-schema.json (Ukrainian)

* New translations torrents-status.json (LOLCAT)

* New translations overseerr.json (Korean)

* New translations add-service-app-shelf.json (LOLCAT)

* New translations app-shelf-menu.json (LOLCAT)

* New translations app-shelf.json (LOLCAT)

* New translations calendar.json (LOLCAT)

* New translations common-media-cards.json (LOLCAT)

* New translations common.json (LOLCAT)

* New translations dashdot.json (LOLCAT)

* New translations date.json (LOLCAT)

* New translations weather.json (Korean)

* New translations torrents-status.json (Korean)

* New translations search.json (Korean)

* New translations ping.json (Korean)

* New translations docker.json (Korean)

* New translations dlspeed.json (Korean)

* New translations add-service-app-shelf.json (Korean)

* New translations search.json (LOLCAT)

* New translations ping.json (LOLCAT)

* New translations overseerr.json (LOLCAT)

* New translations docker.json (LOLCAT)

* New translations dlspeed.json (LOLCAT)

* New translations app-shelf-menu.json (Korean)

* New translations app-shelf.json (Korean)

* New translations calendar.json (Korean)

* New translations common-media-cards.json (Korean)

* New translations common.json (Korean)

* New translations dashdot.json (Korean)

* New translations date.json (Korean)

* New translations theme-selector.json (Korean)

* New translations common.json (LOLCAT)

* New translations widget-positions.json (Korean)

* New translations config-changer.json (Ukrainian)

* New translations search-engine.json (Korean)

* New translations app-width.json (Korean)

* New translations module-enabler.json (Ukrainian)

* New translations search-engine.json (Ukrainian)

* New translations theme-selector.json (Ukrainian)

* New translations widget-positions.json (Ukrainian)

* New translations common.json (Korean)

* New translations common.json (Korean)

* New translations color-selector.json (Korean)

* New translations module-enabler.json (Korean)

* New translations internationalization.json (Ukrainian)

* New translations page-appearance.json (Korean)

* New translations shade-selector.json (Korean)

* New translations color-schema.json (Korean)

* New translations config-changer.json (Korean)

* New translations internationalization.json (Korean)

* New translations opacity-selector.json (Korean)

* New translations usenet.json (French)

* New translations weather.json (LOLCAT)

* New translations usenet.json (German)

* New translations usenet.json (Portuguese, Brazilian)

* New translations usenet.json (English)

* New translations usenet.json (Chinese Simplified)

* New translations usenet.json (Ukrainian)

* New translations usenet.json (Swedish)

* New translations usenet.json (Slovenian)

* New translations usenet.json (Russian)

* New translations usenet.json (Polish)

* New translations usenet.json (Dutch)

* New translations usenet.json (Korean)

* New translations usenet.json (Japanese)

* New translations usenet.json (Italian)

* New translations usenet.json (Spanish)

* New translations common.json (LOLCAT)

* New translations widget-positions.json (LOLCAT)

* New translations theme-selector.json (LOLCAT)

* New translations search-engine.json (LOLCAT)

* New translations module-enabler.json (LOLCAT)

* New translations internationalization.json (LOLCAT)

* New translations config-changer.json (LOLCAT)

* New translations color-schema.json (LOLCAT)

* New translations shade-selector.json (LOLCAT)

* New translations page-appearance.json (LOLCAT)

* New translations opacity-selector.json (LOLCAT)

* New translations color-selector.json (LOLCAT)

* New translations app-width.json (LOLCAT)

* New translations usenet.json (LOLCAT)

* New translations dashdot.json (French)

* New translations common.json (Portuguese, Brazilian)
2022-09-02 16:17:29 +02:00
ajnart
8066d3a704 🌐 Add other locales to i18n 2022-09-02 16:17:04 +02:00
ajnart
3cac4f7361 🐛 Fix compilation issues 2022-09-02 15:22:10 +02:00
Thomas Camlong
91ed7a24ca 🔀 Merge pull request #374 from Skeeww/ui/docker
💄Improve Docker module UI
2022-09-02 13:03:03 +02:00
Thomas Camlong
713dec2969 Merge branch 'dev' into ui/docker 2022-09-02 13:02:50 +02:00
ajnart
c08512d464 💄 Change UI for docker module 2022-09-02 13:01:56 +02:00
ajnart
8c6e84d7a9 🐛 Bugfix with advanced options to add service 2022-09-02 12:42:37 +02:00
Thomas Camlong
17364f46cd 🔀 Merge pull request #373 from JannesV/feature/usenet
Feature/usenet
2022-09-02 11:19:51 +02:00
Jannes Vandepitte
91a8510859 Cleanup 2022-09-01 11:01:47 +02:00
Jannes Vandepitte
3d98b38955 Fix lint 2022-09-01 10:36:46 +02:00
Jannes Vandepitte
d5d8f45ece Fix resume 2022-08-31 19:16:16 +02:00
Jannes Vandepitte
5dfc1e6f4c Fix linebreak and url 2022-08-31 19:13:34 +02:00
Jannes Vandepitte
4b2cd519f7 Quick FIX 2022-08-31 18:00:10 +02:00
Thomas Camlong
b4772bfc0c 📝 Update README to add translation status 2022-08-31 16:00:59 +02:00
Thomas Camlong
a2a5c6b61d 🔀 Merge pull request #364 from wieli99/master
 Add option for custom CSS to Customization Settings
2022-08-31 15:56:07 +02:00
Thomas Camlong
3bd054482e 🔀 Merge pull request #390 from ishults/patch-1
#381 - Add "405 - Method Not Allowed" for statuses
2022-08-31 15:54:15 +02:00
ajnart
4bdfcce060 ✏️ Fix locales, button order and add reload state 2022-08-31 15:52:16 +02:00
Florian Fritz
4db35406a0 🚸 Add German & English translations for custom CSS field
(cherry picked from commit 20e1cc3a1bae59ee401539e9de07f500a37fc7b4)
2022-08-31 12:34:02 +02:00
Florian Fritz
87016eb51f 🐛 Fix not setting the saved value of the custom CSS
(cherry picked from commit 0c62be8fedfd2b8015d0d1bb5b9acc5dd1ba22ac)
2022-08-31 12:33:53 +02:00
Florian Fritz
9af2f20bfa Add option for custom CSS to Customization Settings 2022-08-31 12:33:47 +02:00
I Shults
829a7cfea0 #381 - Add "405 - Method Not Allowed" for statuses 2022-08-30 13:04:04 -05:00
Thomas Camlong
a2556de7d0 Merge pull request #387 from fabricionaweb/patch-1
Fix integrations url on README
2022-08-30 17:02:27 +02:00
Thomas Camlong
7871ea634f Merge pull request #376 from Bonfire/Optional-Pinging
 Optional pinging
2022-08-30 17:02:12 +02:00
Bon
fc9d9555ff Merge branch 'dev' into Optional-Pinging 2022-08-30 09:51:53 -04:00
Bjorn Lammers
a2be733932 🚛 Move WalkxHub > WalkxCode 2022-08-30 12:50:44 +02:00
Bjorn Lammers
f8d850b3be 🚛 Move WalkxHub > WalkxCode 2022-08-30 12:50:44 +02:00
Thomas Camlong
022656ae45 🌐 add crowdin translations 2022-08-30 12:50:32 +02:00
Manuel
c9b33f3e48 🌐 add crowdin translations 2022-08-30 12:49:55 +02:00
Fabricio Augusto
3747e482ed Fix integrations url 2022-08-29 15:47:14 +01:00
Bon
47e16042b2 Merge branch 'dev' into Optional-Pinging 2022-08-28 10:59:43 -04:00
Manuel
e771e31873 🐛 fix language switch and add search 2022-08-28 16:28:26 +02:00
Thomas Camlong
96d76cfd14 Update next-i18next.config.js 2022-08-27 19:26:48 +02:00
Thomas Camlong
5d3141ce1c Merge pull request #379 from ajnart/revert-371-i10n_dev
Revert "New Crowdin updates"
2022-08-27 19:25:28 +02:00
Thomas Camlong
c33c1da407 Revert "New Crowdin updates" 2022-08-27 19:24:47 +02:00
Bonfire
beae00a170 add ping service toggle 2022-08-26 19:52:20 -04:00
Bonfire
720ae86504 🌐 Fix Advanced Options title 2022-08-26 19:31:09 -04:00
Noan
313367a8b8 🔀 merged branch dev 2022-08-27 01:16:18 +02:00
Noan
013cf45d3d 💄 improve docker module ui 2022-08-27 00:46:36 +02:00
Jannes Vandepitte
12e7eb6357 Address PR comments 2022-08-26 21:38:28 +02:00
Jannes Vandepitte
4db9dba2f4 lint 2022-08-26 16:47:26 +02:00
Jannes Vandepitte
281f7bacb0 Fix minor issues 2022-08-26 16:43:46 +02:00
Jannes Vandepitte
bf93fc87ee revert default.json 2022-08-26 16:13:54 +02:00
Jannes Vandepitte
fb723f6ad6 implement queue info and pause/resume 2022-08-26 16:12:40 +02:00
Jannes Vandepitte
8aacfc8dd9 Cleanup bad merge 2022-08-26 11:33:55 +02:00
Jannes Vandepitte
61672fd7f2 revert changes 2022-08-26 11:29:41 +02:00
Jannes Vandepitte
bea07ebe29 Error handling 2022-08-26 11:10:40 +02:00
Jannes Vandepitte
d9d3d3de45 History done 2022-08-26 10:46:34 +02:00
Jannes Vandepitte
c44a01fbc3 More cleanup and history added 2022-08-25 21:07:41 +02:00
Jannes Vandepitte
4afa09fd7a Cleanup 2022-08-25 18:47:06 +02:00
Jannes Vandepitte
f0976081f3 Initial setup of Sabnzbd integration 2022-08-25 18:10:23 +02:00
Thomas Camlong
9342961683 🔀 Merge pull request #363 from Skeeww/dev
♻️ Change Docker instance to singleton
2022-08-25 16:56:27 +02:00
Thomas Camlong
f3217d5bb6 🔀 Merge pull request #371 from ajnart/i10n_dev
🌐 New Crowdin updates ↗️
2022-08-25 13:22:14 +02:00
Thomas Camlong
e3778482da New translations widget-positions.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
a572f88dd7 New translations theme-selector.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
2cf662a304 New translations internationalization.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
bfb8b32bc9 New translations color-schema.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
0d952e450e New translations config-changer.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
8ccf40c453 New translations search-engine.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
e4d29a626d New translations module-enabler.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
fb0a215548 New translations opacity-selector.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
02220b8d5e New translations app-width.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
8de377e032 New translations color-selector.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
953ea93189 New translations shade-selector.json (German) 2022-08-25 13:18:03 +02:00
Thomas Camlong
bf0f22667a New translations page-appearance.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
461b4decae New translations search.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
78bad70bcb New translations overseerr.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
371dc2f038 New translations ping.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
8124276fdb New translations weather.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
11c30f83c4 New translations torrents-status.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
029901e0b6 New translations dashdot.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
3fb1e99563 New translations docker.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
a19741998f New translations app-shelf.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
fba8b2a9f6 New translations add-service-app-shelf.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
7cfe7e0dd5 New translations app-shelf-menu.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
4e640b7c08 New translations common-media-cards.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
17aaa2a324 New translations calendar.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
1b608af991 New translations widget-positions.json (Chinese Simplified) 2022-08-25 13:18:02 +02:00
Thomas Camlong
daab7e9968 New translations widget-positions.json (Swedish) 2022-08-25 13:18:02 +02:00
Thomas Camlong
756a1e9862 New translations widget-positions.json (Russian) 2022-08-25 13:18:02 +02:00
Thomas Camlong
e2d0e15b8a New translations widget-positions.json (Dutch) 2022-08-25 13:18:02 +02:00
Thomas Camlong
aa6cdccf7a New translations widget-positions.json (Japanese) 2022-08-25 13:18:02 +02:00
Thomas Camlong
b0c3f7e6a4 New translations widget-positions.json (Italian) 2022-08-25 13:18:02 +02:00
Thomas Camlong
e88c27ed1e New translations widget-positions.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
41e5505ddd New translations widget-positions.json (Spanish) 2022-08-25 13:18:02 +02:00
Thomas Camlong
957b8621da New translations widget-positions.json (French) 2022-08-25 13:18:02 +02:00
Thomas Camlong
39e0f341d1 New translations theme-selector.json (Chinese Simplified) 2022-08-25 13:18:02 +02:00
Thomas Camlong
72f56dec6f New translations theme-selector.json (Swedish) 2022-08-25 13:18:02 +02:00
Thomas Camlong
9358879e61 New translations theme-selector.json (Russian) 2022-08-25 13:18:02 +02:00
Thomas Camlong
e91986e80f New translations theme-selector.json (Dutch) 2022-08-25 13:18:02 +02:00
Thomas Camlong
1ae779a4ca New translations theme-selector.json (Japanese) 2022-08-25 13:18:02 +02:00
Thomas Camlong
253c3347f0 New translations theme-selector.json (Italian) 2022-08-25 13:18:02 +02:00
Thomas Camlong
67b6985016 New translations theme-selector.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
2dbc8c0afb New translations theme-selector.json (Spanish) 2022-08-25 13:18:02 +02:00
Thomas Camlong
077ff7b215 New translations common.json (French) 2022-08-25 13:18:02 +02:00
Thomas Camlong
c5aeaf8c4e New translations common.json (German) 2022-08-25 13:18:02 +02:00
Thomas Camlong
4499d19c7d New translations common.json (Spanish) 2022-08-25 13:18:02 +02:00
Thomas Camlong
fe7d2f1252 New translations common.json (Chinese Simplified) 2022-08-25 13:18:02 +02:00
Thomas Camlong
3ee11b3889 New translations common.json (Swedish) 2022-08-25 13:18:01 +02:00
Thomas Camlong
882f96c9cd New translations common.json (Russian) 2022-08-25 13:18:01 +02:00
Thomas Camlong
0acea5b6d3 New translations common.json (Dutch) 2022-08-25 13:18:01 +02:00
Thomas Camlong
c62fb1104f New translations common.json (Japanese) 2022-08-25 13:18:01 +02:00
Thomas Camlong
92860f17d5 New translations common.json (Italian) 2022-08-25 13:18:01 +02:00
Thomas Camlong
2fecb90306 New translations theme-selector.json (French) 2022-08-25 13:18:01 +02:00
Thomas Camlong
69b695c2b9 New translations search-engine.json (English) 2022-08-25 13:18:01 +02:00
Thomas Camlong
e9b52e5993 New translations internationalization.json (Italian) 2022-08-25 13:18:01 +02:00
Thomas Camlong
38f5fcc880 New translations internationalization.json (German) 2022-08-25 13:18:01 +02:00
Thomas Camlong
ce8351a0a4 New translations internationalization.json (Spanish) 2022-08-25 13:18:01 +02:00
Thomas Camlong
7ea409643e New translations internationalization.json (French) 2022-08-25 13:18:01 +02:00
Thomas Camlong
c9ba95498f New translations config-changer.json (Chinese Simplified) 2022-08-25 13:18:01 +02:00
Thomas Camlong
878050b81f New translations config-changer.json (Swedish) 2022-08-25 13:18:01 +02:00
Thomas Camlong
ec9c57db02 New translations config-changer.json (Russian) 2022-08-25 13:18:01 +02:00
Thomas Camlong
21fa7d2dfd New translations config-changer.json (Dutch) 2022-08-25 13:18:01 +02:00
Thomas Camlong
5507c05396 New translations config-changer.json (Japanese) 2022-08-25 13:18:01 +02:00
Thomas Camlong
5bbd750d05 New translations internationalization.json (Japanese) 2022-08-25 13:18:01 +02:00
Thomas Camlong
e974c9e90e New translations config-changer.json (Italian) 2022-08-25 13:18:01 +02:00
Thomas Camlong
510855f3fd New translations config-changer.json (Spanish) 2022-08-25 13:18:01 +02:00
Thomas Camlong
cb2b176afa New translations config-changer.json (French) 2022-08-25 13:18:01 +02:00
Thomas Camlong
305bd93624 New translations color-schema.json (Chinese Simplified) 2022-08-25 13:18:01 +02:00
Thomas Camlong
47d0fcaade New translations color-schema.json (Swedish) 2022-08-25 13:18:01 +02:00
Thomas Camlong
3f6f40e7a8 New translations color-schema.json (Russian) 2022-08-25 13:18:01 +02:00
Thomas Camlong
2cb09f2a81 New translations color-schema.json (Dutch) 2022-08-25 13:18:01 +02:00
Thomas Camlong
f8e3cff045 New translations color-schema.json (Japanese) 2022-08-25 13:18:01 +02:00
Thomas Camlong
2d5e53f37b New translations color-schema.json (Italian) 2022-08-25 13:18:01 +02:00
Thomas Camlong
22a712f8df New translations color-schema.json (German) 2022-08-25 13:18:01 +02:00
Thomas Camlong
c1530e9486 New translations config-changer.json (German) 2022-08-25 13:18:01 +02:00
Thomas Camlong
45c7d35919 New translations color-schema.json (Spanish) 2022-08-25 13:18:01 +02:00
Thomas Camlong
e6e494584d New translations internationalization.json (Dutch) 2022-08-25 13:18:01 +02:00
Thomas Camlong
8ae983c7c3 New translations internationalization.json (Swedish) 2022-08-25 13:18:01 +02:00
Thomas Camlong
fbf235ea55 New translations search-engine.json (Chinese Simplified) 2022-08-25 13:18:01 +02:00
Thomas Camlong
1192d94713 New translations search-engine.json (Swedish) 2022-08-25 13:18:01 +02:00
Thomas Camlong
8fa2fdecb9 New translations search-engine.json (Russian) 2022-08-25 13:18:01 +02:00
Thomas Camlong
9f22a5dcf0 New translations search-engine.json (Dutch) 2022-08-25 13:18:00 +02:00
Thomas Camlong
56fda6e03d New translations search-engine.json (Japanese) 2022-08-25 13:18:00 +02:00
Thomas Camlong
ec0111bab6 New translations search-engine.json (Italian) 2022-08-25 13:18:00 +02:00
Thomas Camlong
b9d9086721 New translations search-engine.json (German) 2022-08-25 13:18:00 +02:00
Thomas Camlong
9340d4b113 New translations search-engine.json (Spanish) 2022-08-25 13:18:00 +02:00
Thomas Camlong
03b418e40d New translations search-engine.json (French) 2022-08-25 13:18:00 +02:00
Thomas Camlong
06f28d58e5 New translations internationalization.json (Russian) 2022-08-25 13:18:00 +02:00
Thomas Camlong
823c70869e New translations module-enabler.json (Chinese Simplified) 2022-08-25 13:18:00 +02:00
Thomas Camlong
e4039a27fe New translations module-enabler.json (Russian) 2022-08-25 13:18:00 +02:00
Thomas Camlong
1b4c57345c New translations module-enabler.json (Dutch) 2022-08-25 13:18:00 +02:00
Thomas Camlong
eff84132ce New translations module-enabler.json (Japanese) 2022-08-25 13:18:00 +02:00
Thomas Camlong
2fe8bbc17f New translations module-enabler.json (Italian) 2022-08-25 13:18:00 +02:00
Thomas Camlong
c2a77e4677 New translations module-enabler.json (German) 2022-08-25 13:18:00 +02:00
Thomas Camlong
a230ca7ff0 New translations module-enabler.json (Spanish) 2022-08-25 13:18:00 +02:00
Thomas Camlong
86f951f281 New translations module-enabler.json (French) 2022-08-25 13:18:00 +02:00
Thomas Camlong
589624cb69 New translations internationalization.json (Chinese Simplified) 2022-08-25 13:18:00 +02:00
Thomas Camlong
6cabe36ff9 New translations module-enabler.json (Swedish) 2022-08-25 13:18:00 +02:00
Thomas Camlong
cf06e28b03 New translations color-schema.json (French) 2022-08-25 13:18:00 +02:00
Thomas Camlong
a7df58bdc8 New translations opacity-selector.json (Italian) 2022-08-25 13:18:00 +02:00
Thomas Camlong
eb40cd6d4c New translations opacity-selector.json (German) 2022-08-25 13:18:00 +02:00
Thomas Camlong
e5128880ea New translations opacity-selector.json (Spanish) 2022-08-25 13:18:00 +02:00
Thomas Camlong
0025e3c053 New translations opacity-selector.json (French) 2022-08-25 13:18:00 +02:00
Thomas Camlong
462b48d8f0 New translations color-selector.json (Chinese Simplified) 2022-08-25 13:18:00 +02:00
Thomas Camlong
38d563a1c0 New translations color-selector.json (Swedish) 2022-08-25 13:18:00 +02:00
Thomas Camlong
a9f113a073 New translations color-selector.json (Russian) 2022-08-25 13:18:00 +02:00
Thomas Camlong
09f37b3a22 New translations color-selector.json (Dutch) 2022-08-25 13:18:00 +02:00
Thomas Camlong
fc8de47b0e New translations color-selector.json (Japanese) 2022-08-25 13:18:00 +02:00
Thomas Camlong
121f098ae7 New translations opacity-selector.json (Japanese) 2022-08-25 13:18:00 +02:00
Thomas Camlong
a950d5aab6 New translations color-selector.json (Italian) 2022-08-25 13:18:00 +02:00
Thomas Camlong
3a8c307c06 New translations color-selector.json (Spanish) 2022-08-25 13:18:00 +02:00
Thomas Camlong
bc75eaea3b New translations color-selector.json (French) 2022-08-25 13:18:00 +02:00
Thomas Camlong
b8053142ad New translations app-width.json (Chinese Simplified) 2022-08-25 13:18:00 +02:00
Thomas Camlong
138781265e New translations app-width.json (Swedish) 2022-08-25 13:18:00 +02:00
Thomas Camlong
5ed6a47f8f New translations app-width.json (Russian) 2022-08-25 13:18:00 +02:00
Thomas Camlong
71c7697e01 New translations app-width.json (Dutch) 2022-08-25 13:17:59 +02:00
Thomas Camlong
8cbdfcab88 New translations app-width.json (Japanese) 2022-08-25 13:17:59 +02:00
Thomas Camlong
c7132dcfb7 New translations app-width.json (Italian) 2022-08-25 13:17:59 +02:00
Thomas Camlong
9580a2f47e New translations app-width.json (German) 2022-08-25 13:17:59 +02:00
Thomas Camlong
da74accf2d New translations color-selector.json (German) 2022-08-25 13:17:59 +02:00
Thomas Camlong
bb0f196820 New translations app-width.json (Spanish) 2022-08-25 13:17:59 +02:00
Thomas Camlong
c9cf638aae New translations opacity-selector.json (Dutch) 2022-08-25 13:17:59 +02:00
Thomas Camlong
9cfc41d582 New translations opacity-selector.json (Swedish) 2022-08-25 13:17:59 +02:00
Thomas Camlong
9ea1788c21 New translations shade-selector.json (Chinese Simplified) 2022-08-25 13:17:59 +02:00
Thomas Camlong
5db1e10aae New translations shade-selector.json (Swedish) 2022-08-25 13:17:59 +02:00
Thomas Camlong
053ea48513 New translations shade-selector.json (Russian) 2022-08-25 13:17:59 +02:00
Thomas Camlong
0448956d60 New translations shade-selector.json (Dutch) 2022-08-25 13:17:59 +02:00
Thomas Camlong
98d72ea407 New translations shade-selector.json (Japanese) 2022-08-25 13:17:59 +02:00
Thomas Camlong
de0742f3cc New translations shade-selector.json (Italian) 2022-08-25 13:17:59 +02:00
Thomas Camlong
3f421f81ef New translations shade-selector.json (German) 2022-08-25 13:17:59 +02:00
Thomas Camlong
18311db740 New translations shade-selector.json (Spanish) 2022-08-25 13:17:59 +02:00
Thomas Camlong
cb73198f26 New translations shade-selector.json (French) 2022-08-25 13:17:59 +02:00
Thomas Camlong
172b2ff253 New translations opacity-selector.json (Russian) 2022-08-25 13:17:59 +02:00
Thomas Camlong
2e6dc0973c New translations page-appearance.json (Chinese Simplified) 2022-08-25 13:17:59 +02:00
Thomas Camlong
e7e41fe022 New translations page-appearance.json (Russian) 2022-08-25 13:17:59 +02:00
Thomas Camlong
09767de08b New translations page-appearance.json (Dutch) 2022-08-25 13:17:59 +02:00
Thomas Camlong
af97762c29 New translations page-appearance.json (Japanese) 2022-08-25 13:17:59 +02:00
Thomas Camlong
96da3e7866 New translations page-appearance.json (Italian) 2022-08-25 13:17:59 +02:00
Thomas Camlong
30d869a396 New translations page-appearance.json (German) 2022-08-25 13:17:59 +02:00
Thomas Camlong
db2c1fd423 New translations page-appearance.json (Spanish) 2022-08-25 13:17:59 +02:00
Thomas Camlong
1ebbfcfa11 New translations page-appearance.json (French) 2022-08-25 13:17:59 +02:00
Thomas Camlong
898524dd45 New translations opacity-selector.json (Chinese Simplified) 2022-08-25 13:17:59 +02:00
Thomas Camlong
c74a2725cb New translations page-appearance.json (Swedish) 2022-08-25 13:17:59 +02:00
Thomas Camlong
b31bf02b47 New translations app-width.json (French) 2022-08-25 13:17:59 +02:00
Thomas Camlong
e80eee1946 New translations weather.json (English) 2022-08-25 13:17:59 +02:00
Thomas Camlong
9517d118ae New translations search.json (Italian) 2022-08-25 13:17:59 +02:00
Thomas Camlong
5632541724 New translations search.json (German) 2022-08-25 13:17:59 +02:00
Thomas Camlong
46581dfeee New translations search.json (Spanish) 2022-08-25 13:17:59 +02:00
Thomas Camlong
4303bd060e New translations search.json (French) 2022-08-25 13:17:59 +02:00
Thomas Camlong
4304991faa New translations ping.json (Chinese Simplified) 2022-08-25 13:17:58 +02:00
Thomas Camlong
cf25dee768 New translations ping.json (Swedish) 2022-08-25 13:17:58 +02:00
Thomas Camlong
9b55681161 New translations ping.json (Russian) 2022-08-25 13:17:58 +02:00
Thomas Camlong
f41ff8a6e8 New translations ping.json (Dutch) 2022-08-25 13:17:58 +02:00
Thomas Camlong
388eaa1bf8 New translations ping.json (Japanese) 2022-08-25 13:17:58 +02:00
Thomas Camlong
69d788ff28 New translations search.json (Japanese) 2022-08-25 13:17:58 +02:00
Thomas Camlong
b616d0200d New translations ping.json (Italian) 2022-08-25 13:17:58 +02:00
Thomas Camlong
811533eba5 New translations ping.json (Spanish) 2022-08-25 13:17:58 +02:00
Thomas Camlong
efc4958e19 New translations ping.json (French) 2022-08-25 13:17:58 +02:00
Thomas Camlong
74b38d8055 New translations overseerr.json (English) 2022-08-25 13:17:58 +02:00
Thomas Camlong
f8f13bd08b New translations overseerr.json (Chinese Simplified) 2022-08-25 13:17:58 +02:00
Thomas Camlong
a83220cef1 New translations overseerr.json (Swedish) 2022-08-25 13:17:58 +02:00
Thomas Camlong
bbda7b3903 New translations overseerr.json (Russian) 2022-08-25 13:17:58 +02:00
Thomas Camlong
424169aaa9 New translations overseerr.json (Dutch) 2022-08-25 13:17:58 +02:00
Thomas Camlong
f2c1957bea New translations overseerr.json (Japanese) 2022-08-25 13:17:58 +02:00
Thomas Camlong
40363e0a9d New translations overseerr.json (Italian) 2022-08-25 13:17:58 +02:00
Thomas Camlong
34d44bdf11 New translations overseerr.json (German) 2022-08-25 13:17:58 +02:00
Thomas Camlong
3bc1bb5958 New translations ping.json (German) 2022-08-25 13:17:58 +02:00
Thomas Camlong
345d5584b9 New translations overseerr.json (Spanish) 2022-08-25 13:17:58 +02:00
Thomas Camlong
68d2e8217d New translations search.json (Dutch) 2022-08-25 13:17:58 +02:00
Thomas Camlong
91d37cf01a New translations search.json (Swedish) 2022-08-25 13:17:58 +02:00
Thomas Camlong
76e9b1979b New translations weather.json (Chinese Simplified) 2022-08-25 13:17:58 +02:00
Thomas Camlong
10b1dbfccb New translations weather.json (Swedish) 2022-08-25 13:17:58 +02:00
Thomas Camlong
c556b0fc49 New translations weather.json (Russian) 2022-08-25 13:17:58 +02:00
Thomas Camlong
4001ed0932 New translations weather.json (Dutch) 2022-08-25 13:17:58 +02:00
Thomas Camlong
f107d24c51 New translations weather.json (Japanese) 2022-08-25 13:17:58 +02:00
Thomas Camlong
c5a90fb93b New translations weather.json (Italian) 2022-08-25 13:17:58 +02:00
Thomas Camlong
bd52dc3db7 New translations weather.json (German) 2022-08-25 13:17:58 +02:00
Thomas Camlong
d7371dbd53 New translations weather.json (Spanish) 2022-08-25 13:17:58 +02:00
Thomas Camlong
cb13022639 New translations weather.json (French) 2022-08-25 13:17:58 +02:00
Thomas Camlong
bb4fb38589 New translations search.json (Russian) 2022-08-25 13:17:58 +02:00
Thomas Camlong
88076bee90 New translations torrents-status.json (Chinese Simplified) 2022-08-25 13:17:58 +02:00
Thomas Camlong
f701939a4e New translations torrents-status.json (Russian) 2022-08-25 13:17:58 +02:00
Thomas Camlong
0fda55a58b New translations torrents-status.json (Dutch) 2022-08-25 13:17:58 +02:00
Thomas Camlong
c14bb886e1 New translations torrents-status.json (Japanese) 2022-08-25 13:17:57 +02:00
Thomas Camlong
fb7d230a36 New translations torrents-status.json (Italian) 2022-08-25 13:17:57 +02:00
Thomas Camlong
5e4edd9568 New translations torrents-status.json (German) 2022-08-25 13:17:57 +02:00
Thomas Camlong
e7ef4bfa72 New translations torrents-status.json (Spanish) 2022-08-25 13:17:57 +02:00
Thomas Camlong
b7a6a3b25d New translations torrents-status.json (French) 2022-08-25 13:17:57 +02:00
Thomas Camlong
d1a93b4d8a New translations search.json (English) 2022-08-25 13:17:57 +02:00
Thomas Camlong
d8fe30d1fd New translations search.json (Chinese Simplified) 2022-08-25 13:17:57 +02:00
Thomas Camlong
c328472295 New translations torrents-status.json (Swedish) 2022-08-25 13:17:57 +02:00
Thomas Camlong
b68e76723f New translations overseerr.json (French) 2022-08-25 13:17:57 +02:00
Thomas Camlong
58d111f708 New translations dlspeed.json (French) 2022-08-25 13:17:57 +02:00
Thomas Camlong
4b36d524a0 New translations dlspeed.json (Spanish) 2022-08-25 13:17:57 +02:00
Thomas Camlong
e356418c26 New translations dlspeed.json (German) 2022-08-25 13:17:57 +02:00
Thomas Camlong
24306876ca New translations dlspeed.json (Japanese) 2022-08-25 13:17:57 +02:00
Thomas Camlong
15bb0a6521 New translations dlspeed.json (Dutch) 2022-08-25 13:17:57 +02:00
Thomas Camlong
18e25e31be New translations dlspeed.json (Russian) 2022-08-25 13:17:57 +02:00
Thomas Camlong
719fd841c2 New translations dlspeed.json (Swedish) 2022-08-25 13:17:57 +02:00
Thomas Camlong
d77cd389fa New translations dlspeed.json (Chinese Simplified) 2022-08-25 13:17:57 +02:00
Thomas Camlong
481be4ef8e New translations dlspeed.json (Italian) 2022-08-25 13:17:57 +02:00
Thomas Camlong
67389794a0 New translations docker.json (Spanish) 2022-08-25 13:17:57 +02:00
Thomas Camlong
7730019d80 New translations docker.json (German) 2022-08-25 13:17:57 +02:00
Thomas Camlong
79f416fd92 New translations docker.json (Italian) 2022-08-25 13:17:57 +02:00
Thomas Camlong
7893fc13d9 New translations docker.json (Japanese) 2022-08-25 13:17:57 +02:00
Thomas Camlong
5ec2e9ad10 New translations docker.json (Dutch) 2022-08-25 13:17:57 +02:00
Thomas Camlong
bd0312c2de New translations docker.json (Russian) 2022-08-25 13:17:57 +02:00
Thomas Camlong
70fc6b4d3c New translations docker.json (Swedish) 2022-08-25 13:17:57 +02:00
Thomas Camlong
476596f21f New translations docker.json (Chinese Simplified) 2022-08-25 13:17:57 +02:00
Thomas Camlong
b80c11ceff New translations docker.json (French) 2022-08-25 13:17:57 +02:00
Thomas Camlong
1487b18a05 New translations dashdot.json (Italian) 2022-08-25 13:17:57 +02:00
Thomas Camlong
5285f50a9e New translations dashdot.json (German) 2022-08-25 13:17:57 +02:00
Thomas Camlong
9155136f3c New translations dashdot.json (Spanish) 2022-08-25 13:17:57 +02:00
Thomas Camlong
4ca2fe1fc8 New translations dashdot.json (French) 2022-08-25 13:17:57 +02:00
Thomas Camlong
e88f87e016 New translations common.json (Chinese Simplified) 2022-08-25 13:17:57 +02:00
Thomas Camlong
9791da8363 New translations common.json (Japanese) 2022-08-25 13:17:57 +02:00
Thomas Camlong
bb71d2e9a5 New translations common.json (Russian) 2022-08-25 13:17:57 +02:00
Thomas Camlong
6baa3eb381 New translations common.json (Dutch) 2022-08-25 13:17:56 +02:00
Thomas Camlong
0da577702e New translations common.json (Italian) 2022-08-25 13:17:56 +02:00
Thomas Camlong
93e10498f7 New translations common.json (German) 2022-08-25 13:17:56 +02:00
Thomas Camlong
9abcb0a863 New translations dashdot.json (Japanese) 2022-08-25 13:17:56 +02:00
Thomas Camlong
f46aa47449 New translations common.json (Swedish) 2022-08-25 13:17:56 +02:00
Thomas Camlong
e2048975ea New translations dashdot.json (Dutch) 2022-08-25 13:17:56 +02:00
Thomas Camlong
efd4015337 New translations date.json (Dutch) 2022-08-25 13:17:56 +02:00
Thomas Camlong
1f97db5983 New translations dashdot.json (Swedish) 2022-08-25 13:17:56 +02:00
Thomas Camlong
67c2400e4b New translations dashdot.json (Chinese Simplified) 2022-08-25 13:17:56 +02:00
Thomas Camlong
5ab607f46e New translations dashdot.json (English) 2022-08-25 13:17:56 +02:00
Thomas Camlong
453486cc35 New translations date.json (French) 2022-08-25 13:17:56 +02:00
Thomas Camlong
1926cf184c New translations date.json (Spanish) 2022-08-25 13:17:56 +02:00
Thomas Camlong
012d8495c9 New translations date.json (German) 2022-08-25 13:17:56 +02:00
Thomas Camlong
295d295796 New translations date.json (Italian) 2022-08-25 13:17:56 +02:00
Thomas Camlong
351e4330d2 New translations date.json (Japanese) 2022-08-25 13:17:56 +02:00
Thomas Camlong
e1bf9a56cc New translations common.json (Spanish) 2022-08-25 13:17:56 +02:00
Thomas Camlong
4772715a67 New translations date.json (Russian) 2022-08-25 13:17:56 +02:00
Thomas Camlong
e255375292 New translations date.json (Swedish) 2022-08-25 13:17:56 +02:00
Thomas Camlong
2dc7b47497 New translations date.json (Chinese Simplified) 2022-08-25 13:17:56 +02:00
Thomas Camlong
a870220f70 New translations dashdot.json (Russian) 2022-08-25 13:17:56 +02:00
Thomas Camlong
d924fb5b90 New translations common.json (French) 2022-08-25 13:17:56 +02:00
Thomas Camlong
c86653933c New translations common-media-cards.json (English) 2022-08-25 13:17:56 +02:00
Thomas Camlong
9ffb91528f New translations app-shelf.json (Italian) 2022-08-25 13:17:56 +02:00
Thomas Camlong
00c4d6758d New translations app-shelf.json (German) 2022-08-25 13:17:56 +02:00
Thomas Camlong
7ac2466e0f New translations app-shelf.json (Spanish) 2022-08-25 13:17:56 +02:00
Thomas Camlong
74042fc5c0 New translations app-shelf.json (French) 2022-08-25 13:17:56 +02:00
Thomas Camlong
c7c26d9d45 New translations app-shelf-menu.json (Dutch) 2022-08-25 13:17:56 +02:00
Thomas Camlong
32b8321f71 New translations app-shelf-menu.json (Japanese) 2022-08-25 13:17:56 +02:00
Thomas Camlong
6be9bb0ee8 New translations app-shelf-menu.json (Italian) 2022-08-25 13:17:56 +02:00
Thomas Camlong
c84fc83b2d New translations app-shelf-menu.json (Spanish) 2022-08-25 13:17:56 +02:00
Thomas Camlong
976d715b2d New translations app-shelf-menu.json (French) 2022-08-25 13:17:56 +02:00
Thomas Camlong
dcbcb1a90f New translations add-service-app-shelf.json (English) 2022-08-25 13:17:56 +02:00
Thomas Camlong
003a55d2b2 New translations add-service-app-shelf.json (Chinese Simplified) 2022-08-25 13:17:56 +02:00
Thomas Camlong
95ec8903a3 New translations add-service-app-shelf.json (Swedish) 2022-08-25 13:17:56 +02:00
Thomas Camlong
fe403d93a3 New translations add-service-app-shelf.json (Russian) 2022-08-25 13:17:56 +02:00
Thomas Camlong
18ab8cb567 New translations add-service-app-shelf.json (Dutch) 2022-08-25 13:17:55 +02:00
Thomas Camlong
c251813df8 New translations add-service-app-shelf.json (Japanese) 2022-08-25 13:17:55 +02:00
Thomas Camlong
b8e8a3e8c6 New translations add-service-app-shelf.json (Italian) 2022-08-25 13:17:55 +02:00
Thomas Camlong
2a15a92e0d New translations add-service-app-shelf.json (German) 2022-08-25 13:17:55 +02:00
Thomas Camlong
9ab4c5a821 New translations app-shelf-menu.json (German) 2022-08-25 13:17:55 +02:00
Thomas Camlong
59f0aa1808 New translations add-service-app-shelf.json (Spanish) 2022-08-25 13:17:55 +02:00
Thomas Camlong
a631cccf97 New translations app-shelf.json (Dutch) 2022-08-25 13:17:55 +02:00
Thomas Camlong
58d893cda6 New translations app-shelf.json (Swedish) 2022-08-25 13:17:55 +02:00
Thomas Camlong
e153e96418 New translations common-media-cards.json (Chinese Simplified) 2022-08-25 13:17:55 +02:00
Thomas Camlong
a17230f254 New translations common-media-cards.json (Swedish) 2022-08-25 13:17:55 +02:00
Thomas Camlong
3ec1b0f50a New translations common-media-cards.json (Russian) 2022-08-25 13:17:55 +02:00
Thomas Camlong
7e172ed5b3 New translations common-media-cards.json (Dutch) 2022-08-25 13:17:55 +02:00
Thomas Camlong
59829f00c1 New translations common-media-cards.json (Japanese) 2022-08-25 13:17:55 +02:00
Thomas Camlong
b697d2eda1 New translations common-media-cards.json (Italian) 2022-08-25 13:17:55 +02:00
Thomas Camlong
52fdd3d996 New translations common-media-cards.json (German) 2022-08-25 13:17:55 +02:00
Thomas Camlong
b8e4b3cec6 New translations common-media-cards.json (Spanish) 2022-08-25 13:17:55 +02:00
Thomas Camlong
e573445e2e New translations common-media-cards.json (French) 2022-08-25 13:17:55 +02:00
Thomas Camlong
a99ad27ab3 New translations app-shelf.json (Russian) 2022-08-25 13:17:55 +02:00
Thomas Camlong
af50376704 New translations calendar.json (Chinese Simplified) 2022-08-25 13:17:55 +02:00
Thomas Camlong
14316ed563 New translations calendar.json (Russian) 2022-08-25 13:17:55 +02:00
Thomas Camlong
241c6c4bec New translations calendar.json (Japanese) 2022-08-25 13:17:55 +02:00
Thomas Camlong
3aac3bfb31 New translations calendar.json (Italian) 2022-08-25 13:17:55 +02:00
Thomas Camlong
361784743d New translations calendar.json (German) 2022-08-25 13:17:55 +02:00
Thomas Camlong
6320f9a645 New translations calendar.json (Spanish) 2022-08-25 13:17:55 +02:00
Thomas Camlong
b0c1b63621 New translations calendar.json (French) 2022-08-25 13:17:55 +02:00
Thomas Camlong
1253ac39b5 New translations app-shelf.json (Chinese Simplified) 2022-08-25 13:17:55 +02:00
Thomas Camlong
c8af8d7575 New translations calendar.json (Swedish) 2022-08-25 13:17:55 +02:00
Thomas Camlong
c2aa007b46 New translations add-service-app-shelf.json (French) 2022-08-25 13:17:55 +02:00
Thomas Camlong
48b9a10ccc New translations app-shelf-menu.json (Chinese Simplified) 2022-08-25 13:17:55 +02:00
Thomas Camlong
a16eb417dd New translations app-shelf-menu.json (Swedish) 2022-08-25 13:17:55 +02:00
Thomas Camlong
64451f5cbd New translations app-shelf-menu.json (Russian) 2022-08-25 13:17:55 +02:00
Thomas Camlong
5de2c17d48 New translations app-shelf.json (Japanese) 2022-08-25 13:17:55 +02:00
Thomas Camlong
9365c52bdc New translations calendar.json (Dutch) 2022-08-25 13:17:55 +02:00
Thomas Camlong
5efca385cd New translations common.json (Chinese Simplified) 2022-08-25 13:17:55 +02:00
Thomas Camlong
6f2fa6f68a New translations common.json (Swedish) 2022-08-25 13:17:54 +02:00
Thomas Camlong
52d576bef9 New translations common.json (Russian) 2022-08-25 13:17:54 +02:00
Thomas Camlong
fa204a73e0 New translations common.json (Dutch) 2022-08-25 13:17:54 +02:00
Thomas Camlong
5d45433f4e New translations common.json (Japanese) 2022-08-25 13:17:54 +02:00
Thomas Camlong
50437e77d4 New translations common.json (Italian) 2022-08-25 13:17:54 +02:00
Thomas Camlong
4e1cd34ca0 New translations common.json (Spanish) 2022-08-25 13:17:54 +02:00
Thomas Camlong
a51b3546fb New translations common.json (French) 2022-08-25 13:17:54 +02:00
ajnart
784c745e94 🌐 Add languages to i18n 2022-08-25 12:59:57 +02:00
ajnart
bc7ca43c08 🌐 Fix the flags for internalization 2022-08-25 12:28:43 +02:00
ajnart
ad0b1e4e46 🔧 Update crowdin config files 2022-08-25 12:05:50 +02:00
ajnart
c493efcb97 🔧 Update crowdin config files 2022-08-25 11:55:46 +02:00
Thomas Camlong
e8324dc661 🔀 Merge pull request #368 from ajnart/ajnart/issue349
 Search and open services with the search bar
2022-08-25 11:41:08 +02:00
Thomas Camlong
d01fd846ef 🔀 Merge pull request #357 from manuel-rw/add-i18n-translations
🌎 Add translations !
2022-08-25 11:40:34 +02:00
Thomas Camlong
da5f8a3c1f 🔀 Merge pull request #369 from ajnart/ajnart-patch-1
Create FUNDING.yml
2022-08-25 11:11:39 +02:00
Thomas Camlong
1ffee2d148 Create FUNDING.yml 2022-08-25 11:11:15 +02:00
ajnart
2ad51411f5 Add translation for module, fix language changer 2022-08-25 11:07:25 +02:00
Manuel Ruwe
53500ffabc 🐛 accidental translation of module name 2022-08-24 21:01:30 +02:00
ajnart
4f521b5c00 🐛 Fix an error with @nivo/line
Doesn't support react 18 https://github.com/plouc/nivo/issues/230
2022-08-24 21:01:30 +02:00
Manuel Ruwe
4e7d3edb5f i18n translation for modules 2022-08-24 21:01:29 +02:00
Manuel Ruwe
14924e4562 add translations for dropzone 2022-08-24 21:01:29 +02:00
Manuel Ruwe
2bf29172fc add translation for total downloads module 2022-08-24 21:01:29 +02:00
Manuel Ruwe
fb4bad0a62 🚨 fix typescript types 2022-08-24 21:01:29 +02:00
Manuel Ruwe
4d757ccf66 add language switch, add german 2022-08-24 21:01:29 +02:00
Manuel Ruwe
6d0a31f79e 🚧 wip migrate to next-i18n 2022-08-24 21:01:29 +02:00
Manuel Ruwe
ac4dc23e08 🚧 wip extract to translations file 2022-08-24 21:01:29 +02:00
Manuel Ruwe
57cfb58c0b 📦️ add i18n translation packages 2022-08-24 21:01:29 +02:00
ajnart
7d953e4c41 Filtering services using search bar 2022-08-24 18:44:11 +02:00
Noan
26ce7ac895 🐛 fix bug where Docker containers still show on refresh if socket is unreachable 2022-08-23 20:01:28 +02:00
Noan
db42474ed1 🐛 fix bug where Docker containers still show on refresh if socket is unreachable 2022-08-23 20:00:46 +02:00
Noan
9003ee6350 💄 improve ui of DockerTable component 2022-08-23 19:57:03 +02:00
Noan
8edda19e05 ♻️ Change Docker instance to singleton 2022-08-23 19:02:58 +02:00
Noan
dccfe7e2e3 ♻️ Change Docker instance to singleton 2022-08-23 18:58:10 +02:00
Thomas Camlong
48a5b4d4fd 🔀 Merge pull request #351 from manuel-rw/master
📄 fix docker-compose in readme
2022-08-23 14:13:55 +02:00
Thomas Camlong
06702d9fe2 🔀 Merge pull request #356 from manuel-rw/update-homarr-logo
💄 update homarr logo
2022-08-23 14:13:36 +02:00
Thomas Camlong
89352aff2b 🔀 Merge pull request #359 from Skeeww/fix/docker_module
 Add exposed port in Service URL for Docker Module
2022-08-23 14:13:02 +02:00
Noan
5ab2f2a6f4 🐛 Fix port in Service URL for Docker Module 2022-08-22 23:01:47 +02:00
Noan
684e3cb2e8 Revert default.json 2022-08-22 22:55:07 +02:00
Noan
67bd4cffc8 🐛 Fix port in Service URL for Docker Module 2022-08-22 22:51:42 +02:00
Noan
7d08646a29 🔧 add configuration to docker module 2022-08-22 21:51:23 +02:00
ajnart
50a9e2ea8c ⬆️ Upgrade Mantine to v5.2.3 2022-08-22 20:30:16 +02:00
Manuel Ruwe
75a402882a 💄 update homarr logo 2022-08-22 10:20:12 +02:00
Thomas Camlong
02fd62afaa 🔀 Merge pull request #354 from Skeeww/master
🔧 Add .editorconfig
2022-08-21 19:04:21 +02:00
Noan
f931bd6f03 🔧 Add .editorconfig 2022-08-21 17:19:04 +02:00
Manuel
399ddb177c 📄 fix docker-compose in readme 2022-08-19 17:41:02 +02:00
Thomas Camlong
03e14ce3ce 🚀 Patch v0.9.2 : Small bug fixes and corrections 2022-08-12 15:38:33 +02:00
Thomas Camlong
d51de68ef3 Merge branch 'master' into dev 2022-08-12 15:37:44 +02:00
ajnart
090ae0e205 🔖 Bumb version to patch v0.9.2 2022-08-12 15:36:56 +02:00
ajnart
7ba27ef9f1 Add Dashdot name indicator 2022-08-12 15:30:53 +02:00
ajnart
48e1808992 🐛 Fix a bug with the openedUrl
Fixes #337
2022-08-12 15:09:45 +02:00
ajnart
85b1a2d7da 🐛 Fixing bug with image display
Fixes #336
2022-08-12 15:07:43 +02:00
Thomas Camlong
f680c01547 🟣 V0.9.1: Overserr integration and new design ! 2022-08-11 19:05:26 +02:00
ajnart
4f94999b07 🐛 Fix a small bug with the display of images 2022-08-11 17:08:39 +02:00
ajnart
cf89141f82 🐛 Fix a bug with the AppShelf accordion 2022-08-11 10:08:18 +02:00
ajnart
b46bdea72a 🔧 Adjust default config 2022-08-10 18:47:14 +02:00
ajnart
98af9794ec 💄 Very small UI changes 2022-08-10 14:15:02 +02:00
ajnart
3d63226372 💄 Very small UI changes 2022-08-10 14:13:20 +02:00
ajnart
2e8dff346e 💄 Very small UI changes 2022-08-10 14:01:23 +02:00
ajnart
430f3b52e9 🐛 Fixing small bugs 2022-08-10 13:59:46 +02:00
ajnart
901b68732f Add open result to overseerr button 2022-08-09 17:04:19 +02:00
ajnart
d83900e134 🐛 Fix a bug with searching just "!os" in overseerr 2022-08-09 15:06:00 +02:00
ajnart
6f0902d473 🐛 Fix Jellyseerr request 2022-08-09 15:04:39 +02:00
ajnart
a1d3fc66da 🔖 Bumb version to v0.9.1 2022-08-09 13:36:26 +02:00
ajnart
c76ef9643b 🐛 Fix Popover open state 2022-08-09 13:35:59 +02:00
ajnart
67a274804f Add Jellyseerr full support 2022-08-09 13:26:55 +02:00
ajnart
c157c94d95 ✏️ Fix color for MenuItem 2022-08-09 13:23:29 +02:00
ajnart
bd0d5bc663 Make icon Ctrl-clickable
Will open a new tab
2022-08-09 13:23:02 +02:00
ajnart
91d079c5ab 🐛 Fix quick color bug 2022-08-09 13:22:15 +02:00
ajnart
fe8919c6ad 🔖 Upgrade tag to v0.9.0 2022-08-08 16:03:58 +02:00
Thomas Camlong
f792a0df96 Merge branch 'master' into dev 2022-08-08 16:02:25 +02:00
Thomas Camlong
1283b48d6b 🔀 Merge pull request #326 from ajnart/overseerr-integration
 Overseerr integration
2022-08-08 16:00:26 +02:00
ajnart
6adb796b26 🎨 Small styling changes 2022-08-08 15:43:04 +02:00
ajnart
528e899066 🐛 Fix overseerr api key field 2022-08-08 15:17:51 +02:00
ajnart
659222643c 🐳 Revert docker image change 2022-08-08 14:49:06 +02:00
ajnart
20d61c8d2a 📦 Add package and fix bug in DownloadsModule 2022-08-08 14:30:22 +02:00
Thomas Camlong
53e0b098ff 🔀 Merge pull request #322 from ajnart/mantine-v5
⬆️ Upgrading to Mantine v5
2022-08-08 13:52:52 +02:00
ajnart
9fa4836038 ⬆️ Upgrade to Mantine v5.1.0 (from v5.0.2) 2022-08-08 13:52:07 +02:00
ajnart
439874e811 💄 Calendar styling 2022-08-08 13:47:34 +02:00
ajnart
60fc6732b8 📝 Add examples for JSON formats
I could possibly turn these into type declarations with some online parser but at the moment it stays here for developpment purposes
2022-08-08 13:47:15 +02:00
ajnart
772fe7622d 🐛 Fix bug with Downloadmodule width 2022-08-08 13:46:14 +02:00
ajnart
1e69e3a2b0 🐛 Fix onBlurCapture in the Dropdown of overseerr 2022-08-08 13:45:54 +02:00
ajnart
b430e24cdb ✏️ Fix request Modal 2022-08-08 13:45:36 +02:00
ajnart
f9caf6ef26 ⚰️ Remove allowTransparency from dashdot 2022-08-08 13:45:12 +02:00
ajnart
9a53f5d1ee Improve MediaDisplay overseerr 2022-08-08 13:44:58 +02:00
ajnart
04874e69f2 🐛 Fix module wrapper hover bug 2022-08-08 13:44:35 +02:00
ajnart
1741829761 🔥 Remove tryRequest page 2022-08-08 13:44:20 +02:00
ajnart
67f19b5186 💄 Linting 2022-08-07 17:20:59 +02:00
ajnart
68d1068059 ⬆️ Migration to Mantine v5.0 in Popover 2022-08-07 17:20:34 +02:00
ajnart
03dd4b33ac 📦 Add Mantine Modal 2022-08-07 17:19:39 +02:00
ajnart
60ef0fe5d6 🔀 Merge Mantine v5.0 into Overseerr-integaration 2022-08-07 12:25:23 +02:00
ajnart
70814d0bc6 Add Overseerr integration 2022-08-07 12:16:29 +02:00
ajnart
b489c07177 🐛 Fix a bug with mediadisplay 2022-08-07 12:16:15 +02:00
ajnart
a3bc9ab9f4 🏷️ Add type definitions for Movie/Tv/Request 2022-08-07 12:15:35 +02:00
ajnart
40a76593a2 🧪 Add testing page for overseerr request 2022-08-07 12:15:15 +02:00
ajnart
0e3c9e7ba8 🚧 Change query in SearchBar to use new API 2022-08-07 12:14:57 +02:00
ajnart
8abf2af212 Add ModalsProvider to the App 2022-08-07 12:14:37 +02:00
ajnart
13d70cf0fd ♻️ Rework Overseerr API 2022-08-07 12:14:17 +02:00
ajnart
f0bb3f08b0 🏷️ Fix missing types 2022-08-07 12:13:44 +02:00
ajnart
d07b51f67d 📦 Add Consola for logging 2022-08-07 12:13:26 +02:00
ajnart
6dfda07713 Merge branch 'dev' into mantine-v5 2022-08-02 23:03:06 +02:00
ajnart
fd3f58b501 🔧 Dashdot module changes
Fixes #316
2022-08-02 23:00:40 +02:00
ajnart
e4f91a1c00 🔧 Use PasswordInput for credentials 2022-08-02 23:00:38 +02:00
ajnart
f0d1c6daf9 🐳 Change docker image to Linuxserver 2022-08-02 22:59:20 +02:00
Thomas Camlong
33268fda53 ✏️ Fix spelling errors 2022-08-02 22:59:20 +02:00
ajnart
275aa30d45 📦 Bumb to Mantine v5.0.2 2022-08-02 22:56:18 +02:00
ajnart
7c0c986564 💃🏻 Styling and fixing lint errors 2022-08-02 05:22:38 +02:00
ajnart
c4d8fb2e00 🐛 Fix bugs in PingModule 2022-08-02 05:22:02 +02:00
ajnart
33b84b9039 💩 Write shitty code to fix MediaDisplay build 2022-08-02 05:21:30 +02:00
ajnart
498598424b 🔧 Move Calendar module to new popover api 2022-08-02 05:18:07 +02:00
ajnart
762690493a 💃🏻 Styling credits and Menu enabler 2022-08-02 05:17:19 +02:00
ajnart
456f0ff2ee 🐛 Fix a bug with toolstips 2022-08-02 05:16:54 +02:00
ajnart
12c13de1bd 💃🏻 Settings menu styling 2022-08-02 02:21:04 +02:00
ajnart
847e0855d8 💃🏻 Typing, Styling, Formatting 2022-08-02 00:21:51 +02:00
ajnart
4e75605ac0 💃🏻 Typing, Styling, Formatting 2022-08-02 00:21:11 +02:00
ajnart
eff2fc5ac7 🐛 Fix ModuleWrapper Hover state 2022-08-02 00:20:42 +02:00
ajnart
09a8dd7db8 🐛 Fix add or modify service undefined errors 2022-08-02 00:20:04 +02:00
ajnart
318dc83d2d 🐛 Fix Accordion in AppShelf 2022-08-02 00:19:39 +02:00
ajnart
c501cfae76 🐛 Fix keys attribute on ColorSelector 2022-08-01 21:11:37 +02:00
ajnart
8bc74f4e0f 🐛 Fix bug in AppShelfMenu
Menu was not closing on click
2022-08-01 21:11:11 +02:00
ajnart
af001d8dfa 🐛 Fix Hover in ModuleWrapper 2022-08-01 17:53:32 +02:00
ajnart
0e1419cc9a 🐛 Fix configLoader 2022-08-01 17:28:27 +02:00
Thomas Camlong
a7bcc5689a 🔀 Merge pull request #321 from ajnart/ajnart/issue307
 Add caching for icons with an image proxy
2022-08-01 17:14:09 +02:00
ajnart
bc05038427 Add caching for icons with an image proxy
Fixes #307
2022-08-01 17:12:18 +02:00
Thomas Camlong
b4bdf3737a 🔀 Merge pull request #320 from ajnart/ajnart/issue316
🔧 Dashdot module changes
2022-08-01 16:36:50 +02:00
ajnart
1fa2060e2b 🔧 Dashdot module changes
Fixes #316
2022-08-01 16:36:00 +02:00
ajnart
a8c5f07fb2 🚑 Hotfix Docker image with new NextJS version 2022-08-01 14:15:15 +02:00
ajnart
ff5a334f79 🔧 Use PasswordInput for credentials 2022-08-01 14:14:38 +02:00
Thomas Camlong
84fdd705b6 🔀 Merge pull request #317 from ajnart/ajnart/issue240
🐳 Change docker image to Linuxserver
2022-08-01 11:27:27 +02:00
ajnart
818bfad5f4 🐳 Change docker image to Linuxserver 2022-08-01 11:25:53 +02:00
Thomas Camlong
678059b1d3 ✏️ Fix spelling errors 2022-07-28 13:37:17 +02:00
ajnart
9f9566b27c ♻️ Refactor and WIP towards mantine v5 2022-07-26 01:21:04 +02:00
ajnart
d4d9e5cfcb 🚧 Work in progress for Mantine v5 2022-07-26 00:51:55 +02:00
ajnart
7fcdb17d84 ⬆️ Upgrade to Mantine V5.0 and React 18 2022-07-26 00:51:25 +02:00
ajnart
aa990671c1 💚 CI 2022-07-25 00:15:20 +02:00
ajnart
0ce3c4cd83 💚 CI 2022-07-25 00:05:28 +02:00
ajnart
77daffcc4b 💄 Small style changes 2022-07-24 23:54:57 +02:00
ajnart
b04171aa76 Add preview if media is available on Plex 2022-07-24 23:48:48 +02:00
ajnart
a3f5b252b9 🚧 WIP on Overseerr integration 2022-07-24 23:18:01 +02:00
ajnart
1f2d560893 🐛 Fix an old bug with the search bar 2022-07-24 21:54:42 +02:00
ajnart
87c55f264e 🔀 Merge branch 'dev' into overseerr-integration 2022-07-24 21:36:55 +02:00
Thomas Camlong
3fe8a4f7bc 🔀 Merge pull request #303 from manuel-rw/wiki-links-to-doc-links-migration
🚚 migrate wiki links to docusaurus links
2022-07-24 20:27:13 +02:00
ajnart
2cf89a1eb3 💚 Make CI not build the docker image on PRs 2022-07-24 20:22:24 +02:00
ajnart
68d81b97b4 ⬇️ Downgrade NextJS and React
Middleware didn't work in v12.2.3. Hopefully the password protection will work again now.
2022-07-23 22:22:55 +02:00
Manuel
c0917e31ed Merge branch 'dev' into wiki-links-to-doc-links-migration 2022-07-23 13:15:34 +02:00
ajnart
d438faa3d8 🚚 Rename dash. folder to dashdot
Was causing issues on non-unix systems
2022-07-23 13:10:10 +02:00
Manuel Ruwe
9dd5d50034 🚚 migrate wiki links to docusaurus links 2022-07-23 12:40:36 +02:00
Thomas Camlong
1d734633f0 🚑 Merge pull request #301 from ajnart/dev
🚑 Hotfix Docker image with new NextJS version
2022-07-23 00:25:45 +02:00
ajnart
2186756535 🚑 Hotfix Docker image with new NextJS version 2022-07-22 22:27:02 +02:00
Thomas Camlong
702428d24f 🚀 v0.8.2 🐋 Docker fixes and quality of life changes
https://github.com/ajnart/homarr/compare/v0.8.0...v0.8.2
2022-07-22 18:45:13 +02:00
ajnart
c8b0e7013d Improve Calendar module error handling 2022-07-22 18:30:15 +02:00
ajnart
385b4a3b24 🐛 Fix Docker integration actions timeouts 2022-07-22 18:08:32 +02:00
ajnart
5ccdf735ae Hide calendar module sensitive data
Working towards #259
2022-07-22 18:07:36 +02:00
ajnart
81a7789f9c Hide downloads module sensitive data
Working thowards #259
2022-07-22 17:18:33 +02:00
ajnart
a4defd330c 🔥 Remove console.log() statement 2022-07-22 16:21:15 +02:00
ajnart
4628d1d1d7 🚚 Change setCookies to setCookie 2022-07-22 16:20:59 +02:00
ajnart
7b719c2273 🐛 Fix bugs with async events from dockerode 2022-07-22 16:19:56 +02:00
ajnart
a9b840452e ✏️ Fix async data gathering with Dockerode 2022-07-22 16:19:28 +02:00
ajnart
3b0658fee2 Use tryMatchPort 2022-07-22 16:19:07 +02:00
ajnart
b5f1491fbb Add TryMatchPort function and update MatchingImages 2022-07-22 16:18:36 +02:00
ajnart
539903f053 ✏️ Remove resolutions in packagelock 2022-07-22 16:16:09 +02:00
Thomas Camlong
f7aa6338f1 🔀 Merge pull request #296 from RichyHBM/adding-docker-images
Adding docker images to match thanks to @RichyHBM !
2022-07-22 15:18:20 +02:00
Thomas "ajnart" Camlong
f20c2d4472 🔖 Bump version to v0.8.2 2022-07-22 13:20:34 +02:00
Thomas "ajnart" Camlong
d1d13396f8 💄 Linting and prettier 2022-07-22 13:20:02 +02:00
Thomas "ajnart" Camlong
bed08c84de ⬆️ Upgrade layout for new React and NextJS versions 2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
c0e1747e09 Make logo text togglable on/off 2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
ea8df25620 Add searching feature in docker table 2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
cd9e844001 🐛 Fix docker not getting all containers
Turned off containers will not be shown
2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
8eac0bed84 Improve login page
Styling and responsiveness
2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
d2eb31f510 ⬆️ Upgrade 404 page for NextJS latest 2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
ed72ab6ec7 🐛 Fix middleware due to new NextJS version
Fixes #297
2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
02d3766d60 ⬆️ Upgrade next.config.js for new NextJS version 2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
5b4f166216 📦 Upgrade to React18 2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
75ceab0cf1 🐛 Fix fetching images in MatchIcon 2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
91181aed13 🔧 Add vscode debug files 2022-07-22 13:18:46 +02:00
Thomas "ajnart" Camlong
3234f06a2d 🐛 Make docker container list scrollable
Fixes #295
2022-07-22 13:18:46 +02:00
Thomas Camlong
cac1059c16 Update feature-request.yml 2022-07-22 13:10:47 +02:00
RichyHBM
632376bed5 Additional hotio images 2022-07-21 18:50:27 +01:00
RichyHBM
64a29e7f4c Put qbittorrent in alphabetical order 2022-07-21 18:47:13 +01:00
RichyHBM
c6d8c9b2d8 Add hotio + other high usage images 2022-07-21 18:43:42 +01:00
RichyHBM
6915a1bfaf Add dashdot and linuxserver docker images to image to match list 2022-07-21 18:29:35 +01:00
Thomas "ajnart" Camlong
00751eeca5 Make discord integration a module
This allows for an error message if the docker integration fails to load
2022-07-21 11:43:43 +02:00
Thomas Camlong
715a4bd6c7 Merge pull request #292 from arghyadipchak/master
Fix Dash. compact view storage
2022-07-21 09:08:00 +02:00
Arghyadip Chakraborty
5df2c67c2f Fix Dash. compact view storage 2022-07-21 00:39:08 +05:30
Thomas Camlong
ce0f27bb6e v0.8.0 Docker 🐋 and Dash. ⚙ integrations !
<!-- Small release message -->

-  Add support for lists in module option by @ajnart in https://github.com/ajnart/homarr/pull/280
- 🔨 Fix Readarr default port number by @Moohan in https://github.com/ajnart/homarr/pull/287
-  Add dash. Integration by @MauriceNino in https://github.com/ajnart/homarr/pull/277
-  Add Docker integration by @ajnart in https://github.com/ajnart/homarr/pull/289

- Dash. (Pronounced Dashdot) is another self-hosted service, made by @MauriceNino that provides a simple way to see stats about your PC in a sleek way
- Docker integration provides a simple way to start, stop, restart and delete containers. To get started, simply mount your docker socket by adding `-v /var/run/docker.sock:/var/run/docker.sock` to your Homarr container !

* @Moohan made their first contribution in https://github.com/ajnart/homarr/pull/287
* @MauriceNino made their first contribution in https://github.com/ajnart/homarr/pull/277

**Full Changelog**: https://github.com/ajnart/homarr/compare/v0.7.2...v0.8.0
2022-07-20 16:49:48 +02:00
Thomas Camlong
5c1a171832 🔀 Merge pull request #289 from ajnart/docker-integration
Add Docker integration 🚀
2022-07-20 15:22:40 +02:00
Thomas "ajnart" Camlong
fd8ab2f643 🔀 Backmerge dev with dash. integration 2022-07-20 15:15:07 +02:00
Thomas Camlong
c750eed5ef Merge branch 'dev' into docker-integration 2022-07-20 15:05:16 +02:00
Thomas "ajnart" Camlong
c446bf1a1f 📦 Update cookies-next package 2022-07-20 15:02:09 +02:00
Thomas Camlong
0fdfa55067 🔀 Merge pull request #277 from MauriceNino/feature/276
Add dash. Integration thanks to @MauriceNino !
2022-07-20 14:52:12 +02:00
Thomas "ajnart" Camlong
c313eacefd 🐛 Fix small bug with the network module 2022-07-20 14:47:51 +02:00
Thomas "ajnart" Camlong
649f7521bc 🔒 Add guard for Docker socket 2022-07-20 14:21:11 +02:00
Thomas "ajnart" Camlong
7065b06c82 💄 Format code 2022-07-20 14:09:47 +02:00
Thomas "ajnart" Camlong
c4e01e482e Add simple image name matching 2022-07-20 14:08:56 +02:00
Thomas Camlong
e56c4b6b56 🔀 Merge pull request #287 from Moohan/master
Fix Readarr default port number
2022-07-11 13:54:01 +02:00
James McMahon
ce38163c6d Fix Readarr default port number
Per https://wiki.servarr.com/readarr
2022-07-11 12:21:28 +01:00
Thomas Camlong
0406d6d5ee Add skeleton while the meto module is loading 2022-07-07 07:13:11 +00:00
Thomas Camlong
4b92c52ea8 Add "Add to homarr" feature and move code 2022-07-06 18:08:39 +02:00
Thomas Camlong
be770d282a ⬆️ Upgrade NextJS version 2022-07-06 18:08:03 +02:00
MauriceNino
0bf95483f9 fix: styles for dash. widget 2022-06-30 16:08:39 +02:00
MauriceNino
60b88389a6 fix: remove leftover console.log 2022-06-30 16:08:39 +02:00
MauriceNino
72832a5767 fix: move enabled options to multi-select 2022-06-30 16:08:39 +02:00
MauriceNino
eb0313f551 fix: transform dash. -> dashdot for icon find 2022-06-30 16:08:39 +02:00
MauriceNino
c0ecc3d4c6 fix: types 2022-06-30 16:08:38 +02:00
MauriceNino
da7b478d81 feat: add dash. integration 2022-06-30 16:08:38 +02:00
Thomas Camlong
2702c9a7cf 🔀 Merge pull request #280 from ajnart/ajnart/issue279
 Add support for lists in module option
2022-06-28 22:33:28 +02:00
Thomas Camlong
3bda6c2b76 🔥 Remove the popover TIP when using the searchbar 2022-06-28 19:09:02 +02:00
Thomas Camlong
1a66bfb8be add a <Tip/> component and use it 2022-06-28 19:08:18 +02:00
Thomas Camlong
41be0e6362 🐛 Fix default values for modules
The default value was not set correctly for modules. This has been fixed. It was also fixed in the Weather Module and the Date Module.
2022-06-28 12:12:39 +02:00
Thomas Camlong
e93a3a3b5f Add support for lists in module option
This feature allows a module maker to use a list as the different possible values for a module integration.
2022-06-28 11:27:23 +02:00
Thomas Camlong
9945ef892e 📱 Fix settings pannels height 2022-06-28 11:06:45 +02:00
Thomas Camlong
812de35149 🐛 Fix a bug where download module was always there 2022-06-28 10:34:25 +02:00
Thomas Camlong
035224b02b add start/stop/restart feature on containers 2022-06-27 23:38:54 +02:00
Thomas Camlong
72aba9d8cd 🚧 Work in progress on the Docker integration 2022-06-27 19:25:26 +02:00
ajnart
df7e833b84 🚧 Work in progress on docker integration 2022-06-27 08:03:40 +02:00
Thomas Camlong
aab1492934 🔖 v0.7.2 2022-06-25 17:53:20 +02:00
Thomas Camlong
1ae074db8f 🔥 Remove .docusaurus/ 2022-06-25 17:51:44 +02:00
Thomas Camlong
f21004e944 🔖 v0.7.2
Tag version v0.7.2
2022-06-25 17:47:39 +02:00
Thomas Camlong
7c421cc52f 🔀 Merge pull request #260 from walkxcode/dev
💄 Changes AppShelf category styling
2022-06-25 16:11:38 +02:00
Thomas Camlong
d8e407ab22 🔀 Merge pull request #257 from ajnart/fix-multiple-torrent-client
🐛 Fix itteration on the different types of services
2022-06-25 15:36:59 +02:00
Thomas Camlong
37565284e6 🔀 Merge pull request #271 from ajnart/searchBar
 Adds query placeholder and autoFocus (#267 #268)
2022-06-25 15:36:06 +02:00
Bjorn Lammers
b758df9f44 🔥 Fix indentation because I'm a perfectionist 2022-06-25 15:14:39 +02:00
Bjorn Lammers
a735ae47c5 🙈 Updates .dockerignore 2022-06-25 15:13:00 +02:00
WalkxCode
97d585dc17 Adds query placeholder and autoFocus (#267 #268) 2022-06-25 14:02:53 +02:00
Thomas Camlong
7f3db9add1 🐛 Fix adding a service doesn't fetch 2022-06-24 13:44:43 +02:00
Thomas Camlong
6d6964f086 🔀 Merge pull request #258 from ajnart/ajnart/issue256
🐛 Allow anything in the input for the form.
2022-06-24 13:39:18 +02:00
Thomas Camlong
2a4012f73a 🔀 Merge pull request #263 from ajnart/#261-discord
💬 Adds Discord Button (#261)
2022-06-24 12:44:23 +02:00
Bjorn Lammers
9385315f03 🔀 Merge pull request #265 from jelliuk/patch-1 2022-06-24 12:06:27 +02:00
James
ee824f0b27 Update README.md
Correct the link to Wiki/Integrations
2022-06-24 10:36:43 +01:00
Bjorn Lammers
792af504c7 💬 Adds Discord Button
#261
2022-06-22 13:19:44 +02:00
Bjorn Lammers
cd3c062a24 💄 Changes AppShelf category styling 2022-06-21 19:14:18 +00:00
ajnart
a5f477c19b 🚑 Hotfix to spread torrent pushing 2022-06-21 21:04:21 +02:00
ajnart
85164d79fc 🚑 Hotfix password and usernames 2022-06-21 20:35:40 +02:00
ajnart
7aedc4111f 🚑 Hotfix how the result from the services are awaited 2022-06-21 19:59:25 +02:00
ajnart
d1f89847f5 💄 Small UI fix for mobile 2022-06-21 19:38:32 +02:00
ajnart
57170847a1 🐛 Allow anything in the input for the form.
If it works, it works.
Fixes #256
2022-06-21 19:22:14 +02:00
ajnart
45de715390 🐛 Fix itteration on the different types of services 2022-06-21 19:16:29 +02:00
Thomas Camlong
c29d6f58dd 🔀 Merge pull request #252 from LarveyOfficial/fix-multiple-download-clients
🐛Allow multiple of the same torrent client +1
2022-06-21 16:22:18 +02:00
ajnart
f0bae49830 🚨 Lint and prettier fix 2022-06-21 16:21:40 +02:00
Larvey
c3ceae4dc6 Also fixed Torrent form fields 2022-06-20 17:26:13 -04:00
Larvey
d654fb39e5 🐛Allow multiple of the same torrent client
Allows multiple of the same type of torrent client
2022-06-20 17:10:54 -04:00
Thomas Camlong
7dc205fa66 🚀 v0.7.1 ! Bug fixes and QOL improvements
### Features
*  Changing deluge/qbittorent to use href instead of origin by @VinnyVynce in https://github.com/ajnart/homarr/pull/178
*  Transmission Integration by @ajnart in https://github.com/ajnart/homarr/pull/181
*  Add different URL for API calls by @ajnart in https://github.com/ajnart/homarr/pull/180
* Password / Login Page by @ajnart in https://github.com/ajnart/homarr/pull/179
*  Ability to toggle categories by @ajnart in https://github.com/ajnart/homarr/pull/177
*  Add settings to change title and icons by @Aimsucks in https://github.com/ajnart/homarr/pull/184
*  Color, shade, app opacity, and background customizations by @Aimsucks in https://github.com/ajnart/homarr/pull/188
*  Calendar indication about date and w-e with secondary color by @Darkham42 in https://github.com/ajnart/homarr/pull/193
*  More Information in Torrents Module by @LarveyOfficial in https://github.com/ajnart/homarr/pull/195
*  Could position widgets at left by @Darkham42 in https://github.com/ajnart/homarr/pull/197
*  Configure calendar widget to show Sunday first by @ajnart in https://github.com/ajnart/homarr/pull/224
* Service Addition Overhaul by @LarveyOfficial in https://github.com/ajnart/homarr/pull/229
*  Slidable service span in customizations  by @Aimsucks in https://github.com/ajnart/homarr/pull/222
### Tweaks
🔧 Make credentials non-required for torrents by @ajnart in https://github.com/ajnart/homarr/pull/223
### Bug fixes
* 🐛Fix completed torrents progress color by @LarveyOfficial in https://github.com/ajnart/homarr/pull/227
* 🐛Tiles could be moved accidentally on mobiles by @ajnart in https://github.com/ajnart/homarr/pull/226
* 🐛 Cannot open "New Tab URL" on mobile by @ajnart in https://github.com/ajnart/homarr/pull/225
* 🐛 Fix Calendar Item Duplication by @LarveyOfficial in https://github.com/ajnart/homarr/pull/249
* 🐛Fix URL for Radarr and other services by @LarveyOfficial in https://github.com/ajnart/homarr/pull/250
* 🐛 Fix Calendar not loading content when a service fails by @LarveyOfficial in https://github.com/ajnart/homarr/pull/230
* 🐛 Calendar current day for light theme by @Darkham42 in https://github.com/ajnart/homarr/pull/194
* 🐛 Fix for timezone issues by @LarveyOfficial in https://github.com/ajnart/homarr/pull/186
* 🐛 Fix Sonarr Incorrect Dates by @LarveyOfficial in https://github.com/ajnart/homarr/pull/189
* 🐛 Fix for origin URL not containing path in API request URL by @Aimsucks in https://github.com/ajnart/homarr/pull/221
2022-06-20 22:09:25 +02:00
ajnart
91a249d953 🔖 tag v0.7.1 2022-06-20 22:03:43 +02:00
Thomas Camlong
356afda9c7 Merge pull request #250 from LarveyOfficial/patch-2
🐛Fix URL for Radarr and other services
2022-06-20 20:14:17 +02:00
Larvey
35f02a2296 Fix URL for Radarr and other services 2022-06-20 14:02:33 -04:00
Thomas Camlong
16bcec0deb Merge pull request #249 from LarveyOfficial/patch-1
🐛 Fix Calendar Item Duplication
2022-06-20 19:45:47 +02:00
Larvey
16ec57081b Fix Calendar Item Duplication
- 6fd23cf6a0 changed how items for the calendar are acquired, making it so every series gets updated when a new one gets added, or one gets moved. This causes the entries in the calendar to duplicate due to old code being left in.
2022-06-20 13:32:31 -04:00
ajnart
690f09fcf3 🚑 Hotfix ServiceItems 2022-06-20 10:40:30 +02:00
Thomas Camlong
2f960169bb 🔀 Merge pull request #222 from Aimsucks/app-card-with-slider
 Slidable service span in customizations
2022-06-20 10:29:39 +02:00
ajnart
14a40d9f66 🔧 Tweak values and UI changes 2022-06-20 10:24:22 +02:00
Thomas Camlong
e5abd67f83 🔀 Merge pull request #221 from Aimsucks/issue-215-fix
🐛 Fix for origin URL not containing path in API request URL
2022-06-20 10:22:13 +02:00
Thomas Camlong
399ba7e2fc 🔀 Merge pull request #229 from LarveyOfficial/rework-AddAppShelfItem
Service Addition Overhaul
2022-06-20 10:20:01 +02:00
ajnart
7780ae3d7a ♻️ Re-implement changes 2022-06-20 10:17:49 +02:00
ajnart
80d3f16473 🔧 Tweak UI and change the name of the settings 2022-06-20 10:06:30 +02:00
Larvey
a8c0dfcd0c Fix Capitalization 2022-06-20 10:06:15 +02:00
Larvey
6ee7d6ec8d declutter config file 2022-06-20 10:06:15 +02:00
Larvey
544fae3808 Added Scrollbar 2022-06-20 10:05:55 +02:00
Larvey
4516dde1f4 Reworked AddAppShelfItem
Adds:
- Advanced Options tab
- Changed which ping status codes identify as "Online"
- Change if service opens in new tab or not

Fixes:
- Deluge and Transmission Password requirement
2022-06-20 10:01:36 +02:00
Thomas Camlong
a20c5f8d12 🔀 Merge pull request #223 from ajnart/transmission-login
🔧 Make credentials non-required for torrents
2022-06-20 09:08:10 +02:00
Thomas Camlong
60e5c0d165 🔀 Merge pull request #230 from LarveyOfficial/calendar-multi-content-fix
🐛 Fix Calendar not loading content when a service fails
2022-06-20 09:03:14 +02:00
Larvey
b7bf18250d Fix CalendarModule.tsx
Fix no content showing when 1 of the same service is down.
2022-06-16 21:02:30 -04:00
Thomas Camlong
93256b7a6a 🔀 Merge pull request #224 from ajnart/ajnart/issue217
 Configure calendar widget to show Sunday first #217
2022-06-15 06:52:50 +02:00
Thomas Camlong
47a4437a01 🔀 Merge pull request #225 from ajnart/ajnart/issue202
🐛 Fix cannot open "New Tab URL" on mobile
2022-06-15 06:52:16 +02:00
Thomas Camlong
92470c619e 🔀 Merge pull request #226 from ajnart/ajnart/issue214
🐛Tiles could be moved accidentally on mobiles
2022-06-15 06:51:18 +02:00
Thomas Camlong
7cb3dfbd16 🔀 Merge pull request #227 from LarveyOfficial/fix-progress-color
🐛Fix completed torrents progress color
2022-06-15 06:51:06 +02:00
ajnart
d69e4f41a1 🐛 Fix required username 2022-06-15 06:47:53 +02:00
Larvey
4980254e89 Update DownloadsModule.tsx 2022-06-14 21:14:26 -04:00
ajnart
5133286e04 🐛Tiles could be moved accidentally on mobiles
Fixes #214
2022-06-14 22:45:31 +02:00
ajnart
ca2713a12c 🐛 Cannot open "New Tab URL" on mobile
Fixes #202
2022-06-14 22:11:55 +02:00
ajnart
4981823c37 🔧 Tweak values on the slider 2022-06-14 22:09:30 +02:00
ajnart
5d31e414f0 Configure calendar widget to show Sunday first
Fixes #217
2022-06-14 20:50:11 +02:00
ajnart
8ec2b9d0cd 🔧 Make credentials non-required for torrents
Fixes #201
2022-06-14 20:33:26 +02:00
Aimsucks
bd920dfc86 App card width slider
Added a slider to determine the XL app card width
2022-06-14 17:45:22 +00:00
Aimsucks
b5540a9958 🐛 Origin URL in calendar to includes path
Changed the origin variable in the calendar module to use the entire URL instead of just the origin domain
2022-06-14 17:01:30 +00:00
Thomas Camlong
778988de58 🚀 v0.7.0 : Theming, Password protection, Autocompletion, Transmission, Mobile responsiveness! This is a big upgrade 👀 2022-06-13 10:15:39 +02:00
ajnart
5b1437552d 🔖 Bump version to v0.7.0 2022-06-12 16:58:48 +02:00
WalkxCode
e8a8fbe6ac 💄 Makes the ModuleEnabler grid look better 2022-06-12 16:35:56 +02:00
WalkxCode
5c0a074219 💬 Updates names and placeholders in AddAppShelfItem 2022-06-12 16:35:31 +02:00
WalkxCode
58ec74bb68 🚸 Improves case matching for auto-fill 2022-06-12 16:34:24 +02:00
Thomas Camlong
6ac82bda40 🔀 Merge pull request #197 from Darkham42/dev
feat: could position widgets at left
2022-06-12 15:46:13 +02:00
Thomas Camlong
2c6e86840a 🔀 Merge pull request #195 from LarveyOfficial/patch-3
More Information in Torrents Module
2022-06-12 15:39:32 +02:00
ajnart
df85fc6b7d 🐛 Fix multiple bugs and reformat code 2022-06-12 15:38:14 +02:00
Darkham42
89804dafd1 feat: could position widgets at left 2022-06-12 08:04:20 +02:00
Larvey
98eaee1234 Use humanFileSize 2022-06-12 01:15:38 -04:00
Larvey
433edafddd Remove humanFileSize 2022-06-12 01:14:38 -04:00
Larvey
e39d5741b6 Create humanFileSize.ts 2022-06-12 01:13:51 -04:00
Larvey
21c08cbe63 Change Elements hidden on Mobile 2022-06-12 00:59:12 -04:00
Larvey
ec92a1d89c Removed new Features on Mobile (Temporary) 2022-06-12 00:52:12 -04:00
ajnart
0f2c5dbce2 🔥 Remove keyboard usage to sort items 2022-06-12 06:36:37 +02:00
Larvey
8eae5a908c Merge branch 'dev' into patch-3 2022-06-12 00:25:36 -04:00
Thomas Camlong
a37f0fdee6 🔀 Merge pull request #194 from Darkham42/dev
fix: calendar current day for light theme
2022-06-12 06:16:59 +02:00
Larvey
08799aac18 Fix build issue from pull request #193 2022-06-11 19:16:03 -04:00
Larvey
06531e0fb8 Removed Logging used during development 2022-06-11 19:02:34 -04:00
Larvey
0f56ead24f Fixed Customization Spelling 2022-06-11 19:00:50 -04:00
Larvey
922caa76da More Info in Torrents Module
Added
- ETA
- Torrent Size
- Paused state color in progress bar
2022-06-11 18:59:45 -04:00
Darkham42
0acb1f6b6d refactor: use theme 2022-06-11 23:44:14 +02:00
Darkham42
8d645ca404 fix: calendar current day for light theme 2022-06-11 23:22:58 +02:00
Thomas Camlong
a5c4f30f57 Merge pull request #193 from Darkham42/dev
feat: calendar indication about date and w-e with secondary color
2022-06-11 20:20:37 +02:00
Darkham42
562a05adf5 feat: calendar indication about date and we with secondary color 2022-06-11 20:11:20 +02:00
Thomas Camlong
de77e06b18 🔀 Merge pull request #188 from Aimsucks/more-customizations
Color, shade, app opacity, and background customizations thank you @Aimsucks !
2022-06-11 19:49:46 +02:00
ajnart
03c499d822 🚚 Make the weather module release (from beta) 2022-06-11 19:45:09 +02:00
ajnart
169d08f3b6 🚚 Move selectors to customisation tab 2022-06-11 19:44:11 +02:00
ajnart
437807a9e0 💄 Change module enabler layout 2022-06-11 19:43:01 +02:00
ajnart
4866fd74b5 🚚 Rename tabs in settings 2022-06-11 19:42:36 +02:00
ajnart
426ba69afd Add more transparency areas and fix bugs 2022-06-11 18:37:13 +02:00
Aimsucks
74f87b570d Update src/components/layout/Background.tsx
Co-authored-by: Bjorn Lammers <walkxnl@gmail.com>
2022-06-08 18:09:59 -04:00
Aimsucks
fed5f6df52 📝 Added a placeholder for background 2022-06-08 20:20:24 +00:00
Aimsucks
5cc160473c Revert "📝 Background image placeholder and instructions"
This reverts commit 4833157061.
2022-06-08 20:18:42 +00:00
Aimsucks
4833157061 📝 Background image placeholder and instructions
Updated readme with instructions to mount the /public folder instead of the /public/icons folder, as well as added a placeholder for background image settings
2022-06-08 18:13:41 +00:00
Aimsucks
a0c8518d22 🎨 Made opacity change app background
Made the opacity slider change the individual app background and border rgba values instead of the entire app.
2022-06-08 18:01:16 +00:00
Aimsucks
c0c816d3db Update src/components/Settings/ShadeSelector.tsx
Co-authored-by: Bjorn Lammers <walkxnl@gmail.com>
2022-06-08 13:13:04 -04:00
Aimsucks
ac47de72ee Merge branch 'dev' into more-customizations 2022-06-08 12:48:02 -04:00
ajnart
d631865f71 💄 Small UI qol update
Module download now has a different look and can be toggled on and off
2022-06-08 18:41:22 +02:00
Aimsucks
4ee6562e35 🐛 Fix for favicon not changing
Removed favicon and title from _app.tsx
2022-06-08 16:26:09 +00:00
ajnart
19f80b9b4c 🚑 Hotfix calendar and mobile responsiveness 2022-06-08 16:16:00 +00:00
ajnart
949deacd6d 🔀 Rebase with dev 2022-06-08 16:16:00 +00:00
Larvey
b0f4a91878 Fix Sonarr Incorrect Dates
Due to how Sonarr gives dates, they recommend using UTC time when displaying it as it matches their calendar. Took some digging but it fixed it.
2022-06-08 16:16:00 +00:00
ajnart
68f2e79056 🧱 Try to fix cookies issues 2022-06-08 16:16:00 +00:00
ajnart
43e68e1bbf 🐛 Trying to fix dates 2022-06-08 16:16:00 +00:00
Larvey
5033323b7c Fix for timezone issues 2022-06-08 16:16:00 +00:00
Aimsucks
7519b4a6b2 Added an app opacity slider
Added a slider to change individual app opacity on the AppShelf
2022-06-08 16:03:06 +00:00
Aimsucks
e6eedefec4 Added a shade selector
Added a popover shade selector similar to the color selector, but shows primary and secondary colors to pick the desired Mantine primaryShade
2022-06-08 15:36:54 +00:00
Aimsucks
845d6a3d87 🎨 Made color switcher change Mantine styles
Moved the color switcher's functions to a context provider and made Mantine's styles derived off of that context.
2022-06-08 14:58:32 +00:00
ajnart
f75da289c2 🚑 Hotfix calendar and mobile responsiveness 2022-06-08 09:56:04 +02:00
Thomas Camlong
063a6447c0 🔀 Merge pull request #189 from LarveyOfficial/patch-2
Fix Sonarr Incorrect Dates
2022-06-08 08:11:13 +02:00
ajnart
4dac730412 🔀 Rebase with dev 2022-06-08 08:09:59 +02:00
Larvey
de6e0f645f Fix Sonarr Incorrect Dates
Due to how Sonarr gives dates, they recommend using UTC time when displaying it as it matches their calendar. Took some digging but it fixed it.
2022-06-07 22:05:28 -04:00
Aimsucks
b26ab50c8d 🎨 Changed primary/secondary color to camelCase 2022-06-07 17:48:04 +00:00
Aimsucks
423f8110b9 Added a background image input
Added an input in the advanced options for a background image. Also removed an unused import from my previous commit and changed the margin on the header bar to padding instead.
2022-06-07 17:36:05 +00:00
ajnart
84ae49ed2a 🧱 Try to fix cookies issues 2022-06-07 19:34:58 +02:00
ajnart
fb291c5411 🐛 Trying to fix dates 2022-06-07 19:34:24 +02:00
Aimsucks
901798055b Added primary/secondary color selection
Added two new inputs to the options menu: primary and secondary color selectors.
2022-06-07 16:53:51 +00:00
Thomas Camlong
d32d599098 🔀 Merge pull request #186 from LarveyOfficial/patch-1
Fix for timezone issues
2022-06-07 17:22:57 +02:00
Larvey
76e02cf148 Fix for timezone issues 2022-06-07 11:19:53 -04:00
Thomas Camlong
f19b4675ad 🔀 Merge pull request #184 from Aimsucks/change-title-icons
Add settings to change title and icons
2022-06-07 16:17:50 +02:00
ajnart
4f1640b70a 🐛 Fix a small bug inside the torrent module 2022-06-07 12:41:49 +02:00
Thomas Camlong
c1d17ec8b2 Update src/components/Settings/AdvancedSettings.tsx
Co-authored-by: Bjorn Lammers <walkxnl@gmail.com>
2022-06-07 12:12:23 +02:00
Thomas Camlong
d2f1268520 Merge branch 'dev' into change-title-icons 2022-06-07 10:37:36 +02:00
ajnart
b72afc2270 📦 💄 Upgrade packages and style 2022-06-07 10:36:47 +02:00
ajnart
de0c625f88 🐛 Fixing Deluge integration
Thanks to @scttcper for fixing https://github.com/scttcper/deluge/issues/106 so quickly !
2022-06-07 09:50:04 +02:00
Thomas Camlong
29c9f3ecac 🔥 Remove the Code quality tickboxes
They were annoying (to me at least)
2022-06-07 08:32:39 +02:00
ajnart
a321095daf 💄 Styling the settings 2022-06-07 08:21:03 +02:00
ajnart
ced18da65a 🔥 Remove default values for the Advanced settings 2022-06-07 08:20:19 +02:00
ajnart
1a642ad7b4 🔧 Make the changed values optional 2022-06-07 07:20:44 +02:00
Aimsucks
838f196937 Ability to change title and icons V2!
Results of criticism in pull request #182
2022-06-07 01:35:50 +00:00
Aimsucks
6af5166aa5 Ability to change title and icons 2022-06-07 00:07:56 +00:00
ajnart
7935fb6616 🚑 Hotfix icon matching 2022-06-07 01:04:34 +02:00
ajnart
ed567065b4 ⚰️ Remove dead code 2022-06-07 00:30:42 +02:00
ajnart
06035fb6f0 💄 Very minor fix the the AppShelf UI 2022-06-07 00:15:19 +02:00
ajnart
c1af0a087d 💄 Styling the AppShelf 2022-06-07 00:07:36 +02:00
ajnart
6067c5dfcf 💄 Styling changes for medias and AppShelf 2022-06-06 23:56:33 +02:00
ajnart
bf7b9637f7 🔥 Remove CPU module 2022-06-06 23:56:08 +02:00
ajnart
c552104413 🔥 Remove CPU module 2022-06-06 23:55:49 +02:00
ajnart
6fd23cf6a0 Add support for multiple Arr services
In the calendar, you can now have 2 separate Sonarr or Radarr instances
2022-06-06 23:40:45 +02:00
ajnart
e2f59383d6 🚑 Small UI hotfixes 2022-06-06 23:27:55 +02:00
ajnart
8b92135a80 💄 Make responsiveness better for mobile
Posters aren't huge on mobile anymore, yay
2022-06-06 22:32:57 +02:00
ajnart
aef4a30512 🚑 Hotfix position of the downloads module 2022-06-06 21:45:45 +02:00
Thomas Camlong
ace8bd75e7 🔀 Merge pull request #177 from ajnart/ajnart/issue150
 Ability to toggle categories
2022-06-06 21:40:02 +02:00
Thomas Camlong
2e461b4e7a 🔀 Merge pull request #179 from ajnart/ajnart/issue174
Password / Login Page
2022-06-06 21:39:47 +02:00
Thomas Camlong
3f87e939c9 🔀Merge pull request #180 from ajnart/ajnart/issue163
 Add different URL for API calls
2022-06-06 21:39:38 +02:00
Thomas Camlong
1d9dfc5102 🔀 Merge pull request #181 from ajnart/ajnart/issue147
Transmission Integration
2022-06-06 21:39:26 +02:00
ajnart
80a94d3778 FR: Transmission Integration
Fixes #147
2022-06-06 21:38:50 +02:00
ajnart
39d66faf4e Add autocomplete to Search Module
Suggestions when searching with the search bar Fixes #12
2022-06-06 20:02:42 +02:00
ajnart
c50e11c75b 🐛 Fix celcius to farenheit 2022-06-06 19:12:59 +02:00
ajnart
9a3ebb56cb 🎨 Quality of life : Use debouncedValue 2022-06-06 18:44:02 +02:00
ajnart
1d1495453a 🩹 Add default values for the categories to be opened by default 2022-06-06 18:31:42 +02:00
ajnart
26cfc485c2 Ability to toggle categories
Fixes #150
2022-06-06 18:31:40 +02:00
ajnart
83b4da282a Password / Login Page
Fixes #174
2022-06-06 18:30:14 +02:00
ajnart
ea972effb4 Add different URL for API calls
Fixes #163
2022-06-06 18:29:02 +02:00
ajnart
9686761c3d Merge branch 'master' into dev 2022-06-06 18:28:34 +02:00
ajnart
13a5a4a263 Revert CI changes 2022-06-06 18:28:26 +02:00
ajnart
339919cfff Add keyboard navigation (kind of)
Fixes #165
2022-06-06 17:39:18 +02:00
ajnart
2594a7caa5 💄 Disable item selection on mobile
Fixed Disable text selection in iOS (touch devices) #166
2022-06-06 17:37:42 +02:00
ajnart
2966be4fc4 Add support for multiple same service in Calendar
Fixes Calendar Support for Multiple Sonarr / Radarr #176
2022-06-06 15:34:33 +02:00
ajnart
5e21a7df9c 🐛 Fix bug in ping module
Module would not ping on the first activation / deactivation
2022-06-06 15:33:25 +02:00
Thomas Camlong
64eb00f2ee 🔀 Changing deluge/qbittorent to use href instead of origin
Thank you @VinnyVynce
2022-06-06 15:21:16 +02:00
ajnart
00928ae709 📱 Make the design way more responsive for mobile 2022-06-06 15:20:46 +02:00
ajnart
bbb912479b 🪝 AdduseSetSafeInterval hook 2022-06-06 15:02:41 +02:00
VinnyVynce
5b16589360 Change urls for href instead of origin 2022-06-06 07:07:35 -04:00
Thomas Camlong
39674fc769 Update docker_dev.yml 2022-06-06 12:22:32 +02:00
Thomas Camlong
e718fd6b80 v0.6.0 Categories and current download graphs ! 🥳 2022-06-03 14:14:47 +02:00
ajnart
bdaf70f26b 🚑 Hotfix errors 2022-06-03 14:11:24 +02:00
Thomas Camlong
44a7df5ae0 Merge pull request #170 from ajnart/system-info
System info
2022-06-03 13:56:45 +02:00
ajnart
25fa376c2d Update display for current CPU 2022-06-03 13:56:15 +02:00
Thomas "ajnart" Camlong
de3792fb6b 🐛 Fixing a bug related to imports 2022-06-03 13:56:14 +02:00
ajnart
64b1679b03 🐛 Fixing bugs in system info 2022-06-03 13:56:14 +02:00
ajnart
8da0b38662 Working on system info 2022-06-03 13:56:13 +02:00
ajnart
13fd1a9fc0 System-info WIP 2022-06-03 13:55:43 +02:00
Thomas Camlong
04c1b41015 Merge pull request #169 from ajnart/qol
🚸 Improve UX and QoL
2022-06-03 13:55:29 +02:00
Thomas Camlong
6a32b80098 📝 Update demo link 2022-06-02 17:51:21 +02:00
WalkxCode
759e02f74a 🔥 Remove modified files from pull request" 2022-06-01 20:00:21 +02:00
WalkxCode
5758019923 🚸 Improve UX and QoL 2022-06-01 19:53:57 +02:00
Thomas "ajnart" Camlong
cad160010d Make proxied requests for calendar 2022-06-01 16:19:32 +02:00
Thomas "ajnart" Camlong
56b6347824 🚧 Trying to improve calendar module 2022-06-01 15:32:29 +02:00
ajnart
c258003ec5 🐛 Fixed a bug in the Lidarr image display 2022-05-30 21:43:33 +02:00
ajnart
5ac5098a2a 💄 Small UI changes
Changed the color to use one of mantine's
2022-05-30 09:20:16 +02:00
ajnart
3c96053b7f Add a ScrollArea to the Downloads module 2022-05-30 09:19:49 +02:00
ajnart
1de20d1583 Avancement on Overseerr integration 2022-05-29 21:39:57 +02:00
ajnart
596db5fefc ⬆️ Upgrade dependencies 2022-05-29 19:09:12 +02:00
ajnart
7ee56bd6ed add default overseer image display 2022-05-29 19:06:29 +02:00
Thomas Camlong
67a89ba61a Merge pull request #167 from ajnart/build-optimization
Build optimization
2022-05-29 19:04:19 +02:00
ajnart
4c0a3ce48c 💚 Update CI 2022-05-29 18:57:03 +02:00
ajnart
2d2f9d8d19 🏗️ Update Yarn install 2022-05-29 18:55:22 +02:00
ajnart
0a7f98dd80 🏗️ Change packageManager 2022-05-29 18:47:12 +02:00
ajnart
5b4d302c17 ⬆️ Upgrade dependencies 2022-05-29 18:43:31 +02:00
ajnart
31d23852f7 Migrate from tabler-icons-react to @tabler/icons 2022-05-29 18:42:58 +02:00
ajnart
a9e8db5018 🔖 Bumb version to v0.6.0 2022-05-29 15:34:31 +02:00
ajnart
f3d1767daf 🚨 Linting 2022-05-29 15:33:44 +02:00
ajnart
b229aacba5 Add download module to the AppShelf 2022-05-29 15:32:39 +02:00
ajnart
174ed140ae Add total downloads module 2022-05-29 15:31:25 +02:00
ajnart
62635bffe9 💄 Style DownloadsModule (torrents) 2022-05-29 15:31:04 +02:00
ajnart
63e6efab1f Add TotalDownloadsModule to module exports 2022-05-29 15:30:50 +02:00
ajnart
ad1af0e07d 🧱 Move components in infrastructure 2022-05-29 15:30:23 +02:00
ajnart
cfd9eb94b5 💄 Improve boxShadows of menus
Makes them look better
2022-05-29 15:30:03 +02:00
ajnart
c6762281ef 📦 Add nivo for charts 💹 2022-05-29 15:29:11 +02:00
ajnart
7d09a0064a 🔥 Delete Download module from index 2022-05-29 15:28:45 +02:00
ajnart
2d6b9522c5 Make Calendar module fetch way more data 2022-05-29 11:25:53 +02:00
ajnart
1a2e752281 Add categories! 2022-05-29 10:45:49 +02:00
ajnart
c7c76ee22b 💄 Styling backgrounds of widgets 2022-05-29 09:11:46 +02:00
ajnart
0457c91ede 🚸 Improve add service autofill capabilities 2022-05-27 13:14:09 +02:00
ajnart
1a420c3b8b 🚑 Hotfix deluge torrent progress 2022-05-27 09:45:51 +02:00
Thomas Camlong
c993d32dd3 v0.5.2 : Torrents module : Deluge and qBittorrent integrations ! 🥳
v0.5.2 adds a bunch of QOL changes and the long awaited Deluge and qBittorrent integrations. More feature to come with the torrent module soon.
2022-05-26 21:29:48 +02:00
ajnart
1f66d64f24 Add deluge integration
Fixes #122
2022-05-26 21:08:16 +02:00
ajnart
54ce138475 Add deluge password saving 2022-05-26 21:07:01 +02:00
ajnart
6173c20616 🏷️ Update types for AppShelfMenu 2022-05-26 21:06:44 +02:00
ajnart
e3d22c6d3a 🏷️ Add deluge types 2022-05-26 21:06:17 +02:00
ajnart
fd44fbb208 📦 Add Deluge package for future deluge integration 2022-05-26 21:06:04 +02:00
ajnart
3dc0208a73 💄 Styling changes 2022-05-26 20:07:54 +02:00
ajnart
b6fcabc270 🐛 Fix footer display issues 2022-05-26 20:07:22 +02:00
ajnart
ee2e36bdfa Rename the download module 2022-05-26 19:45:18 +02:00
ajnart
6bc16a51f1 🔖 Bump version to v0.5.2 2022-05-26 19:16:33 +02:00
ajnart
b0c92c9951 💄 Style DownloadModule 2022-05-26 19:14:36 +02:00
ajnart
72fddda411 Make the Footer update a notification 2022-05-26 19:14:19 +02:00
ajnart
949379e6e6 🎨 Change default config 2022-05-26 18:35:28 +02:00
Thomas Camlong
17736fc432 Update README.md 2022-05-26 18:29:24 +02:00
ajnart
da31832a1e 💫 Add download module on the main page 2022-05-26 18:19:32 +02:00
ajnart
3a358a229d Add Download Module!
Shows current downloads from qbittorrent at the moment, transmission coming soon 😉
2022-05-26 18:19:12 +02:00
ajnart
a6875abfe3 💬 Update API to support getting downloads 2022-05-26 18:18:30 +02:00
ajnart
2aad3d3eb0 Add support for qBittorrent in AddAppShelfItem 2022-05-26 18:17:59 +02:00
ajnart
8e2d347ab5 🏗️ Rework moduleWrapper architecture 2022-05-26 18:16:57 +02:00
ajnart
8b055bc3b6 💄 Style the notifications to the bottom right 2022-05-26 18:16:24 +02:00
ajnart
54a68f1d74 🏷️ Update types to support qBittorrent login 2022-05-26 18:16:00 +02:00
ajnart
2fabd1908d 📦 Add @ctrl/qbittorrent as a dependency 2022-05-26 18:15:42 +02:00
ajnart
789e0510ea 🐛 Fix a bug with strings as module settings 2022-05-26 18:15:00 +02:00
ajnart
2c16075413 💄 WeatherModule styling 2022-05-26 18:13:51 +02:00
ajnart
96f58288ac 💄 DateModule styling 2022-05-26 18:13:35 +02:00
ajnart
d4168dcdf4 💄 Styling and UI changes 2022-05-26 18:13:23 +02:00
Thomas Camlong
c044da2b55 Update Crowdin configuration file 2022-05-26 00:44:24 +02:00
ajnart
1ec8f1db19 🚑 Critical hotfix for various bugs 2022-05-26 00:10:48 +02:00
ajnart
c725559e9b 🔥 Remove Crowdin 2022-05-25 18:32:55 +02:00
ajnart
044c3fdf4c Merge branch 'dev' of github.com:/ajnart/homarr into dev 2022-05-25 18:26:17 +02:00
ajnart
4026d0b6be 💄 Update poster styling 2022-05-25 18:26:13 +02:00
Thomas Camlong
151e37c282 Update Crowdin configuration file 2022-05-25 18:13:29 +02:00
Thomas Camlong
0a476f648a v0.5.1 : Readarr and Lidarr integrations !
### New Features
-  Lidarr and Readarr integrations
-  Add a way to delete a config via the API
-  Add a way to save a config and delete it
-  Add a key bind to open settings (CTRL + L)

### Bug Fixes
- 🐛 Fixing date issues with weather module
- 🐛 Fix Readarr date match

### UI Changes
- 💄 Totally rework how the media previews work!
- 💄 Make the settings menu a drawer instead
- 💄 Change the way the footer is displayed

### GitHub Changes
- 📝 (README): Updates documentation & Move to Wiki

### Other Changes
- 🧑‍💻 Added strings as an option type for modules
- 🏗️ Make the max notifications to 4
2022-05-25 13:17:54 +02:00
ajnart
3f2aa50f85 Totally rework how the media previews work! 2022-05-25 13:13:36 +02:00
ajnart
fbaaa389c2 🐛 Fix Readarr date match 2022-05-25 13:13:17 +02:00
ajnart
af83695d81 🏗️ Make the max notifications to 4 2022-05-25 13:12:12 +02:00
ajnart
2cb6781a94 Lidarr and Readarr integrations 2022-05-25 10:50:57 +02:00
ajnart
4f68f7e395 Add a keybind to open settings, CTRL + L 2022-05-24 23:02:27 +02:00
ajnart
6a14937112 Merge branch 'dev' of github.com:/ajnart/homarr into dev 2022-05-24 22:55:50 +02:00
ajnart
9eef4988e7 Add a way to save a config and delete it 2022-05-24 22:55:47 +02:00
ajnart
3855673787 Add a way to delete a config via the API 2022-05-24 22:55:28 +02:00
ajnart
a89b0746ba 💄 Make the settings menu a drawer instead 2022-05-24 22:55:10 +02:00
Bjorn Lammers
09dd5d7907 🔖 Update version to v0.5.1 2022-05-24 21:51:08 +02:00
Bjorn Lammers
f029483f1e 🔖 Update version to v0.5.1 2022-05-24 21:50:57 +02:00
Bjorn Lammers
364055b9b6 📝 Oopsie doopsie hehe 2022-05-24 21:48:06 +02:00
Thomas Camlong
8775ad249c Merge pull request #152 from ajnart/docs
📝 (README): Updates documentation & Move to Wiki
2022-05-24 21:39:50 +02:00
Bjorn Lammers
3249d766b3 📝 Add "Read the Wiki" 2022-05-24 21:39:34 +02:00
Bjorn Lammers
fd65dc8943 📝 Fix some bugs 2022-05-24 21:26:10 +02:00
WalkxCode
fd73c7f70d 📝 (README): Updates documentation & Move to Wiki 2022-05-24 21:21:20 +02:00
ajnart
4984866fb3 🚨 Linting and add icons
Adds future support for self hosted icons
2022-05-24 20:15:07 +02:00
ajnart
4ae4b224c7 🐛 Fixing issues with weahter module 2022-05-24 20:14:26 +02:00
ajnart
802f7fd6c7 🧑‍💻 Added strings as an option type for modules 2022-05-24 20:14:07 +02:00
ajnart
bbb35b236f 💄 Change the way the footer is displayed 2022-05-24 20:13:01 +02:00
Bjorn Lammers
2eb3b18499 Merge pull request #144 from ajnart/dev
v0.5.0 : Quality of life and dev experience
2022-05-23 22:24:24 +02:00
Bjorn Lammers
553be7da33 Merge pull request #144 from ajnart/dev
v0.5.0 : Quality of life and dev experience
2022-05-23 22:22:08 +02:00
Bjorn Lammers
260b850e1a 📝 Add star mention 2022-05-23 21:49:03 +02:00
Bjorn Lammers
726a4fddd3 🔥Remove fixed issues 2022-05-23 21:09:48 +02:00
Bjorn Lammers
318c094f27 📝 Update Docs to match new release 2022-05-23 18:30:11 +02:00
Thomas Camlong
6e0d3807e4 Merge pull request #142 from ajnart/dnd
Drag and drop ! (v0.5.0)
2022-05-23 17:02:18 +02:00
ajnart
10e9dc06dd ⚰️ Remove dead code 2022-05-23 16:52:43 +02:00
ajnart
e84687e5fc 🔖 Version v0.5.0 2022-05-23 14:44:01 +02:00
Thomas Camlong
361d41065c Merge branch 'dev' into dnd 2022-05-23 14:39:17 +02:00
ajnart
4c0fbc0b42 ⚰️ Remove dead code 2022-05-23 14:38:39 +02:00
ajnart
ef8e380956 🔥 Remove some other default configuration files 2022-05-23 14:34:17 +02:00
ajnart
5db28b1607 🚨 Fix storybook compilation 2022-05-23 14:23:05 +02:00
ajnart
dbfd4cf050 🐛 Fix search module default queryUrl 2022-05-23 12:38:10 +02:00
ajnart
ffd298a2b6 🐛 Fix line clamping in media display 2022-05-23 12:37:36 +02:00
ajnart
9b1b5906e7 ⬆️ Upgrade and remove dependencies 2022-05-23 11:48:25 +02:00
Thomas Camlong
19bd14c63d Merge branch 'dev' into dnd 2022-05-23 11:24:31 +02:00
ajnart
b69343af56 Introduce DND in main app shelf! 2022-05-23 11:20:08 +02:00
ajnart
94ee90eebb ⚰️ Remove dead code 2022-05-23 11:19:40 +02:00
ajnart
72b3097ad1 ⚰️ Remove dead code 2022-05-23 11:19:26 +02:00
Thomas Camlong
225f910fe8 Merge pull request #139 from ajnart/New-Config-Format
 Add new config format
2022-05-23 10:48:46 +02:00
ajnart
10d9ffc740 🚨 Fix compilation for types 2022-05-23 10:44:31 +02:00
ajnart
4202d25d62 📦 Add type definitions for UUID 2022-05-23 10:26:17 +02:00
ajnart
6a905e1b49 🚨 Lint code and prettier 2022-05-23 10:24:54 +02:00
ajnart
72e08f484f 🚑 Use different type of UUID 2022-05-23 10:23:10 +02:00
ajnart
64dbb9c025 Add drag and drop, fixes #88 2022-05-23 00:04:14 +02:00
ajnart
af2e0235bf Add new config format
Should be WAAAAY easier to work with modules now
2022-05-22 20:42:10 +02:00
ajnart
bf85818f8b 🐛 Fix #133 2022-05-22 20:40:10 +02:00
ajnart
1840713179 Basic drag and drop 2022-05-21 10:32:54 +02:00
ajnart
b11bffb7cf 🐛 Exclude stories from tsconfig 2022-05-21 10:32:35 +02:00
ajnart
bfb26a9402 🚑 Fix API url for services 2022-05-21 01:26:55 +02:00
ajnart
c3b11be2d0 🚑 Fix UUID by using crypto 2022-05-21 01:26:24 +02:00
ajnart
ecfb89de40 🏷️ Fix types
Fixed the apiKey field for a service
2022-05-21 01:02:45 +02:00
ajnart
e1eab70f93 Match config with URL typed
Homarr will now match a config with the URL used or return a 404 if not found
2022-05-21 01:01:20 +02:00
ajnart
adb341c0fa Add default icon, fix URL parsing
Fixes #121 and Fixes #132
2022-05-21 00:54:36 +02:00
ajnart
25ccdffeb9 Make logo clickable 2022-05-21 00:52:55 +02:00
ajnart
b98d399a9c Change 404 message 2022-05-21 00:52:39 +02:00
ajnart
f36e7b8abb Made service name clickable
Co-authored-by: Bjorn L. <walkxnl@gmail.com>
2022-05-20 23:03:42 +02:00
Thomas "ajnart" Camlong
667322d14e Use ID instead of only names 2022-05-20 22:34:36 +02:00
Thomas "ajnart" Camlong
9b440c0da3 🚧 Add basic BASE_URL and PORT env utilisation #76 2022-05-19 02:05:23 +02:00
Thomas Camlong
2586733a98 v0.4.0
Add Weather and Ping module
2022-05-18 23:22:14 +02:00
ajnart
7bc779b296 ⚰️ Remove dead code
Used to test the weather module
2022-05-18 23:13:32 +02:00
ajnart
6064dcb6a6 💄 Footer styling 2022-05-18 23:12:52 +02:00
ajnart
7c7b0cc970 💫 Add animations to the AppShelf 2022-05-18 23:12:34 +02:00
ajnart
c182397dd9 💫 Add animations to the PingModule 2022-05-18 23:11:58 +02:00
ajnart
dc5ee3bdf3 Add animations to the AppShelf 2022-05-18 22:51:12 +02:00
ajnart
c8e1295a4b Improve date module am/pm 2022-05-18 22:50:53 +02:00
ajnart
331c55240b Added Freedom units setting 2022-05-18 22:50:33 +02:00
Thomas Camlong
65037f9b56 Add Weather module (beta)
Shows the current weather !
2022-05-18 22:17:58 +02:00
Bjorn L
39853d79ce 🔧 Change versions to v0.4.0 2022-05-18 22:15:03 +02:00
Bjorn L
8530550347 🔧 Change versions to v0.4.0 2022-05-18 22:14:27 +02:00
Thomas Camlong
ba8e9ef63c Merge branch 'dev' into weather-module 2022-05-18 22:14:01 +02:00
ajnart
119f2d7e51 Add a proceudally generated options manager
This allows for options in settings generated based on their name in module config. Very important change 🧙
2022-05-18 22:11:37 +02:00
ajnart
b0be26300e 💄 Update AppShell menu and item styling
Co-authored-by: Bjorn L. <walkxnl@gmail.com>
2022-05-18 22:10:31 +02:00
ajnart
0400188ea7 🚚 Move the update indicator to the Footer
Co-authored-by: Bjorn L. <walkxnl@gmail.com>
2022-05-18 22:09:13 +02:00
ajnart
879581224a 🔥 Remove update indicator from settings
Co-authored-by: Bjorn L. <walkxnl@gmail.com>
2022-05-18 22:08:09 +02:00
ajnart
7e5602c881 🚨 Update eslint config
Co-authored-by: Bjorn L. <walkxnl@gmail.com>
2022-05-18 22:07:28 +02:00
Bjorn L
4870ea3e40 📝 Adds Docs for the Weather Module 2022-05-18 16:58:06 +02:00
Bjorn L
61c55acd50 📝 Adds Request Icons section 2022-05-18 16:55:48 +02:00
Thomas Camlong
c45421d27e Merge branch 'dev' into weather-module 2022-05-18 10:24:16 +02:00
Thomas "ajnart" Camlong
b396d2604f 🚑 Critical hotfix : Compilation failed 2022-05-18 10:23:18 +02:00
Thomas "ajnart" Camlong
28b6dcd1db 📦 Update deps 2022-05-18 10:10:42 +02:00
Thomas "ajnart" Camlong
1dd74ea7da 🐛 Try to fix module compilation 2022-05-17 22:59:02 +02:00
Thomas "ajnart" Camlong
64923b03d9 🎨 Fix architecture for CI 2022-05-17 22:59:02 +02:00
Thomas "ajnart" Camlong
2ba9d517a8 Improve weather module 2022-05-17 22:59:02 +02:00
Aj - Thomas
471a9f7407 Update page title 2022-05-17 22:59:02 +02:00
Aj - Thomas
bdf871b476 💄 � Update weather module styling 2022-05-17 22:59:02 +02:00
Aj - Thomas
ab860eeea1 � Weather module improvements 2022-05-17 22:59:02 +02:00
Thomas "ajnart" Camlong
50d760f3b8 Prepare for v0.3.2 2022-05-17 21:24:10 +02:00
Thomas "ajnart" Camlong
73d06e15fb Update tests for storybook 2022-05-17 21:04:19 +02:00
Thomas "ajnart" Camlong
49d57024b9 Advancement on the weather widget 2022-05-17 21:04:19 +02:00
Thomas "ajnart" Camlong
31deb5010f 💄 Improve styling of modules 2022-05-17 21:04:18 +02:00
Thomas "ajnart" Camlong
e86eb7798f 🚧 Set up the structure for the weather module 2022-05-17 21:04:16 +02:00
Thomas Camlong
2896423766 Add ping service module
 Add ping service module resolves #78
2022-05-17 20:59:44 +02:00
Thomas "ajnart" Camlong
696d0c582d 🐛 Clear the search input on search
Resolves #125
2022-05-17 20:58:55 +02:00
ajnart
e94cae620a Rever b7e8c51b29
Does not work. Apparently
2022-05-17 04:19:59 +02:00
ajnart
c9c6f2b0c9 Add ping service module
Resolves #78
2022-05-17 04:02:14 +02:00
ajnart
b8fe799ac6 ⚰️ Remove dead code for the settings
I turned the settings into a module in 4cb8539143
2022-05-17 02:07:38 +02:00
ajnart
4cb8539143 Make the search bar a module
Resolves #118
2022-05-17 02:04:44 +02:00
ajnart
16b86870c4 🏗️ Fix small bug in code arch, forgot the key 2022-05-17 02:03:52 +02:00
ajnart
d4ce2a3ed6 🏷️ Update types for the SearchBar 2022-05-17 01:52:43 +02:00
ajnart
a474f3e4ee 🥅 Add 404 to catch errors
Reduce the ammount of visible errors by adding a 404 page.
2022-05-17 01:44:26 +02:00
ajnart
9a49fbb747 💄 Update AppShelf UI 2022-05-17 01:43:40 +02:00
ajnart
e3d47d78e0 🐛 Add a delay before opening search results
Resolves #115
2022-05-17 01:23:19 +02:00
ajnart
d62189f086 💄 Remove version from logo and add it in footer
resolves #116
2022-05-17 01:01:26 +02:00
ajnart
bb1b3d7d9a Merge branch 'dev' of github.com:/ajnart/homarr into dev 2022-05-17 00:55:44 +02:00
ajnart
13aeeefb22 🐛 Fix AddAppShelfItem image fit not properly set
Resolves #117
2022-05-17 00:55:24 +02:00
ajnart
8cdc9c3e29 🎨 Use user prefered theme 2022-05-17 00:42:27 +02:00
ajnart
3e31a4d38e 💄 Better style events in the calendar 2022-05-17 00:42:27 +02:00
ajnart
0cb3db6b89 📦 Upgrade package 2022-05-17 00:42:27 +02:00
ajnart
b7e8c51b29 🎨 Use user prefered theme 2022-05-17 00:19:41 +02:00
ajnart
e60db9f57a 💄 Better style events in the calendar 2022-05-17 00:19:24 +02:00
ajnart
2c707e86aa 📦 Upgrade package 2022-05-17 00:18:22 +02:00
Thomas Camlong
5c6541e1a7 🚀 Patch v0.3.1
Patch v0.3.1
2022-05-16 23:50:54 +02:00
Bjorn L
da81783c8e 🧑‍💻 Adds release note template 2022-05-16 23:11:48 +02:00
Chris
6a90a124b3 Update docker.yml 2022-05-16 23:03:16 +02:00
Chris
bd6edbbec6 Reverting changes from c593334
Changing to back to how it was before c593334
2022-05-16 23:03:16 +02:00
Chris
53ab06f97e Update docker_dev.yml 2022-05-16 23:03:16 +02:00
Chris
6904018585 temp edit 2 2022-05-16 23:03:16 +02:00
Chris
8c14b3ccf9 temp edit to test workflow 2022-05-16 23:03:16 +02:00
Chris
8557820e6e Update docker_dev.yml 2022-05-16 23:03:16 +02:00
Walkx
3782499da5 💚 Update .github/workflows/docker_dev.yml
Co-authored-by: Thomas Camlong <49837342+ajnart@users.noreply.github.com>
2022-05-16 23:03:16 +02:00
Walkx
97ca45964a 💚 Update .github/workflows/docker_dev.yml
Co-authored-by: Thomas Camlong <49837342+ajnart@users.noreply.github.com>
2022-05-16 23:03:16 +02:00
Walkx
7fa464b38f 💚 Update .github/workflows/docker.yml
Co-authored-by: Thomas Camlong <49837342+ajnart@users.noreply.github.com>
2022-05-16 23:03:16 +02:00
Chris
fe5fa99b4a 💚 Fixed CI fail on PR from fork
Fixed CI failing when a PR is made from a fork due to user from fork not having the permission packages: write. CI will now check if it has write perms before push built docker image.
2022-05-16 23:03:16 +02:00
Chris
9bf8b337f6 test CI fix 4 2022-05-16 23:03:16 +02:00
Chris
06caa2ca5e test CI fix 3 2022-05-16 23:03:16 +02:00
Chris
1145ee39b6 test CI fix 2 2022-05-16 23:03:16 +02:00
Chris
68111616fe test CI fix 2022-05-16 23:03:16 +02:00
Chris
7662c11bb5 💚 CI won't push to docker on PRs from forks
If not from fork it still will. Since that's how it was set by ajnart.
2022-05-16 23:03:16 +02:00
Chris
1aaa575480 💚 Stop running CI when ignored files are updated
CI will now not run when some files are updated that are not related to building.
2022-05-16 23:03:16 +02:00
Chris
3529e46b11 🔥 Remove unneeded lines
Removed adduser and addgroup since they aren't needed.
2022-05-16 23:03:16 +02:00
ajnart
006b1a61bf 💄 Update styling of AppShelf 2022-05-16 23:03:16 +02:00
ajnart
f5eb36ff00 💄 Update styling of AppShelf 2022-05-16 23:03:16 +02:00
Aj - Thomas
a97c9b0c0f 💄 Update styling 2022-05-16 23:03:16 +02:00
Aj - Thomas
08daeb87bc � Header styling 2022-05-16 23:03:16 +02:00
Aj - Thomas
ebc7ba9684 � Update search bar styling 2022-05-16 23:03:16 +02:00
Aj - Thomas
8392dcef20 � Module styling 2022-05-16 23:03:16 +02:00
Aj - Thomas
20a37b678f Update header styling 2022-05-16 23:03:16 +02:00
Aj - Thomas
d3bd894c2a 🙈 Add configs to gitingore 2022-05-16 23:03:16 +02:00
Aj - Thomas
e75ff14975 🔥 Remove search bar from index 2022-05-16 23:03:16 +02:00
Aj - Thomas
ab1e2a32a0 🔥 Remove Navbar 2022-05-16 23:03:16 +02:00
Aj - Thomas
22cd5c8b93 Add search bar in top bar 2022-05-16 23:03:16 +02:00
Aj - Thomas
5c8b1c4fc4 Add all components in Aside bar 2022-05-16 23:03:16 +02:00
Aj - Thomas
a71b50e33f 📄 Documenting keybinds for theme switch 2022-05-16 23:03:16 +02:00
Aj - Thomas
d4c1148025 💄 Style the modal for adding a service 2022-05-16 23:03:16 +02:00
Aj - Thomas
0d11244506 ♻ Rework the search bar 2022-05-16 23:03:16 +02:00
Aj - Thomas
e786b1e44f ✏ Fix typos 2022-05-16 23:03:16 +02:00
Aj - Thomas
509873db55 💄 App shell styling
The modal now looks a little bit better
2022-05-16 23:03:16 +02:00
Aj - Thomas
c5178ee288 💄 Styling and responsiveness
Co-authored-by: Walkx <walkxnl@gmail.com>
2022-05-16 23:03:16 +02:00
Walkx
4045628166 🔥 Remove this random href 2022-05-16 23:03:16 +02:00
Thomas Camlong
f8b2d64a26 📝 Updates documentation
Thanks to @walkxcode
2022-05-16 22:53:36 +02:00
Walkx
62ba99f6cd 📝 Updates ToC and adds Back to Top link 2022-05-16 16:59:08 +02:00
Walkx
2fad4d06bd 📝 Adds Known Issues 2022-05-16 16:58:20 +02:00
Walkx
c9e58e17da 📝 Update Docs 2022-05-16 16:17:41 +02:00
Walkx
8e03719a51 📝 Update README.md
Co-authored-by: Thomas Camlong <49837342+ajnart@users.noreply.github.com>
2022-05-16 16:15:04 +02:00
Walkx
c4df55060b 📝 Update Docs 2022-05-16 15:43:58 +02:00
Walkx
47c636e810 📝 Updates documentation 2022-05-16 01:30:35 +02:00
Walkx
38d18fc433 🚀Change demo page link 2022-05-15 22:45:55 +02:00
Aj - Thomas
7b6fd5ed6a 🚀 🔖 Release v0.3.0 2022-05-15 19:50:17 +02:00
Walkx
8603395329 ✏️ Remove space because not everyone is french 2022-05-15 19:43:16 +02:00
Thomas "ajnart" Camlong
468b1912b8 🔖 Upgrade Homarr to v0.3.0 2022-05-15 19:32:26 +02:00
Thomas "ajnart" Camlong
c243256180 💄 Improve layout styling 2022-05-15 19:32:02 +02:00
Thomas "ajnart" Camlong
a9370881f4 💄 Improve styling of modules 2022-05-15 19:17:16 +02:00
Thomas "ajnart" Camlong
81a63cd1b7 👷 Add back raw dev tag 2022-05-15 19:13:42 +02:00
Thomas "ajnart" Camlong
f03219fd42 👷 Fix branches for CI pushes 2022-05-15 18:59:27 +02:00
Walkx
2e8f3d7d1f Merge pull request #102 from ajnart/better-tooltip
✏️ Improves the searchbar tooltip
2022-05-15 18:52:23 +02:00
Walkx
9ddb08cc9c ✏️ Improves the searchbar tooltip 2022-05-15 15:57:58 +02:00
Walkx
d44eed6581 🔥 Removes fixed known issues 2022-05-15 14:46:46 +02:00
Thomas "ajnart" Camlong
59b9baa579 Add custom search querry url in settings menu 2022-05-15 13:09:25 +02:00
Thomas "ajnart" Camlong
027ac94e80 🍱 Update logo and favicon 2022-05-15 12:42:53 +02:00
Aj - Thomas
b1cec402c3 👷 Remove test name from GitHub CI 2022-05-14 22:27:15 +02:00
Aj - Thomas
f2a7f83e12 ️ Work on responsiveness for the AppShelf
Fixes #1, Fixes #42, Fixes #82, Fixes #85
2022-05-14 21:45:54 +02:00
Thomas "ajnart" Camlong
477ff8241e 📱 More work on responsiveness 2022-05-14 21:42:30 +02:00
Thomas "ajnart" Camlong
95bae5929c 💄 Improve minor styles 2022-05-14 21:42:11 +02:00
Thomas "ajnart" Camlong
4545a6bbf5 Rework header, footer, logo
Fixes Align Homarr logo to the left #96
2022-05-14 21:41:30 +02:00
Aj - Thomas
b3a97431b3 Merge pull request #94 from ajnart/new-logo
🍱️ Update logo and add better accessibility
2022-05-14 20:02:13 +02:00
Aj - Thomas
b757046de8 Merge pull request #91 from c00ldude1oo/master
📝 Add build status badges
2022-05-14 20:00:40 +02:00
Walkx
0d1a1b899a 🧑‍💻 Adds template for ideas 2022-05-14 16:50:54 +02:00
Chris
71be4101a5 📝 Add Badges. Moved under name
Removed docker dev build status badge
Added docker pulls(downloads) badge
Added Release version badge
moved them under name
2022-05-14 10:27:40 -04:00
Walkx
db453d0f74 ✏️ Fixes yaml issue
Removes the : in the description
2022-05-14 13:56:10 +02:00
Walkx
1d450428c9 🧑‍💻 Improves feature request issue template 2022-05-14 13:55:20 +02:00
WalkxCode
e16601d113 ️ (favicon): Changes the favicon to .png
This improves the accessibility because some browsers don't support .svg. And some services fetch their icons from favicons!
2022-05-14 13:45:22 +02:00
WalkxCode
56b52d0808 🍱 (logo): Adds new logo & changes favicon
favicon will need to be changed from .svg to .png in code
2022-05-14 13:42:32 +02:00
Walkx
3fc0a2c64f 🧑‍💻 Adds back label & idiot check 2022-05-14 13:35:29 +02:00
Thomas "ajnart" Camlong
f3f2006f14 💄 Improving style 2022-05-14 11:40:05 +02:00
Thomas "ajnart" Camlong
2139f48df3 Work on responsiveness for the AppShelf 2022-05-14 11:19:04 +02:00
Thomas "ajnart" Camlong
09483ada01 👷 Update CI image name for easier deployment 2022-05-14 11:19:04 +02:00
Thomas "ajnart" Camlong
c593334be8 👷 Update CI image name for easier deployment 2022-05-14 11:18:50 +02:00
Thomas "ajnart" Camlong
af7d078293 👷 Fix CI 2022-05-14 10:28:24 +02:00
Thomas "ajnart" Camlong
96ab5dd9a7 🐛 Fix storybook and remove Jest 2022-05-14 10:10:18 +02:00
Thomas "ajnart" Camlong
9a3ef24619 💄 SearchBar styling 2022-05-14 10:09:22 +02:00
Thomas "ajnart" Camlong
3287752e45 ⚰️ Remove dead code 2022-05-14 10:08:26 +02:00
Chris
1c560f9a5b 📝 Add build status badges
Added build status badges 
made image bit bigger
2022-05-14 02:56:39 -04:00
Aj - Thomas
534cf3571a 🐳 Fix docker build 2022-05-14 01:29:50 +02:00
Aj - Thomas
cf17aa61cc Update basic layout 2022-05-14 01:19:12 +02:00
Aj - Thomas
32f81cefe7 🏗️ 💥 Change the whole folder structure.
Now using src as a subfolder to the source files
2022-05-14 01:14:56 +02:00
Aj - Thomas
15bb08e5f3 Merge branch 'master' into dev 2022-05-14 00:56:38 +02:00
Aj - Thomas
0a6346b383 📝 Update README.md 2022-05-14 00:55:04 +02:00
Walkx
43ee6899ae 📝 Adds known issues 2022-05-14 00:55:04 +02:00
Walkx
5159edbea1 📝 Adds documentation for volume mounting 2022-05-14 00:55:04 +02:00
Aj - Thomas
79dd1f3296 🔥 Remove labels from issue templates 2022-05-14 00:55:04 +02:00
Aj - Thomas
7a3ac58e4d 🔥 Remove labels from issue templates 2022-05-14 00:55:03 +02:00
Chris
527eb373a9 👷 Add dev builder
New workflow to build dev branch on push/pulls and upload to ghcr.io with dev tag
2022-05-14 00:52:11 +02:00
Aj - Thomas
16ecf59196 📝 Adds known issues
Thanks to @walkxcode
2022-05-13 23:29:49 +02:00
Aj - Thomas
66dd59f076 📝 Update README.md 2022-05-13 23:29:30 +02:00
Aj - Thomas
e95168288c 📝 Adds documentation for volume mounting
Thanks to @walkxcode
2022-05-13 23:26:53 +02:00
Aj - Thomas
4f5121b337 🔥 Remove labels from issue templates 2022-05-13 22:14:12 +02:00
Aj - Thomas
f0152d84d8 🔥 Remove labels from issue templates 2022-05-13 22:13:57 +02:00
Walkx
cc324dd8ec 📝 Adds known issues 2022-05-13 20:56:34 +02:00
Walkx
d332245cfc 📝 Adds documentation for volume mounting 2022-05-13 18:58:06 +02:00
Aj - Thomas
ac9ebe4160 Fix docker image volume mounting
Fixes #62 [🐛 Bug] Permission denied when writing configs
2022-05-13 18:14:08 +02:00
Aj - Thomas
b51e8861b7 Update README.md 2022-05-13 17:31:51 +02:00
Aj - Thomas
51fcba7109 Update README.md 2022-05-13 17:29:03 +02:00
Aj - Thomas
ce3afc6916 Delete preview.png 2022-05-13 17:19:43 +02:00
Aj - Thomas
fb1d2c3e80 Merge pull request #71 from ajnart/dev-experience
🧑‍💻 Aims to get 100% of the Community Standards
2022-05-13 16:58:58 +02:00
Aj - Thomas
d372b66e44 Update feature-request.yml 2022-05-13 16:24:02 +02:00
Walkx
4417168ef4 🔥 Remove label from title 2022-05-13 16:23:29 +02:00
Walkx
9a4fdc6f01 🔥 Remove label from title 2022-05-13 16:23:17 +02:00
Aj - Thomas
405537202d Update module.yml 2022-05-13 16:20:44 +02:00
Aj - Thomas
873d590606 Update bug.yml 2022-05-13 16:20:32 +02:00
Aj - Thomas
463670ebdf Update feature-request.yml 2022-05-13 16:20:13 +02:00
Walkx
eeb3d4eb23 🔥 Remove auto-assign for bugs 2022-05-13 15:32:49 +02:00
Walkx
651003f1d7 📝 Adds preview of Homarr
(Temporary until we have good video preview (.mov or .gif))
2022-05-13 14:17:58 +02:00
Walkx
2ee923d773 📝 Adds preview for docs 2022-05-13 14:16:54 +02:00
Aj - Thomas
e9c758b63d Create module.yml 2022-05-13 14:10:18 +02:00
Walkx
6a462f640a 📝 Adds set of rules for modules 2022-05-13 13:50:23 +02:00
Walkx
6120eb53cd 🧑‍💻 Adds pull request template 2022-05-13 13:41:56 +02:00
Walkx
a3a3846848 📝 Adds Contributor Covenant Code of Conduct 2022-05-13 13:35:01 +02:00
Walkx
f547c56c1f 📝 Updates Readme to point to Contribution Guidelines 2022-05-13 13:32:00 +02:00
Walkx
242d09e932 🧑‍💻 Adds contribution guide 2022-05-13 13:29:32 +02:00
Aj - Thomas
036922328f Merge pull request #66 from ajnart/note
fix: Make note look better
2022-05-13 13:16:20 +02:00
Aj - Thomas
c7257b8c2f Merge pull request #65 from ajnart/discordcta
fix: Center align Discord CTA
2022-05-13 13:16:00 +02:00
Walkx
eecd8b0faa fix: Make note look better 2022-05-13 13:06:13 +02:00
Walkx
63940ab5ff fix: Center align Discord CTA 2022-05-13 13:03:33 +02:00
Aj - Thomas
62f62db17c Update README.md 2022-05-13 10:37:36 +02:00
765 changed files with 36587 additions and 14665 deletions

View File

@@ -2,5 +2,8 @@ Dockerfile
.dockerignore
node_modules
npm-debug.log
README.md
*.md
.git
.github
LICENSE
docs/

8
.editorconfig Normal file
View File

@@ -0,0 +1,8 @@
root = true
[*]
end_of_line = lf
indent_size = 2
indent_style = space
trim_trailing_whitespace = true
insert_final_newline = true

View File

@@ -3,10 +3,9 @@ module.exports = {
'mantine',
'plugin:@next/next/recommended',
'plugin:jest/recommended',
'plugin:storybook/recommended',
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
],
plugins: ['testing-library', 'jest', 'react-hooks', 'react', 'unused-imports'],
overrides: [
@@ -20,12 +19,14 @@ module.exports = {
},
rules: {
'react/react-in-jsx-scope': 'off',
"unused-imports/no-unused-imports": "warn",
"@typescript-eslint/no-unused-vars": "off",
"@typescript-eslint/no-unused-imports": "off",
"@typescript-eslint/no-unused-expressions": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-shadow": "off",
"@typescript-eslint/no-use-before-define": "off",
'react/no-children-prop': 'off',
'unused-imports/no-unused-imports': 'warn',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-unused-imports': 'off',
'@typescript-eslint/no-unused-expressions': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-shadow': 'off',
'@typescript-eslint/no-use-before-define': 'off',
'@typescript-eslint/no-non-null-assertion': 'off',
},
};

13
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: ajnart
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View File

@@ -1,9 +1,7 @@
name: 🐛 Bug Report
description: Report something that's broken, or not working like intented!
title: '[🐛 Bug] <title>'
title: '<title>'
labels: ['🐛 Bug']
assignees:
- ajnart
body:
- type: dropdown
id: environment

View File

@@ -1,14 +1,13 @@
name: ✨ Feature Request
description: Request a feature to help improve Homarr!
title: '[✨ Feature] <title>'
title: '<title>'
labels: ['✨ Feature']
assignees:
- ajnart
body:
- type: textarea
id: feature
attributes:
label: Describe the feature you would like to see
label: Description
description: Describe the feature you would like to see. Tell us how you imagine it and try to provide as much useful information as possible. **PLEASE** use images/screenshots, include details about X & Y when requesting changes like X & Y service does, make your description atleast 300 characters. Having an unclear issue with too little detail will result in your issue being marked as invalid and closed.
placeholder: An outline of the feature you would like to see implemented, include as much detail as possible!
validations:
required: true

23
.github/ISSUE_TEMPLATE/idea.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: 🤔 Idea
description: Tell us your idea! We may implement it.
title: '<title>'
labels: ['🤔 Idea']
body:
- type: textarea
id: feature
attributes:
label: Description
description: Tell us your idea! Please add as much details as possible.
placeholder: Maybe move ... to ...! Maybe add the version of Homarr somewhere...! Etc.
validations:
required: true
- type: checkboxes
id: idiot-check
attributes:
label: Please tick the boxes
description: Before submitting, please ensure that
options:
- label: You've read the [docs](https://github.com/ajnart/homarr#readme)
required: true
- label: You've checked for [duplicate issues](https://github.com/ajnart/homarr/issues)
required: true

23
.github/ISSUE_TEMPLATE/module.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: 🏗️ Module request
description: Request for a module to be added / an integration with you favourite service !
title: '<title>'
body:
- type: textarea
id: name
attributes:
label: Name the integration
description: Please describe the name of the Module/Integration you want to see and info that could help us with adding it. For example screenshots/mockups for inspiration. API links or already existing JavaScript/TypeScript integration of the API
validations:
required: true
- type: checkboxes
id: idiot-check
attributes:
label: Please tick the boxes
description: Before submitting, please ensure that
options:
- label: You've read the [docs](https://github.com/ajnart/homarr#readme)
required: true
- label: You've checked for [duplicate issues](https://github.com/ajnart/homarr/issues)
required: true
- label: You're not just putting an idea out there and actually give usefull information about how to implement your module idea
required: true

16
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,16 @@
*Thank you for contributing to Homarr! So that your Pull Request can be handled effectively, please populate the following fields (delete sections that are not applicable)*
### Category
> One of: Bugfix / Feature / Code style update / Refactoring Only / Build related changes / Documentation / Other (Please specify!)
### Overview
> Briefly outline your new changes...
### Issue Number _(if applicable)_
> Related issue: #00
### New Vars _(if applicable)_
> If you've added any new build scripts, environmental variables, config file options, dependency please outline here.
### Screenshot _(if applicable)_
> If you've introduced any significant UI changes, please include a screenshot.

27
.github/release-note.md vendored Normal file
View File

@@ -0,0 +1,27 @@
## 🦞 Homarr [v0.0.0](https://github.com/ajnart/homarr/compare/v0.0.0...v0.0.0) (2022-01-01)
<!-- Small release message -->
<!-- Bigger announcement marked in bold -->
### Upgrade Steps
*Upgrading without a mounted config? Make sure to download your config from the settings first! You can add it back later by drag and dropping it into your browser.*
* `docker pull ghcr.io/ajnart/homarr:latest`
* `docker stop [container_id]`
* `docker rm [container_id]`
* `docker run --name homarr -p 7575:7575 -v /data/docker/homarr:/app/data/configs -d ghcr.io/ajnart/homarr:latest`
* *(or use our [docker_compose.yml](https://github.com/ajnart/homarr#-installation))*
### Breaking Changes
### New Features
### Bug Fixes
### UI Changes
### GitHub Changes
### Other Changes
_**Special thanks to our contributors: @ajnart, @c00ldude1oo, @walkxcode, and of course all people using our project.**_

View File

@@ -1,96 +1,87 @@
name: Build and publish Docker image
name: Master CI
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
on:
push:
branches: [master]
paths-ignore:
- '.github/**'
- '**.md'
tags:
- v*
workflow_dispatch:
env:
IMAGE_NAME: homarr
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
# Push image to GitHub Packages.
# See also https://docs.docker.com/docker-hub/builds/
build:
runs-on: ubuntu-latest
steps:
- name: Setup
uses: actions/setup-node@v3
- name: Checkout
uses: actions/checkout@v3
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Yarn cache
uses: actions/cache@v3
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: ${{ runner.os }}-yarn-
- name: Nextjs cache
uses: actions/cache@v2
with:
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
path: |
~/.npm
${{ github.workspace }}/.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
- run: yarn install --frozen-lockfile
- run: yarn build
- name: Cache build output
uses: actions/cache@v2
id: restore-build
with:
path: |
./next.config.js
./pages/
./public/
./.next/static/
./.next/standalone/
./packages.jsan
key: ${{ github.sha }}
docker:
needs: [build]
yarn_install_and_build:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- name: Setup
uses: actions/setup-node@v3
- name: Checkout
uses: actions/checkout@v2
- uses: actions/cache@v2
id: restore-build
uses: actions/checkout@v3
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
- uses: actions/cache@v3
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Restore NextJS cache
uses: actions/cache@v2
with:
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
path: |
./next.config.js
./pages/
./public/
./.next/static/
./.next/standalone/
./packages.jsan
key: ${{ github.sha }}
${{ github.workspace }}/.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
- run: yarn install --immutable
- run: yarn build
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
# list of Docker images to use as base name for tags
images: ghcr.io/${{ github.repository }}
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# generate Docker tags based on the following events/attributes
tags: |
type=raw,value=latest
type=pep440,pattern={{version}}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ghcr.io
@@ -102,6 +93,8 @@ jobs:
with:
platforms: linux/amd64,linux/arm64,linux/arm/v7
context: .
push: ${{ github.event_name != 'pull_request' }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

109
.github/workflows/docker_dev.yml vendored Normal file
View File

@@ -0,0 +1,109 @@
name: Development CI
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
on:
push:
branches: [dev]
paths-ignore:
- '.github/**'
- '**.md'
pull_request:
paths-ignore:
- '.github/**'
- '**.md'
workflow_dispatch:
inputs:
tag:
required: true
description: 'Tag to deploy to'
env:
# Use docker.io for Docker Hub if empty
REGISTRY: ghcr.io
# github.repository as <account>/<repo>
IMAGE_NAME: ${{ github.repository }}
jobs:
# Push image to GitHub Packages.
# See also https://docs.docker.com/docker-hub/builds/
yarn_install_and_build:
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- name: Setup
uses: actions/setup-node@v3
- name: Checkout
uses: actions/checkout@v3
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn config get cacheFolder)"
- uses: actions/cache@v3
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Restore NextJS cache
uses: actions/cache@v2
with:
# See here for caching with `yarn` https://github.com/actions/cache/blob/main/examples.md#node---yarn or you can leverage caching with actions/setup-node https://github.com/actions/setup-node
path: |
${{ github.workspace }}/.next/cache
# Generate a new cache whenever packages or source files change.
key: ${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-${{ hashFiles('**.[jt]s', '**.[jt]sx') }}
# If source files changed but packages didn't, rebuild from a prior cache.
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
- run: yarn install --immutable
- run: yarn build
- name: Docker meta
if: github.event_name != 'pull_request'
id: meta
uses: docker/metadata-action@v4
with:
# list of Docker images to use as base name for tags
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
# generate Docker tags based on the following events/attributes
tags: |
type=ref,event=pr
type=raw,value=${{ github.event.inputs.tag }}, prefix=test-,enable=${{ github.event.inputs.tag != '' }}
tpye=raw,value=dev,priority=1,enable=${{ github.event.inputs.tag == '' }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
if: github.event_name != 'pull_request'
uses: docker/build-push-action@v3
with:
platforms: linux/amd64,linux/arm64,linux/arm/v7
context: .
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max

13
.gitignore vendored
View File

@@ -35,4 +35,15 @@ yarn-error.log*
*.tsbuildinfo
# storybook
storybook-static
storybook-static
data/configs
# https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored
# Yarn v2
.pnp.*
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions

View File

@@ -1,34 +0,0 @@
module.exports = {
stories: ['../components/**/*.story.mdx', '../components/**/*.story.*'],
addons: [
'storybook-dark-mode',
'@storybook/addon-links',
'@storybook/addon-essentials',
{
name: 'storybook-addon-turbo-build',
options: { optimizationLevel: 2 },
},
],
typescript: {
check: false,
reactDocgen: false,
},
framework: '@storybook/react',
features: { emotionAlias: false },
webpackFinal: async (config, { configType }) => {
// `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION'
// You can change the configuration based on that.
// 'PRODUCTION' is used when building the static version of storybook.
// https://github.com/polkadot-js/extension/issues/621#issuecomment-759341776
// framer-motion uses the .mjs notation and we need to include it so that webpack will
// transpile it for us correctly (enables using a CJS module inside an ESM).
config.module.rules.push({
test: /\.mjs$/,
include: /node_modules/,
type: 'javascript/auto',
});
// Return the altered config
return config;
},
};

View File

@@ -1,21 +0,0 @@
import { useDarkMode } from 'storybook-dark-mode';
import { MantineProvider, ColorSchemeProvider } from '@mantine/core';
import { NotificationsProvider } from '@mantine/notifications';
export const parameters = { layout: 'fullscreen' };
function ThemeWrapper(props: { children: React.ReactNode }) {
return (
<ColorSchemeProvider colorScheme="light" toggleColorScheme={() => {}}>
<MantineProvider
theme={{ colorScheme: useDarkMode() ? 'dark' : 'light' }}
withGlobalStyles
withNormalizeCSS
>
<NotificationsProvider>{props.children}</NotificationsProvider>
</MantineProvider>
</ColorSchemeProvider>
);
}
export const decorators = [(renderStory: Function) => <ThemeWrapper>{renderStory()}</ThemeWrapper>];

28
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,28 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Next.js: debug server-side",
"type": "node-terminal",
"request": "launch",
"command": "yarn dev"
},
{
"name": "Next.js: debug client-side",
"type": "chrome",
"request": "launch",
"url": "http://localhost:3000"
},
{
"name": "Next.js: debug full stack",
"type": "node-terminal",
"request": "launch",
"command": "yarn dev",
"serverReadyAction": {
"pattern": "started server on .+, url: (https?://.+)",
"uriFormat": "%s",
"action": "debugWithChrome"
}
}
]
}

786
.yarn/releases/yarn-3.2.1.cjs vendored Normal file

File diff suppressed because one or more lines are too long

5
.yarnrc Normal file
View File

@@ -0,0 +1,5 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
yarn-path ".yarn/releases/yarn-1.22.19.cjs"

3
.yarnrc.yml Normal file
View File

@@ -0,0 +1,3 @@
nodeLinker: node-modules
yarnPath: .yarn/releases/yarn-3.2.1.cjs

128
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
ajnart@pm.me.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

106
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,106 @@
# Contributing to Homarr
First off, thanks for taking the time to contribute! ❤️
All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 🎉
> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about:
> - Star the project
> - Tweet about it
> - Refer this project in your project's readme
> - Mention the project at local meetups and tell your friends/colleagues
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [I Have a Question](#i-have-a-question)
- [I Want To Contribute](#i-want-to-contribute)
- [Reporting Bugs](#reporting-bugs)
- [Suggesting Enhancements](#suggesting-enhancements)
- [Styleguides](#styleguides)
- [Commit Messages](#commit-messages)
## Code of Conduct
This project and everyone participating in it is governed by the
[Homarr Code of Conduct](https://github.com/ajnart/homarr/blob/master/CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report unacceptable behavior
to [@ajnart](https://github.com/ajnart).
## I Have a Question
> If you want to ask a question, we assume that you have read the available [Documentation](https://github.com/ajnart/homarr/#readme).
Before you ask a question, it is best to search for existing [Issues](https://github.com/ajnart/homarr/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first.
If you then still feel the need to ask a question and need clarification, we recommend the following:
- Open an [Issue](https://github.com/ajnart/homarr/issues/new).
- Provide as much context as you can about what you're running into.
- Provide project and platform versions (nodejs, docker, etc), depending on what seems relevant.
We will then take care of the issue as soon as possible.
## I Want To Contribute
> ### Legal Notice
> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license.
### Reporting Bugs
#### Before Submitting a Bug Report
A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible.
- Make sure that you are using the latest version.
- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](https://github.com/ajnart/homarr/#readme). If you are looking for support, you might want to check [this section](#i-have-a-question)).
- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](https://github.com/ajnart/homarr/issues?q=is%3Aopen+is%3Aissue+label%3A%22%F0%9F%90%9B+Bug%22).
- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue.
- Collect information about the bug:
- Stack trace (Traceback)
- OS, Platform and Version (Windows, Linux, macOS, x86, ARM)
- Version of yarn, nodejs, docker, npm, next, depending on what seems relevant.
- Possibly your input and the output
- Can you reliably reproduce the issue? And can you also reproduce it with older versions?
#### How Do I Submit a Good Bug Report?
> You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to ajnart@pm.me.
We use GitHub issues to track bugs and errors. If you run into an issue with the project:
- Open an [Issue](https://github.com/ajnart/homarr/issues/new).
- Explain the behavior you would expect and the actual behavior.
- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case.
- Provide the information you collected in the previous section.
### Suggesting Enhancements
This section guides you through submitting an enhancement suggestion for Homarr, **including completely new features and minor improvements to existing functionality**. Following these guidelines will help maintainers and the community to understand your suggestion and find related suggestions.
#### Before Submitting an Enhancement
- Make sure that you are using the latest version.
- Read the [documentation](https://github.com/ajnart/homarr/#readme) carefully and find out if the functionality is already covered, maybe by an individual configuration.
- Perform a [search](https://github.com/ajnart/homarr/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library.
#### How Do I Submit a Good Enhancement Suggestion?
Enhancement suggestions are tracked as [GitHub issues](https://github.com/ajnart/homarr//issues).
- Use a **clear and descriptive title** for the issue to identify the suggestion.
- Provide a **step-by-step description of the suggested enhancement** in as many details as possible.
- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you.
- You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. <!-- this should only be included if the project has a GUI -->
- **Explain why this enhancement would be useful** to most Homarr users. You may also want to point out the other projects that solved it better and which could serve as inspiration.
## Styleguides
### Commit Messages
Homarr uses [GitMoji](https://gitmoji.dev/).
We would appreciate it if everyone keeps their commit messages withing these rulings.

View File

@@ -1,20 +1,21 @@
FROM node:16-alpine
WORKDIR /app
ENV NEXT_TELEMETRY_DISABLED 1
ENV NODE_ENV production
RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
COPY /next.config.js ./
COPY /public ./public
COPY /package.json ./package.json
COPY next.config.js ./
COPY public ./public
COPY package.json ./package.json
# Automatically leverage output traces to reduce image size
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --chown=nextjs:nodejs /.next/standalone ./
COPY --chown=nextjs:nodejs /.next/static ./.next/static
COPY .next/standalone ./
COPY .next/static ./.next/static
USER nextjs
EXPOSE 7575
ENV PORT 7575
VOLUME /app/data/configs
CMD ["node", "server.js"]

207
README.md
View File

@@ -1,86 +1,203 @@
<p align = "center">
<h3 align = "center"> Homarr <h3>
<p align = "center">
A homepage for <i>your</i> server.
<br/>
<a href = "https://github.com/ajnart/homarr/deployments/activity_log?environment=Production" > <strong> Demo ↗️ </strong> </a> • <a href = "#install" > <strong> Install ➡️ </strong> </a>
<br />
<br />
<a href = "https://discord.gg/aCsmEV5RgA" > <img src="https://discordapp.com/api/guilds/972958686051962910/widget.png?style=shield" > </a>
</p>
<!-- Project Title -->
<h1 align="center">Homarr</h1>
<!-- Badges -->
<p align="center">
<img src="https://img.shields.io/github/stars/ajnart/homarr?label=%E2%AD%90%20Stars&style=flat-square?branch=master&kill_cache=1%22">
<a href="https://github.com/ajnart/homarr/releases/latest">
<img alt="Latest Release (Semver)" src="https://img.shields.io/github/v/release/ajnart/homarr?label=%F0%9F%9A%80%20Release">
</a>
<a href="https://github.com/ajnart/homarr/actions/workflows/docker.yml">
<img title="Docker CI Status" src="https://github.com/ajnart/homarr/actions/workflows/docker.yml/badge.svg" alt="CI Status">
</a>
<a href=https://crowdin.com/project/homarr>
<img title="Translations" src="https://badges.crowdin.net/homarr/localized.svg" />
</a>
<a href="https://discord.gg/aCsmEV5RgA">
<img title="Discord" src="https://discordapp.com/api/guilds/972958686051962910/widget.png?style=shield">
</a>
</p>
# 📃 Table of Contents
- [📃 Table of Contents](#-table-of-contents)
- [🚀 Getting Started](#-getting-started)
- [ About](#-about)
- [⚡ Installation](#-installation)
- [Deploying from Docker Image 🐳](#deploying-from-docker-image-)
- [Building from Source 🛠️](#building-from-source-)
- [💖 Contributing](#-contributing)
<!-- Links -->
<p align="center">
<i>Join the discord! — Don't forget to star the repo if you are enjoying the project!</i>
</p>
<p align="center">
<a href="https://homarr.ajnart.fr/"><strong> Demo ↗️ </strong></a> • <a href="https://homarr.vercel.app/docs/introduction/installation"><strong> Install ➡️ </strong></a> • <a href="https://homarr.vercel.app/docs/about"><strong> Read the Docs 📄 </strong></a>
</p>
<!-- Getting Started -->
# 🚀 Getting Started
---
## About
<!-- Homarr Description -->
<img align="right" width=150 src="public/imgs/logo-color.svg" />
Homarr is a simple and lightweight homepage for your server, that helps you easily access all of your services in one place.
**[⤴️ Back to Top](#-table-of-contents)**
## ⚡ Installation
It integrates with the services you use to display information on the homepage (E.g. Show upcoming Sonarr/Radarr releases).
### Deploying from Docker Image 🐳
For a full list of integrations, [head over to our documentation](https://homarr.vercel.app/docs/advanced-configuration/integrations).
If you have any questions about Homarr or want to share information with us, please go to one of the following places:
- [Github Discussions](https://github.com/ajnart/homarr/discussions)
- [Discord Server](https://discord.gg/aCsmEV5RgA)
*Before you file an [issue](https://github.com/ajnart/homarr/issues/new/choose), make sure you have read the [known issues](#-known-issues) section.*
**For more information, [read the documentation!](https://homarr.vercel.app/docs/about)**
<details>
<summary><b>Table of Contents</b></summary>
<p>
- [✨ Features](#-features)
- [👀 Preview](#-preview)
- [💥 Known Issues](#-known-issues)
- [🚀 Installation](#-installation)
- [🐳 Deploying from Docker Image](#-deploying-from-docker-image)
- [🛠️ Building from Source](#-building-from-source)
- [💖 Contributing](#-contributing)
- [📜 License](#-license)
</p>
</details>
---
## ✨ Features
- Integrates with services you use.
- Search the web directly from your homepage.
- Real-time status indicator for every service.
- Automatically finds icons while you type the name of a service.
- Widgets that can display all types of information.
- Easy deployment with Docker.
- Very light-weight and fast.
- Free and Open-Source.
- And more...
**[⤴️ Back to Top](#homarr)**
---
## 👀 Preview
<img alt="Homarr Preview" align="center" width="100%" src="https://user-images.githubusercontent.com/71191962/169860380-856634fb-4f41-47cb-ba54-6a9e7b3b9c81.gif" />
**[⤴️ Back to Top](#homarr)**
---
## 💥 Known Issues
- Posters on the Calendar get blocked by adblockers. (IMDb posters)
**[⤴️ Back to Top](#homarr)**
---
## 🚀 Installation
### 🐳 Deploying from Docker Image
> Supported architectures: x86-64, ARM, ARM64
_Requirements_:
- [Docker](https://docs.docker.com/get-docker/)
**Standard Docker Install**
```sh
docker run --name homarr -p 7575:7575 -d ghcr.io/ajnart/homarr
```bash
docker run \
--name homarr \
--restart unless-stopped \
-p 7575:7575 \
-v ./homarr/configs:/app/data/configs \
-v ./homarr/icons:/app/public/icons \
-d ghcr.io/ajnart/homarr:latest
```
**Docker Compose**
```yml
---
version: '3'
#--------------------------------------------------------------------------------------------#
# Homarr - A homepage for your server. #
#--------------------------------------------------------------------------------------------#
#---------------------------------------------------------------------#
# Homarr - A homepage for your server. #
#---------------------------------------------------------------------#
services:
homarr:
container_name: homarr
image: ghcr.io/ajnart/homarr
image: ghcr.io/ajnart/homarr:latest
restart: unless-stopped
volumes:
- ./homarr/configs:/app/data/configs
- ./homarr/icons:/app/public/icons
ports:
- '7575:7575'
```
### Building from Source 🛠️
```sh
docker compose up -d
```
*Getting EACCESS errors in the logs? Try running `sudo chmod 777 /directory-you-mounted-to`!*
**[⤴️ Back to Top](#homarr)**
### 🛠️ Building from Source
_Requirements_:
- [Git](https://git-scm.com/downloads)
- [NodeJS](https://nodejs.org/en/) _(Latest or LTS)_
- [Yarn](https://yarnpkg.com/)
- Some web server
**Installing**
- Clone the GitHub repo: `git clone https://github.com/ajnart/homarr.git` & `cd homarr`
- Install all dependencies: `yarn install`
- Build the source: `yarn export`
- Start a web server (Any web server will work):
- _Examples:_
- NodeJS serve: `npm i -g serve` or `yarn global add serve` & `serve ./out`
- python http.server: `python -m http.server 7474 --directory out`
**[⤴️ Back to Top](#-table-of-contents)**
- Build the source: `yarn build`
- Start the NextJS web server: ``yarn start``
- *Note: If you want to update the code in real time, launch with ``yarn dev``*
# 💖 Contributing
You can contribute by [Starting a discussion](https://github.com/ajnart/homarr/discussions), [Submitting Bugs](https://github.com/ajnart/homarr/issues/new), [Requesting Features](https://github.com/ajnart/homarr/issues/new), or [Making a pull request](https://github.com/ajnart/homarr/compare)!
**[⤴️ Back to Top](#homarr)**
---
## 💖 Contributing
**Please read our [Contribution Guidelines](/CONTRIBUTING.md)**
All contributions are highly appreciated.
**[⤴️ Back to Top](#-table-of-contents)**
**[⤴️ Back to Top](#homarr)**
---
## 📜 License
Homarr is Licensed under [MIT](https://en.wikipedia.org/wiki/MIT_License)
```txt
Copyright © 2022 Thomas "ajnart" Camlong
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
**[⤴️ Back to Top](#homarr)**
---
<p align="center">
<i>Thank you for visiting! <b>For more information <a href="https://homarr.vercel.app/docs/about">read the documentation!</a></b></i>
<br/>
<br/>
</p>

View File

@@ -1,210 +0,0 @@
import {
Modal,
Center,
Group,
TextInput,
Image,
Button,
Select,
AspectRatio,
Text,
Card,
LoadingOverlay,
} from '@mantine/core';
import { useForm } from '@mantine/form';
import { motion } from 'framer-motion';
import { useState } from 'react';
import { Apps } from 'tabler-icons-react';
import { useConfig } from '../../tools/state';
import { ServiceTypeList } from '../../tools/types';
import { AppShelfItemWrapper } from './AppShelfItemWrapper';
export default function AddItemShelfItem(props: any) {
const [opened, setOpened] = useState(false);
return (
<>
<Modal
size="xl"
radius="lg"
opened={props.opened || opened}
onClose={() => setOpened(false)}
title="Add a service"
>
<AddAppShelfItemForm setOpened={setOpened} />
</Modal>
<AppShelfItemWrapper>
<Card.Section>
<Group position="center" mx="lg">
<Text
// TODO: #1 Remove this hack to get the text to be centered.
ml={15}
style={{
alignSelf: 'center',
alignContent: 'center',
alignItems: 'center',
justifyContent: 'center',
justifyItems: 'center',
}}
mt="sm"
weight={500}
>
Add a service
</Text>
</Group>
</Card.Section>
<Card.Section>
<AspectRatio ratio={5 / 3} m="xl">
<motion.i
whileHover={{
cursor: 'pointer',
scale: 1.1,
}}
>
<Apps style={{ cursor: 'pointer' }} onClick={() => setOpened(true)} size={60} />
</motion.i>
</AspectRatio>
</Card.Section>
</AppShelfItemWrapper>
</>
);
}
function MatchIcon(name: string, form: any) {
fetch(
`https://cdn.jsdelivr.net/gh/walkxhub/dashboard-icons/png/${name
.replace(/\s+/g, '-')
.toLowerCase()}.png`
)
.then((res) => {
if (res.status === 200) {
form.setFieldValue('icon', res.url);
}
})
.catch(() => {
// Do nothing
});
return false;
}
export function AddAppShelfItemForm(props: { setOpened: (b: boolean) => void } & any) {
const { setOpened } = props;
const { config, setConfig } = useConfig();
const [isLoading, setLoading] = useState(false);
const form = useForm({
initialValues: {
type: props.type ?? 'Other',
name: props.name ?? '',
icon: props.icon ?? '',
url: props.url ?? '',
apiKey: props.apiKey ?? (undefined as unknown as string),
},
validate: {
apiKey: () => null,
// Validate icon with a regex
icon: (value: string) => {
if (!value.match(/^https?:\/\/.+\.(png|jpg|jpeg|gif)$/)) {
return 'Please enter a valid icon URL';
}
return null;
},
// Validate url with a regex http/https
url: (value: string) => {
if (!value.match(/^https?:\/\/.+\/$/)) {
return 'Please enter a valid URL (that ends with a /)';
}
return null;
},
},
});
return (
<>
<Center>
<Image height={120} width={120} src={form.values.icon} alt="Placeholder" withPlaceholder />
</Center>
<form
onSubmit={form.onSubmit(() => {
// If service already exists, update it.
if (config.services && config.services.find((s) => s.name === form.values.name)) {
setConfig({
...config,
services: config.services.map((s) => {
if (s.name === form.values.name) {
return {
...form.values,
};
}
return s;
}),
});
} else {
setConfig({
...config,
services: [...config.services, form.values],
});
}
setOpened(false);
form.reset();
})}
>
<Group direction="column" grow>
<TextInput
required
label="Service name"
placeholder="Plex"
value={form.values.name}
onChange={(event) => {
form.setFieldValue('name', event.currentTarget.value);
const match = MatchIcon(event.currentTarget.value, form);
if (match) {
form.setFieldValue('icon', match);
}
}}
error={form.errors.name && 'Invalid icon url'}
/>
<TextInput
required
label="Icon url"
placeholder="https://i.gifer.com/ANPC.gif"
{...form.getInputProps('icon')}
/>
<TextInput
required
label="Service url"
placeholder="http://localhost:8989"
{...form.getInputProps('url')}
/>
<Select
label="Select the type of service (used for API calls)"
defaultValue="Other"
placeholder="Pick one"
required
searchable
data={ServiceTypeList}
{...form.getInputProps('type')}
/>
<LoadingOverlay visible={isLoading} />
{(form.values.type === 'Sonarr' || form.values.type === 'Radarr') && (
<TextInput
required
label="API key"
placeholder="Your API key"
value={form.values.apiKey}
onChange={(event) => {
form.setFieldValue('apiKey', event.currentTarget.value);
}}
error={form.errors.apiKey && 'Invalid API key'}
/>
)}
</Group>
<Group grow position="center" mt="xl">
<Button type="submit">{props.message ?? 'Add service'}</Button>
</Group>
</form>
</>
);
}

View File

@@ -1,18 +0,0 @@
import AppShelf, { AppShelfItem } from './AppShelf';
export default {
title: 'Item Shelf',
component: AppShelf,
args: {
service: {
name: 'qBittorrent',
url: 'http://',
icon: 'https://cdn.jsdelivr.net/gh/IceWhaleTech/CasaOS-AppStore@main/Apps/qBittorrent/icon.png',
type: 'qBittorrent',
apiKey: '',
},
},
};
export const Default = (args: any) => <AppShelf {...args} />;
export const One = (args: any) => <AppShelfItem {...args} />;

View File

@@ -1,93 +0,0 @@
import React, { useState } from 'react';
import { motion } from 'framer-motion';
import { Text, AspectRatio, SimpleGrid, Card, Image, Group, Space } from '@mantine/core';
import { useConfig } from '../../tools/state';
import { serviceItem } from '../../tools/types';
import AddItemShelfItem from './AddAppShelfItem';
import { AppShelfItemWrapper } from './AppShelfItemWrapper';
import AppShelfMenu from './AppShelfMenu';
const AppShelf = () => {
const { config } = useConfig();
return (
<SimpleGrid m="xl" cols={5} spacing="xl">
{config.services.map((service) => (
<AppShelfItem key={service.name} service={service} />
))}
<AddItemShelfItem />
</SimpleGrid>
);
};
export function AppShelfItem(props: any) {
const { service }: { service: serviceItem } = props;
const [hovering, setHovering] = useState(false);
return (
<motion.div
key={service.name}
onHoverStart={() => {
setHovering(true);
}}
onHoverEnd={() => {
setHovering(false);
}}
>
<AppShelfItemWrapper hovering={hovering}>
<Card.Section>
<Group position="apart" mx="lg">
<Space />
<Text
// TODO: #1 Remove this hack to get the text to be centered.
ml={15}
style={{
alignSelf: 'center',
alignContent: 'center',
alignItems: 'center',
justifyContent: 'center',
justifyItems: 'center',
}}
mt="sm"
weight={500}
>
{service.name}
</Text>
<motion.div
style={{
alignSelf: 'flex-end',
}}
animate={{
opacity: hovering ? 1 : 0,
}}
>
<AppShelfMenu service={service} />
</motion.div>
</Group>
</Card.Section>
<Card.Section>
<AspectRatio ratio={5 / 3} m="xl">
<motion.i
whileHover={{
cursor: 'pointer',
scale: 1.1,
}}
>
<Image
onClick={() => {
window.open(service.url);
}}
style={{
maxWidth: '50%',
marginBottom: 10,
}}
src={service.icon}
/>
</motion.i>
</AspectRatio>
</Card.Section>
</AppShelfItemWrapper>
</motion.div>
);
}
export default AppShelf;

View File

@@ -1,21 +0,0 @@
import { useMantineTheme, Card } from '@mantine/core';
export function AppShelfItemWrapper(props: any) {
const { children, hovering } = props;
const theme = useMantineTheme();
return (
<Card
style={{
boxShadow: hovering ? '0px 0px 3px rgba(0, 0, 0, 0.5)' : '0px 0px 1px rgba(0, 0, 0, 0.5)',
backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[6] : theme.colors.gray[1],
//TODO: #3 Fix this temporary fix and make the width and height dynamic / responsive
width: 200,
height: 180,
}}
radius="md"
>
{children}
</Card>
);
}

View File

@@ -1,68 +0,0 @@
import { Menu, Modal, Text } from '@mantine/core';
import { showNotification } from '@mantine/notifications';
import { useState } from 'react';
import { Check, Edit, Trash } from 'tabler-icons-react';
import { useConfig } from '../../tools/state';
import { AddAppShelfItemForm } from './AddAppShelfItem';
export default function AppShelfMenu(props: any) {
const { service } = props;
const { config, setConfig } = useConfig();
const [opened, setOpened] = useState(false);
return (
<>
<Modal
size="xl"
radius="lg"
opened={props.opened || opened}
onClose={() => setOpened(false)}
title="Modify a service"
>
<AddAppShelfItemForm
setOpened={setOpened}
name={service.name}
type={service.type}
url={service.url}
icon={service.icon}
apiKey={service.apiKey}
message="Save service"
/>
</Modal>
<Menu position="right">
<Menu.Label>Settings</Menu.Label>
<Menu.Item
color="primary"
icon={<Edit size={14} />}
// TODO: #2 Add the ability to edit the service.
onClick={() => setOpened(true)}
>
Edit
</Menu.Item>
<Menu.Label>Danger zone</Menu.Label>
<Menu.Item
color="red"
onClick={(e: any) => {
setConfig({
...config,
services: config.services.filter((s) => s.name !== service.name),
});
showNotification({
autoClose: 5000,
title: (
<Text>
Service <b>{service.name}</b> removed successfully
</Text>
),
color: 'green',
icon: <Check />,
message: undefined,
});
}}
icon={<Trash size={14} />}
>
Delete
</Menu.Item>
</Menu>
</>
);
}

View File

@@ -1,95 +0,0 @@
import { Group, Text, useMantineTheme, MantineTheme } from '@mantine/core';
import { Upload, Photo, X, Icon as TablerIcon, Check } from 'tabler-icons-react';
import { DropzoneStatus, FullScreenDropzone } from '@mantine/dropzone';
import { showNotification } from '@mantine/notifications';
import { useRef } from 'react';
import { useRouter } from 'next/router';
import { setCookies } from 'cookies-next';
import { useConfig } from '../../tools/state';
import { Config } from '../../tools/types';
function getIconColor(status: DropzoneStatus, theme: MantineTheme) {
return status.accepted
? theme.colors[theme.primaryColor][theme.colorScheme === 'dark' ? 4 : 6]
: status.rejected
? theme.colors.red[theme.colorScheme === 'dark' ? 4 : 6]
: theme.colorScheme === 'dark'
? theme.colors.dark[0]
: theme.colors.gray[7];
}
function ImageUploadIcon({
status,
...props
}: React.ComponentProps<TablerIcon> & { status: DropzoneStatus }) {
if (status.accepted) {
return <Upload {...props} />;
}
if (status.rejected) {
return <X {...props} />;
}
return <Photo {...props} />;
}
export const dropzoneChildren = (status: DropzoneStatus, theme: MantineTheme) => (
<Group position="center" spacing="xl" style={{ minHeight: 220, pointerEvents: 'none' }}>
<ImageUploadIcon status={status} style={{ color: getIconColor(status, theme) }} size={80} />
<div>
<Text size="xl" inline>
Drag images here or click to select files
</Text>
<Text size="sm" color="dimmed" inline mt={7}>
Attach as many files as you like, each file should not exceed 5mb
</Text>
</div>
</Group>
);
export default function LoadConfigComponent(props: any) {
const { setConfig } = useConfig();
const theme = useMantineTheme();
const router = useRouter();
const openRef = useRef<() => void>();
return (
<FullScreenDropzone
onDrop={(files) => {
files[0].text().then((e) => {
try {
JSON.parse(e) as Config;
} catch (e) {
showNotification({
autoClose: 5000,
title: <Text>Error</Text>,
color: 'red',
icon: <X />,
message: 'could not load your config. Invalid JSON format.',
});
return;
}
const newConfig: Config = JSON.parse(e);
showNotification({
autoClose: 5000,
radius: 'md',
title: (
<Text>
Config <b>{newConfig.name}</b> loaded successfully
</Text>
),
color: 'green',
icon: <Check />,
message: undefined,
});
setCookies('config-name', newConfig.name, { maxAge: 60 * 60 * 24 * 30 });
setConfig(newConfig);
});
}}
accept={['application/json']}
>
{(status) => dropzoneChildren(status, theme)}
</FullScreenDropzone>
);
}

View File

@@ -1,18 +0,0 @@
import { Button } from '@mantine/core';
import fileDownload from 'js-file-download';
import { Download } from 'tabler-icons-react';
import { useConfig } from '../../tools/state';
export default function SaveConfigComponent(props: any) {
const { config } = useConfig();
function onClick(e: any) {
if (config) {
fileDownload(JSON.stringify(config, null, '\t'), `${config.name}.json`);
}
}
return (
<Button leftIcon={<Download />} variant="outline" onClick={onClick}>
Download your config
</Button>
);
}

View File

@@ -1,16 +0,0 @@
import { Select } from '@mantine/core';
import { useState } from 'react';
export default function SelectConfig(props: any) {
const [value, setValue] = useState<string | null>('');
return (
<Select
value={value}
onChange={setValue}
data={[
{ value: 'default', label: 'Default' },
{ value: 'yourmom', label: 'Your mom' },
]}
/>
);
}

View File

@@ -1,10 +0,0 @@
import SearchBar from './SearchBar';
export default {
title: 'Search bar',
config: {
searchBar: false,
},
};
export const Default = (args: any) => <SearchBar {...args} />;

View File

@@ -1,90 +0,0 @@
import { TextInput, Text, Popover, Box } from '@mantine/core';
import { useForm } from '@mantine/hooks';
import { useState } from 'react';
import { Search, BrandYoutube, Download } from 'tabler-icons-react';
import { useConfig } from '../../tools/state';
export default function SearchBar(props: any) {
const { config, setConfig } = useConfig();
const [opened, setOpened] = useState(false);
const [icon, setIcon] = useState(<Search />);
const querryUrl = config.settings.searchUrl || 'https://www.google.com/search?q=';
const form = useForm({
initialValues: {
querry: '',
},
});
if (config.settings.searchBar === false) {
return null;
}
return (
<Box
style={{
width: '100%',
}}
>
<form
onChange={() => {
// If querry contains !yt or !t add "Searching on YouTube" or "Searching torrent"
const querry = form.values.querry.trim();
const isYoutube = querry.startsWith('!yt');
const isTorrent = querry.startsWith('!t');
if (isYoutube) {
setIcon(<BrandYoutube size={22} />);
} else if (isTorrent) {
setIcon(<Download size={22} />);
} else {
setIcon(<Search size={22} />);
}
}}
onSubmit={form.onSubmit((values) => {
// Find if querry is prefixed by !yt or !t
const querry = values.querry.trim();
const isYoutube = querry.startsWith('!yt');
const isTorrent = querry.startsWith('!t');
if (isYoutube) {
window.open(`https://www.youtube.com/results?search_query=${querry.substring(3)}`);
} else if (isTorrent) {
window.open(`https://bitsearch.to/search?q=${querry.substring(3)}`);
} else {
window.open(`${querryUrl}${values.querry}`);
}
})}
>
<Popover
opened={opened}
style={{
width: '100%',
}}
position="bottom"
placement="start"
withArrow
trapFocus={false}
transition="pop-top-left"
onFocusCapture={() => setOpened(true)}
onBlurCapture={() => setOpened(false)}
target={
<TextInput
variant="filled"
color="blue"
icon={icon}
radius="md"
size="md"
placeholder="Search the web"
{...props}
{...form.getInputProps('querry')}
/>
}
>
<Text>
tip: You can prefix your querry with <b>!yt</b> or <b>!t</b> to research on youtube or
for a torrent
</Text>
</Popover>
</form>
</Box>
);
}

View File

@@ -1,41 +0,0 @@
import { Group, Switch } from '@mantine/core';
import * as Modules from '../modules';
import { useConfig } from '../../tools/state';
export default function ModuleEnabler(props: any) {
const { config, setConfig } = useConfig();
const modules = Object.values(Modules).map((module) => module);
const enabledModules = config.settings.enabledModules ?? [];
modules.filter((module) => enabledModules.includes(module.title));
return (
<Group direction="column">
{modules.map((module) => (
<Switch
key={module.title}
size="md"
checked={enabledModules.includes(module.title)}
label={`Enable ${module.title} module`}
onChange={(e) => {
if (e.currentTarget.checked) {
setConfig({
...config,
settings: {
...config.settings,
enabledModules: [...enabledModules, module.title],
},
});
} else {
setConfig({
...config,
settings: {
...config.settings,
enabledModules: enabledModules.filter((m) => m !== module.title),
},
});
}
}}
/>
))}
</Group>
);
}

View File

@@ -1,10 +0,0 @@
import { SettingsMenuButton } from './SettingsMenu';
export default {
title: ' menu',
args: {
opened: false,
},
};
export const Default = (args: any) => <SettingsMenuButton {...args} />;

View File

@@ -1,144 +0,0 @@
import {
ActionIcon,
Group,
Modal,
Switch,
Title,
Text,
Tooltip,
SegmentedControl,
Indicator,
Alert,
} from '@mantine/core';
import { useColorScheme } from '@mantine/hooks';
import { useEffect, useState } from 'react';
import { AlertCircle, Settings as SettingsIcon } from 'tabler-icons-react';
import { CURRENT_VERSION, REPO_URL } from '../../data/constants';
import { useConfig } from '../../tools/state';
import { ColorSchemeSwitch } from '../ColorSchemeToggle/ColorSchemeSwitch';
import ConfigChanger from '../Config/ConfigChanger';
import SaveConfigComponent from '../Config/SaveConfig';
import ModuleEnabler from './ModuleEnabler';
function SettingsMenu(props: any) {
const { config, setConfig } = useConfig();
const colorScheme = useColorScheme();
const { current, latest } = props;
const matches = [
{ label: 'Google', value: 'https://google.com/search?q=' },
{ label: 'DuckDuckGo', value: 'https://duckduckgo.com/?q=' },
{ label: 'Bing', value: 'https://bing.com/search?q=' },
];
return (
<Group direction="column" grow>
<Alert
icon={<AlertCircle size={16} />}
title="Update available"
radius="lg"
hidden={current === latest}
>
Version {latest} is available. Current : {current}
</Alert>
<Group>
<SegmentedControl
title="Search engine"
value={
// Match config.settings.searchUrl with a key in the matches array
matches.find((match) => match.value === config.settings.searchUrl)?.value ?? 'Google'
}
onChange={
// Set config.settings.searchUrl to the value of the selected item
(e) =>
setConfig({
...config,
settings: {
...config.settings,
searchUrl: e,
},
})
}
data={matches}
/>
<Text>Search engine</Text>
</Group>
<Group direction="column">
<Switch
size="md"
onChange={(e) =>
setConfig({
...config,
settings: {
...config.settings,
searchBar: e.currentTarget.checked,
},
})
}
checked={config.settings.searchBar}
label="Enable search bar"
/>
</Group>
<ModuleEnabler />
<ColorSchemeSwitch />
<ConfigChanger />
<SaveConfigComponent />
<Text
style={{
alignSelf: 'center',
fontSize: '0.75rem',
textAlign: 'center',
color: '#a0aec0',
}}
>
tip: You can upload your config file by dragging and dropping it onto the page
</Text>
</Group>
);
}
export function SettingsMenuButton(props: any) {
const [update, setUpdate] = useState(false);
const [opened, setOpened] = useState(false);
const [latestVersion, setLatestVersion] = useState(CURRENT_VERSION);
useEffect(() => {
// Fetch Data here when component first mounted
fetch(`https://api.github.com/repos/${REPO_URL}/releases/latest`).then((res) => {
res.json().then((data) => {
setLatestVersion(data.tag_name);
if (data.tag_name !== CURRENT_VERSION) {
setUpdate(true);
}
});
});
}, []);
return (
<>
<Modal
size="md"
title={<Title order={3}>Settings</Title>}
opened={props.opened || opened}
onClose={() => setOpened(false)}
>
<SettingsMenu current={CURRENT_VERSION} latest={latestVersion} />
</Modal>
<ActionIcon
variant="default"
radius="xl"
size="xl"
color="blue"
style={props.style}
onClick={() => setOpened(true)}
>
<Tooltip label="Settings">
<Indicator
size={12}
disabled={CURRENT_VERSION === latestVersion}
offset={-3}
position="top-end"
>
<SettingsIcon />
</Indicator>
</Tooltip>
</ActionIcon>
</>
);
}

View File

@@ -1,7 +0,0 @@
import { Welcome } from './Welcome';
export default {
title: 'Welcome',
};
export const Usage = () => <Welcome />;

View File

@@ -1,14 +0,0 @@
import { createStyles } from '@mantine/core';
export default createStyles((theme) => ({
title: {
color: theme.colorScheme === 'dark' ? theme.white : theme.black,
fontSize: 100,
fontWeight: 900,
letterSpacing: -2,
[theme.fn.smallerThan('md')]: {
fontSize: 50,
},
},
}));

View File

@@ -1,12 +0,0 @@
import { render, screen } from '@testing-library/react';
import { Welcome } from './Welcome';
describe('Welcome component', () => {
it('has correct Next.js theming section link', () => {
render(<Welcome />);
expect(screen.getByText('this guide')).toHaveAttribute(
'href',
'https://mantine.dev/theming/next/'
);
});
});

View File

@@ -1,25 +0,0 @@
import { Title, Text, Anchor } from '@mantine/core';
import useStyles from './Welcome.styles';
export function Welcome() {
const { classes } = useStyles();
return (
<>
<Title className={classes.title} align="center" mt={100}>
Welcome to{' '}
<Text inherit variant="gradient" component="span">
Mantine
</Text>
</Title>
<Text color="dimmed" align="center" size="lg" sx={{ maxWidth: 580 }} mx="auto" mt="xl">
This starter Next.js project includes a minimal setup for server side rendering, if you want
to learn more on Mantine + Next.js integration follow{' '}
<Anchor href="https://mantine.dev/theming/next/" size="lg">
this guide
</Anchor>
. To get started edit index.tsx file.
</Text>
</>
);
}

View File

@@ -1,18 +0,0 @@
import { Aside as MantineAside } from '@mantine/core';
import { CalendarModule } from '../modules/calendar/CalendarModule';
import ModuleWrapper from '../modules/moduleWrapper';
export default function Aside() {
return (
<MantineAside
height="100%"
hiddenBreakpoint="md"
hidden
width={{
base: 'auto',
}}
>
<ModuleWrapper module={CalendarModule} />
</MantineAside>
);
}

View File

@@ -1,81 +0,0 @@
import React from 'react';
import { createStyles, Anchor, Text, Group, ActionIcon } from '@mantine/core';
import { BrandGithub } from 'tabler-icons-react';
const useStyles = createStyles((theme) => ({
footer: {
borderTop: `1px solid ${
theme.colorScheme === 'dark' ? theme.colors.dark[5] : theme.colors.gray[2]
}`,
},
inner: {
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
padding: `${theme.spacing.md}px ${theme.spacing.md}px`,
[theme.fn.smallerThan('sm')]: {
flexDirection: 'column',
},
},
links: {
[theme.fn.smallerThan('sm')]: {
marginTop: theme.spacing.lg,
marginBottom: theme.spacing.sm,
},
},
}));
interface FooterCenteredProps {
links: { link: string; label: string }[];
}
export function Footer({ links }: FooterCenteredProps) {
const { classes } = useStyles();
const items = links.map((link) => (
<Anchor<'a'>
color="dimmed"
key={link.label}
href={link.link}
sx={{ lineHeight: 1 }}
onClick={(event) => event.preventDefault()}
size="sm"
>
{link.label}
</Anchor>
));
return (
<Group
sx={{
position: 'fixed',
bottom: 0,
right: 15,
}}
direction="row"
align="center"
mb={15}
>
<Group className={classes.links}>{items}</Group>
<Group spacing="xs" position="right" noWrap>
<ActionIcon<'a'> component="a" href="https://github.com/ajnart/homarr" size="lg">
<BrandGithub size={18} />
</ActionIcon>
</Group>
<Text
style={{
fontSize: '0.75rem',
textAlign: 'center',
color: '#a0aec0',
}}
>
Made with by @
<Anchor href="https://github.com/ajnart" style={{ color: 'inherit', fontStyle: 'inherit' }}>
ajnart
</Anchor>
</Text>
</Group>
);
}

View File

@@ -1,155 +0,0 @@
import React, { useState } from 'react';
import {
createStyles,
Header as Head,
Container,
Group,
Burger,
Drawer,
Center,
} from '@mantine/core';
import { useBooleanToggle } from '@mantine/hooks';
import { NextLink } from '@mantine/next';
import { Logo } from './Logo';
import { SettingsMenuButton } from '../Settings/SettingsMenu';
import CalendarComponent from '../modules/calendar/CalendarModule';
const HEADER_HEIGHT = 60;
const useStyles = createStyles((theme) => ({
root: {
position: 'relative',
zIndex: 1,
},
dropdown: {
position: 'absolute',
top: HEADER_HEIGHT,
left: 0,
right: 0,
zIndex: 0,
borderTopRightRadius: 0,
borderTopLeftRadius: 0,
borderTopWidth: 0,
overflow: 'hidden',
[theme.fn.largerThan('md')]: {
display: 'none',
},
},
header: {
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
height: '100%',
},
links: {
[theme.fn.smallerThan('md')]: {
display: 'none',
},
},
burger: {
[theme.fn.largerThan('md')]: {
display: 'none',
},
},
link: {
display: 'block',
lineHeight: 1,
padding: '8px 12px',
borderRadius: theme.radius.sm,
textDecoration: 'none',
color: theme.colorScheme === 'dark' ? theme.colors.dark[0] : theme.colors.gray[7],
fontSize: theme.fontSizes.sm,
fontWeight: 500,
'&:hover': {
backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[6] : theme.colors.gray[0],
},
[theme.fn.smallerThan('sm')]: {
borderRadius: 0,
padding: theme.spacing.md,
},
},
linkActive: {
'&, &:hover': {
backgroundColor:
theme.colorScheme === 'dark'
? theme.fn.rgba(theme.colors[theme.primaryColor][9], 0.25)
: theme.colors[theme.primaryColor][0],
color: theme.colors[theme.primaryColor][theme.colorScheme === 'dark' ? 3 : 7],
},
},
}));
interface HeaderResponsiveProps {
links: { link: string; label: string }[];
}
export function Header({ links }: HeaderResponsiveProps) {
const [opened, toggleOpened] = useBooleanToggle(false);
const [active, setActive] = useState('/');
const { classes, cx } = useStyles();
const items = (
<>
{links.map((link) => (
<NextLink
key={link.label}
href={link.link}
className={cx(classes.link, { [classes.linkActive]: active === link.link })}
onClick={(event) => {
setActive(link.link);
toggleOpened(false);
}}
>
{link.label}
</NextLink>
))}
</>
);
return (
<Head height={HEADER_HEIGHT} mb={10} className={classes.root}>
<Container className={classes.header}>
<Group>
<NextLink style={{ textDecoration: 'none' }} href="/">
<Logo style={{ fontSize: 22 }} />
</NextLink>
</Group>
<Group spacing={5} className={classes.links}>
{items}
</Group>
<Group>
<SettingsMenuButton />
<Burger
opened={opened}
onClick={() => toggleOpened()}
className={classes.burger}
size="sm"
/>
</Group>
<Drawer
opened={opened}
overlayOpacity={0.55}
overlayBlur={3}
onClose={() => toggleOpened()}
position="right"
>
{opened ?? (
<Center>
<CalendarComponent />
</Center>
)}
</Drawer>
</Container>
</Head>
);
}

View File

@@ -1,36 +0,0 @@
import { AppShell, Center, createStyles } from '@mantine/core';
import { Header } from './Header';
import { Footer } from './Footer';
import Aside from './Aside';
import Navbar from './Navbar';
const useStyles = createStyles((theme) => ({
main: {
[theme.fn.largerThan('md')]: {
width: 1200,
},
},
}));
export default function Layout({ children, style }: any) {
const { classes, cx } = useStyles();
return (
<AppShell
navbar={<Navbar />}
aside={<Aside />}
header={<Header links={[]} />}
footer={<Footer links={[]} />}
>
<Center>
<main
className={cx(classes.main)}
style={{
...style,
}}
>
{children}
</main>
</Center>
</AppShell>
);
}

View File

@@ -1,15 +0,0 @@
import { Text } from '@mantine/core';
import * as React from 'react';
export function Logo({ style }: any) {
return (
<Text
sx={style}
weight="bold"
variant="gradient"
gradient={{ from: 'red', to: 'orange', deg: 145 }}
>
Homarr
</Text>
);
}

View File

@@ -1,18 +0,0 @@
import { Navbar as MantineNavbar } from '@mantine/core';
import { DateModule } from '../modules/date/DateModule';
import ModuleWrapper from '../modules/moduleWrapper';
export default function Navbar() {
return (
<MantineNavbar
height="100%"
hiddenBreakpoint="md"
hidden
width={{
base: 'auto',
}}
>
<ModuleWrapper module={DateModule} />
</MantineNavbar>
);
}

View File

@@ -1,7 +0,0 @@
import CalendarComponent from './CalendarModule';
export default {
title: 'Calendar component',
};
export const Default = (args: any) => <CalendarComponent {...args} />;

View File

@@ -1,153 +0,0 @@
/* eslint-disable react/no-children-prop */
import { Popover, Box, ScrollArea, Divider, Indicator } from '@mantine/core';
import React, { useEffect, useState } from 'react';
import { Calendar } from '@mantine/dates';
import { CalendarIcon } from '@modulz/radix-icons';
import { showNotification } from '@mantine/notifications';
import { Check } from 'tabler-icons-react';
import { RadarrMediaDisplay, SonarrMediaDisplay } from './MediaDisplay';
import { useConfig } from '../../../tools/state';
import { IModule } from '../modules';
export const CalendarModule: IModule = {
title: 'Calendar',
description:
'A calendar module for displaying upcoming releases. It interacts with the Sonarr and Radarr API.',
icon: CalendarIcon,
component: CalendarComponent,
};
export default function CalendarComponent(props: any) {
const { config } = useConfig();
const [sonarrMedias, setSonarrMedias] = useState([] as any);
const [radarrMedias, setRadarrMedias] = useState([] as any);
useEffect(() => {
// Filter only sonarr and radarr services
const filtered = config.services.filter(
(service) => service.type === 'Sonarr' || service.type === 'Radarr'
);
// Get the url and apiKey for all Sonarr and Radarr services
const sonarrService = filtered.filter((service) => service.type === 'Sonarr').at(0);
const radarrService = filtered.filter((service) => service.type === 'Radarr').at(0);
const nextMonth = new Date(new Date().setMonth(new Date().getMonth() + 2)).toISOString();
if (sonarrService && sonarrService.apiKey) {
fetch(
`${sonarrService?.url}api/calendar?apikey=${sonarrService?.apiKey}&end=${nextMonth}`
).then((response) => {
response.ok &&
response.json().then((data) => {
setSonarrMedias(data);
showNotification({
title: 'Sonarr',
icon: <Check />,
color: 'green',
autoClose: 1500,
radius: 'md',
message: `Loaded ${data.length} releases`,
});
});
});
}
if (radarrService && radarrService.apiKey) {
fetch(
`${radarrService?.url}api/v3/calendar?apikey=${radarrService?.apiKey}&end=${nextMonth}`
).then((response) => {
response.ok &&
response.json().then((data) => {
setRadarrMedias(data);
showNotification({
title: 'Radarr',
icon: <Check />,
color: 'green',
autoClose: 1500,
radius: 'md',
message: `Loaded ${data.length} releases`,
});
});
});
}
}, [config.services]);
if (sonarrMedias === undefined && radarrMedias === undefined) {
return <Calendar />;
}
return (
<Calendar
onChange={(day: any) => {}}
renderDay={(renderdate) => (
<DayComponent
renderdate={renderdate}
sonarrmedias={sonarrMedias}
radarrmedias={radarrMedias}
/>
)}
/>
);
}
function DayComponent(props: any) {
const {
renderdate,
sonarrmedias,
radarrmedias,
}: { renderdate: Date; sonarrmedias: []; radarrmedias: [] } = props;
const [opened, setOpened] = useState(false);
const day = renderdate.getDate();
// Itterate over the medias and filter the ones that are on the same day
const sonarrFiltered = sonarrmedias.filter((media: any) => {
const date = new Date(media.airDate);
// Return true if the date is renerdate without counting hours and minutes
return date.getDate() === day && date.getMonth() === renderdate.getMonth();
});
const radarrFiltered = radarrmedias.filter((media: any) => {
const date = new Date(media.inCinemas);
// Return true if the date is renerdate without counting hours and minutes
return date.getDate() === day && date.getMonth() === renderdate.getMonth();
});
if (sonarrFiltered.length === 0 && radarrFiltered.length === 0) {
return <div>{day}</div>;
}
return (
<Box
onClick={() => {
setOpened(true);
}}
>
{radarrFiltered.length > 0 && <Indicator size={7} color="yellow" children={null} />}
{sonarrFiltered.length > 0 && <Indicator size={7} offset={8} color="blue" children={null} />}
<Popover
position="left"
radius="lg"
shadow="xl"
transition="pop"
width={700}
onClose={() => setOpened(false)}
opened={opened}
// TODO: Fix this !! WTF ?
target={` ${day}`}
>
<ScrollArea style={{ height: 400 }}>
{sonarrFiltered.map((media: any, index: number) => (
<React.Fragment key={index}>
<SonarrMediaDisplay media={media} />
{index < sonarrFiltered.length - 1 && <Divider variant="dashed" my="xl" />}
</React.Fragment>
))}
{radarrFiltered.length > 0 && sonarrFiltered.length > 0 && (
<Divider variant="dashed" my="xl" />
)}
{radarrFiltered.map((media: any, index: number) => (
<React.Fragment key={index}>
<RadarrMediaDisplay media={media} />
{index < radarrFiltered.length - 1 && <Divider variant="dashed" my="xl" />}
</React.Fragment>
))}
</ScrollArea>
</Popover>
</Box>
);
}

View File

@@ -1,67 +0,0 @@
import { RadarrMediaDisplay } from './MediaDisplay';
export default {
title: 'Media display component',
args: {
media: {
title: 'Doctor Strange in the Multiverse of Madness',
originalTitle: 'Doctor Strange in the Multiverse of Madness',
originalLanguage: {
id: 1,
name: 'English',
},
secondaryYearSourceId: 0,
sortTitle: 'doctor strange in multiverse madness',
sizeOnDisk: 0,
status: 'announced',
overview:
'Doctor Strange, with the help of mystical allies both old and new, traverses the mind-bending and dangerous alternate realities of the Multiverse to confront a mysterious new adversary.',
inCinemas: '2022-05-04T00:00:00Z',
images: [
{
coverType: 'poster',
url: 'https://image.tmdb.org/t/p/original/wRnbWt44nKjsFPrqSmwYki5vZtF.jpg',
},
{
coverType: 'fanart',
url: 'https://image.tmdb.org/t/p/original/ndCSoasjIZAMMDIuMxuGnNWu4DU.jpg',
},
],
website: 'https://www.marvel.com/movies/doctor-strange-in-the-multiverse-of-madness',
year: 2022,
hasFile: false,
youTubeTrailerId: 'aWzlQ2N6qqg',
studio: 'Marvel Studios',
path: '/config/Doctor Strange in the Multiverse of Madness (2022)',
qualityProfileId: 1,
monitored: true,
minimumAvailability: 'announced',
isAvailable: true,
folderName: '/config/Doctor Strange in the Multiverse of Madness (2022)',
runtime: 126,
cleanTitle: 'doctorstrangeinmultiversemadness',
imdbId: 'tt9419884',
tmdbId: 453395,
titleSlug: '453395',
certification: 'PG-13',
genres: ['Fantasy', 'Action', 'Adventure'],
tags: [],
added: '2022-04-29T20:52:33Z',
ratings: {
tmdb: {
votes: 0,
value: 0,
type: 'user',
},
},
collection: {
name: 'Doctor Strange Collection',
tmdbId: 618529,
images: [],
},
id: 1,
},
},
};
export const Default = (args: any) => <RadarrMediaDisplay {...args} />;

View File

@@ -1,100 +0,0 @@
import { Stack, Image, Group, Title, Badge, Text, ActionIcon, Anchor } from '@mantine/core';
import { Link } from 'tabler-icons-react';
export interface IMedia {
overview: string;
imdbId: any;
title: string;
poster: string;
genres: string[];
seasonNumber?: number;
episodeNumber?: number;
}
function MediaDisplay(props: { media: IMedia }) {
const { media }: { media: IMedia } = props;
return (
<Group noWrap align="self-start" mr={15}>
<Image
radius="md"
fit="cover"
src={media.poster}
alt={media.title}
width={300}
height={400}
/>
<Stack
justify="space-between"
sx={(theme) => ({
height: 400,
})}
>
<Group direction="column">
<Group>
<Title order={3}>{media.title}</Title>
<Anchor href={`https://www.imdb.com/title/${media.imdbId}`} target="_blank">
<ActionIcon>
<Link />
</ActionIcon>
</Anchor>
</Group>
{media.episodeNumber && media.seasonNumber && (
<Text
style={{
textAlign: 'center',
color: '#a0aec0',
}}
>
Season {media.seasonNumber} episode {media.episodeNumber}
</Text>
)}
<Text align="justify">{media.overview}</Text>
</Group>
{/*Add the genres at the bottom of the poster*/}
<Group>
{media.genres.map((genre: string, i: number) => (
<Badge key={i}>{genre}</Badge>
))}
</Group>
</Stack>
</Group>
);
}
export function RadarrMediaDisplay(props: any) {
const { media }: { media: any } = props;
// Find a poster CoverType
const poster = media.images.find((image: any) => image.coverType === 'poster');
// Return a movie poster containting the title and the description
return (
<MediaDisplay
media={{
imdbId: media.imdbId,
title: media.title,
overview: media.overview,
poster: poster.url,
genres: media.genres,
}}
/>
);
}
export function SonarrMediaDisplay(props: any) {
const { media }: { media: any } = props;
// Find a poster CoverType
const poster = media.series.images.find((image: any) => image.coverType === 'poster');
// Return a movie poster containting the title and the description
return (
<MediaDisplay
media={{
imdbId: media.series.imdbId,
title: media.series.title,
overview: media.series.overview,
poster: poster.url,
genres: media.series.genres,
seasonNumber: media.seasonNumber,
episodeNumber: media.episodeNumber,
}}
/>
);
}

View File

@@ -1,7 +0,0 @@
import DateComponent from './DateModule';
export default {
title: 'Date module',
};
export const Default = (args: any) => <DateComponent {...args} />;

View File

@@ -1,41 +0,0 @@
import { Group, Text, Title } from '@mantine/core';
import dayjs from 'dayjs';
import { useEffect, useState } from 'react';
import { Clock } from 'tabler-icons-react';
import { IModule } from '../modules';
export const DateModule: IModule = {
title: 'Date',
description: 'Show the current time and date in a card',
icon: Clock,
component: DateComponent,
};
export default function DateComponent(props: any) {
const [date, setDate] = useState(new Date());
const hours = date.getHours();
const minutes = date.getMinutes();
// Change date on minute change
// Note: Using 10 000ms instead of 1000ms to chill a little :)
useEffect(() => {
setInterval(() => {
setDate(new Date());
}, 10000);
}, []);
return (
<Group p="sm" direction="column">
<Title>
{hours < 10 ? `0${hours}` : hours}:{minutes < 10 ? `0${minutes}` : minutes}
</Title>
<Text size="xl">
{
// Use dayjs to format the date
// https://day.js.org/en/getting-started/installation/
dayjs(date).format('dddd, MMMM D')
}
</Text>
</Group>
);
}

View File

@@ -1,2 +0,0 @@
export * from './date';
export * from './calendar';

View File

@@ -1,29 +0,0 @@
import { Card, useMantineTheme } from '@mantine/core';
import { useConfig } from '../../tools/state';
import { IModule } from './modules';
export default function ModuleWrapper(props: any) {
const { module }: { module: IModule } = props;
const { config } = useConfig();
const enabledModules = config.settings.enabledModules ?? [];
// Remove 'Module' from enabled modules titles
const isShown = enabledModules.includes(module.title);
const theme = useMantineTheme();
if (!isShown) {
return null;
}
return (
<Card
hidden={!isShown}
mx="sm"
radius="lg"
shadow="sm"
style={{
// Make background color of the card depend on the theme
backgroundColor: theme.colorScheme === 'dark' ? theme.colors.dark[5] : 'white',
}}
>
<module.component />
</Card>
);
}

View File

@@ -1,11 +0,0 @@
// This interface is to be used in all the modules of the project
// Each module should have its own interface and call the following function:
// TODO: Add a function to register a module
// Note: Maybe use context to keep track of the modules
export interface IModule {
title: string;
description: string;
icon: React.ReactNode;
component: React.ComponentType;
props?: any;
}

3
crowdin.yml Normal file
View File

@@ -0,0 +1,3 @@
files:
- source: /public/locales/en/**/*.json
translation: /public/locales/%two_letters_code%/**/%original_file_name%

View File

@@ -1,12 +0,0 @@
{
"name": "config",
"services": [],
"settings": {
"searchBar": true,
"searchUrl": "https://duckduckgo.com/?q=",
"enabledModules": [
"Date",
"Calendar"
]
}
}

View File

@@ -1,16 +0,0 @@
{
"name": "config_new",
"services": [
{
"type": "Other",
"name": "example",
"icon": "https://c.tenor.com/o656qFKDzeUAAAAC/rick-astley-never-gonna-give-you-up.gif",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
],
"settings": {
"searchBar": true,
"searchUrl": "https://google.com/search?q=",
"enabledModules": []
}
}

View File

@@ -2,15 +2,19 @@
"name": "default",
"services": [
{
"type": "Other",
"name": "example",
"id": "09c45847-8afc-4c1a-9697-f03192de948a",
"type": "Other",
"icon": "https://c.tenor.com/o656qFKDzeUAAAAC/rick-astley-never-gonna-give-you-up.gif",
"url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
}
],
"settings": {
"searchBar": true,
"searchUrl": "https://bing.com/search?q=",
"enabledModules": []
"searchUrl": "https://google.com/search?q="
},
"modules": {
"Search Bar": {
"enabled": true
}
}
}

View File

@@ -1,2 +1,2 @@
export const REPO_URL = 'ajnart/homarr';
export const CURRENT_VERSION = 'v0.2.0';
export const CURRENT_VERSION = 'v0.10.3';

View File

@@ -1,16 +0,0 @@
const nextJest = require('next/jest');
const createJestConfig = nextJest({
dir: './',
});
const customJestConfig = {
setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],
moduleNameMapper: {
'^@/components/(.*)$': '<rootDir>/components/$1',
'^@/pages/(.*)$': '<rootDir>/pages/$1',
},
testEnvironment: 'jest-environment-jsdom',
};
module.exports = createJestConfig(customJestConfig);

View File

@@ -1 +0,0 @@
import '@testing-library/jest-dom/extend-expect';

28
next-i18next.config.js Normal file
View File

@@ -0,0 +1,28 @@
module.exports = {
// https://www.i18next.com/overview/configuration-options#logging
i18n: {
defaultLocale: 'en',
locales: [
'en',
'de',
'es',
'fr',
'it',
'ja',
'ko',
'lol',
'nl',
'pl',
'pt',
'ru',
'sl',
'sv',
'uk',
'zh',
],
fallbackLng: 'en',
localeDetection: true,
returnEmptyString: false,
},
reloadOnPrerender: process.env.NODE_ENV === 'development',
};

View File

@@ -1,13 +1,19 @@
const { env } = require('process');
const { i18n } = require('./next-i18next.config');
const withBundleAnalyzer = require('@next/bundle-analyzer')({
enabled: process.env.ANALYZE === 'true',
});
module.exports = withBundleAnalyzer({
reactStrictMode: true,
eslint: {
ignoreDuringBuilds: true,
images: {
domains: ['cdn.jsdelivr.net'],
},
reactStrictMode: false,
experimental: {
outputStandalone: true,
},
output: 'standalone',
i18n,
});

View File

@@ -1,17 +1,17 @@
{
"name": "homarr",
"version": "0.1.6",
"private": "false",
"description": "Homarr - A homepage for your server.",
"repository": {
"type": "git",
"url": "https://github.com/ajnart/homarr"
},
"name": "homarr",
"version": "0.10.3",
"description": "Homarr - A homepage for your server.",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/ajnart/homarr"
},
"scripts": {
"dev": "next dev",
"build": "next build",
"analyze": "ANALYZE=true next build",
"start": "next start --port 7575",
"start": "next start",
"typecheck": "tsc --noEmit",
"export": "next build && next export",
"lint": "next lint",
@@ -20,68 +20,82 @@
"prettier:check": "prettier --check \"**/*.{ts,tsx}\"",
"prettier:write": "prettier --write \"**/*.{ts,tsx}\"",
"test": "npm run prettier:check && npm run lint && npm run typecheck && npm run jest",
"storybook": "start-storybook -p 7001",
"storybook:build": "build-storybook",
"ci": "yarn test && yarn lint --fix && yarn typecheck && yarn prettier:write"
},
"dependencies": {
"@mantine/core": "^4.2.4",
"@mantine/dates": "^4.2.4",
"@mantine/dropzone": "^4.2.4",
"@mantine/form": "^4.2.4",
"@mantine/hooks": "^4.2.4",
"@mantine/modals": "^4.2.4",
"@mantine/next": "^4.2.4",
"@mantine/notifications": "^4.2.4",
"@mantine/prism": "^4.2.4",
"@mantine/rte": "^4.2.4",
"@mantine/spotlight": "^4.2.4",
"@modulz/radix-icons": "^4.0.0",
"@ctrl/deluge": "^4.1.0",
"@ctrl/qbittorrent": "^4.1.0",
"@ctrl/shared-torrent": "^4.1.1",
"@ctrl/transmission": "^4.1.1",
"@dnd-kit/core": "^6.0.5",
"@dnd-kit/sortable": "^7.0.1",
"@dnd-kit/utilities": "^3.2.0",
"@emotion/react": "^11.10.0",
"@emotion/server": "^11.10.0",
"@mantine/carousel": "^5.1.0",
"@mantine/core": "^5.2.3",
"@mantine/dates": "^5.2.3",
"@mantine/dropzone": "^5.2.3",
"@mantine/form": "^5.2.3",
"@mantine/hooks": "^5.2.3",
"@mantine/modals": "^5.2.3",
"@mantine/next": "^5.2.3",
"@mantine/notifications": "^5.2.3",
"@mantine/prism": "^5.0.0",
"@nivo/core": "^0.79.0",
"@nivo/line": "^0.79.1",
"@tabler/icons": "^1.78.0",
"@tanstack/react-query": "^4.2.1",
"add": "^2.0.6",
"axios": "^0.27.2",
"cookies-next": "^2.0.4",
"dayjs": "^1.11.2",
"framer-motion": "^6.3.1",
"consola": "^2.15.3",
"cookies-next": "^2.1.1",
"dayjs": "^1.11.5",
"dockerode": "^3.3.2",
"embla-carousel-react": "^7.0.0",
"framer-motion": "^6.5.1",
"i18next": "^21.9.1",
"i18next-browser-languagedetector": "^6.1.5",
"i18next-http-backend": "^1.4.1",
"js-file-download": "^0.4.12",
"next": "12.1.5-canary.4",
"prism-react-renderer": "^1.3.1",
"react": "18.0.0",
"react-dom": "18.0.0",
"tabler-icons-react": "^1.46.0"
"next": "12.1.6",
"next-i18next": "^11.3.0",
"prism-react-renderer": "^1.3.5",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"sabnzbd-api": "^1.5.0",
"sharp": "^0.30.7",
"systeminformation": "^5.12.1",
"uuid": "^8.3.2",
"yarn": "^1.22.19"
},
"devDependencies": {
"@babel/core": "^7.17.8",
"@next/bundle-analyzer": "^12.1.4",
"@next/eslint-plugin-next": "^12.1.4",
"@storybook/addon-essentials": "^6.4.22",
"@storybook/addon-links": "^6.4.22",
"@storybook/react": "^6.4.22",
"@testing-library/dom": "^8.12.0",
"@testing-library/jest-dom": "^5.16.3",
"@testing-library/react": "^13.0.0",
"@testing-library/user-event": "^14.0.4",
"@types/jest": "^27.4.1",
"@types/node": "^17.0.23",
"@types/react": "17.0.43",
"@typescript-eslint/eslint-plugin": "^5.16.0",
"@typescript-eslint/parser": "^5.16.0",
"babel-loader": "^8.2.4",
"eslint": "^8.11.0",
"eslint-config-airbnb": "19.0.4",
"eslint-config-airbnb-typescript": "^16.1.4",
"eslint-config-mantine": "1.1.0",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-jest": "^26.1.3",
"eslint-plugin-jsx-a11y": "^6.5.1",
"eslint-plugin-react": "^7.29.4",
"eslint-plugin-react-hooks": "^4.3.0",
"eslint-plugin-storybook": "^0.5.11",
"eslint-plugin-testing-library": "^5.2.0",
"@types/dockerode": "^3.3.9",
"@types/node": "17.0.1",
"@types/react": "17.0.1",
"@types/uuid": "^8.3.4",
"@typescript-eslint/eslint-plugin": "^5.30.7",
"@typescript-eslint/parser": "^5.30.7",
"eslint": "^8.20.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-mantine": "^2.0.0",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-jest": "^26.6.0",
"eslint-plugin-jsx-a11y": "^6.6.1",
"eslint-plugin-react": "^7.30.1",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-testing-library": "^5.5.1",
"eslint-plugin-unused-imports": "^2.0.0",
"jest": "^27.5.1",
"prettier": "^2.6.2",
"storybook-addon-turbo-build": "^1.1.0",
"storybook-dark-mode": "^1.0.9",
"ts-jest": "^27.1.4",
"typescript": "4.6.3"
}
"jest": "^28.1.3",
"prettier": "^2.7.1",
"typescript": "^4.7.4"
},
"resolutions": {
"@types/react": "17.0.2",
"@types/react-dom": "17.0.2"
},
"packageManager": "yarn@3.2.1"
}

View File

@@ -1,54 +0,0 @@
import { GetServerSidePropsContext } from 'next';
import { useState } from 'react';
import { AppProps } from 'next/app';
import { getCookie, setCookies } from 'cookies-next';
import Head from 'next/head';
import { MantineProvider, ColorScheme, ColorSchemeProvider } from '@mantine/core';
import { NotificationsProvider } from '@mantine/notifications';
import Layout from '../components/layout/Layout';
import { ConfigProvider } from '../tools/state';
import { theme } from '../tools/theme';
export default function App(props: AppProps & { colorScheme: ColorScheme }) {
const { Component, pageProps } = props;
const [colorScheme, setColorScheme] = useState<ColorScheme>(props.colorScheme);
const toggleColorScheme = (value?: ColorScheme) => {
const nextColorScheme = value || (colorScheme === 'dark' ? 'light' : 'dark');
setColorScheme(nextColorScheme);
setCookies('color-scheme', nextColorScheme, { maxAge: 60 * 60 * 24 * 30 });
};
return (
<>
<Head>
<title>Homarr - A homepage for your server!</title>
<meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" />
<link rel="shortcut icon" href="/favicon.svg" />
</Head>
<ColorSchemeProvider colorScheme={colorScheme} toggleColorScheme={toggleColorScheme}>
<MantineProvider
theme={{
...theme,
colorScheme,
}}
withGlobalStyles
withNormalizeCSS
>
<NotificationsProvider limit={2} position="top-right">
<ConfigProvider>
<Layout>
<Component {...pageProps} />
</Layout>
</ConfigProvider>
</NotificationsProvider>
</MantineProvider>
</ColorSchemeProvider>
</>
);
}
App.getInitialProps = ({ ctx }: { ctx: GetServerSidePropsContext }) => ({
colorScheme: getCookie('color-scheme', ctx) || 'light',
});

View File

@@ -1,22 +0,0 @@
import Document, { DocumentContext } from 'next/document';
import { ServerStyles, createStylesServer } from '@mantine/next';
const stylesServer = createStylesServer();
export default class _Document extends Document {
static async getInitialProps(ctx: DocumentContext) {
const initialProps = await Document.getInitialProps(ctx);
// Add your app specific logic here
return {
...initialProps,
styles: (
<>
{initialProps.styles}
<ServerStyles html={initialProps.html} server={stylesServer} />
</>
),
};
}
}

View File

@@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-home-2" width="44" height="44" viewBox="0 0 24 24" stroke-width="1.5" stroke="#ffffff" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<polyline points="5 12 3 12 12 3 21 12 19 12" />
<path d="M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7" />
<rect x="10" y="12" width="4" height="4" />
</svg>

Before

Width:  |  Height:  |  Size: 438 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 483.71 327.04">
<defs>
<style>
.cls-1 {
fill: #fa5252;
}
</style>
</defs>
<path class="cls-1" d="M159.96,18.7c27.21,0,49.35,22.14,49.35,49.35v63.14c1.66-.56,3.4-.93,5.24-.93,5.56,0,10.45,2.76,13.46,6.97V68.05C228.01,30.53,197.49,0,159.96,0c-23.47,0-44.2,11.95-56.44,30.08,5.27,3.4,10.3,7.13,15.09,11.12,8.81-13.52,24.04-22.5,41.35-22.5Z"/>
<path class="cls-1" d="M269.15,130.26c1.84,0,3.59,.37,5.24,.93v-63.14c0-27.21,22.14-49.35,49.35-49.35,17.31,0,32.54,8.98,41.35,22.5,4.79-3.99,9.82-7.72,15.09-11.12C367.95,11.95,347.21,0,323.74,0c-37.52,0-68.05,30.53-68.05,68.05v69.18c3-4.2,7.89-6.96,13.45-6.96Z"/>
<path class="cls-1" d="M203.72,229.23c-33.72,8.1-62.37,26.51-83.25,51.05-11.51,13.49-20.67,28.91-27.04,45.39l44.02,.25,250.81,1.12s.04-.06,.04-.06c-27.59-73.49-106.29-116.57-184.57-97.75Z"/>
<path class="cls-1" d="M214.56,170.83c-9.15,0-16.56,7.41-16.56,16.56s7.41,16.56,16.56,16.56,16.56-7.41,16.56-16.56-7.41-16.56-16.56-16.56Z"/>
<path class="cls-1" d="M269.15,203.95c9.15,0,16.56-7.41,16.56-16.56s-7.41-16.56-16.56-16.56-16.56,7.41-16.56,16.56,7.41,16.56,16.56,16.56Z"/>
<path class="cls-1" d="M422.63,132.54l25.22-102.79s-.04-.04-.04-.04c-21.37,2.65-41.14,10.45-58.07,22.08-5.97,4.1-11.58,8.66-16.78,13.65-24.97,23.98-40.53,57.69-40.53,95.05,0,28.97,9.36,55.8,25.19,77.56,8.73,11.97,19.44,22.39,31.59,30.79l8.77-35.71c45.28-13.47,79.49-52.63,85.72-100.6h-61.07Z"/>
<path class="cls-1" d="M126.08,238.05c15.83-21.77,25.19-48.59,25.19-77.56,0-37.35-15.56-71.06-40.53-95.05-5.2-5-10.82-9.56-16.78-13.65-16.93-11.62-36.7-19.42-58.07-22.08,0,0-.04,0-.04,.04l25.22,102.79H0c6.22,47.97,40.44,87.14,85.72,100.6l8.77,35.71c12.16-8.41,22.86-18.82,31.59-30.79Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 483.71 327.04">
<defs>
<style>
.cls-1 {
fill: #fa5252;
}
</style>
</defs>
<path class="cls-1" d="M159.96,18.7c27.21,0,49.35,22.14,49.35,49.35v63.14c1.66-.56,3.4-.93,5.24-.93,5.56,0,10.45,2.76,13.46,6.97V68.05C228.01,30.53,197.49,0,159.96,0c-23.47,0-44.2,11.95-56.44,30.08,5.27,3.4,10.3,7.13,15.09,11.12,8.81-13.52,24.04-22.5,41.35-22.5Z"/>
<path class="cls-1" d="M269.15,130.26c1.84,0,3.59,.37,5.24,.93v-63.14c0-27.21,22.14-49.35,49.35-49.35,17.31,0,32.54,8.98,41.35,22.5,4.79-3.99,9.82-7.72,15.09-11.12C367.95,11.95,347.21,0,323.74,0c-37.52,0-68.05,30.53-68.05,68.05v69.18c3-4.2,7.89-6.96,13.45-6.96Z"/>
<path class="cls-1" d="M203.72,229.23c-33.72,8.1-62.37,26.51-83.25,51.05-11.51,13.49-20.67,28.91-27.04,45.39l44.02,.25,250.81,1.12s.04-.06,.04-.06c-27.59-73.49-106.29-116.57-184.57-97.75Z"/>
<path class="cls-1" d="M214.56,170.83c-9.15,0-16.56,7.41-16.56,16.56s7.41,16.56,16.56,16.56,16.56-7.41,16.56-16.56-7.41-16.56-16.56-16.56Z"/>
<path class="cls-1" d="M269.15,203.95c9.15,0,16.56-7.41,16.56-16.56s-7.41-16.56-16.56-16.56-16.56,7.41-16.56,16.56,7.41,16.56,16.56,16.56Z"/>
<path class="cls-1" d="M422.63,132.54l25.22-102.79s-.04-.04-.04-.04c-21.37,2.65-41.14,10.45-58.07,22.08-5.97,4.1-11.58,8.66-16.78,13.65-24.97,23.98-40.53,57.69-40.53,95.05,0,28.97,9.36,55.8,25.19,77.56,8.73,11.97,19.44,22.39,31.59,30.79l8.77-35.71c45.28-13.47,79.49-52.63,85.72-100.6h-61.07Z"/>
<path class="cls-1" d="M126.08,238.05c15.83-21.77,25.19-48.59,25.19-77.56,0-37.35-15.56-71.06-40.53-95.05-5.2-5-10.82-9.56-16.78-13.65-16.93-11.62-36.7-19.42-58.07-22.08,0,0-.04,0-.04,.04l25.22,102.79H0c6.22,47.97,40.44,87.14,85.72,100.6l8.77,35.71c12.16-8.41,22.86-18.82,31.59-30.79Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
public/imgs/logo/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

17
public/imgs/logo/logo.svg Normal file
View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 483.71 327.04">
<defs>
<style>
.cls-1 {
fill: #fa5252;
}
</style>
</defs>
<path class="cls-1" d="M159.96,18.7c27.21,0,49.35,22.14,49.35,49.35v63.14c1.66-.56,3.4-.93,5.24-.93,5.56,0,10.45,2.76,13.46,6.97V68.05C228.01,30.53,197.49,0,159.96,0c-23.47,0-44.2,11.95-56.44,30.08,5.27,3.4,10.3,7.13,15.09,11.12,8.81-13.52,24.04-22.5,41.35-22.5Z"/>
<path class="cls-1" d="M269.15,130.26c1.84,0,3.59,.37,5.24,.93v-63.14c0-27.21,22.14-49.35,49.35-49.35,17.31,0,32.54,8.98,41.35,22.5,4.79-3.99,9.82-7.72,15.09-11.12C367.95,11.95,347.21,0,323.74,0c-37.52,0-68.05,30.53-68.05,68.05v69.18c3-4.2,7.89-6.96,13.45-6.96Z"/>
<path class="cls-1" d="M203.72,229.23c-33.72,8.1-62.37,26.51-83.25,51.05-11.51,13.49-20.67,28.91-27.04,45.39l44.02,.25,250.81,1.12s.04-.06,.04-.06c-27.59-73.49-106.29-116.57-184.57-97.75Z"/>
<path class="cls-1" d="M214.56,170.83c-9.15,0-16.56,7.41-16.56,16.56s7.41,16.56,16.56,16.56,16.56-7.41,16.56-16.56-7.41-16.56-16.56-16.56Z"/>
<path class="cls-1" d="M269.15,203.95c9.15,0,16.56-7.41,16.56-16.56s-7.41-16.56-16.56-16.56-16.56,7.41-16.56,16.56,7.41,16.56,16.56,16.56Z"/>
<path class="cls-1" d="M422.63,132.54l25.22-102.79s-.04-.04-.04-.04c-21.37,2.65-41.14,10.45-58.07,22.08-5.97,4.1-11.58,8.66-16.78,13.65-24.97,23.98-40.53,57.69-40.53,95.05,0,28.97,9.36,55.8,25.19,77.56,8.73,11.97,19.44,22.39,31.59,30.79l8.77-35.71c45.28-13.47,79.49-52.63,85.72-100.6h-61.07Z"/>
<path class="cls-1" d="M126.08,238.05c15.83-21.77,25.19-48.59,25.19-77.56,0-37.35-15.56-71.06-40.53-95.05-5.2-5-10.82-9.56-16.78-13.65-16.93-11.62-36.7-19.42-58.07-22.08,0,0-.04,0-.04,.04l25.22,102.79H0c6.22,47.97,40.44,87.14,85.72,100.6l8.77,35.71c12.16-8.41,22.86-18.82,31.59-30.79Z"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -0,0 +1,27 @@
{
"title": "Velkommen tilbage!",
"text": "Angiv venligst adgangskoden",
"form": {
"fields": {
"password": {
"label": "Adgangskode",
"placeholder": "Din adgangskode"
}
},
"buttons": {
"submit": "Log ind"
}
},
"notifications": {
"checking": {
"title": "Tjekker din adgangskode",
"message": "Din adgangskode er ved at blive tjekket..."
},
"correct": {
"title": "Adgangskode korrekt, omdirigerer dig..."
},
"wrong": {
"title": "Adgangskoden er forkert, prøv venligst igen."
}
}
}

View File

@@ -0,0 +1,11 @@
{
"actions": {
"save": "Gem"
},
"tip": "Tip: ",
"time": {
"seconds": "sekunder",
"minutes": "minutter",
"hours": "timer"
}
}

View File

@@ -0,0 +1,118 @@
{
"actionIcon": {
"tooltip": "Tilføj en tjeneste"
},
"modal": {
"title": "Tilføj tjeneste",
"form": {
"validation": {
"invalidUrl": "Angiv venligst en gyldig URL-adresse",
"noStatusCodeSelected": "Vælg venligst en statuskode"
}
},
"tabs": {
"options": {
"title": "Indstillinger",
"form": {
"serviceName": {
"label": "Tjenestenavn",
"placeholder": "Plex"
},
"iconUrl": {
"label": "Ikon-URL"
},
"serviceUrl": {
"label": "Tjeneste-URL"
},
"onClickUrl": {
"label": "Ved klik på URL"
},
"serviceType": {
"label": "Tjenestetype",
"defaultValue": "Andet",
"placeholder": "Vælg en"
},
"category": {
"label": "Kategori",
"placeholder": "Vælg en eksisterende kategori eller opret en ny",
"nothingFound": "Intet fundet",
"createLabel": "+ Opret {{query}}"
},
"integrations": {
"apiKey": {
"label": "API nøgle",
"placeholder": "Din API nøgle",
"validation": {
"noKey": "Ugyldig nøgle"
},
"tip": {
"text": "Hent din API nøgle",
"link": "her."
}
},
"qBittorrent": {
"username": {
"label": "Brugernavn",
"placeholder": "admin",
"validation": {
"invalidUsername": "Ugyldigt brugernavn"
}
},
"password": {
"label": "Adgangskode",
"placeholder": "adminadmin",
"validation": {
"invalidPassword": "Ugyldig adgangskode"
}
}
},
"deluge": {
"password": {
"label": "Adgangskode",
"placeholder": "adgangskode",
"validation": {
"invalidPassword": "Ugyldig adgangskode"
}
}
},
"transmission": {
"username": {
"label": "Brugernavn",
"placeholder": "admin",
"validation": {
"invalidUsername": "Ugyldigt brugernavn"
}
},
"password": {
"label": "Adgangskode",
"placeholder": "adminadmin",
"validation": {
"invalidPassword": "Ugyldig adgangskode"
}
}
}
}
}
},
"advancedOptions": {
"title": "Avancerede indstillinger",
"form": {
"httpStatusCodes": {
"label": "HTTP status kode",
"placeholder": "Vælg gyldige statuskoder",
"clearButtonLabel": "Ryd valgte",
"nothingFound": "Intet fundet"
},
"openServiceInNewTab": {
"label": "Åbn tjeneste i ny fane"
},
"buttons": {
"submit": {
"content": "Tilføj tjeneste"
}
}
}
}
}
}
}

View File

@@ -0,0 +1,18 @@
{
"modal": {
"title": "Ændr en tjeneste",
"buttons": {
"save": "Gem tjeneste"
}
},
"menu": {
"labels": {
"settings": "Indstillinger",
"dangerZone": "Farezone"
},
"actions": {
"edit": "Rediger",
"delete": "Slet"
}
}
}

View File

@@ -0,0 +1,12 @@
{
"accordions": {
"downloads": {
"text": "Dine downloads",
"torrents": "Dine Torrent downloads",
"usenet": "Dine Usenet downloads"
},
"others": {
"text": "Andre"
}
}
}

View File

@@ -0,0 +1,11 @@
{
"descriptor": {
"name": "Kalender",
"description": "Et kalendermodul til visning af kommende udgivelser. Det interagerer med Sonarr- og Radarr-API'erne.",
"settings": {
"sundayStart": {
"label": "Søndag første ugedag"
}
}
}
}

View File

@@ -0,0 +1,6 @@
{
"buttons": {
"play": "Afspil",
"request": "Anmod"
}
}

View File

@@ -0,0 +1,5 @@
{
"settings": {
"label": "Indstillinger"
}
}

View File

@@ -0,0 +1,53 @@
{
"descriptor": {
"name": "Dash.",
"description": "Et modul til visning af graferne for din kørende Dash. instans.",
"settings": {
"cpuMultiView": {
"label": "CPU Multikerne Visning"
},
"storageMultiView": {
"label": "Multidrevet Lagervisning"
},
"useCompactView": {
"label": "Brug kompakt tilstand"
},
"graphs": {
"label": "Grafer"
},
"url": {
"label": "Dash. URL"
}
}
},
"card": {
"title": "Dash.",
"errors": {
"noService": "Ingen Dash. service fundet. Tilføj venligst en til dit Homarr-dashboard eller indstil en Dash. URL i modulindstillingerne",
"noInformation": "Kan ikke hente information fra dash. - kører du den nyeste version?"
},
"graphs": {
"storage": {
"title": "Lager",
"label": "Lager:"
},
"network": {
"title": "Netværk",
"label": "Netværk:",
"metrics": {
"download": "Down",
"upload": "Up"
}
},
"cpu": {
"title": "CPU"
},
"memory": {
"title": "RAM"
},
"gpu": {
"title": "GPU"
}
}
}
}

View File

@@ -0,0 +1,11 @@
{
"descriptor": {
"name": "Dato",
"description": "Vis det aktuelle klokkeslæt og den aktuelle dato på et kort",
"settings": {
"display24HourFormat": {
"label": "Vis fuld tid (24-timer)"
}
}
}
}

View File

@@ -0,0 +1,35 @@
{
"descriptor": {
"name": "Download hastighed",
"description": "Vis den aktuelle downloadhastighed for understøttede tjenester"
},
"card": {
"table": {
"header": {
"name": "Navn",
"size": "Størrelse",
"download": "Down",
"upload": "Up",
"estimatedTimeOfArrival": "ETA",
"progress": "Fremskridt"
},
"body": {
"nothingFound": "Ingen torrents fundet"
}
},
"lineChart": {
"title": "Nuværende downloadhastighed",
"download": "Download: {{download}}",
"upload": "Upload: {{upload}}",
"timeSpan": "{{seconds}} sekunder siden",
"totalDownload": "Download: {{download}}/s",
"totalUpload": "Upload: {{upload}}/s"
},
"errors": {
"noDownloadClients": {
"title": "Ingen understøttede downloadklienter fundet!",
"text": "Tilføj en downloadtjeneste for at se dine aktuelle downloads"
}
}
}
}

View File

@@ -0,0 +1,83 @@
{
"descriptor": {
"name": "Docker",
"description": "Tillader dig nemt at administrere dine docker containere"
},
"search": {
"placeholder": "Søg efter container- eller imagenavn"
},
"table": {
"header": {
"name": "Navn",
"image": "Image",
"ports": "Porte",
"state": "Tilstand"
},
"body": {
"portCollapse": "{{ports}} flere"
},
"states": {
"running": "Kører",
"created": "Oprettet",
"stopped": "Stoppet",
"unknown": "Ukendt"
}
},
"actionBar": {
"addService": {
"title": "Tilføj tjeneste",
"message": "Tilføj tjeneste til Homarr"
},
"restart": {
"title": "Genstart"
},
"stop": {
"title": "Stop"
},
"start": {
"title": "Start"
},
"refreshData": {
"title": "Opdater data"
},
"remove": {
"title": "Fjern"
},
"addToHomarr": {
"title": "Tilføj til Homarr"
}
},
"actions": {
"start": {
"start": "Starter",
"end": "Startet"
},
"stop": {
"start": "Stopper",
"end": "Stoppet"
},
"restart": {
"start": "Genstarter",
"end": "Genstartet"
},
"remove": {
"start": "Fjerner",
"end": "Fjernet"
}
},
"errors": {
"integrationFailed": {
"title": "Docker integration mislykkedes",
"message": "Har du glemt at montere docker socket ?"
},
"unknownError": {
"title": "Der opstod en fejl"
},
"oneServiceAtATime": {
"title": "Du må kun tilføje én tjeneste ad gangen!"
}
},
"actionIcon": {
"tooltip": "Docker"
}
}

View File

@@ -0,0 +1,30 @@
{
"descriptor": {
"name": "Overseerr",
"description": "Giver dig mulighed for at søge og tilføje medier fra Overseerr/Jellyseerr"
},
"popup": {
"item": {
"buttons": {
"askFor": "Spørg efter {{title}}",
"cancel": "Annuller",
"request": "Anmod"
},
"alerts": {
"automaticApproval": {
"title": "Brug API nøgle",
"text": "Denne anmodning vil blive godkendt automatisk"
}
}
},
"seasonSelector": {
"caption": "Sæt kryds ved de sæsoner, du ønsker at downloade",
"table": {
"header": {
"season": "Sæson",
"numberOfEpisodes": "Antal episoder"
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
{
"descriptor": {
"name": "Ping",
"description": "Giver dig mulighed for at kontrollere, om tjenesten er oppe eller returnerer en bestemt HTTP-statuskode."
},
"states": {
"online": "Online {{response}}",
"offline": "Offline {{response}}",
"loading": "Indlæser..."
}
}

View File

@@ -0,0 +1,9 @@
{
"descriptor": {
"name": "Søgebjælke",
"description": "Søgebjælke til at søge på nettet, Youtube, Torrents eller Overseerr"
},
"input": {
"placeholder": "Søg på nettet..."
}
}

View File

@@ -0,0 +1,40 @@
{
"descriptor": {
"name": "Torrent",
"description": "Vis den aktuelle downloadhastighed for understøttede tjenester",
"settings": {
"hideComplete": {
"label": "Skjul fuldførte torrents"
}
}
},
"card": {
"table": {
"header": {
"name": "Navn",
"size": "Størrelse",
"download": "Down",
"upload": "Up",
"estimatedTimeOfArrival": "ETA",
"progress": "Fremskridt"
},
"body": {
"nothingFound": "Ingen torrents fundet"
}
},
"lineChart": {
"title": "Nuværende downloadhastighed",
"download": "Download: {{download}}",
"upload": "Upload: {{upload}}",
"timeSpan": "{{seconds}} sekunder siden",
"totalDownload": "Download: {{download}}/s",
"totalUpload": "Upload: {{upload}}/s"
},
"errors": {
"noDownloadClients": {
"title": "Ingen understøttede downloadklienter fundet!",
"text": "Tilføj en downloadtjeneste for at se dine aktuelle downloads"
}
}
}
}

View File

@@ -0,0 +1,49 @@
{
"descriptor": {
"name": "Sabnzbd",
"description": "Tillader dig at se din Sabnzbd kø og historie, pause og genoptage downloads"
},
"card": {
"errors": {
"noDownloadClients": {
"title": "Ingen understøttede downloadklienter fundet!",
"text": "Tilføj en downloadtjeneste for at se dine aktuelle downloads"
}
}
},
"tabs": {
"queue": "Kø",
"history": "Historik"
},
"info": {
"sizeLeft": "Størrelse tilbage",
"paused": "På pause"
},
"queue": {
"header": {
"name": "Navn",
"size": "Størrelse",
"eta": "ETA",
"progress": "Fremskridt"
},
"empty": "Tom",
"error": {
"title": "Fejl",
"message": "Der er opstået en fejl"
},
"paused": "På pause"
},
"history": {
"header": {
"name": "Navn",
"size": "Størrelse",
"duration": "Varighed"
},
"empty": "Intet indhold",
"error": {
"title": "Fejl",
"message": "Fejl ved indlæsning af historik"
},
"paused": "På pause"
}
}

View File

@@ -0,0 +1,32 @@
{
"descriptor": {
"name": "Vejr",
"description": "Se det aktuelle vejr på din placering",
"settings": {
"displayInFahrenheit": {
"label": "Vis i Fahrenheit"
},
"location": {
"label": "Vejr lokation"
}
}
},
"card": {
"weatherDescriptions": {
"clear": "Skyfrit",
"mainlyClear": "Hovedsageligt skyfrit",
"fog": "Tåge",
"drizzle": "Støvregn",
"freezingDrizzle": "Støvregn med isslag",
"rain": "Regn",
"freezingRain": "Isslag",
"snowFall": "Snefald",
"snowGrains": "Mildt snefald",
"rainShowers": "Regnbyger",
"snowShowers": "Snebyger",
"thunderstorm": "Tordenvejr",
"thunderstormWithHail": "Tordenvejr med hagl",
"unknown": "Ukendt"
}
}
}

View File

@@ -0,0 +1,14 @@
{
"title": "Indstillinger",
"tooltip": "Indstillinger",
"tabs": {
"common": "Generelle",
"customizations": "Tilpasninger"
},
"tips": {
"configTip": "Upload din konfigurationsfil ved at trække og slippe den på siden!"
},
"credits": {
"madeWithLove": "Lavet med ❤️ af @"
}
}

View File

@@ -0,0 +1,3 @@
{
"label": "App Bredde"
}

View File

@@ -0,0 +1,3 @@
{
"suffix": "{{color}} farve"
}

View File

@@ -0,0 +1,3 @@
{
"label": "App Gennemsigtighed"
}

Some files were not shown because too many files have changed in this diff Show More