Compare commits

...

656 Commits

Author SHA1 Message Date
Manuel
dfcb899013 Stale time for entity state (#1702) 2023-11-23 22:21:34 +01:00
Manuel
5522abdfb6 🔖 Increase version (#1699) 2023-11-23 21:46:51 +01:00
Manuel
312e2c8297 #698 homeassistant widget (#1658) 2023-11-23 21:44:05 +01:00
Thomas Camlong
7f46fafbb9 🌐 New Crowdin updates (#1692) 2023-11-23 21:43:18 +01:00
Tagaishi
5a8a378a2e 🐛 Affix overlapping custom CSS box (#1687) 2023-11-21 18:34:01 +01:00
Thomas Camlong
fe63c03372 🌐 New Crowdin updates (#1682) 2023-11-21 18:33:18 +01:00
Meier Lukas
eadfa4a10f Add support for installation in address bar (#1675) 2023-11-18 22:11:29 +01:00
Thomas Camlong
5aefd0962f New Crowdin updates (#1641) 2023-11-18 15:43:46 +01:00
tuxsudo
da7c111438 Allow custom nextauth port (#1663) 2023-11-18 15:42:47 +01:00
Thomas Camlong
228c51299b Merge pull request #1651 from ajnart/fix-notebook-settings-overlapped 2023-11-15 20:54:40 +01:00
Thomas Camlong
57975f3030 Merge pull request #1652 from ajnart/fix-edit-mode-notification-link
🐛 Link to definition of screen sized for edit mode notification wrong
2023-11-15 09:08:57 +01:00
Thomas Camlong
f4e737b4a1 Merge pull request #1654 from ajnart/add-licence-field-to-migration-package-json
🐛 Migrate package.json has no license field
2023-11-15 09:08:26 +01:00
Tagaishi
a933406ef8 Merge pull request #1655 from No-Maines-Land/patch-1
Update GeneralTab.tsx
2023-11-15 08:40:46 +01:00
No-Maines-Land
a30d6f6f7b Update GeneralTab.tsx 2023-11-15 01:03:38 -05:00
Meier Lukas
34074b1c92 🐛 Migrate package.json has no license field 2023-11-15 06:48:23 +01:00
Meier Lukas
f7ab929bcb 🐛 Link to definition of screen sized for edit mode notification wrong 2023-11-15 06:44:07 +01:00
Meier Lukas
21dcde44a1 🐛 Notebook edit button placed above edit mode settings 2023-11-15 06:39:40 +01:00
Thomas Camlong
221c13d92f Merge pull request #1639 from ajnart/fix-flags 2023-11-14 21:16:23 +01:00
Thomas Camlong
4486d4b49d Merge branch 'dev' into fix-flags 2023-11-14 21:15:00 +01:00
Thomas Camlong
1ee17463c2 Merge pull request #1637 from ajnart/error-serialization-gssp 2023-11-14 21:13:25 +01:00
ajnart
687c7587df ♻️ Remove the checks for mounts 2023-11-14 21:11:41 +01:00
ajnart
6484ed5976 add country again 2023-11-14 21:10:04 +01:00
Meier Lukas
8ee28767fc 🐛 Fix build issue 2023-11-14 21:06:07 +01:00
Meier Lukas
a2cfe8391e Remove mount check do to automatic mounting with Volume in Dockerfile 2023-11-14 20:58:08 +01:00
Meier Lukas
de2a632a4e 🐛 Failed to stage 2023-11-14 20:52:22 +01:00
Meier Lukas
f06dff7bb7 🐛 Add production environment check before checking mountpoint 2023-11-14 20:52:05 +01:00
Meier Lukas
7634062a85 🐛 Error object not compatible with json parsing of gssp 2023-11-14 20:43:59 +01:00
Meier Lukas
a0efd01d43 🐛 Error object not compatible with json parsing of gssp 2023-11-14 20:42:17 +01:00
Thomas Camlong
c9d1a12299 🐛 Copy default.json if it doesn't exist (#1636) 2023-11-14 20:31:39 +01:00
Thomas Camlong
c6b945775a Merge pull request #1622 from Tagaishi/overseerr-link-in-search-fix 2023-11-14 20:04:55 +01:00
Thomas Camlong
6e6f435abc Merge pull request #1629 from ajnart/ssr/optimize 2023-11-14 20:04:25 +01:00
Thomas Camlong
12d531c258 New Crowdin updates (#1614) 2023-11-14 20:04:13 +01:00
Tagaishi
de344ccea9 🐛 Remove notebook edit button for non admins (#1634)
* 🐛 Remove permission to modify text to non admins

* 🐛 notebook read only checks admin only

Fixed by @Tagaishi
2023-11-14 20:02:24 +01:00
Meier Lukas
b05152abb1 🐛 File busy with node > 20.3 (#1630) 2023-11-13 21:48:29 +01:00
ajnart
d2e7615345 🧪 Fix tests 2023-11-13 21:45:21 +01:00
Meier Lukas
404d73ebf7 🔖 Bumb version to 1.14.1 (#1627) 2023-11-13 20:50:35 +01:00
ajnart
5a563b3875 Improve boards page, show if Public/Restricted 2023-11-13 20:28:31 +01:00
ajnart
e3e890f0a1 Update crowdin data 2023-11-13 20:20:35 +01:00
Tagaishi
a1e8ffc367 🐛 Logo header size fix (#1625) 2023-11-13 20:07:00 +01:00
Thomas Camlong
811d940f2b 🐳 Fix issues with dockerfile (#1611)
* Add `wait $PID` to be able to send SIG_ABORT

* Move to docker `entrypoint`

* Change default NEXTAUTH_URL

* Add `VOLUME` instruction

* corrected a typo

* 🐳 Fix docker TCP not working

Fixes Lost docker connection via TCP with 0.14.0 update #1577

* 🚧 Improve dockerfile and start script and fix permission issue by adding new user with permission to read / write to /data folder

* 🐛 Cleanup changes, Local db:migrate script not working, CI failed

*  Image properties customization (#1590)

* 🌐 New Crowdin updates (#1572)

*  Add notice page for readonly db

* Misc docker changes

* 🐳 Add `homarr` as `USER`

* 🐛 Unable to use user homarr because db.sqlite file is already owned by root

---------

Co-authored-by: Lumilias <10852161+Lumilias@users.noreply.github.com>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com>
Co-authored-by: Manuel <manuel.ruwe@bluewin.ch>
2023-11-13 20:04:44 +01:00
Tagaishi
d2441ba86a 🐛 Overseerr link in search not working fix 2023-11-13 13:21:49 +01:00
Thomas Camlong
a3ca74ab46 Merge pull request #1613 from benniblot/dev 2023-11-12 19:01:01 +01:00
ajnart
102bd5deee ⚗️ Try to drastically reduce page load time
by using TRPC server-side helpers :
https://trpc.io/docs/client/nextjs/server-side-helpers
2023-11-12 17:24:25 +01:00
Benjamin
f3d24a62f5 fixed a bug that displayed a "," after the last item 2023-11-12 13:39:14 +00:00
Someone
3edd2b8ea2 Fixed typo (#1612)
The image is not repeated any may not fill the entire space (recommended) =>
The image is not repeated and may not fill the entire space (recommended)
2023-11-12 14:21:17 +01:00
Manuel
30378d299e fix: customize page crashing for invalid board (#1610) 2023-11-12 14:20:48 +01:00
Thomas Camlong
0437b63870 🌐 New Crowdin updates (#1572) 2023-11-12 13:37:54 +01:00
Manuel
27037c6f50 Image properties customization (#1590) 2023-11-12 13:37:32 +01:00
Thomas Camlong
e900a7b07e 🐳 Improve dockerfile and start script and fix permission issue #1602 2023-11-12 13:37:01 +01:00
ajnart
173727c155 🐳 Fix docker TCP not working
Fixes Lost docker connection via TCP with 0.14.0 update #1577
2023-11-12 13:35:57 +01:00
Thomas Camlong
c7b25ce21e Merge pull request #1603 from Lumilias/dev 2023-11-12 13:02:33 +01:00
Meier Lukas
d7cdd6a30b 🐛 Cleanup changes, Local db:migrate script not working, CI failed 2023-11-12 11:20:22 +01:00
Lumilias
e1b4d76133 corrected a typo 2023-11-11 18:55:58 -06:00
Meier Lukas
2a1f73345c 🚧 Improve dockerfile and start script and fix permission issue by adding new user with permission to read / write to /data folder 2023-11-12 01:02:26 +01:00
Meier Lukas
e9aef74815 🐛 Placeholder width stretches out of screen (#1587) 2023-11-11 16:49:35 +01:00
Manuel
b146a7e1e2 🐛 Allow anonymous condition for default board (#1588) 2023-11-11 16:47:21 +01:00
Meier Lukas
351aa47e47 🐛 Logo has no height and object-fit is not contain #1581 (#1584) 2023-11-11 15:34:50 +01:00
Meier Lukas
6753eeb822 🐛 Add rm commands before move command (#1586) 2023-11-11 15:34:30 +01:00
Thomas Camlong
82b292fce1 Merge pull request #1575 from ajnart/master 2023-11-10 23:40:14 +01:00
ajnart
2b3a4393f3 💚 Fix CI 2023-11-10 23:20:07 +01:00
ajnart
2f660dd992 💚 Fix CI 2023-11-10 23:18:57 +01:00
Thomas Camlong
a3e7491d05 Merge pull request #1505 from ajnart/dev
Co-authored-by: Thomas Camlong <thomascamlong@gmail.com>
Co-authored-by: Tagaishi <Tagaishi@hotmail.ch>
Co-authored-by: Manuel <manuel.ruwe@bluewin.ch>
Co-authored-by: Meier Lukas <meierschlumpf@gmail.com>
Co-authored-by: Manuel <30572287+manuel-rw@users.noreply.github.com>
Co-authored-by: Tobias Stadler <28538704+devtobi@users.noreply.github.com>
Co-authored-by: Henry Skrtich <1214484+hskrtich@users.noreply.github.com>
Co-authored-by: AuthorShin <a.saneie@yahoo.com>
Co-authored-by: Diogo Valentim <diogovalentte10@gmail.com>
Co-authored-by: Someone <10882916+InterN0te@users.noreply.github.com>
Co-authored-by: Spillebulle <46653946+Spillebulle@users.noreply.github.com>
Co-authored-by: Justijn Depover <justijndepover@gmail.com>
Fix locale for calendar and clock (#1330)
fix (#1375)
close modal on click when opened (#1396)
fix (#1401)
fix: stop triming traling slashes (#1435)
fixes #777
fix: trim media server url (#1438)
Fix miscellaneous console errors (#1418)
fixes (#1419)
Fix tiptap url CVE (#1459)
Fix allow guest issue (#1472)
Fix the leading slash when adding container via docker (#1478)
2023-11-10 23:06:14 +01:00
Manuel
d7f785b374 config: update dockerfile path (#1571) 2023-11-10 22:43:22 +01:00
ajnart
fe0042d466 🔥 Remove experimental header 2023-11-10 22:37:15 +01:00
ajnart
30f3897a80 🔧 Change default config colors 2023-11-10 22:23:06 +01:00
Manuel
786e6cae9b ⚰️ Update dead path (#1570) 2023-11-10 22:22:39 +01:00
ajnart
9d7a5abfd5 🔥 Remove experimental header 2023-11-10 21:52:19 +01:00
Thomas Camlong
45b9caf231 New Crowdin updates (#1569) 2023-11-10 21:23:07 +01:00
Thomas Camlong
04bf4914e7 Merge pull request #1568 from ajnart/feat/new-default-board 2023-11-10 21:20:02 +01:00
Manuel
a0eb68782a feat: new default board 2023-11-09 21:27:23 +01:00
Thomas Camlong
545749a057 🐛 Refactor DateTile component to use API timezone (#1563)
and remove unused hook
2023-11-09 20:25:32 +01:00
Thomas Camlong
4316ffb27f Add scrollbar-gutter property to global styles (#1562) 2023-11-09 20:24:51 +01:00
Thomas Camlong
704ae1cbe4 🌐 New Crowdin updates (#1551) 2023-11-09 20:24:27 +01:00
Manuel
82c79c6591 🚑 Middleware crash (#1567) 2023-11-09 20:23:53 +01:00
ajnart
67eaada59b 📦 Rollback TS 2023-11-09 19:42:47 +01:00
ajnart
1984baf041 📦 Rollback TS 2023-11-09 19:40:41 +01:00
ajnart
3cdb1c3253 📦 Rollback TS 2023-11-09 19:36:25 +01:00
ajnart
50b21667bb 👷 Update CI 2023-11-09 18:11:29 +01:00
ajnart
694acafe21 🔥 Remove unused language country property 2023-11-09 03:28:17 +01:00
ajnart
886a48cd75 🔥 Refactor language list in language.ts 2023-11-09 03:28:02 +01:00
ajnart
4b350125c3 🔧 Change vscode config files 2023-11-09 03:27:13 +01:00
ajnart
c5409e726d 📦 Update yarn lockfile 2023-11-09 03:14:40 +01:00
Thomas Camlong
a95e773cb0 Merge pull request #1565 from ajnart/remove-unused 2023-11-09 03:10:27 +01:00
ajnart
1bf45b22f3 📌 Update TypeScript version to 5.2.2 in package.json
and yarn.lock
2023-11-08 20:51:40 +01:00
ajnart
231507dd76 re-launch ci 2023-11-08 20:46:43 +01:00
ajnart
a36813da39 Refactor middleware.ts by removing 'process' 2023-11-08 20:41:36 +01:00
ajnart
ce30bffb6a ⚰️ Remove unused translations files and packages 2023-11-08 20:41:09 +01:00
Thomas Camlong
080eb1b369 Merge pull request #1560 from ajnart/re-onboard-renovate
🔧 Remove Renovate configuration from package.json
2023-11-07 17:28:50 +01:00
ajnart
20584d0a98 🔧 Remove Renovate configuration from package.json 2023-11-07 17:28:19 +01:00
Thomas Camlong
6dd0570b2d Merge pull request #1559 from ajnart/remove-annoying-prints
🔇 Remove unnecessary console logs
2023-11-07 17:07:48 +01:00
ajnart
3c4f5efa05 🔇 Remove unnecessary console logs 2023-11-07 17:06:38 +01:00
Tagaishi
7f851fdd10 Merge pull request #1554 from InterN0te/dev-addRatio
Add Torrents ratio in Torrents Queue Widget
2023-11-07 12:36:43 +01:00
Someone
314ccc7a23 Fix info for displayRatioWithFilter switch 2023-11-07 12:15:56 +01:00
Someone
bb92c564d6 Format code with VSC 2023-11-07 12:08:24 +01:00
Someone
df2d7bebab Fix bad English
Co-authored-by: Tagaishi <Tagaishi@hotmail.ch>
2023-11-07 11:48:51 +01:00
Someone
ff582e5dcb More readable code
Co-authored-by: Tagaishi <Tagaishi@hotmail.ch>
2023-11-07 11:46:32 +01:00
Thomas Camlong
d63b6d8ea8 Merge pull request #1539 from ajnart/about-page
Turn about modal into a static page
2023-11-07 09:57:25 +01:00
ajnart
8ad2111e45 Add i18n-ally settings for React-i18next 2023-11-07 09:55:49 +01:00
ajnart
504a290f67 💡 Add title to About page 2023-11-07 09:55:29 +01:00
Tagaishi
b23c2c1933 Merge pull request #1556 from Tagaishi/media-request-wrapping-fix
🐛 Media Request wrapping fix with line clamp
2023-11-07 05:52:23 +01:00
Tagaishi
cd4dfb1707 🐛 Media Request wrapping fix with line clamp 2023-11-06 06:13:35 +01:00
Tagaishi
f76c9f1d68 Merge pull request #1553 from InterN0te/patch-1
Use dynamic conversion for Torrent DownloadSpeed and UploadSpeed
2023-11-06 04:13:01 +01:00
Tagaishi
5dcdeab21c Merge pull request #1534 from InterN0te/master-showActiveTorrent
Add an option to show active torrents when completed torrents are hidden in Torrent Queue widget
2023-11-06 04:11:34 +01:00
Someone
17871f62f5 Fixed test
Export getTorrentsRatio function to be called in test
2023-11-06 02:38:52 +01:00
Someone
7a81742a19 Remove test from other PR 2023-11-06 02:34:45 +01:00
Someone
69d1e4e491 Add Calcul ratio test 2023-11-06 02:28:07 +01:00
Someone
c8dc3abab6 Rename fonction to more explicite name 2023-11-06 01:54:55 +01:00
Someone
8abec93aad Update torrents-status.json
Fix label and description
2023-11-06 01:51:55 +01:00
Someone
37191b971b Used label filter only if necessary 2023-11-06 00:18:24 +00:00
Someone
8495d5b165 Added global ratio (only selected labels) and filtered torrents list ratio 2023-11-06 00:15:20 +00:00
ajnart
2f15fe68d0 🐛 Remove opacity from credits button 2023-11-05 17:52:40 +01:00
Someone
2d28ecc990 Use dynamic unit for Torrent DownloadSpeed and UploadSpeed
Use humanFileSize to display Torrent DownloadSpeed and UploadSpeed
2023-11-05 17:39:37 +01:00
Someone
390d4e7522 Switch speedLimitOfActiveTorrents to camel case 2023-11-03 21:05:16 +00:00
Someone
f07d5f798c Revert "Switch to CamelCase for DisplayActiveTorrents var"
This reverts commit c6c2dbd061.

Revert : Wrong case used
2023-11-03 21:02:45 +00:00
Someone
c6c2dbd061 Switch to CamelCase for DisplayActiveTorrents var 2023-11-03 20:41:54 +00:00
Thomas Camlong
f4a4b3c252 🌐 New Crowdin updates (#1531) 2023-11-03 21:15:08 +01:00
Tagaishi
4f0be52fe9 Notebook Add Advanced Controls (#1452)
* 💄 Reduce notebook widget min width to fit sidebar

*  Highlight and text align controls

*  Notebook Image support

*  Notebook text coloring support

*  Notebook Image resize support

*  Notebook Advanced Highlight and Text Coloring

*  TaskList and lists indentations (not finished)

* ⬆️ Updated tiptap components to 2.1.12

* 🐛 notebook content not updating

* Cancel Edit function + 🐛onReadOnlyCheck bug fix

*  Notebook Table

* 🚧 Tweaks

* 🌐 Added Translations

* 🐛 Fix notebook table column resize

* 🌐 Replace common translations

*  Notebook Underline, default text change
2023-11-03 21:14:29 +01:00
Tagaishi
5eb4365a59 Auto handle sonarr and radarr API differences (#1548) 2023-11-03 21:07:37 +01:00
Justijn Depover
388a856a42 Update default.json with typo (#1547) 2023-11-03 20:57:53 +01:00
Tagaishi
832276e80e Revert "Fix torrent speeds unit"
This reverts commit b60be13ab9.
2023-11-02 11:35:17 +01:00
Someone
b60be13ab9 Fix torrent speeds unit 2023-11-02 10:41:42 +01:00
Tagaishi
521d47f41c Merge pull request #1546 from Spillebulle/Spillebulle
Fixed Typos
2023-11-02 10:23:58 +01:00
Spillebulle
ce6cefdc1d Update general.json
Reverted Swedish changes
2023-11-02 10:11:01 +01:00
Someone
982bb557a3 Renamed option "Display active torrents"
Removed change in public/locales/fr/modules/torrents-status.json
2023-11-02 08:44:46 +00:00
Spillebulle
c37c5f9347 Fixed Typos 2023-11-02 07:37:44 +01:00
Thomas Camlong
6428944908 Merge pull request #1509 from diogovalentte/dev
feat: add support for default ports on http(s) protocols on download.ts
2023-11-01 23:12:16 +01:00
Thomas Camlong
242c1b9410 Merge pull request #1545 from ajnart/add-czech
Add-czech
2023-11-01 23:11:29 +01:00
ajnart
6ca364dc95 🔧 Update crowdin.yml config file 2023-11-01 23:10:47 +01:00
ajnart
90800e539d 🌐 Add Czech 2023-11-01 23:10:28 +01:00
Thomas Camlong
5c8155b0d7 Merge pull request #1541 from InterN0te/dev-fixTorrentSpeed-Mb-MB
Fix Mb/s / MB/s conversion error in torrents speed
2023-11-01 22:59:41 +01:00
Someone
04e8c03482 Update TorrentQueueItem.tsx 2023-11-01 13:46:08 +01:00
ajnart
173db1876d Add add app event 2023-11-01 12:00:56 +01:00
ajnart
67a81a97db 🐛 Fix locales 2023-11-01 03:28:41 +01:00
ajnart
58e57492e2 Completely rework the about page 2023-11-01 02:53:39 +01:00
Someone
33fa6cfafe Fixed torrent upload speed comparison to consider it active
Torrent.uploadSpeed is already in Bytes/s, no need to multiple SpeedLimitOfActiveTorrents by 8
See PR #1273 and Issue #488
2023-11-01 00:25:56 +00:00
Someone
534318f74c Update en/.../torrents-status.json
Fix English unit for Megabytes per second
2023-11-01 01:11:12 +01:00
ajnart
6f12863863 Merge branch 'dev' into about-page 2023-10-31 23:48:37 +01:00
ajnart
ea8c8ffee2 🚧 WIP on about page 2023-10-31 23:48:24 +01:00
Manuel
e991bcd394 🐛 Access callback conditions (#1536) 2023-10-31 19:04:59 +01:00
Someone
b135063f5e Add option to set uploadspeed limit to consider torrents as active 2023-10-31 15:31:08 +00:00
Someone
ae11d5d84f Update TorrentTile.spec.ts to fix test 2023-10-31 15:44:10 +01:00
Someone
2c019e12d6 Add an option to show active torrents when
completed torrents are hidden
2023-10-31 11:23:26 +00:00
Thomas Camlong
780bfd6292 🐛 Use session lanugage instead of locale for crowdin live-translate 2023-10-31 10:32:55 +01:00
Thomas Camlong
f776630b09 🐛 Use session lanugage instead of locale for crowdin live-translate 2023-10-31 10:21:24 +01:00
Thomas Camlong
493711cf7b 🐛 Remove emoji field in language.ts 2023-10-31 10:00:53 +01:00
Thomas Camlong
bb76d51655 🐛 fix crossOrigin spelling 2023-10-31 09:55:23 +01:00
Thomas Camlong
9c7cdaff39 Merge pull request #1526 from ajnart/crowdin-live-translate 2023-10-31 09:51:43 +01:00
Thomas Camlong
dca6d3363f Merge branch 'dev' into crowdin-live-translate 2023-10-31 09:18:57 +01:00
Thomas Camlong
41512fccb5 Merge pull request #1432 from Tagaishi/common-troubleshoot-and-auto-handling 2023-10-31 09:17:46 +01:00
Thomas Camlong
70355b2193 Merge pull request #1528 from ajnart/crossorigin/auth 2023-10-31 09:16:19 +01:00
Thomas Camlong
0b2408ae09 Merge pull request #1518 from ajnart/add-chinese-traditional 2023-10-31 09:14:26 +01:00
Thomas Camlong
3d90a8b44b 🌐 Update Chinese language mappings 2023-10-31 09:14:02 +01:00
Thomas Camlong
fc969e5042 New Crowdin updates (#1529)
Add Chinese traditional and Crowdin pseudo language (CR)
2023-10-31 09:12:59 +01:00
Thomas Camlong
4a47009aec Update CommonHead.tsx with crossorigin="use-credentials" 2023-10-31 01:00:15 +01:00
Thomas Camlong
1ad761f217 🌐 Update Chinese language mappings 2023-10-31 00:52:44 +01:00
Thomas Camlong
0da6112913 Merge pull request #1527 from ajnart/revert-1519-feature/local-weather-fetch 2023-10-31 00:32:13 +01:00
Thomas Camlong
66f0368183 Revert " Fetch the weather using a local request instead of a server-side one" 2023-10-31 00:31:59 +01:00
Thomas Camlong
53ef4a0579 Add crowdin live-translate feature! 2023-10-31 00:21:01 +01:00
Thomas Camlong
181193bdf8 Merge pull request #1525 from ajnart/update-crowdin
Fix crowdin links
2023-10-30 21:57:14 +01:00
Thomas Camlong
925fbd8ad3 🚨Fix compilation errors 2023-10-30 21:46:20 +01:00
Thomas Camlong
dda5b66a98 Fix crowdin links 2023-10-30 20:28:39 +01:00
Thomas Camlong
9a2268bac6 Merge pull request #1521 from ajnart/cleanup/remove-docker
⚰️ Remove docker on index page
2023-10-30 20:02:39 +01:00
Thomas Camlong
9e2876c638 Merge pull request #1522 from ajnart/1504-allow-image-caching-using-nextimage
Fix walks repo using github
2023-10-30 20:02:15 +01:00
Thomas Camlong
b7bd877629 Merge pull request #1520 from ajnart/fix-walkx/jsdelivr
🐛 Fix walks repository not up to date
2023-10-30 20:01:37 +01:00
Thomas Camlong
a2e562a675 Update src/tools/server/images/github-icons-repository.ts 2023-10-30 20:00:36 +01:00
Tagaishi
503b5b0b35 💄 Moved button 💬 Added troubleshoot steps 2023-10-30 19:57:44 +01:00
Thomas Camlong
3d6fa44897 Merge pull request #1519 from ajnart/feature/local-weather-fetch
 Fetch the weather using a local request instead of a server-side one
2023-10-30 19:56:49 +01:00
Thomas Camlong
a957db7def ⚰️ Remove docker on index page 2023-10-30 18:55:45 +01:00
Tagaishi
2ad693a498 Merge branch 'dev' of https://github.com/ajnart/homarr into common-troubleshoot-and-auto-handling 2023-10-30 18:55:05 +01:00
Thomas Camlong
6273af503b 🐛 Fix walks repository not up to date 2023-10-30 16:24:48 +01:00
Thomas Camlong
92ffce1b3b 🐛 Fix walks repository not up to date 2023-10-30 16:19:17 +01:00
Thomas Camlong
7ba9065fb7 Fetch the weather using a local request instead of a server-side one
This allows for request caching on the disk using node's fetch
2023-10-30 15:15:33 +01:00
Thomas Camlong
2e481e2103 🐛 await for GeoTz in timezone finder 2023-10-30 15:04:21 +01:00
Thomas Camlong
2c4560d13a Add Chinese traditional as zh-tw 2023-10-30 13:58:37 +01:00
Thomas Camlong
9d334e23c8 🐛 Fix RSS widget description 2023-10-30 13:57:40 +01:00
Thomas Camlong
4aa09b7e95 🐛 Fix unknown country in tRPC citySchema 2023-10-30 13:57:09 +01:00
Thomas Camlong
4d716bbcaf Merge pull request #1517 from Tagaishi/clock-timezone-named-offset-fix
🐛Clock fix timezone named offset format for dayjs
2023-10-30 13:22:38 +01:00
Tagaishi
d97850aaad 🐛Clock fix timezone named offset format for dayjs 2023-10-30 03:07:38 +01:00
Tagaishi
ac3c088492 🐛 adguard removed max test on process time (#1512) 2023-10-28 20:01:14 +02:00
Manuel
5b3a236194 Add 401 page (#1508) 2023-10-27 23:10:42 +02:00
ajnart
4072ebc5a5 Header in manage layout redirects to /b/ now 2023-10-27 15:53:35 +02:00
Diogo Valentim
3a5cfc6585 feat: add support for default ports on http(s) protocols on downloads.ts 2023-10-26 22:29:03 -03:00
ajnart
6e250d6f34 🐛 Fix password strenght meter dissapearing 2023-10-26 13:44:30 +02:00
ajnart
dff3ba5397 🐛 Add wget to docker image for healthcheck 2023-10-26 13:13:25 +02:00
Thomas Camlong
171be4b767 Merge pull request #1494 from ajnart/add-umami
Add-umami
2023-10-26 12:41:06 +02:00
Thomas Camlong
a9144a9340 Merge branch 'dev' into add-umami 2023-10-26 12:40:46 +02:00
ajnart
70f130569b Update tests 2023-10-25 15:36:58 +02:00
ajnart
5ab0e5207b 💄 Prettier codebase 2023-10-25 15:29:45 +02:00
ajnart
01ab01d159 re-launch ci 2023-10-25 15:28:55 +02:00
ajnart
b9fec7d445 🐛 Fix newVersionAvailable indicator 2023-10-25 15:22:21 +02:00
ajnart
ea9c74ea11 Changes for demo purposes
Add login button to login page, demo mode env variable and fix update indicator
2023-10-25 15:18:40 +02:00
ajnart
7690572c7b 🐛 Fix bug with new version 2023-10-25 14:40:55 +02:00
ajnart
9d841043f4 Merge branch 'master' into dev 2023-10-25 14:14:51 +02:00
ajnart
30acb3eff3 Bumb version to v0.14.0 2023-10-25 14:14:16 +02:00
ajnart
6cb6d63516 Add new version indicator for users 2023-10-25 14:13:58 +02:00
ajnart
ac3771ad7b Small changes to RSS widget and MediaRequest 2023-10-25 14:08:27 +02:00
Thomas Camlong
c6a1992a87 Merge pull request #1491 from ajnart/fix-missing-translation-for-about
🐛 Common settings translation not included within all pages for about credits
2023-10-25 12:59:29 +02:00
Thomas Camlong
1c5aec9bb6 Merge pull request #1490 from ajnart/fix-transition-drawer-issue-navigation
🐛 Issue with navigation drawer transitionProps
2023-10-25 12:59:12 +02:00
Thomas Camlong
743d06b88e Merge branch 'dev' into add-umami 2023-10-25 12:58:44 +02:00
ajnart
77b2239987 📈 Fix env 2023-10-25 12:58:13 +02:00
Thomas Camlong
cfe44569d9 Merge pull request #1489 from ajnart/fix-board-customize-affix
🐛 No validation messages when saving, Dirty state not reset, Wrong page title validation
2023-10-25 12:57:39 +02:00
Thomas Camlong
395c1909eb Merge pull request #1469 from Tagaishi/radarr-v5-poster-support
 Adds support for poster on Radarr v5's api
2023-10-25 12:53:06 +02:00
Thomas Camlong
ce42acfe2f Merge pull request #1485 from ajnart/fix-missing-version-in-about
🐛 About version and dependencies not present
2023-10-25 12:52:21 +02:00
Thomas Camlong
0e5a55f586 Merge pull request #1486 from ajnart/fix-issue-with-user-settings
🐛 500 error when saving user settings, Language not applied after save of user preferences
2023-10-25 12:51:59 +02:00
Thomas Camlong
e5197e6a59 Merge pull request #1487 from ajnart/background-image-issue
🐛 Background image not visible, remove background image from default config
2023-10-25 12:51:38 +02:00
ajnart
36a50de485 Fix optional env variable 2023-10-24 15:05:57 +02:00
ajnart
b9a226f59c 📈 Add umami analytics using homarr.dev 2023-10-24 14:46:14 +02:00
ajnart
31aef6f3d9 Disable beforeunload event in dev 2023-10-24 13:47:22 +02:00
Meier Lukas
fb4d4e4e8d 🐛 Common settings translation not included within all pages for about credits 2023-10-23 00:33:18 +02:00
Meier Lukas
0c2b54d833 🐛 Issue with navigation drawer transitionProps 2023-10-23 00:07:40 +02:00
Meier Lukas
87a273c092 🐛 No validation messages when saving, Dirty state not reset, Wrong page title validation 2023-10-23 00:01:16 +02:00
Meier Lukas
5d4c0cf293 🐛 Background image not visible, remove background image from default config 2023-10-22 23:44:15 +02:00
Meier Lukas
6f94d20ab4 🐛 500 error when saving user settings, Language not applied after saving user preferences 2023-10-22 23:30:20 +02:00
Meier Lukas
367d8253a4 🐛 About version and dependencies not present 2023-10-22 23:12:49 +02:00
Thomas Camlong
fe0b34a6e4 New Crowdin updates (#1457) 2023-10-22 18:00:47 +02:00
Thomas Camlong
f8dfa0d7f0 Improve customizations page load speed with SSR (#1477) 2023-10-22 18:00:16 +02:00
Thomas Camlong
a41bee0d44 🐛 Fix the leading slash when adding container via docker (#1478) 2023-10-22 17:59:47 +02:00
Meier Lukas
6bcef9e24c 🐛 Issue with migrate script in docker (#1483) 2023-10-22 17:59:21 +02:00
Meier Lukas
0a98be4553 Add tests for invite router (#1456)
*  Add test for invite router

*  Add cleanup to invite-router tests, add tests for creation and deletion of invites

* ♻️ Fix typo

* ♻️ Remove nullish for limit of invite router all procedure
2023-10-18 20:41:59 +02:00
Meier Lukas
d60cd2ed8d 🐛 Issue with migrate script for node 20 (#1467)
* 🐛 Issue with migrate script for node 20

* 🐛 Wrong database url in example env file
2023-10-18 20:40:54 +02:00
Meier Lukas
b8fab01c0b Fix allow guest issue (#1472)
* 🐛 Issue with migrate script for node 20

* 🐛 Issue with allow guest check when default config not present
2023-10-18 20:39:23 +02:00
Tagaishi
62cb758db5 Adds support for poster on Radarr v5's api 2023-10-13 21:55:39 +02:00
Tagaishi
24024cc7f2 🎨 Added troubleshoot steps + external address "/" 2023-10-12 19:23:16 +02:00
Manuel
f3f4f23718 🔒️ Fix tiptap url CVE (#1459) 2023-10-09 21:29:41 +02:00
Thomas Camlong
2b5e2094fa 🌐 New Crowdin updates (#1433) 2023-10-08 12:12:44 +02:00
Meier Lukas
1d50e2ce9a ♻️ Migrate from prisma to drizzle (#1434)
* ♻️ Migrate from prisma to drizzle
* 🐛 Build issue with CalendarTile
* 🚧 Temporary solution for docker container
* 🐛 Drizzle not using DATABASE_URL
* ♻️ Address pull request feedback
* 🐛 Remove console log of env variables
* 🐛 Some unit tests not working
* 🐋 Revert docker tool changes
* 🐛 Issue with board slug page for logged in users

---------

Co-authored-by: Thomas Camlong <thomascamlong@gmail.com>
2023-10-08 12:10:48 +02:00
Tagaishi
4945725702 🐛 DNS-Hole error handling and fixes (#1419)
* 🐛 Remove url requirement

* ️ Ignore dnshole in widget when not contactable

*  Error tile for dns-control instead of load loop
2023-10-08 11:47:31 +02:00
Tagaishi
4e036315ba 🐛 Fix miscellaneous console errors (#1418)
* 🐛 Bookmark widget key fix

* 🐛 Media request list widget key fix

* 🐛 media server widget key fix

* 🐛 Remove "hasNextLevel" error
2023-10-08 11:46:18 +02:00
Manuel
a7655b6348 🐛 Database error with readonly mappings (#1420)
* 🐛 Database error with readonly mappings

* ♻️ PR feedback
2023-10-08 11:45:30 +02:00
AuthorShin
a6be5fa380 Update weather.json (#1440)
Typo fixed

Just changed "An error occured" to "An error occurred"
2023-10-08 11:43:37 +02:00
Manuel
b770b88834 fix: trim media server url (#1438) 2023-09-30 12:42:53 +02:00
Meier Lukas
32e40f3342 🐛 Remove DISABLE_EDIT_MODE and replace with admin-procedure (#1439) 2023-09-30 00:30:55 +02:00
Tagaishi
6c43a19fa1 💄Allow user to make video stream smaller than 2*3 (#1430) 2023-09-28 19:47:13 +02:00
Henry Skrtich
4006c69f5b fix: stop triming traling slashes (#1435)
fixes #777
2023-09-28 19:19:44 +02:00
Thomas Camlong
a6c7fbc1ef Update step-onboarding-finished.tsx (#1437) 2023-09-28 19:18:59 +02:00
Thomas Camlong
76090c8485 New Crowdin updates (#1383)
* New translations general.json (Latvian)

* New translations zod.json (Latvian)

* New translations preferences.json (Latvian)

* New translations header.json (Latvian)

* New translations common.json (Latvian)

* New translations customize.json (Latvian)

* New translations manage.json (Latvian)

* New translations boards.json (Latvian)

* New translations index.json (Latvian)

* New translations invites.json (Latvian)

* New translations invite.json (Latvian)

* New translations create.json (Latvian)

* New translations users.json (Latvian)

* New translations docker.json (Latvian)

* New translations password-requirements.json (Latvian)

* New translations access.json (Latvian)

* New translations common.json (LOLCAT)

* New translations calendar.json (LOLCAT)

* New translations page-appearance.json (LOLCAT)

* New translations login.json (LOLCAT)

* New translations general.json (LOLCAT)

* New translations zod.json (LOLCAT)

* New translations preferences.json (LOLCAT)

* New translations header.json (LOLCAT)

* New translations common.json (LOLCAT)

* New translations customize.json (LOLCAT)

* New translations manage.json (LOLCAT)

* New translations boards.json (LOLCAT)

* New translations index.json (LOLCAT)

* New translations invites.json (LOLCAT)

* New translations invite.json (LOLCAT)

* New translations create.json (LOLCAT)

* New translations users.json (LOLCAT)

* New translations docker.json (LOLCAT)

* New translations password-requirements.json (LOLCAT)

* New translations access.json (LOLCAT)

* New translations common.json (German)

* New translations login.json (German)

* New translations general.json (German)

* New translations zod.json (German)

* New translations preferences.json (German)

* New translations header.json (German)

* New translations common.json (German)

* New translations customize.json (German)

* New translations manage.json (German)

* New translations boards.json (German)

* New translations index.json (German)

* New translations invites.json (German)

* New translations invite.json (German)

* New translations create.json (German)

* New translations users.json (German)

* New translations docker.json (German)

* New translations password-requirements.json (German)

* New translations common.json (Turkish)

* New translations login.json (Turkish)

* New translations general.json (Turkish)

* New translations zod.json (Turkish)

* New translations preferences.json (Turkish)

* New translations header.json (Turkish)

* New translations common.json (Turkish)

* New translations customize.json (Turkish)

* New translations manage.json (Turkish)

* New translations boards.json (Turkish)

* New translations index.json (Turkish)

* New translations invites.json (Turkish)

* New translations invite.json (Turkish)

* New translations create.json (Turkish)

* New translations users.json (Turkish)

* New translations docker.json (Turkish)

* New translations password-requirements.json (Turkish)

* New translations access.json (Turkish)

* New translations dns-hole-controls.json (Slovak)

* New translations access.json (German)

* New translations common.json (Slovak)

* New translations login.json (Slovak)

* New translations general.json (Slovak)

* New translations zod.json (Slovak)

* New translations preferences.json (Slovak)

* New translations header.json (Slovak)

* New translations common.json (Slovak)

* New translations customize.json (Slovak)

* New translations manage.json (Slovak)

* New translations boards.json (Slovak)

* New translations index.json (Slovak)

* New translations invites.json (Slovak)

* New translations invite.json (Slovak)

* New translations create.json (Slovak)

* New translations users.json (Slovak)

* New translations docker.json (Slovak)

* New translations password-requirements.json (Slovak)

* New translations access.json (Slovak)

* New translations login.json (French)

* New translations header.json (French)

* New translations customize.json (French)

* New translations manage.json (French)

* New translations boards.json (French)

* New translations index.json (French)

* New translations invites.json (French)

* New translations invite.json (French)

* New translations create.json (French)

* New translations users.json (French)

* New translations dns-hole-controls.json (Russian)

* New translations login.json (Spanish)

* New translations header.json (Spanish)

* New translations common.json (Spanish)

* New translations customize.json (Spanish)

* New translations manage.json (Spanish)

* New translations boards.json (Spanish)

* New translations index.json (Spanish)

* New translations invite.json (Spanish)

* New translations create.json (Spanish)

* New translations users.json (Spanish)

* New translations calendar.json (Russian)

* New translations login.json (Russian)

* New translations general.json (Russian)

* New translations zod.json (Russian)

* New translations preferences.json (Russian)

* New translations header.json (Russian)

* New translations common.json (Russian)

* New translations customize.json (Russian)

* New translations manage.json (Russian)

* New translations boards.json (Russian)

* New translations index.json (Russian)

* New translations invites.json (Russian)

* New translations invite.json (Russian)

* New translations create.json (Russian)

* New translations users.json (Russian)

* New translations docker.json (Russian)

* New translations password-requirements.json (Russian)

* New translations access.json (Russian)

* New translations common.json (Swedish)

* New translations login.json (Swedish)

* New translations general.json (Swedish)

* New translations zod.json (Swedish)

* New translations header.json (Swedish)

* New translations preferences.json (Spanish)

* New translations header.json (Spanish)

* New translations boards.json (Spanish)

* New translations index.json (Spanish)

* New translations invites.json (Spanish)

* New translations create.json (Spanish)

* New translations users.json (Spanish)

* New translations access.json (Spanish)

* New translations common.json (Chinese Simplified)

* New translations login.json (Chinese Simplified)

* New translations header.json (Chinese Simplified)

* New translations common.json (Danish)

* New translations login.json (Danish)

* New translations general.json (Danish)

* New translations zod.json (Danish)

* New translations preferences.json (Danish)

* New translations header.json (Danish)

* New translations common.json (Danish)

* New translations customize.json (Danish)

* New translations manage.json (Danish)

* New translations boards.json (Danish)

* New translations index.json (Danish)

* New translations invites.json (Danish)

* New translations invite.json (Danish)

* New translations create.json (Danish)

* New translations users.json (Danish)

* New translations docker.json (Danish)

* New translations password-requirements.json (Danish)

* New translations access.json (Danish)

* New translations common.json (Hungarian)

* New translations login.json (Hungarian)

* New translations general.json (Hungarian)

* New translations zod.json (Hungarian)

* New translations preferences.json (Hungarian)

* New translations header.json (Hungarian)

* New translations common.json (Hungarian)

* New translations customize.json (Hungarian)

* New translations manage.json (Hungarian)

* New translations boards.json (Hungarian)

* New translations index.json (Hungarian)

* New translations invites.json (Hungarian)

* New translations invite.json (Hungarian)

* New translations create.json (Hungarian)

* New translations users.json (Hungarian)

* New translations docker.json (Hungarian)

* New translations password-requirements.json (Hungarian)

* New translations selector.json (French)

* New translations zod.json (French)

* New translations preferences.json (French)

* New translations header.json (French)

* New translations common.json (French)

* New translations customize.json (French)

* New translations manage.json (French)

* New translations boards.json (French)

* New translations invites.json (French)

* New translations create.json (French)

* New translations docker.json (French)

* New translations password-requirements.json (French)

* New translations access.json (French)

* New translations general.json (French)

* New translations common.json (French)

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

* New translations zod.json (French)

* New translations preferences.json (French)

* New translations boards.json (French)

* New translations index.json (French)

* New translations invites.json (French)

* New translations users.json (French)

* New translations docker.json (French)

* New translations invite.json (Chinese Simplified)

* New translations create.json (Chinese Simplified)

* New translations login.json (Chinese Simplified)

* New translations general.json (Chinese Simplified)

* New translations zod.json (Chinese Simplified)

* New translations preferences.json (Chinese Simplified)

* New translations header.json (Chinese Simplified)

* New translations common.json (Chinese Simplified)

* New translations customize.json (Chinese Simplified)

* New translations manage.json (Chinese Simplified)

* New translations boards.json (Chinese Simplified)

* New translations index.json (Chinese Simplified)

* New translations invites.json (Chinese Simplified)

* New translations create.json (Chinese Simplified)

* New translations users.json (Chinese Simplified)

* New translations docker.json (Chinese Simplified)

* New translations password-requirements.json (Chinese Simplified)

* New translations access.json (Chinese Simplified)

* New translations index.json (Spanish)

* New translations users.json (Spanish)

* New translations common.json (Spanish)

* New translations general.json (Spanish)

* New translations zod.json (Spanish)

* New translations users.json (Spanish)

* New translations docker.json (Spanish)

* New translations password-requirements.json (Spanish)

* New translations common.json (Hebrew)

* New translations login.json (Hebrew)

* New translations general.json (Hebrew)

* New translations zod.json (Hebrew)

* New translations header.json (Hebrew)

* New translations boards.json (French)

* New translations index.json (French)

* New translations invites.json (French)

* New translations zod.json (Hebrew)

* New translations preferences.json (Hebrew)

* New translations header.json (Hebrew)

* New translations common.json (Hebrew)

* New translations customize.json (Hebrew)

* New translations manage.json (Hebrew)

* New translations index.json (Hebrew)

* New translations invites.json (Hebrew)

* New translations invite.json (Hebrew)

* New translations create.json (Hebrew)

* New translations users.json (Hebrew)

* New translations docker.json (Hebrew)
2023-09-27 13:30:15 +02:00
Tagaishi
17103f3f5b 🐛 Change position selector's dropdown bug (#1429) 2023-09-26 21:17:55 +02:00
Manuel
c1b3bc4337 🔀 Add basic authentication 2023-09-24 18:48:48 +02:00
Manuel
76008aa92b 🔒️ Fix regex security warning 2023-09-24 18:44:25 +02:00
Manuel
690c627f81 Add login redirection
*  Add login redirection

* 🚑 Fix cross site scripting using server side regex validation

*  Add unit test
2023-09-24 16:04:07 +02:00
Manuel
7d7fe6016b 🔀 Merge branch 'dev' into feature/add-basic-authentication 2023-09-23 20:32:17 +02:00
Tagaishi
b44347311f 🐛 Return download speed instead of 0 for NZBGET (#1400) 2023-09-21 19:45:58 +02:00
Manuel
b49d021daf Add allow anonymous switch 2023-09-21 19:45:30 +02:00
Meier Lukas
141c27cda7 Add autofocus for searchbar (#1408) 2023-09-18 19:30:22 +02:00
Tagaishi
4a30e327a3 🐛 Calendar indicator over header bar fix (#1401) 2023-09-17 16:17:28 +02:00
Tagaishi
c777a774f7 Hide DNS-Hole control buttons option (#1384) 2023-09-15 18:17:46 +02:00
Tagaishi
a3f364e67d 💄 Change media-server modal to popover (#1395) 2023-09-15 18:16:10 +02:00
Tagaishi
47e46a3a30 💄 Calendar close modal on click when opened (#1396) 2023-09-15 18:15:25 +02:00
Tagaishi
9b8263b8ec 💄 Replace hover with click and on the full row (#1397) 2023-09-15 18:12:42 +02:00
Tagaishi
4c67ee2902 💄 Added modal on usenet widget (#1398) 2023-09-15 18:11:40 +02:00
Tagaishi
3c015d297b Add common troubleshooting prompt on button 2023-09-11 02:58:05 +02:00
Tagaishi
331ce51085 Removes trailing slashes from URLs on save 2023-09-11 02:57:32 +02:00
Thomas Camlong
10a3898775 Merge pull request #1386 from devtobi/feature/dockerfile-healthcheck
🩺  Added healthcheck to image and ARG for port
2023-09-10 18:39:36 +02:00
Meier Lukas
d05c0023cd Readd possibility to add containers as apps to boards (#1276) 2023-09-10 14:28:13 +02:00
Manuel
f35f6debaf 🔀 Merge dev to auth branch 2023-09-10 13:38:53 +02:00
ajnart
9dd6654a5c Add more padding in onboarding 2023-09-10 11:35:00 +02:00
Tobias Stadler
5c499c87ab 🩺 Added healthcheck to image and ARG for port 2023-09-09 00:46:43 +02:00
Meier Lukas
735d6484e2 🔀 Merge 0.13.4 to master 2023-09-08 22:12:45 +02:00
Manuel
12230bd9e7 🌐 Merge pull request #1364 from ajnart/i10n_dev 2023-09-08 21:45:11 +02:00
Thomas Camlong
4cc9b2234c New translations calendar.json (Hebrew) 2023-09-08 07:10:29 +02:00
Thomas Camlong
12cf0ff94b New translations calendar.json (Chinese Simplified) 2023-09-08 05:08:35 +02:00
Thomas Camlong
25c2f8fa90 New translations calendar.json (Spanish) 2023-09-08 01:11:49 +02:00
Thomas Camlong
54a374a83d New translations calendar.json (Turkish) 2023-09-07 22:40:24 +02:00
Thomas Camlong
f28df6aa9a New translations calendar.json (Swedish) 2023-09-07 22:40:23 +02:00
Thomas Camlong
36a613b6fe New translations calendar.json (German) 2023-09-07 22:40:22 +02:00
Thomas Camlong
06373bcc47 New translations calendar.json (Danish) 2023-09-07 22:40:21 +02:00
Manuel
4164b98967 🔖 Increase version to 0.13.4 (#1378) 2023-09-07 21:44:48 +02:00
Thomas Camlong
f408aab5d3 New translations calendar.json (LOLCAT) 2023-09-07 21:38:11 +02:00
Thomas Camlong
a553976869 New translations calendar.json (Latvian) 2023-09-07 21:38:10 +02:00
Thomas Camlong
13cbce6ba2 New translations calendar.json (Croatian) 2023-09-07 21:38:09 +02:00
Thomas Camlong
6ea84fcf38 New translations calendar.json (Portuguese, Brazilian) 2023-09-07 21:38:08 +02:00
Thomas Camlong
2c5b08e0fe New translations calendar.json (Vietnamese) 2023-09-07 21:38:07 +02:00
Thomas Camlong
6cb6d8139f New translations calendar.json (Chinese Simplified) 2023-09-07 21:38:06 +02:00
Thomas Camlong
831ebfd1a9 New translations calendar.json (Ukrainian) 2023-09-07 21:38:05 +02:00
Thomas Camlong
5efbdd4913 New translations calendar.json (Turkish) 2023-09-07 21:38:04 +02:00
Thomas Camlong
3c63388c6e New translations calendar.json (Swedish) 2023-09-07 21:38:03 +02:00
Thomas Camlong
aa2d46e805 New translations calendar.json (Slovenian) 2023-09-07 21:38:02 +02:00
Thomas Camlong
50d13e97ee New translations calendar.json (Slovak) 2023-09-07 21:38:01 +02:00
Thomas Camlong
0bd535543f New translations calendar.json (Russian) 2023-09-07 21:38:00 +02:00
Thomas Camlong
197d11bb57 New translations calendar.json (Polish) 2023-09-07 21:37:59 +02:00
Thomas Camlong
a0a6886744 New translations calendar.json (Norwegian) 2023-09-07 21:37:58 +02:00
Thomas Camlong
4a25da9ad6 New translations calendar.json (Dutch) 2023-09-07 21:37:57 +02:00
Thomas Camlong
9c7045986e New translations calendar.json (Korean) 2023-09-07 21:37:56 +02:00
Thomas Camlong
c3704718a1 New translations calendar.json (Japanese) 2023-09-07 21:37:55 +02:00
Thomas Camlong
a93e031f95 New translations calendar.json (Italian) 2023-09-07 21:37:55 +02:00
Thomas Camlong
5b36ac1bad New translations calendar.json (Hungarian) 2023-09-07 21:37:53 +02:00
Thomas Camlong
b269c7ce6d New translations calendar.json (Hebrew) 2023-09-07 21:37:52 +02:00
Thomas Camlong
bf6353482e New translations calendar.json (Greek) 2023-09-07 21:37:51 +02:00
Thomas Camlong
86b5368e96 New translations calendar.json (German) 2023-09-07 21:37:50 +02:00
Thomas Camlong
3d4308026d New translations calendar.json (Danish) 2023-09-07 21:37:49 +02:00
Thomas Camlong
ed043ccd43 New translations calendar.json (Spanish) 2023-09-07 21:37:48 +02:00
Thomas Camlong
dc52a8ce5e New translations calendar.json (French) 2023-09-07 21:37:48 +02:00
Thomas Camlong
39c16c3d29 Add a toggle to show unmonitored items in *Arr (#1371) 2023-09-07 21:36:15 +02:00
Tagaishi
3ede6219ef 🐛 rewrite url from headers (#1369) 2023-09-07 21:35:55 +02:00
Tagaishi
7b2c0d63f3 🐛 env.port reporting NaN bug fix (#1375) 2023-09-07 21:35:28 +02:00
Tagaishi
3120949a7e ⬇️ next js 13.4.19 to 13.4.12 (#1376) 2023-09-07 21:34:04 +02:00
Meier Lukas
391c074ef9 Add tests for some tools functions (#1377)
*  Add tests for some tools functions

* 🐛 Build issue with language definition
2023-09-07 21:32:29 +02:00
Meier Lukas
7b2ce22bca ♻️ Address pull request feedback 2023-09-07 19:56:14 +02:00
Tagaishi
89cfb1ae5d 🐛 add new tab to item (#1362) 2023-09-07 07:36:38 +02:00
Tagaishi
8cfd5c6d73 ⬇️ next 13.4.19 to 13.4.12 (#1370) 2023-09-07 07:34:49 +02:00
Thomas Camlong
e35fbe659e New translations cache-buttons.json (Russian) 2023-09-06 22:03:50 +02:00
Thomas Camlong
a851327554 New translations edit-mode-toggle.json (Russian) 2023-09-06 22:03:49 +02:00
Thomas Camlong
78d636f0a0 New translations common.json (Russian) 2023-09-06 22:03:48 +02:00
Thomas Camlong
405f3e4c1f New translations bookmark.json (Russian) 2023-09-06 22:03:47 +02:00
Thomas Camlong
f36d9e7851 New translations media-requests-stats.json (Russian) 2023-09-06 22:03:46 +02:00
Thomas Camlong
52de93e412 New translations edit-mode-toggle.json (Russian) 2023-09-06 21:08:00 +02:00
Thomas Camlong
305be41c46 New translations notebook.json (Russian) 2023-09-06 21:07:59 +02:00
Thomas Camlong
ab91776aa9 New translations bookmark.json (Russian) 2023-09-06 21:07:58 +02:00
Thomas Camlong
faf2b1195b New translations media-requests-stats.json (Russian) 2023-09-06 21:07:57 +02:00
Thomas Camlong
8558c5e3dd New translations media-requests-list.json (Russian) 2023-09-06 21:07:57 +02:00
Thomas Camlong
a34167d274 New translations about.json (Russian) 2023-09-06 21:07:55 +02:00
Thomas Camlong
63f3a9e158 New translations add-app.json (Russian) 2023-09-06 21:07:54 +02:00
Thomas Camlong
c3689cb265 New translations toggle-edit-mode.json (Russian) 2023-09-06 21:07:53 +02:00
Thomas Camlong
d5c8669dd8 New translations search-engine.json (Russian) 2023-09-06 21:07:53 +02:00
Thomas Camlong
65a0e789e7 New translations about.json (Spanish) 2023-09-06 14:00:20 +02:00
Thomas Camlong
0fc1f1b92f New translations notebook.json (Chinese Simplified) 2023-09-06 12:44:01 +02:00
Thomas Camlong
7ed51b6da3 New translations media-server.json (Chinese Simplified) 2023-09-06 12:43:58 +02:00
Thomas Camlong
e9f8de9be8 New translations date.json (Chinese Simplified) 2023-09-06 12:43:55 +02:00
Thomas Camlong
21a38bb438 New translations dashdot.json (Chinese Simplified) 2023-09-06 12:43:54 +02:00
Thomas Camlong
6617e54256 New translations calendar.json (Chinese Simplified) 2023-09-06 12:43:53 +02:00
Thomas Camlong
da3692265a New translations cache-buttons.json (Spanish) 2023-09-06 12:43:52 +02:00
Thomas Camlong
408237740f New translations selector.json (Chinese Simplified) 2023-09-06 10:54:12 +02:00
Thomas Camlong
bdde789305 New translations cache-buttons.json (Chinese Simplified) 2023-09-05 20:55:04 +02:00
Thomas Camlong
9f845c733d New translations media-requests-list.json (Chinese Simplified) 2023-09-05 20:55:01 +02:00
Thomas Camlong
d992a7f413 New translations rss.json (Chinese Simplified) 2023-09-05 20:54:59 +02:00
Thomas Camlong
c97ca80563 New translations add-app.json (Chinese Simplified) 2023-09-05 20:54:57 +02:00
Thomas Camlong
01b5534915 New translations usenet.json (Chinese Simplified) 2023-09-05 20:54:56 +02:00
Thomas Camlong
5f348a56be New translations cache-buttons.json (Slovak) 2023-09-05 11:03:03 +02:00
Thomas Camlong
18a514b340 New translations edit-mode-toggle.json (Slovak) 2023-09-05 11:03:02 +02:00
Thomas Camlong
2b7a3accca New translations common.json (Slovak) 2023-09-05 11:03:01 +02:00
Thomas Camlong
3c685a69e4 New translations bookmark.json (Slovak) 2023-09-05 11:03:00 +02:00
Thomas Camlong
090fb6ad77 New translations media-requests-stats.json (Slovak) 2023-09-05 11:02:59 +02:00
Thomas Camlong
e544b8994e New translations media-requests-list.json (Slovak) 2023-09-05 11:02:58 +02:00
Thomas Camlong
30b67e879a New translations iframe.json (Slovak) 2023-09-05 11:02:57 +02:00
Thomas Camlong
a87d2053c4 New translations media-server.json (Slovak) 2023-09-05 11:02:56 +02:00
Thomas Camlong
c8dbc1aa3e New translations rss.json (Slovak) 2023-09-05 11:02:55 +02:00
Thomas Camlong
d3d0484b7f New translations torrents-status.json (Slovak) 2023-09-05 11:02:53 +02:00
Thomas Camlong
5ca76285a1 New translations about.json (Slovak) 2023-09-05 11:02:52 +02:00
Thomas Camlong
77c1bcab29 New translations add-app.json (Slovak) 2023-09-05 11:02:52 +02:00
Thomas Camlong
bb6615f7cf New translations common.json (Slovak) 2023-09-05 11:02:51 +02:00
Thomas Camlong
bc4852f369 New translations toggle-edit-mode.json (Slovak) 2023-09-05 09:39:18 +02:00
Thomas Camlong
a6b8a980fd New translations selector.json (Slovak) 2023-09-05 09:39:17 +02:00
Thomas Camlong
62f2c22695 New translations search-engine.json (Slovak) 2023-09-05 09:39:16 +02:00
Thomas Camlong
7c0c5cf5ef New translations color-selector.json (Slovak) 2023-09-05 09:39:15 +02:00
Thomas Camlong
6bb8a932aa New translations weather.json (Slovak) 2023-09-05 09:39:14 +02:00
Thomas Camlong
5b546cf4dd New translations calendar.json (Slovak) 2023-09-05 09:39:13 +02:00
Thomas Camlong
0e8f31bddd New translations accessibility.json (Turkish) 2023-09-05 04:55:29 +02:00
Manuel
1651361b7f 🦺 Allow empty values for DOCKER_PORT 2023-09-04 21:33:50 +02:00
Thomas Camlong
4e3f602098 Merge pull request #1349 from ajnart/dev
Version 0.13.3
2023-09-04 20:25:59 +02:00
Thomas Camlong
7f402d4987 New Crowdin updates (#1359)
* New translations media-requests-list.json (French)

* New translations media-requests-list.json (Spanish)

* New translations media-requests-stats.json (Spanish)

* New translations cache-buttons.json (Spanish)

* New translations media-requests-list.json (Danish)

* New translations media-requests-list.json (German)

* New translations media-requests-list.json (Greek)

* New translations media-requests-list.json (Hebrew)

* New translations media-requests-list.json (Hungarian)

* New translations media-requests-list.json (Italian)

* New translations dlspeed.json (Japanese)

* New translations media-requests-list.json (Japanese)

* New translations media-requests-list.json (Korean)

* New translations media-requests-list.json (Dutch)

* New translations media-requests-list.json (Norwegian)

* New translations media-requests-list.json (Polish)

* New translations media-requests-list.json (Russian)

* New translations media-requests-list.json (Slovak)

* New translations media-requests-list.json (Slovenian)

* New translations media-requests-list.json (Swedish)

* New translations media-requests-list.json (Turkish)

* New translations media-requests-list.json (Ukrainian)

* New translations media-requests-list.json (Chinese Simplified)

* New translations media-requests-list.json (Vietnamese)

* New translations media-requests-list.json (Portuguese, Brazilian)

* New translations media-requests-list.json (Croatian)

* New translations media-requests-list.json (Latvian)

* New translations media-requests-list.json (LOLCAT)

* New translations cache-buttons.json (Spanish)

* New translations edit-mode-toggle.json (Spanish)

* New translations cache-buttons.json (Spanish)

* New translations search-engine.json (Greek)

* New translations toggle-edit-mode.json (Greek)

* New translations add-app.json (Greek)

* New translations about.json (Greek)

* New translations media-requests-list.json (Greek)

* New translations media-requests-stats.json (Greek)

* New translations bookmark.json (Greek)

* New translations common.json (Greek)

* New translations edit-mode-toggle.json (Greek)

* New translations cache-buttons.json (Greek)

* New translations search-engine.json (Swedish)

* New translations toggle-edit-mode.json (Swedish)

* New translations add-app.json (Swedish)

* New translations about.json (Swedish)

* New translations media-requests-list.json (Swedish)

* New translations media-requests-stats.json (Swedish)

* New translations bookmark.json (Swedish)

* New translations common.json (Swedish)

* New translations edit-mode-toggle.json (Swedish)

* New translations edit-mode-toggle.json (Swedish)

* New translations cache-buttons.json (Swedish)
2023-09-04 20:25:45 +02:00
Manuel
91132cc3e8 fix: log properties instead of object (#1361) 2023-09-04 20:17:42 +02:00
Thomas Camlong
1becb3f889 Merge pull request #1360 from ajnart/style/revert-anchor-color 2023-09-04 19:36:33 +02:00
Manuel
9fa0acff3e Revert anchor colors in media request widget 2023-09-04 19:28:13 +02:00
Thomas Camlong
27cdd467f5 🐛 Print user.name instead of id on auth. 2023-09-04 18:35:35 +02:00
Thomas Camlong
8d2d68c192 🌐 New Crowdin updates (#1358) 2023-09-03 22:25:19 +02:00
Tagaishi
624e2a3a2c 🐛 Media Session widget jellyfin sessions + translations (#1353) 2023-09-03 22:24:27 +02:00
Thomas Camlong
de349014d5 New Crowdin updates (#1351)
* New translations add-app.json (Spanish)

* New translations media-requests-list.json (Swedish)

* New translations media-requests-stats.json (Swedish)

* New translations add-app.json (Latvian)

* New translations add-app.json (French)

* New translations media-requests-list.json (French)

* New translations media-requests-stats.json (French)

* New translations media-requests-list.json (Spanish)

* New translations media-requests-stats.json (Spanish)

* New translations search-engine.json (Danish)

* New translations toggle-edit-mode.json (Danish)

* New translations add-app.json (Danish)

* New translations about.json (Danish)

* New translations media-requests-list.json (Danish)

* New translations media-requests-stats.json (Danish)

* New translations bookmark.json (Danish)

* New translations common.json (Danish)

* New translations search-engine.json (German)

* New translations toggle-edit-mode.json (German)

* New translations add-app.json (German)

* New translations about.json (German)

* New translations media-requests-list.json (German)

* New translations media-requests-stats.json (German)

* New translations bookmark.json (German)

* New translations common.json (German)

* New translations add-app.json (Greek)

* New translations media-requests-list.json (Greek)

* New translations media-requests-stats.json (Greek)

* New translations add-app.json (Hebrew)

* New translations media-requests-list.json (Hebrew)

* New translations media-requests-stats.json (Hebrew)

* New translations search-engine.json (Hungarian)

* New translations toggle-edit-mode.json (Hungarian)

* New translations add-app.json (Hungarian)

* New translations about.json (Hungarian)

* New translations media-requests-list.json (Hungarian)

* New translations media-requests-stats.json (Hungarian)

* New translations bookmark.json (Hungarian)

* New translations common.json (Hungarian)

* New translations search-engine.json (Italian)

* New translations toggle-edit-mode.json (Italian)

* New translations add-app.json (Italian)

* New translations about.json (Italian)

* New translations media-requests-list.json (Italian)

* New translations media-requests-stats.json (Italian)

* New translations bookmark.json (Italian)

* New translations common.json (Italian)

* New translations add-app.json (Japanese)

* New translations media-requests-list.json (Japanese)

* New translations media-requests-stats.json (Japanese)

* New translations add-app.json (Korean)

* New translations media-requests-list.json (Korean)

* New translations media-requests-stats.json (Korean)

* New translations add-app.json (Dutch)

* New translations media-requests-list.json (Dutch)

* New translations media-requests-stats.json (Dutch)

* New translations add-app.json (Norwegian)

* New translations media-requests-list.json (Norwegian)

* New translations media-requests-stats.json (Norwegian)

* New translations add-app.json (Polish)

* New translations media-requests-list.json (Polish)

* New translations media-requests-stats.json (Polish)

* New translations add-app.json (Russian)

* New translations media-requests-list.json (Russian)

* New translations media-requests-stats.json (Russian)

* New translations add-app.json (Slovak)

* New translations media-requests-list.json (Slovak)

* New translations media-requests-stats.json (Slovak)

* New translations add-app.json (Slovenian)

* New translations media-requests-list.json (Slovenian)

* New translations media-requests-stats.json (Slovenian)

* New translations add-app.json (Swedish)

* New translations search-engine.json (Turkish)

* New translations toggle-edit-mode.json (Turkish)

* New translations add-app.json (Turkish)

* New translations about.json (Turkish)

* New translations media-requests-list.json (Turkish)

* New translations media-requests-stats.json (Turkish)

* New translations bookmark.json (Turkish)

* New translations common.json (Turkish)

* New translations add-app.json (Ukrainian)

* New translations media-requests-list.json (Ukrainian)

* New translations media-requests-stats.json (Ukrainian)

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

* New translations media-requests-list.json (Chinese Simplified)

* New translations media-requests-stats.json (Chinese Simplified)

* New translations add-app.json (Vietnamese)

* New translations media-requests-list.json (Vietnamese)

* New translations media-requests-stats.json (Vietnamese)

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

* New translations media-requests-list.json (Portuguese, Brazilian)

* New translations media-requests-stats.json (Portuguese, Brazilian)

* New translations add-app.json (Croatian)

* New translations media-requests-list.json (Croatian)

* New translations media-requests-stats.json (Croatian)

* New translations media-requests-list.json (Latvian)

* New translations media-requests-stats.json (Latvian)

* New translations add-app.json (LOLCAT)

* New translations media-requests-list.json (LOLCAT)

* New translations media-requests-stats.json (LOLCAT)

* New translations edit-mode-toggle.json (Danish)

* New translations cache-buttons.json (Danish)

* New translations edit-mode-toggle.json (German)

* New translations cache-buttons.json (German)

* New translations edit-mode-toggle.json (Hungarian)

* New translations cache-buttons.json (Hungarian)

* New translations edit-mode-toggle.json (Italian)

* New translations cache-buttons.json (Italian)

* New translations edit-mode-toggle.json (Turkish)

* New translations cache-buttons.json (Turkish)

* New translations add-app.json (Danish)

* New translations media-requests-list.json (Danish)

* New translations media-requests-stats.json (Danish)

* New translations add-app.json (German)

* New translations media-requests-list.json (German)

* New translations media-requests-stats.json (German)

* New translations add-app.json (Turkish)

* New translations media-requests-list.json (Turkish)

* New translations media-requests-stats.json (Turkish)

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

* New translations toggle-edit-mode.json (Chinese Simplified)

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

* New translations about.json (Chinese Simplified)

* New translations media-requests-list.json (Chinese Simplified)

* New translations media-requests-stats.json (Chinese Simplified)

* New translations bookmark.json (Chinese Simplified)

* New translations common.json (Chinese Simplified)

* New translations edit-mode-toggle.json (Chinese Simplified)

* New translations cache-buttons.json (Chinese Simplified)

* New translations add-app.json (Hungarian)

* New translations media-requests-list.json (Hungarian)

* New translations media-requests-stats.json (Hungarian)

* New translations add-app.json (Hebrew)

* New translations media-requests-list.json (Hebrew)

* New translations media-requests-stats.json (Hebrew)

* New translations search-engine.json (Hebrew)

* New translations toggle-edit-mode.json (Hebrew)

* New translations about.json (Hebrew)

* New translations media-requests-stats.json (Hebrew)

* New translations bookmark.json (Hebrew)

* New translations common.json (Hebrew)

* New translations edit-mode-toggle.json (Hebrew)

* New translations cache-buttons.json (Hebrew)

* New translations add-app.json (Italian)

* New translations media-requests-list.json (Italian)

* New translations media-requests-stats.json (Italian)

* New translations search-engine.json (Spanish)

* New translations toggle-edit-mode.json (Spanish)

* New translations about.json (Spanish)

* New translations media-requests-stats.json (Spanish)

* New translations bookmark.json (Spanish)

* New translations common.json (Spanish)

* New translations edit-mode-toggle.json (Spanish)

* New translations cache-buttons.json (Spanish)

* New translations page-appearance.json (Turkish)

* New translations general.json (Turkish)

* New translations cache-buttons.json (Turkish)

* New translations cache-buttons.json (Turkish)
2023-09-03 18:03:11 +02:00
Manuel
0fcc8d2a82 🔖 Tag version to 0.13.3 (#1356) 2023-09-03 18:00:25 +02:00
Manuel
c94ffbf91f 🐛 External URL being '' in media requests (#1355) 2023-09-03 18:00:15 +02:00
Manuel
bc6fde5936 🐛 Fix edit mode error in notebook (#1357) 2023-09-03 18:00:05 +02:00
WillyJL
d5c90a742b Fix enable/disable edit mode (#1333) 2023-09-03 17:54:12 +02:00
Tagaishi
fc9d6f796e 🐛 Notebook scrollbar (#1342) 2023-09-03 17:52:35 +02:00
Thomas Camlong
96e0394724 🐛 Fix small things in MediaModal 2023-09-03 17:28:23 +02:00
Manuel
693f29bb82 fix: next image warning 2023-09-03 17:18:03 +02:00
Manuel
35db402376 fix: copying .env and set default values for docker img 2023-09-03 17:02:50 +02:00
Manuel
1958b70dee fix: object fit for image in about modal 2023-09-03 16:31:16 +02:00
Manuel
e7ad853678 refactor: image in about modal 2023-09-03 16:28:20 +02:00
Manuel
c14fad680d refactor: use relative TS path 2023-09-03 16:23:40 +02:00
Manuel
a2738111b5 fix: binaryTarget for new docker base img 2023-09-03 16:17:13 +02:00
Manuel
016a1bb2e4 config: add IDEA directory to ignored dirs 2023-09-03 15:36:07 +02:00
Tagaishi
77c11e3fed 🐛 'seerr search bug fix (#1350)
* 🐛 'seerr search bug fix

* 🐛 Trailing '/' error

*  Redirect overseerr search item to movie page

* 💡 Comment explaining RegExp

*  undo link to overseerr item
2023-09-02 22:30:56 +02:00
Tagaishi
5f2ddcd2c4 Auth Page Dark/Light mode toggle button (#1265)
*  Dark/Light toggle button

* 💄 Moved button to top right

* 💄 Moved button to top right

*  Toggle Button component + integrations

* 💄 Rounding corners + Floating background onboard
2023-09-02 07:00:02 +02:00
Tagaishi
565260ee14 Update vitest test for Pihole as sdk changed (#1352)
*  Update vitest test for Pihole as sdk changed

*  Added test + bug discovered related to it
2023-09-02 06:58:16 +02:00
Tagaishi
371587c62d Rework Media Request Stats Widget (#1344)
*  Rework Media Request Stats Widget

* 🎨 More code to do it better than last commit

* ♻️ Resize improvement

* 🐛 Empty Username handling

* 🎨 widget as router input

*  Open links in new tab + media request scrollArea
2023-09-01 22:15:40 +02:00
Angel
1bb1a8f628 🐛 Adguard logic and several small bugs 2023-09-01 21:59:01 +02:00
Thomas Camlong
ba7e31b972 🌐 New Crowdin updates (#1272) 2023-09-01 21:55:45 +02:00
Tagaishi
8211e22d86 💄 Add custom font sizing for app name (#1341)
* 💄 Add custom font sizing for app name

* 🚸 Added maximum font size
2023-09-01 21:53:51 +02:00
Thomas Camlong
79012ec681 Merge pull request #1312 from Tagaishi/translation-handling-update 2023-09-01 20:41:00 +02:00
Tagaishi
ad61b155b8 💄 Large screen gridstack max value to 32 and sidebar gridstack over 13 bug fix (#1339)
* 💄 Large screen gridstack max value to 32

* 🐛 Fix sidebar bug
2023-09-01 17:16:37 +02:00
Tagaishi
eb3bbfb025 ⬆️ geo-tz to browser-geo-tz (#1322)
* ⬆️ geo-tz to tz-lookup

* 🐛 Handle multiple timezones return

* ⬆️ change tz-lookup to browser-geo-tz
2023-09-01 17:15:25 +02:00
Tagaishi
981c964ba9 🐛 Fix locale for calendar and clock (#1330) 2023-09-01 17:13:55 +02:00
Tagaishi
78627f7b51 🐛 Removed trim as this blocked using space char (#1340) 2023-09-01 17:12:34 +02:00
Tagaishi
106795e1be 💄 Included back the text under percentage (#1343) 2023-09-01 17:09:56 +02:00
Tagaishi
eb0282dbde 🐛 fix flex for bookmark in firefox (#1346) 2023-09-01 17:05:13 +02:00
Manuel
3b74f735a1 🦺 Set default value for DATABASE_URL 2023-08-31 19:47:21 +02:00
Manuel
9b3801ba6e 🔧 Install openssl layer to the default docker image 2023-08-31 19:43:41 +02:00
Manuel
f6a1da99a6 ⚗️ Switch base image to node20.5-slim 2023-08-31 19:31:55 +02:00
Manuel
0673375734 ⚗️ Remove parameters 2023-08-31 17:43:17 +02:00
Manuel
455230c111 ⚗️ Try out random fixes 2023-08-29 22:36:12 +02:00
Manuel
8d3252f2cf ⚗️ Remove npm config command 2023-08-29 22:21:04 +02:00
Manuel
ff13582044 ⚗️ Roll back to turbo build 2023-08-29 22:15:59 +02:00
Manuel
b4abec77fd ⚗️ Use yarn flags for install 2023-08-29 22:12:10 +02:00
Manuel
5cfe3e9dd1 ⚗️ Roll back to yarn 2023-08-29 22:11:29 +02:00
Manuel
79e201bd81 ⚗️ Make npm install in docker file silent 2023-08-29 22:09:40 +02:00
Manuel
aba42a1aa1 ⚗️ Check if build is passing with npm instead of yarn 2023-08-29 22:08:26 +02:00
Manuel
516c5b41ea 🔧 Add npm log level to dockerfile 2023-08-29 21:57:29 +02:00
Manuel
f34221d3f7 💚 Add network mode to docker build and push step 2023-08-29 21:43:51 +02:00
Manuel
aee541b6dc fix: docker build and prisma orm database push 2023-08-29 21:19:36 +02:00
Manuel
ab2e827270 🔧 Move npm install to top in docker file 2023-08-28 21:25:30 +02:00
Thomas Camlong
52ccbb3938 Merge pull request #1331 from Tagaishi/rss-no-feed-stuck-loading-fix
🐛 RSS empty feed stuck on loading
2023-08-27 09:43:19 +02:00
Tagaishi
9b7caef6d3 ♻️ refactor for minimal changes 2023-08-27 03:14:49 +02:00
Tagaishi
06a0f30ae7 🐛 RSS empty feed stuck on loading 2023-08-27 03:07:23 +02:00
Manuel
a9c577a5a3 👷 Ignore database from docker image 2023-08-26 17:16:34 +02:00
Meier Lukas
713a8f2f97 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-26 17:00:46 +02:00
ajnart
24fb17ab12 Adjust invite page
Add password strenght validation, adds background style
2023-08-26 16:07:05 +02:00
ajnart
b00a1bcdc8 💄 Style FloatingBackground 2023-08-26 16:06:21 +02:00
Meier Lukas
cdd710455f 🐛 Issue with middleware redirect in docker 2023-08-24 21:37:39 +02:00
Tagaishi
5ccc094ad1 🌐 Search engine custom button 2023-08-24 00:21:02 +02:00
Tagaishi
8d2aa51f2b 🌐 Cache settings 2023-08-24 00:06:14 +02:00
Tagaishi
4bd5d82da3 🌐 About page new version 2023-08-23 23:39:19 +02:00
ajnart
8adb05100b 📝 Explain why the password needs to be complex 2023-08-23 22:26:12 +02:00
ajnart
dfe4149ebc 🐛 Fix password-requirements progress bar 2023-08-23 22:26:12 +02:00
Manuel
4a04725aaf 🐛 Fix database for docker container 2023-08-23 22:18:31 +02:00
ajnart
c06905bfd0 🔥 Remove onboarding step 2023-08-23 22:10:16 +02:00
Manuel
5255882898 📝 Link issue with TS error 2023-08-23 21:38:17 +02:00
Manuel
1def2de8bb 🔀 Merge changes from ajnart 2023-08-23 21:37:02 +02:00
renovate[bot]
fa0d525aeb ⬆️ Update dependency framer-motion to v10.16.1 2023-08-23 19:36:43 +00:00
Manuel
8dbb6d4dd3 🔀 Merge branch 'dev' into feature/add-basic-authentication 2023-08-23 21:17:51 +02:00
ajnart
4ddad33128 ️ Disable anti-reload in dev mode 2023-08-23 18:07:56 +02:00
renovate[bot]
e08f1afded ⬆️ Update dependency @types/node to v18.17.8 2023-08-23 13:37:14 +00:00
Tagaishi
6c3421f941 🌐 Missing strings reported on discord 2023-08-23 15:07:38 +02:00
renovate[bot]
b5227a6a8c ⬆️ Update dependency @tabler/icons-react to v2.32.0 2023-08-23 09:44:21 +00:00
renovate[bot]
b567dab4b4 ⬆️ Update nextjs monorepo to v13.4.19 2023-08-23 06:18:38 +00:00
renovate[bot]
02cf4711a4 ⬆️ Update dependency video.js to v8.5.2 2023-08-23 04:09:40 +00:00
renovate[bot]
b1b12d1906 ⬆️ Update dependency prettier to v3.0.2 2023-08-23 01:20:38 +00:00
renovate[bot]
a52e110ef4 ⬆️ Update dependency @types/react to v18.2.21 2023-08-22 23:28:38 +00:00
Tagaishi
558c731c6b 🌐 between x and y string repetition change 2023-08-22 23:31:56 +02:00
Tagaishi
b6f9467fc1 🌐 better handle of multipart string for category 2023-08-22 23:31:20 +02:00
renovate[bot]
608cc78966 ⬆️ Update dependency @react-native-async-storage/async-storage to v1.19.2 2023-08-22 20:53:43 +00:00
Manuel
4e21f669f6 🌐 Translate error alert 2023-08-22 21:55:26 +02:00
Manuel
0f6d545e1a 🥅 Add alert when procedure failed 2023-08-22 21:52:14 +02:00
Manuel
107c6c3995 Add password meter to onboarding 2023-08-22 21:45:10 +02:00
Thomas Camlong
e82f3d0ea9 Merge pull request #1295 from ajnart/refactor/onboarding-page
♻️ Onboarding page
2023-08-22 13:16:06 +02:00
Thomas Camlong
4d73395eae 🐛 Update default selected option in path mappings 2023-08-22 13:15:45 +02:00
Thomas Camlong
88129e9c25 Remove analyze in Docker actions 2023-08-22 13:13:17 +02:00
Thomas Camlong
21d81cbb7e Remove test- prefix in manually deployed versions 2023-08-21 21:52:27 +02:00
Manuel
e8fa3b5e9a 🐛 Header scaling 2023-08-21 21:37:35 +02:00
Manuel
cfde1b6ece 💄 Normalize onboarding steps design 2023-08-21 21:23:28 +02:00
Manuel
480b27fea7 Add back button to create account step 2023-08-21 21:15:56 +02:00
Manuel
3623d871f8 💄 Improve design 2023-08-21 21:10:44 +02:00
Thomas Camlong
3677316ff5 Merge pull request #1271 from ajnart/fix/allow-note-only-in-editmode 2023-08-21 18:02:48 +02:00
ajnart
a98630e2c4 💡 Add comment about environ 2023-08-21 18:01:58 +02:00
ajnart
7ae0f9a7c6 🌐 Add Hungarian language support 2023-08-21 17:59:01 +02:00
Thomas Camlong
1b778943eb Merge pull request #1257 from Tagaishi/widget-full-translation-support 2023-08-21 17:56:08 +02:00
Tagaishi
d1873ebd24 🐛 Plex tv-show formatting like jellyfin (#1304) 2023-08-20 20:02:50 +02:00
Tagaishi
bc4009bd8b 🐛 Added movie in icon list for currently playing (#1303) 2023-08-20 18:08:31 +02:00
Manuel
64764a253b 📝 Update database mapping 2023-08-19 12:16:38 +02:00
Manuel
74de892859 ♻️ Onboarding page 2023-08-19 12:16:00 +02:00
Tagaishi
9f80f05ef6 🌐 Removing "Homarr" and "..." when unnecessary 2023-08-14 19:25:53 +02:00
Tagaishi
e97367a0a0 Merge branch 'widget-full-translation-support' of https://github.com/Tagaishi/homarr into widget-full-translation-support 2023-08-14 19:16:15 +02:00
ajnart
198aec0a0b 🌐 Change docker internalization 2023-08-14 14:38:10 +02:00
ajnart
6c3f819804 🐳 Fix docker not loading properly 2023-08-14 14:37:56 +02:00
ajnart
d4463c0009 🌐 Move translations to common file 2023-08-14 14:34:56 +02:00
ajnart
07f8ce3de5 🐛 Fix AM/PM for invite modal 2023-08-14 12:07:21 +02:00
ajnart
ce5552c913 Add contentComponents to the main layout
Return button is not inside of the header.
2023-08-14 10:15:12 +02:00
Tagaishi
6ccc591bbf 🌐 Appearance Colors 2023-08-13 23:11:56 +02:00
Tagaishi
d51bd43941 🌐 Add new tile 2023-08-13 22:56:41 +02:00
Tagaishi
a973265795 🌐 App validation errors 2023-08-13 22:24:46 +02:00
Tagaishi
7c898379e8 🌐 About keybind actions 2023-08-13 22:10:59 +02:00
Tagaishi
b62b6b9ee7 🐛 Fixed locale on Calendar + moment to dayjs 2023-08-13 21:47:50 +02:00
Tagaishi
8130504430 🌐 Category menu 2023-08-13 21:46:19 +02:00
Tagaishi
d4c9a5bb26 Merge branch 'dev' of https://github.com/ajnart/homarr into widget-full-translation-support 2023-08-13 17:46:18 +02:00
Manuel
b249c0205f 🔀 Merge branch 'dev' into feature/add-basic-authentication 2023-08-13 15:12:20 +02:00
Manuel
b2cbb1a388 fix: allow note only in edit mode 2023-08-12 23:23:04 +02:00
Manuel
caf74f9962 Move docker page to manage pages 2023-08-11 22:13:14 +02:00
Manuel
9ae2dc3037 Add new login page design 2023-08-11 21:44:33 +02:00
Meier Lukas
73cf109c72 🐛 Remove not implemented action icons 2023-08-11 21:08:42 +02:00
Manuel
74bf117fe3 Add tooltip for promotion and demotion of users 2023-08-11 19:29:06 +02:00
Manuel
edb48135d6 🌐 Update outdated text of manage user 2023-08-11 19:20:21 +02:00
Manuel
d57e356425 🌐 Updated deletion text 2023-08-11 19:18:19 +02:00
Meier Lukas
5bb7418de5 Add possibility to define users as admin 2023-08-10 20:50:31 +02:00
Meier Lukas
73669aa61b 🐛 Missing translation for users meta title 2023-08-10 20:12:41 +02:00
Meier Lukas
6b585a9fcf 🐛 Fix wrong translation key for password in user creation 2023-08-10 20:08:47 +02:00
Meier Lukas
9254703855 ♻️ Rename final step to confirmation 2023-08-10 20:06:32 +02:00
Meier Lukas
0282344793 ♻️ Add direct login after registration 2023-08-10 20:04:41 +02:00
Meier Lukas
558beae12f ♻️ Improve header experimental note 2023-08-10 19:54:19 +02:00
Meier Lukas
30c8f5cfdf ♻️ Add auto-complete for login 2023-08-10 19:53:56 +02:00
Meier Lukas
76b8bbd65c ♻️ Improve usage of /b and /board 2023-08-10 18:17:49 +02:00
Meier Lukas
b21ee50908 🐛 Fix docker enabled issue 2023-08-10 06:56:45 +02:00
Tagaishi
9b2fecdfcb 🌐 Replaced hardcoded text to use translation 2023-08-09 22:16:57 +02:00
Manuel
1d09f662aa 🚸 Open external links in manage nav in new tab 2023-08-09 22:14:25 +02:00
Manuel
932150c72f 💄 Add discord and GH to experimental header 2023-08-09 22:06:56 +02:00
Meier Lukas
865da09c24 🐛 Fix environment variable docker enabled 2023-08-09 21:45:35 +02:00
Meier Lukas
db8d88affc 🐛 Fix deprecated zustand dependencies 2023-08-09 21:41:57 +02:00
Meier Lukas
d9eec612d8 ♻️ Remove console log 2023-08-09 21:27:57 +02:00
Meier Lukas
d24d84c834 🐛 Add error message for invalid login 2023-08-09 21:25:29 +02:00
ajnart
f1fb7a5a78 🐛 Fix env schema
https://env.t3.gg/docs/recipes
2023-08-09 18:36:27 +02:00
Manuel
0277f808c3 🔀 Merge branch 'dev' into feature/add-basic-authentication 2023-08-07 22:06:37 +02:00
Meier Lukas
0190f4550d 🐛 Logo link not working 2023-08-07 19:17:05 +02:00
Meier Lukas
fec5364e37 🐛 Ping accessibillity settings have not been used 2023-08-07 06:31:49 +02:00
Meier Lukas
f8907b97ae 🐛 Add missing translations for save affix 2023-08-06 17:10:38 +02:00
Meier Lukas
6efa12b5f0 🐛 Color theme not working when opening customize page from board page 2023-08-06 17:06:00 +02:00
Manuel
f1e8beb659 🔀 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-06 16:46:57 +02:00
Manuel
0004dbd826 Add affix for board customization page 2023-08-06 16:46:00 +02:00
Meier Lukas
f07b964129 ♻️ Use color scheme on board customize page 2023-08-06 16:38:04 +02:00
Manuel
936980d67a 💄 Display active page in manage navigation bar 2023-08-06 16:22:24 +02:00
Meier Lukas
7a499da903 🐛 Wrong import (using react instead of next for translation) 2023-08-06 16:06:44 +02:00
Meier Lukas
0bed8b2025 🐛 Missing translation on user invites page 2023-08-06 16:02:15 +02:00
Meier Lukas
3e4c9cdc3d ♻️ Deprecate calendar firstdayofweek option 2023-08-06 16:00:40 +02:00
Meier Lukas
65cd15aba5 ♻️ Add direct sign in after onboarding 2023-08-06 15:49:24 +02:00
Meier Lukas
3ef12cfe12 ♻️ Update api endpoint authorization 2023-08-06 15:40:19 +02:00
Meier Lukas
d281a2ee98 Merge branch 'dev' into feature/add-basic-authentication 2023-08-06 15:02:57 +02:00
Meier Lukas
9e576f1498 ♻️ Address pull request feedback 2023-08-06 14:12:39 +02:00
Manuel
4b2c5f2816 🌐 Fix translation namespaces 2023-08-05 23:09:07 +02:00
Manuel
14c366bddd 🌐 Add missing translations 2023-08-05 23:06:40 +02:00
Manuel
cdb88ff941 🔥 Remove type safety for translations 2023-08-05 21:36:15 +02:00
Manuel
bd4b7b8c13 🏷️ Apply namespace types to translations 2023-08-05 17:45:50 +02:00
Manuel
a287b87a4a 🏷️ Add translation namespace typesy 2023-08-05 17:33:41 +02:00
Meier Lukas
d1ad3ed162 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-05 17:18:10 +02:00
Meier Lukas
73589623d4 ♻️ Add translations for board customize page 2023-08-05 17:18:05 +02:00
Manuel
42688ad2c7 Add i18n namespaces and add translations for manage boards 2023-08-05 17:00:29 +02:00
Meier Lukas
6aff6dbedc ♻️ Fix head title for preferences page 2023-08-05 16:34:38 +02:00
Meier Lukas
f650915832 ♻️ Add fallback head title for board page 2023-08-05 16:21:24 +02:00
Meier Lukas
da0314a180 🐛 Add missing translation 2023-08-05 16:03:35 +02:00
Meier Lukas
093c03091e Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-05 16:02:30 +02:00
Meier Lukas
889853961d ♻️ Add header translations 2023-08-05 16:02:26 +02:00
Manuel
cf057505ec Protect routes and procedures 2023-08-05 15:30:59 +02:00
Manuel
5b1b36eecc 🚸 Remember current values as default in create user stepper 2023-08-05 15:09:48 +02:00
Manuel
d081ccb9ad Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-05 15:03:16 +02:00
Meier Lukas
04b3fa394d ♻️ Add ssr for user preferences page, add translations for user preferences page 2023-08-05 13:19:30 +02:00
Meier Lukas
4817c0c267 🐛 Updating search engine not working 2023-08-05 12:57:29 +02:00
Manuel
306151db65 Add link to manage page 2023-08-05 12:35:06 +02:00
Meier Lukas
2c3930bfb5 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-05 12:26:57 +02:00
Meier Lukas
f18d2fdfbd Add middleware for onboarding page 2023-08-05 12:26:50 +02:00
Manuel
f5d11cfd36 🐛 Fix imports 2023-08-05 12:26:42 +02:00
Manuel
bbcbda74a9 🐛 Fix import for header 2023-08-05 12:23:46 +02:00
Manuel
2615f8e0ae 💚 Remove run param from turbo build 2023-08-05 12:18:50 +02:00
Manuel
0455db61af 📌 Fix turbo version 2023-08-05 12:10:34 +02:00
Manuel
9f7c41919d 💚 Try to fix turbo build 2023-08-05 12:03:33 +02:00
Meier Lukas
050ed8f877 🐛 Logout redirect not working 2023-08-05 11:49:37 +02:00
Meier Lukas
5039287d18 🐛 Logout redirect wrong 2023-08-05 11:42:49 +02:00
Meier Lukas
5177851fca 🐛 Login not redirecting 2023-08-05 11:38:37 +02:00
Manuel
2f2fdfb438 Add sharp and surpress npm update notifier 2023-08-05 11:38:23 +02:00
Manuel
44119422f6 💚 Add db migration and fix build errors 2023-08-05 11:33:29 +02:00
Manuel
da57166fe7 Use bcryptjs instead of bcrypt 2023-08-05 11:19:52 +02:00
Manuel
6cbf5028c9 🐛 Update imports for turbo build 2023-08-05 11:14:28 +02:00
Manuel
fb0274c2e9 💚 Fix env validation for turbo build 2023-08-05 10:43:56 +02:00
Manuel
cee306ec95 💚 Fix turbo build for missing env 2023-08-05 10:39:28 +02:00
Manuel
5ee740bd67 💚 Potential fix for internal next auth url 2023-08-05 10:36:07 +02:00
Meier Lukas
4d6b120864 🐛 Sign in does no longer rely on NEXTAUTH_URL 2023-08-05 10:02:56 +02:00
Meier Lukas
5d5e69537d Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-05 09:57:55 +02:00
Meier Lukas
e9904ababf 🚧 Add search engine to user preferences 2023-08-05 09:57:48 +02:00
Manuel
f3082c5c7d 💚 Fix ci build 2023-08-05 00:45:58 +02:00
Manuel
c0b836f2a4 feat: disable delete for Homarr default config 2023-08-04 22:31:48 +02:00
Meier Lukas
863cff1dfc ♻️ Improve customization page 2023-08-04 21:54:33 +02:00
Meier Lukas
02227e0a44 Fix issue with link on boards page 2023-08-04 21:48:24 +02:00
Manuel
a6c273e26a 💄 Use correct icons for boards page 2023-08-02 18:57:05 +02:00
Meier Lukas
0a64ab0c84 🗑️ Remove config api endpoints 2023-08-02 06:46:26 +02:00
Meier Lukas
37c5378e4b ♻️ Remove try-password api endpoint 2023-08-02 06:45:19 +02:00
Meier Lukas
e5e1f5c406 Merge branch 'dev' into feature/add-basic-authentication 2023-08-02 06:44:26 +02:00
Meier Lukas
39b8eb355b 🐛 Fix failing query when not authorized 2023-08-01 20:21:44 +02:00
Meier Lukas
8ce0de5068 🚧 Add onboarding 2023-08-01 19:04:14 +02:00
Manuel
a3bb08768f Add make my default board button to manage boards 2023-08-01 18:14:53 +02:00
Manuel
9657d8acd5 Add default dashboard to preferences 2023-08-01 18:07:24 +02:00
Manuel
6ae89140a9 Add select for default board in preferences 2023-08-01 17:56:56 +02:00
Manuel
70c942e4cb 🌐 Fix translations on preferences page 2023-08-01 17:48:43 +02:00
Manuel
2035b20690 Add password strength indicator and use crypto safe random PWs 2023-08-01 17:42:19 +02:00
Meier Lukas
b4c6896850 ♻️ Remove unused middleware 2023-08-01 15:39:45 +02:00
Meier Lukas
994c9ede5c ♻️ Remove and move some more files 2023-08-01 15:37:58 +02:00
Meier Lukas
65d0b31a1a ♻️ Improved code structure for layout, remove most settings components 2023-08-01 15:23:31 +02:00
Meier Lukas
6b8d94b6b5 ♻️ Make login and invite page inaccessible when signed in 2023-08-01 14:51:27 +02:00
Meier Lukas
a75d19fd78 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-01 12:59:57 +02:00
Meier Lukas
46696af756 ♻️ Remove auto focus from search 2023-08-01 12:59:50 +02:00
Manuel
f391002c99 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-01 12:58:38 +02:00
Manuel
bb0bcabb2e ♻️ board procedure 2023-08-01 12:58:32 +02:00
Meier Lukas
db396b6b10 Add copy button to invite modal 2023-08-01 12:50:54 +02:00
Manuel
ccbf208ff0 🐛 Fix input element type for create invite 2023-08-01 12:37:35 +02:00
Meier Lukas
d62acf29be Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-01 12:35:30 +02:00
Meier Lukas
46475f3a93 💄 Improve movie modal cards and layout 2023-08-01 12:35:26 +02:00
ajnart
38638551dc 🚨 Fix compilation 2023-08-01 19:22:15 +09:00
ajnart
1bb84e3b0f Add cache back 2023-08-01 19:20:39 +09:00
Meier Lukas
68bd2c06c8 ♻️ Improve movie modal count text 2023-08-01 12:20:14 +02:00
Meier Lukas
ae1083b090 🐛 Fix issue with movie modal 2023-08-01 12:18:28 +02:00
Meier Lukas
16804972e5 ♻️ Add username to logout text 2023-08-01 12:06:39 +02:00
Meier Lukas
00260f975a ♻️ Move apps on top of search 2023-08-01 12:04:37 +02:00
Meier Lukas
2c5ef6a73b 🐛 Fix registration redirect link 2023-08-01 11:53:30 +02:00
Meier Lukas
80a4369845 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-01 11:43:58 +02:00
Meier Lukas
f93d935175 ♻️ Rename registration token to invite, add created by 2023-08-01 11:43:24 +02:00
Manuel
ac2116b44f Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-08-01 11:39:00 +02:00
Manuel
38c6a0741b 🌐 Fix translations for preferences page 2023-08-01 11:38:57 +02:00
Meier Lukas
df890b8c0a 💄 Polish layouts 2023-08-01 01:13:21 +02:00
Meier Lukas
fff6e6c077 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-31 23:52:03 +02:00
Meier Lukas
40056ab151 ♻️ Disable docker when not configured 2023-07-31 23:51:54 +02:00
Manuel
7f5e76796d 🐛 Fix validation for create board and add modal for delete board 2023-07-31 23:46:44 +02:00
Meier Lukas
1391a3d022 📱 Improve header 2023-07-31 23:27:11 +02:00
Meier Lukas
82c2079074 🗑️ Remove index and slug pages and add redirect to /board 2023-07-31 23:12:45 +02:00
Manuel
d07cdee144 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-31 22:58:18 +02:00
Manuel
d2408ebe4b Implement paging in manage users, implement search 2023-07-31 22:57:22 +02:00
Meier Lukas
3047002558 🐛 Fix issue with config reset when navigating 2023-07-31 22:50:45 +02:00
Manuel
35d505e9b1 🐛 Remove $ from delete user modal 2023-07-31 22:39:13 +02:00
Manuel
961b8024ab 🐛 Fix schema validation for user creation 2023-07-31 22:36:43 +02:00
Manuel
061ae1ae6c Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-31 22:32:38 +02:00
Manuel
8d0ea0e2a9 💄 Improve steps in user creation page 2023-07-31 22:32:34 +02:00
Meier Lukas
386fddc050 Implement new movie search modals 2023-07-31 22:30:48 +02:00
Manuel
630548e022 💄 Remove "your preferences" from manage home 2023-07-31 21:42:35 +02:00
Manuel
0b673b7c1a 🐛 Fix outdated links in manage home 2023-07-31 21:42:03 +02:00
Manuel
ca1809c476 💄 Fix colors of modals 2023-07-31 21:40:37 +02:00
Manuel
9fcbdb43e6 🐛 Fix paging on manage user invites 2023-07-31 21:20:46 +02:00
Manuel
ddfd9fb286 💄 Align actions to the right on manage invite page 2023-07-31 20:57:18 +02:00
Manuel
71757d0cce 🐛 Fix pagination on register token page 2023-07-31 20:52:17 +02:00
Manuel
129fd1336c Add copy registration token modal 2023-07-31 20:36:36 +02:00
Manuel
f24daa2b34 🔥 Remove active and inactive toggle from manage users page 2023-07-31 19:51:04 +02:00
Manuel
2aa594b686 🐛 User preferences not rendering correctly for Switches 2023-07-31 19:49:41 +02:00
Meier Lukas
130b51e109 Add board customization page 2023-07-31 11:15:18 +02:00
Meier Lukas
e448ce4b00 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-31 00:02:18 +02:00
Meier Lukas
99c2bc11cb 🚧 Add board customization page 2023-07-31 00:02:10 +02:00
Manuel
f8186e68e4 Add procedure for updating user settings 2023-07-30 23:29:41 +02:00
Manuel
4b1f5881e3 ♻️ Move preferences in router 2023-07-30 22:57:14 +02:00
Manuel
672b726e6b 🐛 Outdated links on manage page 2023-07-30 22:44:18 +02:00
Manuel
0575cd475c 🔥 Remove caching and async persistance storage 2023-07-30 22:30:49 +02:00
Manuel
f61d0f5f8d Add manage dashboards page 2023-07-30 22:20:20 +02:00
Meier Lukas
93c10da760 🐛 Fix issue with header action button 2023-07-30 20:24:12 +02:00
Meier Lukas
5008b5e7a4 Add slug board page 2023-07-30 20:17:35 +02:00
Manuel
96529ae6bc Re-add burger menu on mobile 2023-07-30 19:45:48 +02:00
Manuel
fc70a34e7d Add common header to manage pages 2023-07-30 16:30:48 +02:00
Manuel
d100d41ce6 Add preferences to preferences page 2023-07-30 16:22:45 +02:00
Manuel
9de710bfd8 Add preferences page to navbar 2023-07-30 15:33:43 +02:00
Manuel
8e5af7f05c Add title to manage pages 2023-07-30 15:15:14 +02:00
Meier Lukas
07b7b3acec Add docker page 2023-07-30 09:48:35 +02:00
Meier Lukas
e1aaf82602 🚧 Add board, Improve header 2023-07-30 01:09:10 +02:00
Meier Lukas
b19d489a4c ♻️ Add username from session to manage page 2023-07-29 23:05:47 +02:00
Meier Lukas
f84d9ed7d4 ♻️ Improve avatar menu, add avatar menu to manage pages, add default dashboard to user settings schema 2023-07-29 23:03:40 +02:00
Meier Lukas
588ad4313a Add color scheme toggle for new header 2023-07-29 22:06:21 +02:00
Manuel
5e873cad3f ️ Improve management start page 2023-07-29 21:58:36 +02:00
Manuel
d13347fd4e ️ Add mobile drawer for navigation 2023-07-29 21:44:16 +02:00
Manuel
3d2e909237 🚸 Improve mobile reponsiveness 2023-07-29 21:33:44 +02:00
Manuel
b4192137de Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-29 21:21:23 +02:00
Manuel
cb0b8869e2 Add deletion for registration tokens 2023-07-29 21:21:21 +02:00
Meier Lukas
698dab032f ♻️ Improve avatar menu 2023-07-29 21:18:41 +02:00
Meier Lukas
2db3d1405b Implement account button for new header 2023-07-29 21:15:55 +02:00
Manuel
b4c188e797 Add procedure for registration tokens management 2023-07-29 21:11:52 +02:00
Meier Lukas
cf12c8575d Add board pages 2023-07-29 20:56:20 +02:00
Meier Lukas
0c3d9f335c Implement search for new header 2023-07-29 20:56:08 +02:00
Manuel
ed23e388f9 🚸 Improve UX on create user page 2023-07-29 20:12:49 +02:00
Manuel
e273c830b4 Add create user form 2023-07-29 17:29:57 +02:00
Manuel
e045081346 💄 Fix darkmode styling for manage home page 2023-07-29 16:19:57 +02:00
Manuel
951e4cb61a Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-29 16:17:37 +02:00
Manuel
4c2e81a29d Add stepper for creating new user 2023-07-29 16:17:34 +02:00
Meier Lukas
9461e9d574 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-29 16:16:08 +02:00
Meier Lukas
1038cc7ccf ♻️ Show edit buttons only when user is admin 2023-07-29 16:16:01 +02:00
Manuel
e4e1f2e32e Add tRPC user query 2023-07-29 16:08:58 +02:00
Manuel
5c4e1a4bb8 Merge branch 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-29 15:32:20 +02:00
Manuel
76e3bc28e5 Improve management landing page 2023-07-29 15:32:17 +02:00
Meier Lukas
79d13274b5 ♻️ Move authentication pages to /auth 2023-07-29 15:21:00 +02:00
Manuel
5cac368926 Add correct page routing 2023-07-29 14:59:11 +02:00
Manuel
b45a351eff 🔀 Merge branch 'dev' into feature/add-basic-authentication 2023-07-29 14:50:31 +02:00
Manuel
0f3ec55f21 Merge branches 'feature/add-basic-authentication' and 'feature/add-basic-authentication' of https://github.com/ajnart/homarr into feature/add-basic-authentication 2023-07-29 14:49:48 +02:00
Manuel
3b01a42b15 Add management layout 2023-07-29 14:49:44 +02:00
Meier Lukas
c165648d5b 🎨 Improve color scheme logic 2023-07-29 14:30:19 +02:00
Meier Lukas
c312828c79 Add translation to user settings 2023-07-29 11:35:34 +02:00
Meier Lukas
ed76afbce8 Add user settings, improve color scheme 2023-07-29 11:19:40 +02:00
Meier Lukas
d8562e2990 Add working sign-in / sign-out, add working registration with token 2023-07-29 10:05:05 +02:00
Meier Lukas
326395730e 🐛 Fix issues with login page 2023-07-28 20:45:54 +02:00
Meier Lukas
d7f6bdf417 Add basic credentials authentication 2023-07-28 18:51:44 +02:00
Meier Lukas
d507f0807f Merge branch 'dev' into feature/add-basic-authentication 2023-07-28 18:11:17 +02:00
Meierschlumpf
3990c1a4ad ♻️ Add env variable validation 2023-07-23 14:18:10 +02:00
1786 changed files with 51716 additions and 11192 deletions

View File

@@ -7,3 +7,7 @@ npm-debug.log
.github
LICENSE
docs/
*.sqlite
*.env
.env
.next/standalone/.env

14
.env.example Normal file
View File

@@ -0,0 +1,14 @@
DATABASE_URL="file:./database/db.sqlite"
# Next Auth
# You can generate a new secret on the command line with:
# openssl rand -base64 32
# https://next-auth.js.org/configuration/options#secret
NEXTAUTH_URL="http://localhost:3000"
NEXTAUTH_SECRET="anything"
# Disable analytics
NEXT_PUBLIC_DISABLE_ANALYTICS="true"
DEFAULT_COLOR_SCHEME="light"

21
.github/renovate.json vendored Normal file
View File

@@ -0,0 +1,21 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
],
"commitMessagePrefix": "⬆️",
"dependencyDashboard": true,
"prCreation": "approval",
"lockFileMaintenance": {
"automerge": false
},
"minor": {
"automerge": false
},
"patch": {
"automerge": false
},
"pin": {
"automerge": false
}
}

View File

@@ -6,9 +6,6 @@ name: Master CI
on:
push:
branches: [master]
paths-ignore:
- '.github/**'
- '**.md'
tags:
- v*
@@ -63,9 +60,9 @@ jobs:
restore-keys: |
${{ runner.os }}-nextjs-${{ hashFiles('**/package-lock.json') }}-
- run: yarn install --immutable
- run: yarn install
- run: yarn build
- run: yarn turbo build
- name: Docker meta
id: meta
@@ -101,3 +98,4 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
network: host

View File

@@ -41,6 +41,7 @@ jobs:
permissions:
packages: write
contents: read
pull-requests: write
steps:
- name: Setup
@@ -70,11 +71,15 @@ jobs:
path: .next/cache
key: ${{ runner.os }}-build-${{ env.cache-name }}
- run: yarn install --immutable
- run: yarn install
- run: yarn turbo build
- run: yarn test:run
- run: yarn test:coverage
- name: Report coverage
if: always()
uses: davelosert/vitest-coverage-report-action@v2
- name: Docker meta
if: github.event_name != 'pull_request'
@@ -86,7 +91,7 @@ jobs:
# 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 != '' }}
type=raw,value=${{ github.event.inputs.tag }},enable=${{ github.event.inputs.tag != '' }}
tpye=raw,value=dev,priority=1,enable=${{ github.event.inputs.tag == '' }}
- name: Set up QEMU
@@ -114,43 +119,4 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Node.js
uses: actions/setup-node@v3
with:
node-version: 18
- 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 next build
uses: actions/cache@v3
id: restore-build-cache
env:
cache-name: cache-next-build
with:
# if you use a custom build directory, replace all instances of `.next` in this file with your build directory
# ex: if your app builds to `dist`, replace `.next` with `dist`
path: .next/cache
# change this if you prefer a more strict cache
key: ${{ runner.os }}-build-${{ env.cache-name }}
- run: yarn install
- name: Build next.js app
# change this if your site requires a custom build command
run: yarn turbo build
network: host

10
.gitignore vendored
View File

@@ -55,4 +55,12 @@ data/configs
#Languages other than 'en'
public/locales/*
!public/locales/en
!public/locales/en
#database
sqlite.db
database/*.sqlite
WILL_BE_OVERWRITTEN.sqlite
# IDE
.idea/*

21
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,21 @@
{
"i18n-ally.localesPaths": "public/locales",
"i18n-ally.enabledFrameworks": [
"react-i18next"
],
"i18n-ally.namespace": true,
"i18n-ally.pathMatcher": "{locale}/{namespaces}.json",
"i18n-ally.keystyle": "nested",
"i18n-ally.keysInUse": [
"modules.**",
"layout.manage.navigation.**",
],
"editor.codeActionsOnSave": {
"source.organizeImports": true
},
"typescript.tsdk": "node_modules/typescript/lib",
"explorer.fileNesting.patterns": {
"package.json": "pnpm-lock.yaml, yarn.lock, package-lock.json",
"*.tsx": "${capture}.module.css"
},
}

View File

@@ -1,21 +1,60 @@
FROM node:20-alpine
FROM node:20.2.0-slim
WORKDIR /app
# Define node.js environment variables
ARG PORT=7575
ENV NEXT_TELEMETRY_DISABLED 1
ENV NODE_ENV production
ENV NODE_OPTIONS '--no-experimental-fetch'
COPY next.config.js ./
COPY public ./public
COPY package.json ./package.json
COPY package.json ./temp_package.json
COPY yarn.lock ./temp_yarn.lock
# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY .next/standalone ./
COPY .next/static ./.next/static
COPY ./scripts/run.sh ./scripts/run.sh
COPY ./drizzle ./drizzle
EXPOSE 7575
COPY ./drizzle/migrate ./migrate
COPY ./tsconfig.json ./migrate/tsconfig.json
RUN mkdir /data
# Install dependencies
RUN apt update && apt install -y openssl wget
# Move node_modules to temp location to avoid overwriting
RUN mv node_modules _node_modules
RUN rm package.json
# Install dependencies for migration
RUN cp ./migrate/package.json ./package.json
RUN yarn
# Copy better_sqlite3 build for current platform
RUN cp /app/node_modules/better-sqlite3/build/Release/better_sqlite3.node /app/_node_modules/better-sqlite3/build/Release/better_sqlite3.node
# Copy node_modules for migration to migrate folder for migration script
RUN mv node_modules ./migrate/node_modules
# Copy temp node_modules of app to app folder
RUN mv _node_modules node_modules
# Expose the default application port
EXPOSE $PORT
ENV PORT=${PORT}
ENV DATABASE_URL "file:/data/db.sqlite"
ENV NEXTAUTH_URL "http://localhost:7575"
ENV PORT 7575
ENV NEXTAUTH_SECRET NOT_IN_USE_BECAUSE_JWTS_ARE_UNUSED
CMD ["node", "server.js"]
HEALTHCHECK --interval=10s --timeout=5s --start-period=5s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:${PORT} || exit 1
VOLUME [ "/app/data/configs" ]
VOLUME [ "/data" ]
ENTRYPOINT ["sh", "./scripts/run.sh"]

View File

@@ -11,7 +11,7 @@
<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>
<a href=https://translate.homarr.dev/>
<img title="Translations" src="https://badges.crowdin.net/homarr/localized.svg" />
</a>
<a href="https://discord.gg/aCsmEV5RgA">
@@ -28,7 +28,7 @@
<a href="https://homarr.dev/docs/introduction/installation">
<strong>Install 💻</strong>
</a> •
<a href="https://crowdin.com/project/homarr">
<a href="https://translate.homarr.dev/">
<strong>Translations 🈺</strong>
</a> •
<a href="https://discord.com/invite/aCsmEV5RgA">

View File

@@ -1,3 +1,5 @@
project_id: "534422"
api_token_env: "CROWDIN_PERSONAL_TOKEN"
files:
- source: /public/locales/en/**/*.json
translation: /public/locales/%two_letters_code%/**/%original_file_name%

View File

@@ -270,52 +270,6 @@
}
],
"widgets": [
{
"id": "86b1921f-efa7-410f-92dd-79553bf3264d",
"type": "notebook",
"properties": {
"showToolbar": true,
"content": "<h2><strong>Homarr's</strong> notebook</h2><p>Use it as your Todo list, ideas to think about, as a \"getting-started\" guide for your users or even as your secret journal to confess your crushes, it stays private our your <strong>Homarr</strong> instance.</p><p>The <code>notebook</code> widget focuses on usability and is designed to be as simple as possible to bring a familiar editing experience to regular users. It is based on <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://tiptap.dev/\">Tiptap.dev</a> and supports all of its features:</p><ul><li><p>General text formatting: <strong>bold</strong>, <em>italic</em>, underline, <s>strike-through</s></p></li><li><p>Headings (h1-h6)</p></li><li><p>Sub and super scripts (&lt;sup /&gt; and &lt;sub /&gt; tags)</p></li><li><p>Ordered and bullet lists</p></li><li><p>Text align</p></li></ul>"
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"sm": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 3,
"height": 2
}
},
"md": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 3,
"height": 4
}
},
"lg": {
"location": {
"x": 0,
"y": 1
},
"size": {
"width": 6,
"height": 3
}
}
}
},
{
"id": "e3004052-6b83-480e-b458-56e8ccdca5f0",
"type": "weather",
@@ -472,6 +426,52 @@
}
}
}
},
{
"id": "86b1921f-efa7-410f-92dd-79553bf3264d",
"type": "notebook",
"properties": {
"showToolbar": true,
"content": "<h2><strong>Welcome to Homarr 🚀👋</strong></h2><p>We're glad that you're here! Homarr is a <em>modern </em>and <em>easy to use</em> dashboard that helps you to <strong>organize and manage</strong> your home network from one place. Control is <strong>at your fingertips</strong>.</p><p>We recommend you to read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev/docs/introduction/after-the-installation\">getting started guide</a> first. To edit this board you must enter the edit mode - only administrators can do this. Adding an app is the first step you should take. You can do this by clicking the <code>Add tile</code> button at the top right and select <code>App</code>. After you provided an internal URL, external URL and selected an icon you can drag it around when holding down the left mouse button. Make it bigger or smaller using the drag icon at the bottom right. When you're happy with it's position, you <strong>must exit edit mode to save your board</strong>. Adding widgets works the same way but may require additional configuration - read the documentation for more information.</p><p>To remove this widget, you must log in to your administrator account and click on the menu to delete it.</p><p><strong><u>Your TODO list:</u></strong></p><ul data-type=\"taskList\"><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev\">documentation</a></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add your <em>first app</em></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p><em>Resize </em>and <em>drag</em> your app to a different position</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add the <em>clock widget</em> to your dashboard</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Create a <em>new user</em></p></div></li></ul>"
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"sm": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 3,
"height": 2
}
},
"md": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 3,
"height": 4
}
},
"lg": {
"location": {
"x": 0,
"y": 1
},
"size": {
"width": 6,
"height": 3
}
}
}
}
],
"settings": {
@@ -505,6 +505,9 @@
"columnCountMedium": 6,
"columnCountLarge": 10
}
},
"access": {
"allowGuests": false
}
}
}

View File

@@ -1,2 +1,4 @@
export const REPO_URL = 'ajnart/homarr';
export const ICON_PICKER_SLICE_LIMIT = 36;
export const COOKIE_LOCALE_KEY = 'config-locale';
export const COOKIE_COLOR_SCHEME_KEY = 'color-scheme';

2828
data/crowdin-report.json Normal file

File diff suppressed because it is too large Load Diff

513
data/default.json Normal file
View File

@@ -0,0 +1,513 @@
{
"schemaVersion": 1,
"configProperties": {
"name": "default"
},
"categories": [],
"wrappers": [
{
"id": "default",
"position": 0
}
],
"apps": [
{
"id": "5df743d9-5cb1-457c-85d2-64ff86855652",
"name": "Documentation",
"url": "https://homarr.dev",
"behaviour": {
"onClickUrl": "https://homarr.dev",
"externalUrl": "https://homarr.dev",
"isOpeningNewTab": true
},
"network": {
"enabledStatusChecker": false,
"statusCodes": [
"200"
]
},
"appearance": {
"iconUrl": "/imgs/logo/logo.png",
"appNameStatus": "normal",
"positionAppName": "column",
"lineClampAppName": 1
},
"integration": {
"type": null,
"properties": []
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"md": {
"location": {
"x": 5,
"y": 1
},
"size": {
"width": 1,
"height": 1
}
},
"sm": {
"location": {
"x": 0,
"y": 1
},
"size": {
"width": 1,
"height": 2
}
},
"lg": {
"location": {
"x": 6,
"y": 1
},
"size": {
"width": 2,
"height": 2
}
}
}
},
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a337",
"name": "Discord",
"url": "https://discord.com/invite/aCsmEV5RgA",
"behaviour": {
"onClickUrl": "https://discord.com/invite/aCsmEV5RgA",
"isOpeningNewTab": true,
"externalUrl": "https://discord.com/invite/aCsmEV5RgA",
"tooltipDescription": "Join our Discord server! We're waiting for your ideas and feedback. "
},
"network": {
"enabledStatusChecker": false,
"statusCodes": [
"200"
]
},
"appearance": {
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/discord.png",
"appNameStatus": "normal",
"positionAppName": "row-reverse",
"lineClampAppName": 1
},
"integration": {
"type": null,
"properties": []
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"md": {
"location": {
"x": 3,
"y": 1
},
"size": {
"width": 1,
"height": 1
}
},
"sm": {
"location": {
"x": 1,
"y": 4
},
"size": {
"width": 1,
"height": 1
}
},
"lg": {
"location": {
"x": 4,
"y": 0
},
"size": {
"width": 2,
"height": 1
}
}
}
},
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a330",
"name": "Contribute",
"url": "https://github.com/ajnart/homarr",
"behaviour": {
"onClickUrl": "https://github.com/ajnart/homarr",
"externalUrl": "https://github.com/ajnart/homarr",
"isOpeningNewTab": true,
"tooltipDescription": ""
},
"network": {
"enabledStatusChecker": false,
"statusCodes": []
},
"appearance": {
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/github.png",
"appNameStatus": "normal",
"positionAppName": "row-reverse",
"lineClampAppName": 2
},
"integration": {
"type": null,
"properties": []
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"md": {
"location": {
"x": 3,
"y": 2
},
"size": {
"width": 2,
"height": 1
}
},
"sm": {
"location": {
"x": 1,
"y": 3
},
"size": {
"width": 2,
"height": 1
}
},
"lg": {
"location": {
"x": 2,
"y": 0
},
"size": {
"width": 2,
"height": 1
}
}
}
},
{
"id": "47af36c0-47c1-4e5b-bfc7-ad645ee6a990",
"name": "Donate",
"url": "https://ko-fi.com/ajnart",
"behaviour": {
"onClickUrl": "https://ko-fi.com/ajnart",
"externalUrl": "https://ko-fi.com/ajnart",
"isOpeningNewTab": true,
"tooltipDescription": "Please consider making a donation"
},
"network": {
"enabledStatusChecker": false,
"statusCodes": [
"200"
]
},
"appearance": {
"iconUrl": "https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/ko-fi.png",
"appNameStatus": "normal",
"positionAppName": "row-reverse",
"lineClampAppName": 1
},
"integration": {
"type": null,
"properties": []
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"md": {
"location": {
"x": 4,
"y": 1
},
"size": {
"width": 1,
"height": 1
}
},
"sm": {
"location": {
"x": 2,
"y": 4
},
"size": {
"width": 1,
"height": 1
}
},
"lg": {
"location": {
"x": 6,
"y": 0
},
"size": {
"width": 2,
"height": 1
}
}
}
}
],
"widgets": [
{
"id": "e3004052-6b83-480e-b458-56e8ccdca5f0",
"type": "weather",
"properties": {
"displayInFahrenheit": false,
"location": {
"name": "Paris",
"latitude": 48.85341,
"longitude": 2.3488
},
"displayCityName": true
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"md": {
"location": {
"x": 5,
"y": 0
},
"size": {
"width": 1,
"height": 1
}
},
"sm": {
"location": {
"x": 2,
"y": 0
},
"size": {
"width": 1,
"height": 1
}
},
"lg": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 2,
"height": 1
}
}
}
},
{
"id": "971aa859-8570-49a1-8d34-dd5c7b3638d1",
"type": "date",
"properties": {
"display24HourFormat": true,
"dateFormat": "hide",
"enableTimezone": false,
"timezoneLocation": {
"name": "Paris",
"latitude": 48.85341,
"longitude": 2.3488
},
"titleState": "city"
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"sm": {
"location": {
"x": 1,
"y": 0
},
"size": {
"width": 1,
"height": 1
}
},
"md": {
"location": {
"x": 4,
"y": 0
},
"size": {
"width": 1,
"height": 1
}
},
"lg": {
"location": {
"x": 8,
"y": 0
},
"size": {
"width": 2,
"height": 1
}
}
}
},
{
"id": "f252768d-9e69-491b-b6b4-8cad04fa30e8",
"type": "date",
"properties": {
"display24HourFormat": true,
"dateFormat": "hide",
"enableTimezone": true,
"timezoneLocation": {
"name": "Tokyo",
"latitude": 35.6895,
"longitude": 139.69171
},
"titleState": "city"
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"sm": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 1,
"height": 1
}
},
"md": {
"location": {
"x": 3,
"y": 0
},
"size": {
"width": 1,
"height": 1
}
},
"lg": {
"location": {
"x": 8,
"y": 1
},
"size": {
"width": 2,
"height": 1
}
}
}
},
{
"id": "86b1921f-efa7-410f-92dd-79553bf3264d",
"type": "notebook",
"properties": {
"showToolbar": true,
"content": "<h2><strong>Welcome to Homarr 🚀👋</strong></h2><p>We're glad that you're here! Homarr is a <em>modern </em>and <em>easy to use</em> dashboard that helps you to <strong>organize and manage</strong> your home network from one place. Control is <strong>at your fingertips</strong>.</p><p>We recommend you to read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev/docs/introduction/after-the-installation\">getting started guide</a> first. To edit this board you must enter the edit mode - only administrators can do this. Adding an app is the first step you should take. You can do this by clicking the <code>Add tile</code> button at the top right and select <code>App</code>. After you provided an internal URL, external URL and selected an icon you can drag it around when holding down the left mouse button. Make it bigger or smaller using the drag icon at the bottom right. When you're happy with it's position, you <strong>must exit edit mode to save your board</strong>. Adding widgets works the same way but may require additional configuration - read the documentation for more information.</p><p>To remove this widget, you must log in to your administrator account and click on the menu to delete it.</p><p><strong><u>Your TODO list:</u></strong></p><ul data-type=\"taskList\"><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Read the <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://homarr.dev\">documentation</a></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add your <em>first app</em></p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p><em>Resize </em>and <em>drag</em> your app to a different position</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Add the <em>clock widget</em> to your dashboard</p></div></li><li data-checked=\"false\" data-type=\"taskItem\"><label><input type=\"checkbox\"><span></span></label><div><p>Create a <em>new user</em></p></div></li></ul>"
},
"area": {
"type": "wrapper",
"properties": {
"id": "default"
}
},
"shape": {
"sm": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 3,
"height": 2
}
},
"md": {
"location": {
"x": 0,
"y": 0
},
"size": {
"width": 3,
"height": 4
}
},
"lg": {
"location": {
"x": 0,
"y": 1
},
"size": {
"width": 6,
"height": 3
}
}
}
}
],
"settings": {
"common": {
"searchEngine": {
"type": "google",
"properties": {}
}
},
"customization": {
"layout": {
"enabledLeftSidebar": false,
"enabledRightSidebar": false,
"enabledDocker": false,
"enabledPing": false,
"enabledSearchbar": true
},
"pageTitle": "Homarr ⭐️",
"logoImageUrl": "/imgs/logo/logo.png",
"faviconUrl": "/imgs/favicon/favicon-squared.png",
"backgroundImageUrl": "",
"customCss": "",
"colors": {
"primary": "red",
"secondary": "yellow",
"shade": 7
},
"appOpacity": 100,
"gridstack": {
"columnCountSmall": 3,
"columnCountMedium": 6,
"columnCountLarge": 10
}
},
"access": {
"allowGuests": false
}
}
}

0
database/.gitkeep Normal file
View File

11
drizzle.config.ts Normal file
View File

@@ -0,0 +1,11 @@
import 'dotenv';
import { type Config } from 'drizzle-kit';
export default {
schema: './src/server/db/schema.ts',
driver: 'better-sqlite',
out: './drizzle',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
} satisfies Config;

View File

@@ -0,0 +1,69 @@
CREATE TABLE `account` (
`userId` text NOT NULL,
`type` text NOT NULL,
`provider` text NOT NULL,
`providerAccountId` text NOT NULL,
`refresh_token` text,
`access_token` text,
`expires_at` integer,
`token_type` text,
`scope` text,
`id_token` text,
`session_state` text,
PRIMARY KEY(`provider`, `providerAccountId`),
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `invite` (
`id` text PRIMARY KEY NOT NULL,
`token` text NOT NULL,
`expires` integer NOT NULL,
`created_by_id` text NOT NULL,
FOREIGN KEY (`created_by_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `session` (
`sessionToken` text PRIMARY KEY NOT NULL,
`userId` text NOT NULL,
`expires` integer NOT NULL,
FOREIGN KEY (`userId`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `user_setting` (
`id` text PRIMARY KEY NOT NULL,
`user_id` text NOT NULL,
`color_scheme` text DEFAULT 'environment' NOT NULL,
`language` text DEFAULT 'en' NOT NULL,
`default_board` text DEFAULT 'default' NOT NULL,
`first_day_of_week` text DEFAULT 'monday' NOT NULL,
`search_template` text DEFAULT 'https://google.com/search?q=%s' NOT NULL,
`open_search_in_new_tab` integer DEFAULT true NOT NULL,
`disable_ping_pulse` integer DEFAULT false NOT NULL,
`replace_ping_with_icons` integer DEFAULT false NOT NULL,
`use_debug_language` integer DEFAULT false NOT NULL,
`auto_focus_search` integer DEFAULT false NOT NULL,
FOREIGN KEY (`user_id`) REFERENCES `user`(`id`) ON UPDATE no action ON DELETE cascade
);
--> statement-breakpoint
CREATE TABLE `user` (
`id` text PRIMARY KEY NOT NULL,
`name` text,
`email` text,
`emailVerified` integer,
`image` text,
`password` text,
`salt` text,
`is_admin` integer DEFAULT false NOT NULL,
`is_owner` integer DEFAULT false NOT NULL
);
--> statement-breakpoint
CREATE TABLE `verificationToken` (
`identifier` text NOT NULL,
`token` text NOT NULL,
`expires` integer NOT NULL,
PRIMARY KEY(`identifier`, `token`)
);
--> statement-breakpoint
CREATE INDEX `userId_idx` ON `account` (`userId`);--> statement-breakpoint
CREATE UNIQUE INDEX `invite_token_unique` ON `invite` (`token`);--> statement-breakpoint
CREATE INDEX `user_id_idx` ON `session` (`userId`);

View File

@@ -0,0 +1,468 @@
{
"version": "5",
"dialect": "sqlite",
"id": "32c1bc91-e69f-4e1d-b53c-9c43f2e6c9d3",
"prevId": "00000000-0000-0000-0000-000000000000",
"tables": {
"account": {
"name": "account",
"columns": {
"userId": {
"name": "userId",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"type": {
"name": "type",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"provider": {
"name": "provider",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"providerAccountId": {
"name": "providerAccountId",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"refresh_token": {
"name": "refresh_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"access_token": {
"name": "access_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"expires_at": {
"name": "expires_at",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"token_type": {
"name": "token_type",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"scope": {
"name": "scope",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"id_token": {
"name": "id_token",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"session_state": {
"name": "session_state",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
}
},
"indexes": {
"userId_idx": {
"name": "userId_idx",
"columns": [
"userId"
],
"isUnique": false
}
},
"foreignKeys": {
"account_userId_user_id_fk": {
"name": "account_userId_user_id_fk",
"tableFrom": "account",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {
"account_provider_providerAccountId_pk": {
"columns": [
"provider",
"providerAccountId"
]
}
},
"uniqueConstraints": {}
},
"invite": {
"name": "invite",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"token": {
"name": "token",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires": {
"name": "expires",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"created_by_id": {
"name": "created_by_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"invite_token_unique": {
"name": "invite_token_unique",
"columns": [
"token"
],
"isUnique": true
}
},
"foreignKeys": {
"invite_created_by_id_user_id_fk": {
"name": "invite_created_by_id_user_id_fk",
"tableFrom": "invite",
"tableTo": "user",
"columnsFrom": [
"created_by_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"session": {
"name": "session",
"columns": {
"sessionToken": {
"name": "sessionToken",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"userId": {
"name": "userId",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires": {
"name": "expires",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {
"user_id_idx": {
"name": "user_id_idx",
"columns": [
"userId"
],
"isUnique": false
}
},
"foreignKeys": {
"session_userId_user_id_fk": {
"name": "session_userId_user_id_fk",
"tableFrom": "session",
"tableTo": "user",
"columnsFrom": [
"userId"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"user_setting": {
"name": "user_setting",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"user_id": {
"name": "user_id",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"color_scheme": {
"name": "color_scheme",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'environment'"
},
"language": {
"name": "language",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'en'"
},
"default_board": {
"name": "default_board",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'default'"
},
"first_day_of_week": {
"name": "first_day_of_week",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'monday'"
},
"search_template": {
"name": "search_template",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": "'https://google.com/search?q=%s'"
},
"open_search_in_new_tab": {
"name": "open_search_in_new_tab",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": true
},
"disable_ping_pulse": {
"name": "disable_ping_pulse",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"replace_ping_with_icons": {
"name": "replace_ping_with_icons",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"use_debug_language": {
"name": "use_debug_language",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"auto_focus_search": {
"name": "auto_focus_search",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
}
},
"indexes": {},
"foreignKeys": {
"user_setting_user_id_user_id_fk": {
"name": "user_setting_user_id_user_id_fk",
"tableFrom": "user_setting",
"tableTo": "user",
"columnsFrom": [
"user_id"
],
"columnsTo": [
"id"
],
"onDelete": "cascade",
"onUpdate": "no action"
}
},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"user": {
"name": "user",
"columns": {
"id": {
"name": "id",
"type": "text",
"primaryKey": true,
"notNull": true,
"autoincrement": false
},
"name": {
"name": "name",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"email": {
"name": "email",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"emailVerified": {
"name": "emailVerified",
"type": "integer",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"image": {
"name": "image",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"password": {
"name": "password",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"salt": {
"name": "salt",
"type": "text",
"primaryKey": false,
"notNull": false,
"autoincrement": false
},
"is_admin": {
"name": "is_admin",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
},
"is_owner": {
"name": "is_owner",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false,
"default": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {},
"uniqueConstraints": {}
},
"verificationToken": {
"name": "verificationToken",
"columns": {
"identifier": {
"name": "identifier",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"token": {
"name": "token",
"type": "text",
"primaryKey": false,
"notNull": true,
"autoincrement": false
},
"expires": {
"name": "expires",
"type": "integer",
"primaryKey": false,
"notNull": true,
"autoincrement": false
}
},
"indexes": {},
"foreignKeys": {},
"compositePrimaryKeys": {
"verificationToken_identifier_token_pk": {
"columns": [
"identifier",
"token"
]
}
},
"uniqueConstraints": {}
}
},
"enums": {},
"_meta": {
"schemas": {},
"tables": {},
"columns": {}
}
}

View File

@@ -0,0 +1,13 @@
{
"version": "5",
"dialect": "sqlite",
"entries": [
{
"idx": 0,
"version": "5",
"when": 1695874816934,
"tag": "0000_supreme_the_captain",
"breakpoints": true
}
]
}

View File

@@ -0,0 +1,20 @@
// This file is used to migrate the database to the current version
// It is run when the docker container starts
import Database from 'better-sqlite3';
import dotenv from 'dotenv';
import { drizzle } from 'drizzle-orm/better-sqlite3';
import { migrate } from 'drizzle-orm/better-sqlite3/migrator';
const migrationsFolder = process.argv[2] ?? '../drizzle';
dotenv.config({ path: __dirname + '/../.env' });
const sqlite = new Database(process.env.DATABASE_URL!.replace('file:', ''));
const db = drizzle(sqlite);
const migrateDatabase = async () => {
await migrate(db, { migrationsFolder });
};
migrateDatabase();

View File

@@ -0,0 +1,15 @@
{
"license": "MIT",
"description": "This package.json is used for the migration script the dependencies are only installed within the Dockerfile.",
"scripts": {
"db:migrate": "ts-node ./migrate.ts"
},
"dependencies": {
"@types/better-sqlite3": "^7.6.7",
"better-sqlite3": "8.6.0",
"drizzle-orm": "^0.28.6",
"dotenv": "^16.3.1",
"ts-node": "^10.9.1",
"typescript": "^5.2.2"
}
}

View File

@@ -5,34 +5,37 @@ module.exports = {
i18n: {
defaultLocale: 'en',
locales: [
'en',
'cn',
'cr',
'cs',
'da',
'he',
'de',
'el',
'en',
'es',
'fr',
'he',
'hr',
'hu',
'it',
'ja',
'ko',
'lol',
'lv',
'nl',
'no',
'pl',
'pt',
'ru',
'sk',
'sl',
'sv',
'vi',
'uk',
'zh',
'el',
'sk',
'no',
'tr',
'lv',
'hr'
'tw',
'uk',
'vi',
],
localeDetection: true,
localeDetection: false,
},
returnEmptyString: false,
appendNamespaceToCIMode: true,

View File

@@ -1,3 +1,4 @@
require('./src/env');
const { i18n } = require('./next-i18next.config');
const withBundleAnalyzer = require('@next/bundle-analyzer')({
@@ -12,4 +13,14 @@ module.exports = withBundleAnalyzer({
output: 'standalone',
i18n,
transpilePackages: ['@jellyfin/sdk'],
redirects: async () => [
{
source: '/',
destination: '/board',
permanent: false,
},
],
env: {
NEXTAUTH_URL_INTERNAL: process.env.NEXTAUTH_URL_INTERNAL || process.env.HOSTNAME || 'http://localhost:3000'
},
});

View File

@@ -1,6 +1,6 @@
{
"name": "homarr",
"version": "0.13.2",
"version": "0.14.2",
"description": "Homarr - A homepage for your server.",
"license": "MIT",
"repository": {
@@ -9,23 +9,25 @@
},
"scripts": {
"dev": "next dev",
"build": "next build",
"build": "NEXTAUTH_SECRET=WILL_BE_OVERWRITTEN next build",
"analyze": "ANALYZE=true next build",
"turbo": "turbo run build",
"turbo": "DATABASE_URL=file:WILL_BE_OVERWRITTEN.sqlite NEXTAUTH_URL=http://WILL_BE_OVERWRITTEN turbo build",
"start": "next start",
"typecheck": "tsc --noEmit",
"export": "next build && next export",
"lint": "next lint",
"prettier:check": "prettier --check \"**/*.{ts,tsx}\"",
"prettier:write": "prettier --write \"**/*.{ts,tsx}\"",
"test": "vitest",
"test:ui": "vitest --ui",
"test:run": "vitest run",
"test:coverage": "vitest run --coverage",
"docker:build": "turbo build && docker build . -t homarr:dev",
"docker:start": "docker run --env-file ./.env -p 7575:7575 homarr:dev "
"test": "SKIP_ENV_VALIDATION=1 vitest",
"test:ui": "SKIP_ENV_VALIDATION=1 vitest --ui",
"test:run": "SKIP_ENV_VALIDATION=1 vitest run",
"test:coverage": "SKIP_ENV_VALIDATION=1 vitest run --coverage",
"docker:build": "turbo build && docker build . -t homarr:local-dev",
"docker:start": "docker run -p 7575:7575 --name homarr-development homarr:local-dev",
"db:migrate": "dotenv ts-node drizzle/migrate/migrate.ts ./drizzle"
},
"dependencies": {
"@auth/drizzle-adapter": "^0.3.2",
"@ctrl/deluge": "^4.1.0",
"@ctrl/qbittorrent": "^6.0.0",
"@ctrl/shared-torrent": "^4.1.1",
@@ -35,47 +37,63 @@
"@jellyfin/sdk": "^0.8.0",
"@mantine/core": "^6.0.0",
"@mantine/dates": "^6.0.0",
"@mantine/dropzone": "^6.0.0",
"@mantine/form": "^6.0.0",
"@mantine/hooks": "^6.0.0",
"@mantine/modals": "^6.0.0",
"@mantine/next": "^6.0.0",
"@mantine/notifications": "^6.0.0",
"@mantine/prism": "^6.0.19",
"@mantine/tiptap": "^6.0.17",
"@nivo/core": "^0.83.0",
"@nivo/line": "^0.83.0",
"@react-native-async-storage/async-storage": "^1.18.1",
"@t3-oss/env-nextjs": "^0.7.1",
"@tabler/icons-react": "^2.20.0",
"@tanstack/query-async-storage-persister": "^4.27.1",
"@tanstack/query-sync-storage-persister": "^4.27.1",
"@tanstack/react-query": "^4.2.1",
"@tanstack/react-query-devtools": "^4.24.4",
"@tanstack/react-query-persist-client": "^4.28.0",
"@tiptap/extension-link": "^2.0.4",
"@tiptap/pm": "^2.0.4",
"@tiptap/react": "^2.0.4",
"@tiptap/starter-kit": "^2.0.4",
"@trpc/client": "^10.29.1",
"@trpc/next": "^10.29.1",
"@trpc/react-query": "^10.29.1",
"@trpc/server": "^10.29.1",
"@tiptap/extension-color": "^2.1.12",
"@tiptap/extension-highlight": "^2.1.12",
"@tiptap/extension-image": "^2.1.12",
"@tiptap/extension-link": "^2.1.12",
"@tiptap/extension-table": "^2.1.12",
"@tiptap/extension-table-cell": "^2.1.12",
"@tiptap/extension-table-header": "^2.1.12",
"@tiptap/extension-table-row": "^2.1.12",
"@tiptap/extension-task-item": "^2.1.12",
"@tiptap/extension-task-list": "^2.1.12",
"@tiptap/extension-text-align": "^2.1.12",
"@tiptap/extension-text-style": "^2.1.12",
"@tiptap/extension-underline": "^2.1.12",
"@tiptap/pm": "^2.1.12",
"@tiptap/react": "^2.1.12",
"@tiptap/starter-kit": "^2.1.12",
"@trpc/client": "^10.37.1",
"@trpc/next": "^10.37.1",
"@trpc/react-query": "^10.37.1",
"@trpc/server": "^10.37.1",
"@types/bcryptjs": "^2.4.2",
"@vitejs/plugin-react": "^4.0.0",
"axios": "^1.0.0",
"bcryptjs": "^2.4.3",
"better-sqlite3": "^8.6.0",
"browser-geo-tz": "^0.0.4",
"consola": "^3.0.0",
"cookies": "^0.8.0",
"cookies-next": "^2.1.1",
"dayjs": "^1.11.7",
"dockerode": "^3.3.2",
"dotenv": "^16.3.1",
"drizzle-kit": "^0.19.13",
"drizzle-orm": "^0.28.6",
"fily-publish-gridstack": "^0.0.13",
"flag-icons": "^6.9.2",
"framer-motion": "^10.0.0",
"geo-tz": "^7.0.7",
"generate-password": "^1.7.0",
"html-entities": "^2.3.3",
"i18next": "^22.5.1",
"immer": "^10.0.2",
"js-file-download": "^0.4.12",
"moment": "^2.29.4",
"moment-timezone": "^0.5.43",
"next": "13.4.10",
"next-i18next": "^13.0.0",
"next": "13.4.12",
"next-auth": "^4.23.0",
"next-i18next": "^14.0.0",
"nzbget-api": "^0.0.3",
"prismjs": "^1.29.0",
"react": "^18.2.0",
@@ -93,19 +111,23 @@
"devDependencies": {
"@next/bundle-analyzer": "^13.0.0",
"@next/eslint-plugin-next": "^13.4.5",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^14.0.0",
"@trivago/prettier-plugin-sort-imports": "^4.2.0",
"@types/better-sqlite3": "^7.6.5",
"@types/cookies": "^0.7.7",
"@types/dockerode": "^3.3.9",
"@types/node": "18.16.19",
"@types/node": "18.17.8",
"@types/prismjs": "^1.26.0",
"@types/react": "^18.2.11",
"@types/umami": "^0.1.4",
"@types/uuid": "^9.0.0",
"@types/video.js": "^7.3.51",
"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
"@vitest/coverage-c8": "^0.33.0",
"@vitest/ui": "^0.33.0",
"@vitest/coverage-v8": "^0.34.5",
"@vitest/ui": "^0.34.4",
"dotenv-cli": "^7.3.0",
"eslint": "^8.0.1",
"eslint-config-next": "^13.4.5",
"eslint-plugin-promise": "^6.0.0",
@@ -119,8 +141,8 @@
"prettier": "^3.0.0",
"sass": "^1.56.1",
"ts-node": "latest",
"turbo": "latest",
"typescript": "^5.1.0",
"turbo": "^1.10.12",
"typescript": "5.1.6",
"video.js": "^8.0.3",
"vite-tsconfig-paths": "^4.2.0",
"vitest": "^0.33.0",
@@ -132,25 +154,6 @@
"minimumChangeThreshold": 0,
"showDetails": true
},
"renovate": {
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
],
"commitMessagePrefix": "⬆️",
"lockFileMaintenance": {
"automerge": true
},
"minor": {
"automerge": true
},
"patch": {
"automerge": true
},
"pin": {
"automerge": true
}
},
"prettier": {
"printWidth": 100,
"tabWidth": 2,
@@ -230,4 +233,4 @@
]
}
}
}
}

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg"><g fill="none"><path fill="#31BEEC" d="M90 38.197v19.137L48.942 80.999V61.864z"/><path d="M41.086 61.863V81L0 57.333V38.197l18.566 10.687c.02.016.043.03.067.04l22.453 12.94Z" fill="#0095D5"/><path fill="#AEADAE" d="m61.621 45.506-16.607 9.576-16.622-9.576 16.622-9.575z"/><path fill="#0095D5" d="M86.086 31.416 69.464 40.99 48.942 29.15V10z"/><path fill="#31BEEC" d="M41.086 10v19.15l-20.55 11.827-16.621-9.561z"/></g></svg>

After

Width:  |  Height:  |  Size: 484 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><defs><linearGradient id="a" x1="100%" x2="0" y1="0" y2="100%" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ff8d30"/><stop offset="1" stop-color="#e32929"/></linearGradient></defs><circle cx="50%" cy="50%" r="50%" fill="url(#a)"/><path fill="#fff" d="M246.6 200.8h18.7v110.6h-18.7zm-182.3 0H83v110.7H64.3zm91.1 123.9h18.7V367h-18.7zm-45.7-47.5h18.7v68.5h-18.7zm91.2 0h18.6v68.4h-18.6zm228.2-76.5h18.7v110.7h-18.7zM338 145.5h18.7v42.3H338zm45.7 21.2h18.7v68.2h-18.7zm-91.5 0h18.7v68.1h-18.7z"/></svg>

After

Width:  |  Height:  |  Size: 577 B

View File

@@ -0,0 +1,35 @@
{
"metaTitle": "创建账号",
"title": "创建账号",
"text": "请在下面定义您的凭据",
"form": {
"fields": {
"username": {
"label": "用户名"
},
"password": {
"label": "密码"
},
"passwordConfirmation": {
"label": "确认密码"
}
},
"buttons": {
"submit": "创建账号"
}
},
"notifications": {
"loading": {
"title": "正在创建账号...",
"text": "请稍等"
},
"success": {
"title": "账号已创建",
"text": "您的账号创建成功"
},
"error": {
"title": "错误",
"text": "出错了,出现以下错误: {{error}}"
}
}
}

View File

@@ -0,0 +1,20 @@
{
"metaTitle": "登录",
"title": "欢迎回来!",
"text": "请确认您的凭证",
"form": {
"fields": {
"username": {
"label": "用户名"
},
"password": {
"label": "密码"
}
},
"buttons": {
"submit": "登录"
},
"afterLoginRedirection": "登录后,您将被重定向到 {{url}}"
},
"alert": "您的凭据不正确或此账户不存在。请重试。"
}

View File

@@ -0,0 +1,5 @@
{
"header": {
"customize": "自定义面板"
}
}

View File

@@ -0,0 +1,29 @@
{
"metaTitle": "自定义 {{name}} 面板",
"pageTitle": "自定义 {{name}} 面板",
"backToBoard": "返回面板",
"settings": {
"appearance": {
"primaryColor": "主体色",
"secondaryColor": "辅助色"
}
},
"save": {
"button": "保存更改",
"note": "小心,您有未保存的更改!"
},
"notifications": {
"pending": {
"title": "自定义保存中",
"message": "请稍候,我们正在保存您的自定义"
},
"success": {
"title": "已保存自定义",
"message": "您的自定义已成功保存"
},
"error": {
"title": "错误",
"message": "无法保存更改"
}
}
}

View File

@@ -0,0 +1,57 @@
{
"save": "保存",
"apply": "应用",
"insert": "插入",
"about": "关于",
"cancel": "取消",
"close": "关闭",
"back": "返回",
"delete": "删除",
"ok": "确定",
"edit": "编辑",
"next": "下一步",
"previous": "上一步",
"confirm": "确认",
"enabled": "已启用",
"disabled": "已禁用",
"enableAll": "全部启用",
"disableAll": "全部禁用",
"version": "版本",
"changePosition": "换位",
"remove": "删除",
"removeConfirm": "你确定要删除 {{item}} 吗?",
"createItem": "创建{{item}}",
"sections": {
"settings": "设置",
"dangerZone": "危险"
},
"secrets": {
"apiKey": "API密钥",
"username": "用户名",
"password": "密码"
},
"tip": "提示: ",
"time": {
"seconds": "秒",
"minutes": "分钟",
"hours": "小时"
},
"loading": "正在加载...",
"breakPoints": {
"small": "小",
"medium": "中",
"large": "大"
},
"seeMore": "查看更多...",
"position": {
"left": "左边",
"center": "居中",
"right": "右边"
},
"attributes": {
"width": "宽度",
"height": "高度"
},
"public": "公开",
"restricted": "限制"
}

View File

@@ -0,0 +1,25 @@
{
"modals": {
"blockedPopups": {
"title": "阻止弹出窗口",
"text": "您的浏览器阻止了 Homarr 访问其 API。最常见的原因是广告拦截器或权限被拒绝。Homarr 无法自动请求权限。",
"list": {
"browserPermission": "点击链接旁的图标并检查权限,允许弹出窗口",
"adBlockers": "禁用浏览器中的广告拦截器和安全工具",
"otherBrowser": "尝试使用其它的浏览器"
}
}
},
"actions": {
"category": {
"openAllInNewTab": "在新标签页中打开全部内容"
}
},
"menu": {
"moveUp": "上移",
"moveDown": "下移",
"addCategory": "{{location}}添加分类",
"addAbove": "在上方",
"addBelow": "在下方"
}
}

View File

@@ -0,0 +1,25 @@
{
"modal": {
"title": "添加新磁贴",
"text": "磁贴是 Homarr 的主要组成元素。它们被用来显示你的应用程序和其他信息。您可以根据需要增加任意数量的磁贴。"
},
"widgetDescription": "组件与您的应用交互,为您提供更多的应用程序控制。它们在使用前通常需要额外的配置。",
"goBack": "上一步",
"actionIcon": {
"tooltip": "添加磁贴"
},
"apps": "应用",
"app": {
"defaultName": "您的应用"
},
"widgets": "组件",
"categories": "分类",
"category": {
"newName": "新分类名称",
"defaultName": "新建分类",
"created": {
"title": "分类已创建",
"message": "已创建分类\"{{name}}\""
}
}
}

View File

@@ -0,0 +1,5 @@
{
"title": "拒绝访问",
"text": "您没有足够的权限访问此页面。如果你相信, 这不是有意的, 请联系您的系统管理员。",
"switchAccount": "切换到其他账户"
}

View File

@@ -0,0 +1,5 @@
{
"title": "无法找到页面",
"text": "找不到该页面。该页面的 URL 可能已过期、URL 无效或您现在没有访问该资源所需的权限。",
"button": "返回首页"
}

View File

@@ -0,0 +1,27 @@
{
"search": {
"label": "搜索",
"engines": {
"web": "在网上搜索 {{query}}",
"youtube": "在 YouTube 上搜索 {{query}}",
"torrent": "搜索 {{query}} Torrents",
"movie": "在 {{app}} 上搜索 {{query}}"
}
},
"actions": {
"avatar": {
"switchTheme": "切换主题",
"preferences": "用户首选项",
"defaultBoard": "默认仪表盘",
"manage": "管理",
"logout": "注销 {{username}}",
"login": "登录"
}
},
"modals": {
"movie": {
"title": "",
"topResults": "最高 {{count}} 结果为 <b>{{search}}</b>。"
}
}
}

View File

@@ -0,0 +1,12 @@
{
"description": "在编辑模式下,您可以调整磁贴和配置应用。在退出编辑模式之前不会保存更改。",
"button": {
"disabled": "进入编辑模式",
"enabled": "退出并保存"
},
"popover": {
"title": "启用 <1>{{size}}</1> 尺寸编辑模式",
"text": "现在您可以调整和配置您的应用了,在退出编辑模式之前<strong>不会保存</strong>更改 。"
},
"unloadEvent": "退出编辑模式以保存更改"
}

View File

@@ -0,0 +1,35 @@
{
"navigation": {
"home": {
"title": "首页"
},
"boards": {
"title": "面板"
},
"users": {
"title": "用户",
"items": {
"manage": "管理",
"invites": "邀请"
}
},
"help": {
"title": "帮助",
"items": {
"documentation": "文档",
"report": "报告问题 / bug",
"discord": "Discord 社区",
"contribute": "贡献"
}
},
"tools": {
"title": "工具",
"items": {
"docker": "Docker"
}
},
"about": {
"title": "关于"
}
}
}

View File

@@ -0,0 +1,3 @@
{
"title": "{{position}} 侧边栏"
}

View File

@@ -0,0 +1,30 @@
{
"description": "Homarr是一个 <strong>顺滑</strong> <strong>现代化</strong> 的面板,它能将您所有的应用和服务汇于指尖。有了 Homarr您可以在一个页面中访问和控制一切。Homarr 与您添加的应用无缝交互,为您提供有价值的信息并由您完全控制。安装 Homarr 轻松简单,并且 Homarr 支持多种部署方式。",
"addToDashboard": "添加至面板",
"tip": "Mod 指的是您的修饰键,它是 Ctrl 或 Command/Super/Windows 键",
"key": "快捷键",
"action": "操作",
"keybinds": "热键绑定",
"translators": "翻译者 ({{count}})",
"translatorsDescription": "感谢这些人Homarr 现已支持 {{languages}} 种语言!想要帮助将 Homarr 翻译成您的语言吗?请阅读<a>此处</a>了解如何执行此操作 。",
"contributors": "贡献者 ({{count}})",
"contributorsDescription": "这些人构建了让 homarr 工作的代码!想帮助建造 Homarr 吗?请阅读<a>此处</a>了解如何操作",
"actions": {
"toggleTheme": "切换 白天/夜晚 模式",
"focusSearchBar": "前往搜索栏",
"openDocker": "打开 docker 组件",
"toggleEdit": "切换编辑模式"
},
"metrics": {
"configurationSchemaVersion": "配置模式版本",
"version": "版本",
"nodeEnvironment": "节点环境",
"i18n": "I18n 翻译空间已加载",
"locales": "I18n 本地语言已配置",
"experimental_disableEditMode": "<b>实验性</b>: 关闭编辑模式"
},
"version": {
"new": "新: {{newVersion}}",
"dropdown": "版本 {{newVersion}} 可用!当前版本为 {{currentVersion}}"
}
}

View File

@@ -0,0 +1,128 @@
{
"tabs": {
"general": "通用",
"behaviour": "行为",
"network": "网络",
"appearance": "外观",
"integration": "集成"
},
"general": {
"appname": {
"label": "应用名称",
"description": "用于在面板上显示。"
},
"internalAddress": {
"label": "内部地址",
"description": "应用的内部IP地址。",
"troubleshoot": {
"label": "遇到问题了?",
"header": "下面是一些常见的错误和解决方法:",
"lines": {
"nothingAfterPort": "在大多数情况下(不是所有情况),您不应该在端口之后输入任何路径。(即使是 pihole 的 '/admin' 或 plex 的 '/web')",
"protocolCheck": "一定要确保URL前面是http或https并确保你使用的是正确的URL。",
"preferIP": "建议使用要与之通信的机器或容器的直接 Ip 地址。",
"enablePings": "通过开启ping检查IP是否正确。 自定义面板 -> 布局 -> 启用 ping。应用磁贴上会出现一个红色或绿色的小泡泡鼠标悬停在此就会显示相应代码在大多数的情况下绿色泡泡的代码为200。",
"wget": "为了确保homarr可以与其他应用程序通信请使用wget/curl/ping应用程序的IP:port。",
"iframe": "在使用 iframe 时,应始终使用与 Homarr 相同的协议 (http/s)。",
"clearCache": "有些信息是在缓存中注册的因此除非您在Homarr的一般选项中清除缓存否则集成可能无法工作。"
},
"footer": "更多故障排除,请联系我们的{{discord}}。"
}
},
"externalAddress": {
"label": "外部地址",
"description": "点击应用时打开的网址。"
}
},
"behaviour": {
"isOpeningNewTab": {
"label": "在新标签页中打开",
"description": "在新标签页中打开应用,而不是当前标签页。"
},
"tooltipDescription": {
"label": "应用描述",
"description": "将鼠标悬停在应用上时,将显示您输入的文本。\n它可以为用户提供更多关于应用的详细信息留空以隐藏。"
},
"customProtocolWarning": "使用非标准协议。这可能需要预先安装应用程序,并可能带来安全风险。确保您的地址安全可靠。"
},
"network": {
"statusChecker": {
"label": "状态检测",
"description": "使用简单的HTTP(S) 请求检查您的应用是否在线。"
},
"statusCodes": {
"label": "HTTP状态码",
"description": "被视为在线的 HTTP 状态码。"
}
},
"appearance": {
"icon": {
"label": "应用图标",
"description": "输入以搜索图标,也可以粘贴自定义图标的网址。",
"autocomplete": {
"title": "未找到结果",
"text": "尝试使用一个更具体的搜索词。如果您找不到您想要的图标,可以在上方粘贴图片的网址,以获得一个自定义图标。"
},
"noItems": {
"title": "正在加载外部图标",
"text": "这可能需要几秒钟"
}
},
"appNameFontSize": {
"label": "应用名称大小",
"description": "设置应用名称在磁贴上显示时的字体大小。"
},
"appNameStatus": {
"label": "应用名称状态",
"description": "如果您想要显示标题,请选择显示的位置。",
"dropdown": {
"normal": "仅在磁贴上显示标题",
"hover": "仅在悬停时显示标题",
"hidden": "完全不显示"
}
},
"positionAppName": {
"label": "应用名称位置",
"description": "应用名称相对于图标的位置。",
"dropdown": {
"top": "上边",
"right": "右边",
"bottom": "下边",
"left": "左边"
}
},
"lineClampAppName": {
"label": "应用名称行数",
"description": "定义标题最多能容纳多少行。设置为 0 表示无限制。"
}
},
"integration": {
"type": {
"label": "集成配置",
"description": "集成配置将用于连接到您的应用。",
"placeholder": "选择一个集成",
"defined": "已定义",
"undefined": "未定义",
"public": "公开",
"private": "私有",
"explanationPrivate": "私有密钥仅会被发送到服务器一次。一旦您的浏览器刷新了页面,它将永远不会再次发送。",
"explanationPublic": "公开的密钥将始终发送给客户端并且可以通过API访问。它不应该包含任何机密值如用户名、密码、令牌、证书等!"
},
"secrets": {
"description": "输入值并点击保存以更新密钥。使用清除按钮以删除密钥。",
"warning": "您的凭据作为集成的访问权限,您应该<strong>永远不</strong>与任何人共享它们。Homarr 团队永远不会索要证书。确保<strong>安全地存储和管理您的秘钥</strong>。",
"clear": "清除密钥",
"save": "保存密钥",
"update": "更新密钥"
}
},
"validation": {
"popover": "您的表单包含无效数据,因此它不能被保存。请解决所有问题,并再次点击此按钮以保存您的更改。",
"name": "名称为必填项",
"noUrl": "地址为必填项",
"invalidUrl": "不是有效的地址",
"noIconUrl": "此字段为必填",
"noExternalUri": "外部地址为必填项",
"invalidExternalUri": "无效的外部地址"
}
}

View File

@@ -0,0 +1,8 @@
{
"xPosition": "X轴位置",
"width": "宽度",
"height": "高度",
"yPosition": "Y轴位置",
"zeroOrHigher": "0 或更高",
"betweenXandY": "在 {{min}} 和 {{max}} 之间"
}

View File

@@ -0,0 +1,44 @@
{
"metaTitle": "面板",
"pageTitle": "面板",
"cards": {
"statistics": {
"apps": "应用",
"widgets": "组件",
"categories": "分类"
},
"buttons": {
"view": "查看面板"
},
"menu": {
"setAsDefault": "设置为默认",
"delete": {
"label": "永久删除",
"disabled": "删除功能被禁用,因为较旧的 Homarr 组件不允许删除默认配置。将来可能会删除。"
}
},
"badges": {
"fileSystem": "文件系统",
"default": "默认"
}
},
"buttons": {
"create": "创建新面板"
},
"modals": {
"delete": {
"title": "删除面板",
"text": "你确定要删除这个面板吗? 此操作无法撤消,您的数据将永久丢失。"
},
"create": {
"title": "创建面板",
"text": "面板创建成功后,不能修改名称。",
"form": {
"name": {
"label": "名称"
},
"submit": "创建"
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"metaTitle": "管理",
"hero": {
"title": "欢迎回来,{{username}}",
"fallbackUsername": "匿名",
"subtitle": "欢迎来到您的应用程序中心。组织、优化和征服!"
},
"quickActions": {
"title": "快捷操作",
"boards": {
"title": "您的面板",
"subtitle": "创建和管理您的面板"
},
"inviteUsers": {
"title": "邀请新用户",
"subtitle": "创建并发送注册邀请"
},
"manageUsers": {
"title": "管理用户",
"subtitle": "删除和管理您的用户"
}
}
}

View File

@@ -0,0 +1,36 @@
{
"metaTitle": "用户",
"pageTitle": "管理用户",
"text": "通过账号您可以配置谁可以编辑您的面板。Homarr的未来版本将对权限和面板进行更精细地控制。",
"buttons": {
"create": "创建"
},
"table": {
"header": {
"user": "用户"
}
},
"tooltips": {
"deleteUser": "删除用户",
"demoteAdmin": "撤销管理员",
"promoteToAdmin": "提升为管理员"
},
"modals": {
"delete": {
"title": "删除用户 {{name}}",
"text": "您确定要删除用户 {{name}} 吗?这将删除与该账户相关的数据,但不会删除该用户创建的任何仪表盘。"
},
"change-role": {
"promote": {
"title": "将用户 {{name}} 提升为管理员",
"text": "您确定要将用户{{name}} 提升为管理员吗? 这将允许用户访问Homarr实例上的所有资源。"
},
"demote": {
"title": "将用户 {{name}} 降级为用户",
"text": "您确定要将用户{{name}} 降级为用户吗? 这将删除用户对Homarr实例上所有资源的访问权限。"
},
"confirm": "确认"
}
},
"searchDoesntMatch": "您的搜索与任何条目都不匹配。请调整您的过滤器。"
}

View File

@@ -0,0 +1,52 @@
{
"metaTitle": "创建用户",
"steps": {
"account": {
"title": "第一步",
"text": "创建账号",
"username": {
"label": "用户名"
},
"email": {
"label": "邮箱"
}
},
"security": {
"title": "第二步",
"text": "密码",
"password": {
"label": "密码"
}
},
"finish": {
"title": "确认",
"text": "保存到数据库",
"card": {
"title": "检查您的输入",
"text": "将数据提交到数据库后,用户就可以登录了。您确定要将该用户存储在数据库中并激活登录吗?"
},
"table": {
"header": {
"property": "属性",
"value": "参数值",
"username": "用户名",
"email": "邮箱",
"password": "密码"
},
"notSet": "未设置",
"valid": "有效"
},
"failed": "用户创建失败: {{error}}"
},
"completed": {
"alert": {
"title": "用户已创建",
"text": "用户已在数据库中创建。他现在可以登录了。"
}
}
},
"buttons": {
"generateRandomPassword": "随机生成",
"createAnother": "创建另一个"
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "用户邀请",
"pageTitle": "管理用户邀请",
"description": "使用邀请功能,可以邀请用户访问 Homarr 实例。邀请只在一定的时间范围内有效并且只能使用一次。过期时间必须在创建后5分钟到12个月之间。",
"button": {
"createInvite": "创建邀请",
"deleteInvite": "删除邀请"
},
"table": {
"header": {
"id": "ID",
"creator": "创建者",
"expires": "有效期",
"action": "操作"
},
"data": {
"expiresAt": "过期 {{at}}",
"expiresIn": "{{in}}"
}
},
"modals": {
"create": {
"title": "创建邀请",
"description": "过期后,邀请会失效,被邀请的收件人将无法创建账号。",
"form": {
"expires": "过期时间",
"submit": "创建"
}
},
"copy": {
"title": "复制邀请信息",
"description": "您的邀请已生成。在此模式关闭后,<b>您将无法再复制此链接</b>。如果你不想再邀请这个人,你可以随时删除这个邀请。",
"invitationLink": "邀请链接",
"details": {
"id": "ID",
"token": "Token"
},
"button": {
"close": "复制并关闭"
}
},
"delete": {
"title": "删除邀请",
"description": "你确定要删除这个邀请吗? 使用此链接的用户将不能再使用该链接创建账号。"
}
},
"noInvites": "还没有邀请。"
}

View File

@@ -0,0 +1,43 @@
{
"descriptor": {
"name": "书签",
"description": "显示字符或链接的静态列表",
"settings": {
"title": "书签设置",
"name": {
"label": "组件标题",
"info": "留空以隐藏标题。"
},
"items": {
"label": "项目"
},
"layout": {
"label": "显示布局",
"data": {
"autoGrid": "自动网格",
"horizontal": "横向",
"vertical": "垂直"
}
}
}
},
"card": {
"noneFound": {
"title": "书签列表为空",
"text": "在编辑模式下为该列表添加新项目"
}
},
"item": {
"validation": {
"length": "长度必须在 {{shortest}} 和 {{longest}} 之间",
"invalidLink": "无效链接",
"errorMsg": "由于存在验证错误,未保存。请调整您的输入"
},
"name": "名称",
"url": "网址",
"newTab": "在新标签页中打开",
"hideHostname": "隐藏域名",
"hideIcon": "隐藏图标",
"delete": "删除"
}
}

View File

@@ -0,0 +1,33 @@
{
"descriptor": {
"name": "日历",
"description": "在日历中显示来自支持集成中的即将发布的版本。",
"settings": {
"title": "日历组件设置",
"radarrReleaseType": {
"label": "Radarr发布类型",
"data": {
"inCinemas": "影院放映",
"physicalRelease": "实体",
"digitalRelease": "数字"
}
},
"hideWeekDays": {
"label": "隐藏星期"
},
"showUnmonitored": {
"label": "显示未监视项目"
},
"fontSize": {
"label": "字体大小",
"data": {
"xs": "超小号",
"sm": "小号",
"md": "中号",
"lg": "大号",
"xl": "超大号"
}
}
}
}
}

View File

@@ -0,0 +1,6 @@
{
"buttons": {
"play": "开始",
"request": "请求"
}
}

View File

@@ -0,0 +1,10 @@
{
"settings": {
"label": "设置"
},
"errors": {
"unmappedOptions": {
"text": ""
}
}
}

View File

@@ -0,0 +1,118 @@
{
"descriptor": {
"name": "Dash.",
"description": "在 Homarr 中显示一个外部 Dash. 的图表。",
"settings": {
"title": "Dash. 组件设置",
"dashName": {
"label": "Dash. 名称"
},
"url": {
"label": "Dash. 网址"
},
"usePercentages": {
"label": "显示百分比"
},
"columns": {
"label": "显示的列"
},
"graphHeight": {
"label": "图表高度"
},
"graphsOrder": {
"label": "图表(顺序)",
"storage": {
"label": "存储",
"enabled": {
"label": "在组件中显示"
},
"span": {
"label": "列宽度"
},
"compactView": {
"label": "显示为文本(紧凑型)"
},
"multiView": {
"label": "显示为多驱动视图"
}
},
"network": {
"label": "网络",
"enabled": {
"label": "在组件中显示"
},
"span": {
"label": "列宽度"
},
"compactView": {
"label": "显示为文本(紧凑型)"
}
},
"cpu": {
"label": "CPU",
"enabled": {
"label": "在组件中显示"
},
"span": {
"label": "列宽度"
},
"multiView": {
"label": "显示为多核心视图"
}
},
"ram": {
"label": "内存",
"enabled": {
"label": "在组件中显示"
},
"span": {
"label": "列宽度"
}
},
"gpu": {
"label": "GPU",
"enabled": {
"label": "在组件中显示"
},
"span": {
"label": "列宽度"
}
}
}
}
},
"card": {
"title": "Dash.",
"errors": {
"noService": "未找到 Dash. 服务。请在集成中将其添加到您的 Homarr 面板或在模块选项中设置 Dash. 网址",
"noInformation": "无法从 Dash. 获取信息。- 你运行的是最新版本吗?",
"protocolDowngrade": {
"title": "检测到协议降级",
"text": "与 Dash. 实例的连接使用的是HTTP。这是一个安全风险因为HTTP是未加密的攻击者可能会滥用此连接。确保 Dash. 使用的是HTTPS或者将Homarr降级为HTTP(不推荐)。"
}
},
"graphs": {
"storage": {
"title": "存储",
"label": "存储:"
},
"network": {
"title": "网络",
"label": "网络:",
"metrics": {
"download": "下载",
"upload": "上传"
}
},
"cpu": {
"title": "CPU"
},
"ram": {
"title": "内存"
},
"gpu": {
"title": "GPU"
}
}
}
}

View File

@@ -0,0 +1,33 @@
{
"descriptor": {
"name": "日期和时间",
"description": "显示当前的日期和时间。",
"settings": {
"title": "日期和时间组件设置",
"display24HourFormat": {
"label": "全时显示24 小时)"
},
"dateFormat": {
"label": "日期格式",
"data": {
"hide": "隐藏日期"
}
},
"enableTimezone": {
"label": "显示自定义时区"
},
"timezoneLocation": {
"label": "时区位置"
},
"titleState": {
"label": "城市名称",
"info": "如果激活时区选项,则可显示城市名称和时区代码。<br/>您也可以只显示城市,甚至不显示。",
"data": {
"both": "城市和时区",
"city": "仅城市",
"none": "无"
}
}
}
}
}

View File

@@ -0,0 +1,35 @@
{
"descriptor": {
"name": "下载速度",
"description": "显示集成中支持的下载和上传速度。"
},
"card": {
"table": {
"header": {
"name": "名称",
"size": "大小",
"download": "下载",
"upload": "上传",
"estimatedTimeOfArrival": "剩余时间",
"progress": "进度"
},
"body": {
"nothingFound": "没有找到种子"
}
},
"lineChart": {
"title": "当前下载速度",
"download": "下载:{{download}}",
"upload": "上传: {{upload}}",
"timeSpan": "{{seconds}} 秒前",
"totalDownload": "下载: {{download}}/秒",
"totalUpload": "上传: {{upload}}/秒"
},
"errors": {
"noDownloadClients": {
"title": "没有找到支持的下载客户端!",
"text": "添加下载服务以查看您当前的下载情况"
}
}
}
}

View File

@@ -0,0 +1,18 @@
{
"descriptor": {
"name": "DNS漏洞控制",
"description": "从您的面板控制 PiHole 或 AdGuard",
"settings": {
"title": "DNS 漏洞控制设置",
"showToggleAllButtons": {
"label": "显示 \"启用/禁用全部 \"按钮"
}
},
"errors": {
"general": {
"title": "无法找到 DNS 漏洞",
"text": "到DNS漏洞的连接有问题。请验证您的配置/集成设置。"
}
}
}
}

View File

@@ -0,0 +1,28 @@
{
"descriptor": {
"name": "DNS漏洞统计",
"description": "显示来自 PiHole 或 AdGuard 的重要数据",
"settings": {
"title": "DNS漏洞统计设置",
"usePiHoleColors": {
"label": "使用 PiHole 的颜色"
},
"layout": {
"label": "显示布局",
"data": {
"grid": "2 x 2",
"row": "横向",
"column": "垂直"
}
}
}
},
"card": {
"metrics": {
"domainsOnAdlist": "广告列表中的域名",
"queriesToday": "今日查询",
"queriesBlockedTodayPercentage": "今日屏蔽",
"queriesBlockedToday": "今日屏蔽"
}
}
}

View File

@@ -0,0 +1,83 @@
{
"descriptor": {
"name": "Docker",
"description": "允许您轻松查看和管理所有的Docker容器。"
},
"search": {
"placeholder": "按容器或镜像名称搜索"
},
"table": {
"header": {
"name": "名称",
"image": "镜像",
"ports": "端口",
"state": "状态"
},
"body": {
"portCollapse": "{{ports}} 更多"
},
"states": {
"running": "运行中",
"created": "已创建",
"stopped": "已停止",
"unknown": "未知"
}
},
"actionBar": {
"addService": {
"title": "添加应用",
"message": "添加应用到 Homarr"
},
"restart": {
"title": "重启"
},
"stop": {
"title": "停止"
},
"start": {
"title": "开始"
},
"refreshData": {
"title": "刷新"
},
"remove": {
"title": "删除"
},
"addToHomarr": {
"title": "添加到 Homarr"
}
},
"actions": {
"start": {
"start": "正在启动...",
"end": "已启动"
},
"stop": {
"start": "正在停止",
"end": "已停止"
},
"restart": {
"start": "正在重启",
"end": "已重启"
},
"remove": {
"start": "删除中",
"end": "已删除"
}
},
"errors": {
"integrationFailed": {
"title": "Docker 集成失败",
"message": "你是不是忘了挂载docker socket"
},
"unknownError": {
"title": "出现了一个错误"
},
"oneServiceAtATime": {
"title": "请每次只添加一个应用程序或服务!"
}
},
"actionIcon": {
"tooltip": "Docker"
}
}

View File

@@ -0,0 +1,45 @@
{
"descriptor": {
"name": "iFrame",
"description": "嵌入互联网上的任何内容。某些网站可能限制访问。",
"settings": {
"title": "iFrame设置",
"embedUrl": {
"label": "嵌入地址"
},
"allowFullScreen": {
"label": "允许全屏"
},
"allowTransparency": {
"label": "允许透明"
},
"allowScrolling": {
"label": "允许滚动"
},
"allowPayment": {
"label": "允许支付"
},
"allowAutoPlay": {
"label": "允许自动播放"
},
"allowMicrophone": {
"label": "允许麦克风"
},
"allowCamera": {
"label": "允许摄像头"
},
"allowGeolocation": {
"label": "允许地理位置"
}
}
},
"card": {
"errors": {
"noUrl": {
"title": "无效链接",
"text": "确保您在组件配置中输入了一个有效的地址"
},
"browserSupport": "您的浏览器不支持 iframe。请更新您的浏览器。"
}
}
}

View File

@@ -0,0 +1,33 @@
{
"descriptor": {
"name": "媒体请求",
"description": "查看 Overr 或 Jellyseerr 实例中的所有媒体请求列表",
"settings": {
"title": "媒体请求列表",
"replaceLinksWithExternalHost": {
"label": "使用外部地址替换链接"
},
"openInNewTab": {
"label": "在新标签页中打开链接"
}
}
},
"noRequests": "未找到请求。请确保您已正确配置您的应用。",
"state": {
"approved": "已批准",
"pendingApproval": "待批准",
"declined": "已拒绝"
},
"tooltips": {
"approve": "批准请求",
"decline": "拒绝请求",
"approving": "正在批准请求..."
},
"mutation": {
"approving": "正在批准",
"declining": "拒绝中",
"request": "请求...",
"approved": "请求被批准!",
"declined": "请求被拒绝!"
}
}

View File

@@ -0,0 +1,27 @@
{
"descriptor": {
"name": "媒体请求状态",
"description": "您的媒体请求统计",
"settings": {
"title": "媒体请求状态",
"replaceLinksWithExternalHost": {
"label": "使用外部地址替换链接"
},
"openInNewTab": {
"label": "在新标签页中打开链接"
}
}
},
"mediaStats": {
"title": "媒体统计",
"pending": "等待批准",
"tvRequests": "电视请求",
"movieRequests": "电影请求",
"approved": "已经批准",
"totalRequests": "请求总计"
},
"userStats": {
"title": "用户排行",
"requests": "请求: {{number}}"
}
}

View File

@@ -0,0 +1,25 @@
{
"descriptor": {
"name": "媒体服务",
"description": "与您的 Jellyfin 或 Plex 媒体服务交互",
"settings": {
"title": "媒体服务组件设置"
}
},
"loading": "正在载入流",
"card": {
"table": {
"header": {
"session": "会话",
"user": "用户",
"currentlyPlaying": "正在播放"
}
},
"errors": {
"general": {
"title": "无法加载内容",
"text": "无法从服务器检索信息。请检查日志获取更多详细信息"
}
}
}
}

View File

@@ -0,0 +1,59 @@
{
"descriptor": {
"name": "笔记本",
"description": "一个基于 Markdown 的交互式组件,供您写下笔记!",
"settings": {
"title": "笔记本组件设置",
"showToolbar": {
"label": "显示帮助您写下 Markdown 的工具栏"
},
"allowReadOnlyCheck": {
"label": "允许在只读模式中检查"
},
"content": {
"label": "笔记本的内容"
}
}
},
"card": {
"controls": {
"bold": "粗体",
"italic": "斜体",
"strikethrough": "删除线",
"underline": "下划线",
"colorText": "文字颜色",
"colorHighlight": "彩色高亮文本",
"code": "代码",
"clear": "清除格式",
"heading": "标题 {{level}}",
"align": "对齐文本: {{position}}",
"blockquote": "引用",
"horizontalLine": "横线",
"bulletList": "符号列表",
"orderedList": "顺序列表",
"checkList": "检查列表",
"increaseIndent": "增加缩进",
"decreaseIndent": "减小缩进",
"link": "链接",
"unlink": "删除链接",
"image": "嵌入图片",
"addTable": "添加表格",
"deleteTable": "删除表格",
"colorCell": "单元格颜色",
"mergeCell": "切换单元格合并",
"addColumnLeft": "在前面添加列",
"addColumnRight": "在后面添加列",
"deleteColumn": "删除整列",
"addRowTop": "在前面添加行",
"addRowBelow": "在后面添加行",
"deleteRow": "删除整行"
},
"modals": {
"clearColor": "清除颜色",
"source": "来源",
"widthPlaceholder": "百分比或像素值",
"columns": "列数",
"rows": "行数"
}
}
}

View File

@@ -0,0 +1,30 @@
{
"descriptor": {
"name": "Overseerr",
"description": "允许您从Overseerr 或 Jellyseerr 搜索和添加媒体。"
},
"popup": {
"item": {
"buttons": {
"askFor": "请求 {{title}}",
"cancel": "取消",
"request": "请求"
},
"alerts": {
"automaticApproval": {
"title": "使用 API key",
"text": "此请求将被自动批准"
}
}
},
"seasonSelector": {
"caption": "勾选您想要下载的季",
"table": {
"header": {
"season": "季",
"numberOfEpisodes": "集数"
}
}
}
}
}

View File

@@ -0,0 +1,11 @@
{
"descriptor": {
"name": "Ping",
"description": "根据设定的URL的HTTP响应代码显示一个状态指示器。"
},
"states": {
"online": "在线 {{response}}",
"offline": "离线 {{response}}",
"loading": "正在加载..."
}
}

View File

@@ -0,0 +1,31 @@
{
"descriptor": {
"name": "RSS 组件",
"description": "RSS 组件允许您在面板上显示 RSS 源。",
"settings": {
"title": "RSS 组件设置",
"rssFeedUrl": {
"label": "RSS 订阅地址",
"description": "您想要显示的 RSS 订阅的地址。"
},
"refreshInterval": {
"label": "刷新间隔(分钟)"
},
"dangerousAllowSanitizedItemContent": {
"label": "允许 HTML 格式化(危险)",
"info": "允许从外部进行HTML格式化可能是危险的。<br/>请确保订阅来自信任的来源。"
},
"textLinesClamp": {
"label": "文字线条"
}
},
"card": {
"errors": {
"general": {
"title": "无法获取 RSS 订阅",
"text": "在获取 RSS 订阅时出现了问题。确保使用有效的 URL 正确配置了 RSS 订阅。URL 应与官方规范匹配。更新 RSS 订阅后,您可能需要刷新面板。"
}
}
}
}
}

View File

@@ -0,0 +1,30 @@
{
"descriptor": {
"name": "搜索栏",
"description": "一个搜索栏允许你搜索你的自定义搜索引擎、YouTube和支持的集成。"
},
"input": {
"placeholder": "在网上搜索..."
},
"switched-to": "切换到",
"searchEngines": {
"search": {
"name": "网页",
"description": "搜索..."
},
"youtube": {
"name": "Youtube",
"description": "在 Youtube 上搜索"
},
"torrents": {
"name": "Torrents",
"description": "搜索 Torrents"
},
"overseerr": {
"name": "Overseerr",
"description": "在 Overseer 上搜索电影和电视剧。"
}
},
"tip": "您可以使用以下快捷键选择搜索栏 ",
"switchedSearchEngine": "改用 {{searchEngine}} 进行搜索"
}

View File

@@ -0,0 +1,93 @@
{
"descriptor": {
"name": "Torrent",
"description": "显示支持的 Torrent 客户端的 Torrent 列表。",
"settings": {
"title": "Torrent 组件设置",
"refreshInterval": {
"label": "刷新间隔(秒)"
},
"displayCompletedTorrents": {
"label": "显示已完成的种子"
},
"displayActiveTorrents": {
"label": "显示正活跃的种子"
},
"speedLimitOfActiveTorrents": {
"label": "将torrent视为活动的上传速度(kB/s)"
},
"displayStaleTorrents": {
"label": "显示已过期的种子"
},
"labelFilterIsWhitelist": {
"label": "标签列表是白名单 (而不是黑名单)"
},
"labelFilter": {
"label": "标签列表",
"description": "当选中 “白名单” 时,这将成为白名单。如果不选中,则是黑名单。为空时不会做任何事情。"
},
"displayRatioWithFilter": {
"label": "显示过滤后的 torrents 列表比例",
"info": "如果禁用,则只显示全局比率。如果设置为 \"禁用\",全局比率仍将使用标签。"
}
}
},
"card": {
"footer": {
"error": "错误",
"lastUpdated": "最后更新于 {{time}} 前",
"ratioGlobal": "全局比率",
"ratioWithFilter": "含过滤后的比率"
},
"table": {
"header": {
"name": "名称",
"size": "大小",
"download": "下载",
"upload": "上传",
"estimatedTimeOfArrival": "剩余时间",
"progress": "进度"
},
"item": {
"text": "由 {{appName}}, {{ratio}} 管理的比率"
},
"body": {
"nothingFound": "没有找到种子",
"filterHidingItems": "您的过滤器隐藏了 {{count}} 条记录"
}
},
"lineChart": {
"title": "当前下载速度",
"download": "下载:{{download}}",
"upload": "上传: {{upload}}",
"timeSpan": "{{seconds}} 秒前",
"totalDownload": "下载: {{download}}/秒",
"totalUpload": "上传: {{upload}}/秒"
},
"errors": {
"noDownloadClients": {
"title": "没有找到支持的Torrent客户端!",
"text": "添加一个支持的 Torrent 客户端来查看您当前的下载情况"
},
"generic": {
"title": "发生了一个意外的错误",
"text": "无法与您的 Torrent 客户端通信。请检查您的配置"
}
},
"loading": {
"title": "加载中",
"description": "建立连接中"
},
"popover": {
"introductionPrefix": "管理方:",
"metrics": {
"queuePosition": "队列位置 - {{position}}",
"progress": "进度 - {{progress}}%",
"totalSelectedSize": "共计 - {{totalSize}}",
"state": "状态 - {{state}}",
"ratio": "比率 -",
"completed": "已完成"
}
}
}
}

View File

@@ -0,0 +1,49 @@
{
"descriptor": {
"name": "Usenet",
"description": "允许您查看和管理您的 Usenet 实例。"
},
"card": {
"errors": {
"noDownloadClients": {
"title": "没有找到支持的下载客户端!",
"text": "添加支持的 Usenet 下载客户端来查看当前下载情况"
}
}
},
"tabs": {
"queue": "队列",
"history": "历史"
},
"info": {
"sizeLeft": "左侧大小",
"paused": "已暂停"
},
"queue": {
"header": {
"name": "名称",
"size": "大小",
"eta": "剩余时间",
"progress": "进度"
},
"empty": "空",
"error": {
"title": "错误",
"message": "出错了"
},
"paused": "已暂停"
},
"history": {
"header": {
"name": "名称",
"size": "大小",
"duration": "持续时间"
},
"empty": "空",
"error": {
"title": "错误",
"message": "加载历史记录时出错"
},
"paused": "已暂停"
}
}

View File

@@ -0,0 +1,24 @@
{
"descriptor": {
"name": "视频流",
"description": "嵌入来自相机或网站的视频流或视频",
"settings": {
"title": "视频流组件设置",
"FeedUrl": {
"label": "订阅网址"
},
"autoPlay": {
"label": "自动播放"
},
"muted": {
"label": "静音"
},
"controls": {
"label": "视频播放控件"
}
}
},
"errors": {
"invalidStream": "无效数据流"
}
}

View File

@@ -0,0 +1,37 @@
{
"descriptor": {
"name": "天气",
"description": "显示指定位置的当前天气信息。",
"settings": {
"title": "天气组件设置",
"displayInFahrenheit": {
"label": "显示为华氏度"
},
"displayCityName": {
"label": "显示城市名称"
},
"location": {
"label": "天气位置"
}
}
},
"card": {
"weatherDescriptions": {
"clear": "晴朗",
"mainlyClear": "晴朗为主",
"fog": "雾",
"drizzle": "细雨",
"freezingDrizzle": "冻毛毛雨",
"rain": "雨",
"freezingRain": "冻雨",
"snowFall": "降雪",
"snowGrains": "霰",
"rainShowers": "阵雨",
"snowShowers": "阵雪",
"thunderstorm": "雷暴",
"thunderstormWithHail": "雷暴夹冰雹",
"unknown": "未知"
}
},
"error": "出现了一个错误"
}

View File

@@ -0,0 +1,7 @@
{
"number": "包含数字",
"lowercase": "包括小写字母",
"uppercase": "包含大写字母",
"special": "包含特殊符号",
"length": "至少包含 {{count}} 个字符"
}

View File

@@ -0,0 +1,38 @@
{
"title": "设置",
"tooltip": "设置",
"tabs": {
"common": "常规",
"customizations": "个性化"
},
"tips": {
"configTip": "将配置文件拖放到页面上即可上传!"
},
"credits": {
"madeWithLove": "用❤️创造 来自",
"thirdPartyContent": "查看第三方内容",
"thirdPartyContentTable": {
"dependencyName": "依赖",
"dependencyVersion": "版本"
}
},
"grow": "放大网格 (占用所有空间)",
"layout": {
"preview": {
"title": "预览",
"subtitle": "更改会自动保存"
},
"divider": "布局选项",
"main": "主要",
"sidebar": "侧边栏",
"cannotturnoff": "无法关闭",
"dashboardlayout": "面板布局",
"enablersidebar": "启用右侧栏",
"enablelsidebar": "启用左侧栏",
"enablesearchbar": "启用搜索栏",
"enabledocker": "启用 docker 集成",
"enableping": "启用 Ping 功能",
"enablelsidebardesc": "可选项。只能用于应用和集成使用",
"enablersidebardesc": "可选项。只能用于应用和集成使用"
}
}

View File

@@ -0,0 +1,6 @@
{
"allowGuests": {
"label": "允许匿名用户",
"description": "允许未登录的用户查看您的面板"
}
}

View File

@@ -0,0 +1,29 @@
{
"text": "个性化设置允许您根据自己的喜好配置和调整 Homarr 的使用体验。",
"accordeon": {
"layout": {
"name": "显示布局",
"description": "启用或禁用标题和面板上的元素"
},
"gridstack": {
"name": "网格堆栈",
"description": "自定义您的面板区域的行为和栏目"
},
"pageMetadata": {
"name": "页面元数据",
"description": "调整标题、Logo 和 PWA"
},
"appereance": {
"name": "外观",
"description": "自定义背景、颜色和应用的外观"
},
"accessibility": {
"name": "无障碍服务",
"description": "为残疾和残障人士配置 Homarr"
},
"access": {
"name": "访问权限",
"description": "配置谁有权访问您的面板"
}
}
}

View File

@@ -0,0 +1,10 @@
{
"columnsCount": {
"labelPreset": "列的大小为{{size}}",
"descriptionPreset": "屏幕宽度小于 {{pixels}} 像素时的列数",
"descriptionExceedsPreset": "屏幕宽度超过 {{pixels}} 像素时的列数"
},
"unsavedChanges": "您有未保存的更改。单击下面的 \"应用更改 \"按钮应用并保存。",
"applyChanges": "应用更改",
"defaultValues": "默认值"
}

View File

@@ -0,0 +1,3 @@
{
"label": "应用的不透明度"
}

View File

@@ -0,0 +1,50 @@
{
"pageTitle": {
"label": "页面标题",
"description": "面板中左上角的标题"
},
"metaTitle": {
"label": "元标题",
"description": "在您的浏览器标签页中显示的标题"
},
"logo": {
"label": "Logo",
"description": "显示在左上方的 Logo"
},
"favicon": {
"label": "图标",
"description": "在您的浏览器标签页中显示的图标"
},
"background": {
"label": "背景"
},
"backgroundImageAttachment": {
"label": "背景图片附件",
"options": {
"fixed": "固定 - 背景保持在同一位置(推荐)",
"scroll": "滚动 - 背景随鼠标滚动"
}
},
"backgroundImageSize": {
"label": "背景图像大小",
"options": {
"cover": "覆盖 - 通过裁剪多余的空间,将图像缩放得尽可能小以覆盖整个窗口。 (推荐使用)",
"contain": "包含 - 在不裁剪或拉伸图像的情况下,在容器内尽可能大地缩放图像。"
}
},
"backgroundImageRepeat": {
"label": "背景图片附件",
"options": {
"repeat": "重复 - 根据需要重复图像,以覆盖整个背景图像绘制区域。",
"no-repeat": "无重复 - 图像不重复且可能不会填满整个空间(推荐)",
"repeat-x": "重复 X - 与 \"重复 \"相同,但只在水平轴上重复。",
"repeat-y": "重复 Y - 与 \"重复 \"相同,但只在垂直轴上重复。"
}
},
"customCSS": {
"label": "自定义 CSS",
"description": "只推荐有经验的用户使用 CSS 自定义面板",
"placeholder": "自定义 CSS 将在最后应用",
"applying": "应用CSS中..."
}
}

View File

@@ -0,0 +1,3 @@
{
"label": "阴影"
}

View File

@@ -0,0 +1,24 @@
{
"title": "清除缓存",
"selector": {
"label": "选择要清除的缓存",
"data": {
"ping": "Ping 查询",
"repositoryIcons": "远程/本地图标",
"calendar&medias": "日历中的媒体",
"weather": "天气数据"
}
},
"buttons": {
"notificationTitle": "已清除缓存",
"clearAll": {
"text": "清除所有缓存",
"notificationMessage": "已清除所有缓存"
},
"clearSelect": {
"text": "清除所选缓存",
"notificationMessageSingle": "{{value}} 的缓存已清除",
"notificationMessageMulti": "{{values}} 的缓存已清除"
}
}
}

View File

@@ -0,0 +1,86 @@
{
"configSelect": {
"label": "配置更改",
"description": "{{configCount}} 个可用的配置",
"loadingNew": "正在加载您的配置...",
"pleaseWait": "请等待您的新配置加载完成!"
},
"modal": {
"copy": {
"title": "选择新配置的名称",
"form": {
"configName": {
"label": "配置名称",
"validation": {
"required": "配置名称是必填项",
"notUnique": "配置名称已被使用"
},
"placeholder": "您的新配置名称"
},
"submitButton": "确认"
},
"events": {
"configSaved": {
"title": "配置已保存",
"message": "配置保存为 {{configName}}"
},
"configCopied": {
"title": "配置已复制",
"message": "配置复制为 {{configName}}"
},
"configNotCopied": {
"title": "无法复制配置",
"message": "您的配置没有被复制为 {{configName}}"
}
}
},
"confirmDeletion": {
"title": "确认删除您的配置",
"warningText": "您即将删除 '<b>{{configName}}</b>'",
"text": "请注意:删除是不可逆的,您的数据将永久丢失。点击此按钮后,该文件将从你的磁盘中永久删除。请确保已为你的配置创建了一个合适的备份。",
"buttons": {
"confirm": "是的,删除 '<b>{{configName}}</b>' 。"
}
}
},
"buttons": {
"download": "下载配置",
"delete": {
"text": "删除配置",
"notifications": {
"deleted": {
"title": "配置已删除",
"message": "配置已删除"
},
"deleteFailed": {
"title": "配置删除失败",
"message": "配置删除失败"
},
"deleteFailedDefaultConfig": {
"title": "默认配置不能被删除",
"message": "配置没有从文件系统中删除"
}
}
},
"saveCopy": "保存副本"
},
"dropzone": {
"notifications": {
"invalidConfig": {
"title": "无法加载配置",
"message": "无法加载您的配置。无效的 JSON 格式。"
},
"loadedSuccessfully": {
"title": "配置 {{configName}} 已成功加载。"
}
},
"accept": {
"title": "上传配置",
"text": "将文件拖动到这里上传配置。仅支持 JSON 文件。"
},
"reject": {
"title": "拖放上传被拒绝",
"text": "此文件格式不受支持。请只上传 JSON 文件。"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"menu": {
"toggle": "切换编辑模式",
"enable": "启用编辑模式",
"disable": "关闭编辑模式"
},
"form": {
"label": "编辑密码",
"message": "要切换编辑模式,需要在名为 <Code>EDIT_MODE_PASSWORD</Code> 的环境变量中输入密码。如果未设置,则无法切换编辑模式。",
"submit": "提交"
},
"notification": {
"success": {
"title": "成功",
"message": "成功切换编辑模式,重新加载页面..."
},
"error": {
"title": "错误",
"message": "切换编辑模式失败,请重试。"
}
}
}

View File

@@ -0,0 +1,3 @@
{
"label": "语言"
}

View File

@@ -0,0 +1,20 @@
{
"title": "搜索引擎",
"configurationName": "搜索引擎设置",
"custom": "自定义",
"tips": {
"generalTip": "您可以使用多种前缀!将这些添加到您的查询前将过滤结果。:!s (网页), !t (Torrents), !y (YouTube), 和 !m (媒体)。",
"placeholderTip": "%s 可以作为查询的占位符。"
},
"customEngine": {
"title": "自定义搜索引擎",
"label": "查询网址",
"placeholder": "自定义查询网址"
},
"searchNewTab": {
"label": "在新选项卡中打开搜索结果页"
},
"searchEnabled": {
"label": "启用搜索"
}
}

View File

@@ -0,0 +1,3 @@
{
"label": "将组件放在左边"
}

View File

@@ -0,0 +1,32 @@
{
"title": "Docker",
"alerts": {
"notConfigured": {
"text": "您的 Homarr 实例未配置 Docker或无法获取容器。请查看文档了解如何设置集成。"
}
},
"modals": {
"selectBoard": {
"title": "选择一个面板",
"text": "选择您想要为选定的 Docker 容器添加应用的面板。",
"form": {
"board": {
"label": "面板"
},
"submit": "添加应用"
}
}
},
"notifications": {
"selectBoard": {
"success": {
"title": "添加应用到面板",
"message": "选定的 Docker 容器的应用已添加到面板中。"
},
"error": {
"title": "添加应用到面板失败",
"message": "所选Docker容器的应用无法添加到面板中。"
}
}
}
}

View File

@@ -0,0 +1,48 @@
{
"metaTitle": "首选项",
"pageTitle": "您的首选项",
"boards": {
"defaultBoard": {
"label": "默认面板"
}
},
"accessibility": {
"title": "无障碍服务",
"disablePulse": {
"label": "禁用 Ping",
"description": "默认情况下Homarr 中的 Ping 指示器会一直工作。这可能会让人感到恼火。这个滑块将停用该动画。"
},
"replaceIconsWithDots": {
"label": "用图标替换 Ping 点",
"description": "对于色盲用户来说Ping 点可能无法识别。 这将用图标替换指示器"
}
},
"localization": {
"language": {
"label": "语言"
},
"firstDayOfWeek": {
"label": "一周的第一天",
"options": {
"monday": "周一",
"saturday": "周六",
"sunday": "周日"
}
}
},
"searchEngine": {
"title": "搜索引擎",
"custom": "自定义",
"newTab": {
"label": "在新选项卡中打开搜索结果页"
},
"autoFocus": {
"label": "页面加载时聚焦搜索栏。",
"description": "当您导航到面板页面时,搜索栏会自动聚焦。该功能仅适用于桌面设备。"
},
"template": {
"label": "查询网址",
"description": "使用 %s 作为查询的占位符"
}
}
}

View File

@@ -0,0 +1,7 @@
{
"noEntries": {
"title": "没有条目",
"text": "使用下方按钮添加更多条目"
},
"buttonAdd": "添加"
}

View File

@@ -0,0 +1,14 @@
{
"card": {
"title": "哎呀,出错了!",
"buttons": {
"details": "详情",
"tryAgain": "请再试一次"
}
},
"modal": {
"text": "",
"label": "您的错误",
"reportButton": "报告该错误"
}
}

View File

@@ -0,0 +1,22 @@
{
"errors": {
"default": "该字段无效",
"required": "此字段为必填",
"string": {
"startsWith": "该字段必须以 {{startsWith}} 开头",
"endsWith": "该字段必须以 {{endsWith}} 结尾",
"includes": "该字段必须包含 {{includes}}"
},
"tooSmall": {
"string": "该字段的长度必须至少为 {{minimum}} 个字符",
"number": "该字段必须大于或等于 {{minimum}}"
},
"tooBig": {
"string": "该字段的长度不得超过 {{maximum}} 个字符",
"number": "该字段必须小于或等于 {{maximum}}"
},
"custom": {
"passwordMatch": "两次输入的密码必须一致"
}
}
}

View File

@@ -0,0 +1,35 @@
{
"metaTitle": "crwdns3635:0crwdne3635:0",
"title": "crwdns3637:0crwdne3637:0",
"text": "crwdns3639:0crwdne3639:0",
"form": {
"fields": {
"username": {
"label": "crwdns3641:0crwdne3641:0"
},
"password": {
"label": "crwdns3643:0crwdne3643:0"
},
"passwordConfirmation": {
"label": "crwdns3645:0crwdne3645:0"
}
},
"buttons": {
"submit": "crwdns3647:0crwdne3647:0"
}
},
"notifications": {
"loading": {
"title": "crwdns3649:0crwdne3649:0",
"text": "crwdns3651:0crwdne3651:0"
},
"success": {
"title": "crwdns3653:0crwdne3653:0",
"text": "crwdns3655:0crwdne3655:0"
},
"error": {
"title": "crwdns3657:0crwdne3657:0",
"text": "crwdns3659:0{{error}}crwdne3659:0"
}
}
}

View File

@@ -0,0 +1,20 @@
{
"metaTitle": "crwdns3341:0crwdne3341:0",
"title": "crwdns1868:0crwdne1868:0",
"text": "crwdns3343:0crwdne3343:0",
"form": {
"fields": {
"username": {
"label": "crwdns3345:0crwdne3345:0"
},
"password": {
"label": "crwdns1872:0crwdne1872:0"
}
},
"buttons": {
"submit": "crwdns1876:0crwdne1876:0"
},
"afterLoginRedirection": "crwdns3347:0{{url}}crwdne3347:0"
},
"alert": "crwdns3349:0crwdne3349:0"
}

View File

@@ -0,0 +1,5 @@
{
"header": {
"customize": "crwdns3477:0crwdne3477:0"
}
}

View File

@@ -0,0 +1,29 @@
{
"metaTitle": "crwdns3479:0{{name}}crwdne3479:0",
"pageTitle": "crwdns3481:0{{name}}crwdne3481:0",
"backToBoard": "crwdns3483:0crwdne3483:0",
"settings": {
"appearance": {
"primaryColor": "crwdns3485:0crwdne3485:0",
"secondaryColor": "crwdns3487:0crwdne3487:0"
}
},
"save": {
"button": "crwdns3489:0crwdne3489:0",
"note": "crwdns3491:0crwdne3491:0"
},
"notifications": {
"pending": {
"title": "crwdns3493:0crwdne3493:0",
"message": "crwdns3495:0crwdne3495:0"
},
"success": {
"title": "crwdns3497:0crwdne3497:0",
"message": "crwdns3499:0crwdne3499:0"
},
"error": {
"title": "crwdns3501:0crwdne3501:0",
"message": "crwdns3503:0crwdne3503:0"
}
}
}

View File

@@ -0,0 +1,57 @@
{
"save": "crwdns2009:0crwdne2009:0",
"apply": "crwdns3900:0crwdne3900:0",
"insert": "crwdns3902:0crwdne3902:0",
"about": "crwdns2011:0crwdne2011:0",
"cancel": "crwdns2013:0crwdne2013:0",
"close": "crwdns2015:0crwdne2015:0",
"back": "crwdns3371:0crwdne3371:0",
"delete": "crwdns2017:0crwdne2017:0",
"ok": "crwdns2019:0crwdne2019:0",
"edit": "crwdns2021:0crwdne2021:0",
"next": "crwdns3373:0crwdne3373:0",
"previous": "crwdns3375:0crwdne3375:0",
"confirm": "crwdns3377:0crwdne3377:0",
"enabled": "crwdns2883:0crwdne2883:0",
"disabled": "crwdns2885:0crwdne2885:0",
"enableAll": "crwdns2887:0crwdne2887:0",
"disableAll": "crwdns2889:0crwdne2889:0",
"version": "crwdns2023:0crwdne2023:0",
"changePosition": "crwdns2025:0crwdne2025:0",
"remove": "crwdns2027:0crwdne2027:0",
"removeConfirm": "crwdns2683:0{{item}}crwdne2683:0",
"createItem": "crwdns2793:0{{item}}crwdne2793:0",
"sections": {
"settings": "crwdns2029:0crwdne2029:0",
"dangerZone": "crwdns2031:0crwdne2031:0"
},
"secrets": {
"apiKey": "crwdns2685:0crwdne2685:0",
"username": "crwdns2035:0crwdne2035:0",
"password": "crwdns2037:0crwdne2037:0"
},
"tip": "crwdns1260:0crwdne1260:0",
"time": {
"seconds": "crwdns1860:0crwdne1860:0",
"minutes": "crwdns1862:0crwdne1862:0",
"hours": "crwdns1864:0crwdne1864:0"
},
"loading": "crwdns2523:0crwdne2523:0",
"breakPoints": {
"small": "crwdns2525:0crwdne2525:0",
"medium": "crwdns2527:0crwdne2527:0",
"large": "crwdns2529:0crwdne2529:0"
},
"seeMore": "crwdns3019:0crwdne3019:0",
"position": {
"left": "crwdns3904:0crwdne3904:0",
"center": "crwdns3906:0crwdne3906:0",
"right": "crwdns3908:0crwdne3908:0"
},
"attributes": {
"width": "crwdns3910:0crwdne3910:0",
"height": "crwdns3912:0crwdne3912:0"
},
"public": "crwdns4034:0crwdne4034:0",
"restricted": "crwdns4036:0crwdne4036:0"
}

View File

@@ -0,0 +1,25 @@
{
"modals": {
"blockedPopups": {
"title": "crwdns2997:0crwdne2997:0",
"text": "crwdns2999:0crwdne2999:0",
"list": {
"browserPermission": "crwdns3001:0crwdne3001:0",
"adBlockers": "crwdns3003:0crwdne3003:0",
"otherBrowser": "crwdns3005:0crwdne3005:0"
}
}
},
"actions": {
"category": {
"openAllInNewTab": "crwdns3007:0crwdne3007:0"
}
},
"menu": {
"moveUp": "crwdns3213:0crwdne3213:0",
"moveDown": "crwdns3215:0crwdne3215:0",
"addCategory": "crwdns3251:0{{location}}crwdne3251:0",
"addAbove": "crwdns3219:0crwdne3219:0",
"addBelow": "crwdns3221:0crwdne3221:0"
}
}

View File

@@ -0,0 +1,25 @@
{
"modal": {
"title": "crwdns1989:0crwdne1989:0",
"text": "crwdns2293:0crwdne2293:0"
},
"widgetDescription": "crwdns2295:0crwdne2295:0",
"goBack": "crwdns1995:0crwdne1995:0",
"actionIcon": {
"tooltip": "crwdns1997:0crwdne1997:0"
},
"apps": "crwdns3231:0crwdne3231:0",
"app": {
"defaultName": "crwdns3233:0crwdne3233:0"
},
"widgets": "crwdns3235:0crwdne3235:0",
"categories": "crwdns3237:0crwdne3237:0",
"category": {
"newName": "crwdns3239:0crwdne3239:0",
"defaultName": "crwdns3241:0crwdne3241:0",
"created": {
"title": "crwdns3243:0crwdne3243:0",
"message": "crwdns3245:0{{name}}crwdne3245:0"
}
}
}

View File

@@ -0,0 +1,5 @@
{
"title": "crwdns3866:0crwdne3866:0",
"text": "crwdns3868:0crwdne3868:0",
"switchAccount": "crwdns3870:0crwdne3870:0"
}

View File

@@ -0,0 +1,5 @@
{
"title": "crwdns3049:0crwdne3049:0",
"text": "crwdns3051:0crwdne3051:0",
"button": "crwdns3053:0crwdne3053:0"
}

View File

@@ -0,0 +1,27 @@
{
"search": {
"label": "crwdns3447:0crwdne3447:0",
"engines": {
"web": "crwdns3449:0{{query}}crwdne3449:0",
"youtube": "crwdns3451:0{{query}}crwdne3451:0",
"torrent": "crwdns3453:0{{query}}crwdne3453:0",
"movie": "crwdns3455:0{{query}}crwdnd3455:0{{app}}crwdne3455:0"
}
},
"actions": {
"avatar": {
"switchTheme": "crwdns3457:0crwdne3457:0",
"preferences": "crwdns3459:0crwdne3459:0",
"defaultBoard": "crwdns3461:0crwdne3461:0",
"manage": "crwdns3463:0crwdne3463:0",
"logout": "crwdns3469:0{{username}}crwdne3469:0",
"login": "crwdns3471:0crwdne3471:0"
}
},
"modals": {
"movie": {
"title": "crwdns3473:0crwdne3473:0",
"topResults": "crwdns3475:0{{count}}crwdnd3475:0{{search}}crwdne3475:0"
}
}
}

View File

@@ -0,0 +1,12 @@
{
"description": "crwdns2297:0crwdne2297:0",
"button": {
"disabled": "crwdns2001:0crwdne2001:0",
"enabled": "crwdns2003:0crwdne2003:0"
},
"popover": {
"title": "crwdns2403:0{{size}}crwdne2403:0",
"text": "crwdns2405:0crwdne2405:0"
},
"unloadEvent": "crwdns3275:0crwdne3275:0"
}

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