Compare commits

..

1106 Commits

Author SHA1 Message Date
github-actions[bot]
8fa6454161 New Crowdin translations by GitHub Action (#3758)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-09-09 21:15:33 -07:00
ToXinE
e1a6acf5e6 Documentation: Fix watchtower typo (#3967) 2024-09-09 15:33:07 -07:00
shamoon
2d0beabe9a Enhancement: more reliable wg-easy widget by custom proxy, use password header (#3966) 2024-09-09 11:40:11 -07:00
shamoon
133d2d6e02 Update package name / version, regenerate lock files 2024-09-09 11:36:31 -07:00
shamoon
da95c42279 Update tdarr.md 2024-09-04 16:12:13 -07:00
Wtfitsaduck
989039af81 Enhancement: support Tdarr widget auth (#3940)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-09-04 22:59:54 +00:00
shamoon
5de0019b3d Readme tweaks 2024-09-03 19:07:20 -07:00
shamoon
d1e5d58e01 Add some debug logging for k8s 2024-09-03 14:04:44 -07:00
shamoon
0d3a57be13 Exclude index pages from search results 2024-09-02 15:15:05 -07:00
dependabot[bot]
541aae1588 Chore(deps-dev): Bump autoprefixer from 10.4.17 to 10.4.20 (#3928)
Bumps [autoprefixer](https://github.com/postcss/autoprefixer) from 10.4.17 to 10.4.20.
- [Release notes](https://github.com/postcss/autoprefixer/releases)
- [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/autoprefixer/compare/10.4.17...10.4.20)

---
updated-dependencies:
- dependency-name: autoprefixer
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 00:05:14 +00:00
dependabot[bot]
9d00421c73 Chore(deps-dev): Bump @tailwindcss/forms from 0.5.7 to 0.5.8 (#3925)
Bumps [@tailwindcss/forms](https://github.com/tailwindlabs/tailwindcss-forms) from 0.5.7 to 0.5.8.
- [Release notes](https://github.com/tailwindlabs/tailwindcss-forms/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss-forms/blob/main/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss-forms/compare/v0.5.7...v0.5.8)

---
updated-dependencies:
- dependency-name: "@tailwindcss/forms"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-01 17:03:42 -07:00
dependabot[bot]
54ed8f7a7b Chore(deps): Bump luxon from 3.4.4 to 3.5.0 (#3927)
Bumps [luxon](https://github.com/moment/luxon) from 3.4.4 to 3.5.0.
- [Changelog](https://github.com/moment/luxon/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moment/luxon/compare/3.4.4...3.5.0)

---
updated-dependencies:
- dependency-name: luxon
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-01 17:03:28 -07:00
Mitchell
e454ff06b9 Enhancement: support more fields for zabbix widget 2024-09-01 16:02:00 -07:00
shamoon
7b94ccb01f Use logger for validate widget errors 2024-08-30 15:45:51 -07:00
Mitchell
44f8e9d4da Feature: Zabbix service widget (#3905)
Co-Authored-By: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-29 12:53:10 -07:00
Bobby Driggs
4c6150a545 Feature: Technitium DNS Widget (#3904)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-29 10:51:36 -07:00
Jacobo de Vera
e2518b37d9 Enhancement: customAPI size formatter (#3898)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-27 08:05:23 -07:00
shamoon
2fc83d275b Update .eslintrc.json 2024-08-27 08:04:36 -07:00
joncrangle
b14374f660 Chore: handle mealie API change (#3895)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-24 21:02:47 -07:00
Trevor Vance
8ff68dd6bf Documentation: fix indentation for proxmox docs. (#3885)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-23 20:05:02 -07:00
InsertDisc
132b8c32e5 Refactor: update RomM widget (#3886)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-23 19:28:37 -07:00
shamoon
f2a49eaa25 Remove more version tags from compose examples 2024-08-21 13:16:45 -07:00
VolumeData21
ca2a6d7664 Documentation: remove version line from readme docker compose yaml (#3882)
---------

Co-authored-by: andrew <110792083+beboprocky@users.noreply.github.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-21 13:14:44 -07:00
shamoon
84db5ea13d Change: increase precision of used space in fs glances widget 2024-08-20 06:51:22 -07:00
shamoon
ffd465a36a Chore: update gamedig to 5.1.2 (#3876) 2024-08-19 16:53:29 -07:00
Devedse
0d25f5789b Feature: DeveLanCacheUI service widget (#3854)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-15 23:28:53 +00:00
shamoon
ca1577166d Update getting-started.md 2024-08-14 20:20:11 -07:00
shamoon
40b0f956ae Add resources debug 2024-08-14 11:57:09 -07:00
Juan Ignacio Sierra
2ee14eb94b Enhancement: support ESPHome widget authentication (#3846)
* Added cookie support for auth on ESPHome widget

* Lint

* Use credentialedProxyHandler instead

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-13 07:40:42 -07:00
shamoon
9ede44b12d Fix: properly handle wg-easy errors (#3849)
Also reverts #3768
2024-08-13 00:12:53 -07:00
shamoon
0dc2f2e18a Fix error simple string 2024-08-13 00:07:16 -07:00
teobogdan
2aa7a3898b Chore: update Gamedig (#3841)
Co-Authored-By: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-12 00:35:03 -07:00
shamoon
805f119a25 Fix: remove tubearchivist stats validation 2024-08-11 07:36:18 -07:00
shamoon
74f76e2656 Documentation: add resources note 2024-08-09 14:31:23 -07:00
PyrokineticDarkElf
4d38222ba0 Feature: Linkwarden service widget (#3836)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-08-09 14:19:06 -07:00
shamoon
b9b7c482d4 Fix immich version check 2024-08-04 21:32:35 -07:00
shamoon
1c5d9ca223 Change: handle errored truenas pools (#3815) 2024-08-03 17:02:38 -07:00
shamoon
8fba3eee1d Enhancement: use tubearchivist stats endpoints (#3814) 2024-08-03 16:51:44 -07:00
dependabot[bot]
0d6aabc737 Chore(deps): Bump raw-body from 2.5.2 to 3.0.0 (#3803)
Bumps [raw-body](https://github.com/stream-utils/raw-body) from 2.5.2 to 3.0.0.
- [Changelog](https://github.com/stream-utils/raw-body/blob/master/HISTORY.md)
- [Commits](https://github.com/stream-utils/raw-body/compare/2.5.2...v3.0.0)

---
updated-dependencies:
- dependency-name: raw-body
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 14:57:04 -07:00
dependabot[bot]
b124e12509 Chore(deps): Bump urbackup-server-api from 0.8.9 to 0.52.0 (#3801)
Bumps [urbackup-server-api](https://github.com/bartmichu/node-urbackup-server-api) from 0.8.9 to 0.52.0.
- [Changelog](https://github.com/bartmichu/node-urbackup-server-api/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bartmichu/node-urbackup-server-api/commits)

---
updated-dependencies:
- dependency-name: urbackup-server-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 11:52:53 -07:00
dependabot[bot]
0a23bfe263 Chore(deps-dev): Bump eslint-plugin-prettier from 4.2.1 to 5.2.1 (#3802)
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 4.2.1 to 5.2.1.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v4.2.1...v5.2.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 11:07:34 -07:00
dependabot[bot]
9fa38c9ba8 Chore(deps): Bump systeminformation from 5.22.7 to 5.23.2 (#3799)
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 5.22.7 to 5.23.2.
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v5.22.7...v5.23.2)

---
updated-dependencies:
- dependency-name: systeminformation
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-01 09:54:06 -07:00
shamoon
9484a9ff56 Fix: correctly decode tab names with special chars (#3797) 2024-07-30 20:56:26 -07:00
shamoon
ed928bfa25 Add support note 2024-07-23 20:40:33 -07:00
nopoz
a996d43bbf Documentation: clarify api key usage for pfsense v1 vs v2 (#3766)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-07-23 18:57:47 -07:00
BugGeeker
6ce67b5ab8 Fix: wg-easy widget better handle api error (#3768) 2024-07-23 18:51:43 -07:00
shamoon
5d531b11e7 Fix: correct k8s job status check 2024-07-18 19:10:57 -07:00
github-actions[bot]
eccd96a775 New Crowdin translations by GitHub Action (#3750)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-07-17 23:06:30 -07:00
shamoon
407376b3b7 Fix: correct k8s service status check (#3753) 2024-07-17 23:04:50 -07:00
github-actions[bot]
d6188e52fe New Crowdin translations by GitHub Action (#3722)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-07-17 13:35:15 -07:00
shamoon
0a1a3bb8c2 Make unifi note more apparent 2024-07-17 13:32:16 -07:00
j0ton
16b45a313e Feature: Frigate service widget (#3743) 2024-07-17 07:09:58 -07:00
shamoon
1d820b02cb Remove Glime bot 2024-07-16 12:12:10 -07:00
shamoon
55a434c039 Try to fix search overlay broken by blur 2024-07-13 11:55:08 -07:00
shamoon
7831da6f6a Update widget index pages 2024-07-13 11:02:31 -07:00
shamoon
bebecacc89 Try to correct Safari bkgd issue 2024-07-13 10:36:20 -07:00
Charles Thomas
0d7072beea Fix: don't show "partial" for k8s status if there are completed job pods (#3735) 2024-07-12 18:44:30 -07:00
shamoon
95ab0706b6 Correct pfsense v2 percent calculations 2024-07-09 09:07:46 -07:00
Chris Hoffman
a522153df2 Documentation: fix mistaken documentation on field podSelector for services (#3719) 2024-07-08 15:18:30 -07:00
shamoon
1804d0af0f Fix pfsense version doc 2024-07-07 21:44:10 -07:00
shamoon
9d16e280cd Enhancement: support pfsense v2 api (#3716) 2024-07-07 21:07:24 -07:00
github-actions[bot]
b8af7ad95d New Crowdin translations by GitHub Action (#3698)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-07-07 13:22:57 -07:00
shamoon
028324556d Fix: increase width allowance for dates in ical agenda widget (#3711) 2024-07-06 14:45:17 -07:00
shamoon
38c32233f6 Enhancement: strip whitespace when checking JSON (#3706) 2024-07-03 07:25:51 -07:00
Dylan Ullrich
231e2408c3 Feature: stock market service and info widget (#3617)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-07-01 17:16:10 -07:00
github-actions[bot]
810c321881 New Crowdin translations by GitHub Action (#3605)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-06-30 15:02:53 -07:00
shamoon
8edfafb9f6 Fix search dropdown overlay with boxedheaders option (#3680) 2024-06-30 06:45:42 -07:00
Mark Titorenkov
6ed4472441 Fix: Sort truenas pools by name (#3669)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-06-26 07:51:30 -07:00
shamoon
b03467a832 Fix pyload debug line 2024-06-24 15:41:57 -07:00
Mathias Wagner
148511e6f8 Feature: MySpeed widget (#3662)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-06-23 12:00:04 -07:00
Matt Sullivan
f07d595ed9 Fix: Improve error handling for Glances widgets when host is unreachable (#3657)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-06-23 09:43:51 -07:00
Ben Phelps
ec448d6c41 only darken on dark mode 2024-06-20 12:40:22 +03:00
Ben Phelps
2a31380dbc increase contrast, fix safari 2024-06-20 12:33:16 +03:00
shamoon
0962e3384c Update docker.md 2024-06-19 07:36:04 -07:00
shamoon
0ee3e7153d Docs tweaks 2024-06-17 22:17:28 -07:00
shamoon
11cc4a15cf Fix python requirements file 2024-06-17 21:57:47 -07:00
dependabot[bot]
ae5f0ace55 Chore(deps): Bump docker/build-push-action from 5 to 6 (#3648)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 10:43:34 -07:00
Ben Phelps
99c935f5e0 fix image shadow on logos 2024-06-17 20:26:48 +03:00
Ben Phelps
a4ee3089bc docs updates
adjust styles
move development starting guide
switch to webp for images
add sponsors page
2024-06-17 19:35:42 +03:00
Ben Phelps
23432300c7 add webp image versions 2024-06-17 18:59:25 +03:00
Ben Phelps
a7df687d82 fix docs version selector getting hidden 2024-06-17 09:22:52 +03:00
Ben Phelps
1d993046c2 use bg static URL for the time being
will fix once tagged
2024-06-17 09:19:50 +03:00
Ben Phelps
2685c20134 new website design
this is a trial run, it could very well get reverted
2024-06-17 09:10:53 +03:00
Ben Phelps
861a3d2091 disable mkdocs optimize plugin
it seems to cause more issues than is worth it
2024-06-14 14:13:50 +03:00
Ben Phelps
4d88ea1883 improve docs header, nav and social cards 2024-06-14 14:11:23 +03:00
Ben Phelps
aa33cf7295 add mkdocs-material[imaging] 2024-06-14 00:58:58 +03:00
Ben Phelps
cf14503fb0 social cards style 2024-06-14 00:54:52 +03:00
Ben Phelps
cecfc93440 focus funding on project targets 2024-06-14 00:09:00 +03:00
Ben Phelps
bf5264d882 fix image path 2024-06-14 00:06:52 +03:00
Ben Phelps
3923bb3cae bump mkdocs-material 2024-06-14 00:06:43 +03:00
shamoon
5d6e202840 Fix: dont force lowercase URL in QuickLaunch (#3634) 2024-06-13 13:48:34 -07:00
Ben Phelps
ef154b348e ready to preview guides 2024-06-13 21:27:32 +03:00
Ben Phelps
d45e66969d Merge branch 'main' into guides
# Conflicts:
#	src/pages/api/services/proxy.js
#	src/widgets/emby/component.jsx
#	src/widgets/glances/widget.js
2024-06-13 18:58:53 +03:00
Ben Phelps
62674372c5 first guides commit 2024-06-13 18:56:35 +03:00
shamoon
5afcf445be Documentation: fix broken mjpeg image 2024-06-09 07:35:17 -07:00
shamoon
e6f2ff970b Documentation: clarify deployment recs 2024-06-06 12:38:27 -07:00
github-actions[bot]
af1695687a New Crowdin translations by GitHub Action (#3589)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-06-05 19:38:39 -07:00
shamoon
f0d7cf3ce6 Security: Sanitize widget api keys from response
Closes https://github.com/gethomepage/homepage/security/advisories/GHSA-cjgf-vhj6-8cx4
2024-06-05 19:38:26 -07:00
Heng-Yi Wu
36e77e1fe3 Fix: coinmarketcap widget dropdown not clickable (#3591) 2024-06-05 00:56:28 -07:00
Aldy J
35dd7ec230 Enhancement: support multiple instance annotation for Kubernetes Automatic Service Discovery (#3590) 2024-06-04 21:29:13 -07:00
shamoon
15cc1d98c5 Fix: omada widget broken in v0.9.1 (#3587) 2024-06-04 07:28:45 -07:00
Liran Vaknin
9803ef70c6 Fix: openwrt widget handle null id in json rpc responses and cpu load representation (#3576) 2024-06-04 00:11:11 -07:00
shamoon
ccc27142ef Fix: caddy widget broken in 0.9.1 (#3579) 2024-06-04 00:05:06 -07:00
shamoon
9a20982406 Lint wg-easy 2024-06-04 00:03:48 -07:00
Conner Hnatiuk
67a69a5878 Fix: wg-easy threshold not properly computed (#3574) 2024-06-03 14:52:58 -07:00
shamoon
19c3ac0d7e Enforce method 2024-06-03 13:17:23 -07:00
shamoon
67a9f4983c Fix unifi with no type passing and lint 2024-06-03 11:19:54 -07:00
github-actions[bot]
ec79f3042a New Crowdin translations by GitHub Action (#3567)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-06-03 09:39:38 -07:00
shamoon
f13144ceb8 Remove widget type passing 2024-06-03 09:20:26 -07:00
shamoon
d42271acf6 Fix: calendar integration broken in v0.9.0 (#3566) 2024-06-03 09:19:20 -07:00
shamoon
fb58a66f3b Fix: include cpu in allowed glances endpoints (#3565) 2024-06-03 09:04:21 -07:00
shamoon
c96e6703d3 More path traversal fixes 2024-06-03 09:04:21 -07:00
github-actions[bot]
8a4c808ee2 New Crowdin translations by GitHub Action (#3432)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-06-03 09:04:21 -07:00
shamoon
52cce0ee21 Merge pull request from GHSA-24m5-7vjx-9x37
* Restrict emby endpoints and proxy segments

* Dont allow path traversal in segments

* Restrict qbittorrent proxy endpoints

* Restrict npm proxy endpoints

* Restrict flood proxy endpoints

* Restrict tdarr proxy endpoints

* Restrict xteve proxy endpoints

* Restrict transmission proxy endpoints

* disallow non-mapped endpoints

this change drops all requests that have un-mapped endpoint queries

allowedEndpoints is added as a method to pass proxy requests via a regex on the endpoint

most widgets with custom proxies use either no endpoint, or a static one

Co-Authored-By: Ben Phelps <ben@phelps.io>
2024-06-03 09:04:21 -07:00
shamoon
b3cf985d4a Merge pull request from GHSA-24m5-7vjx-9x37
* Restrict emby endpoints and proxy segments

* Dont allow path traversal in segments

* Restrict qbittorrent proxy endpoints

* Restrict npm proxy endpoints

* Restrict flood proxy endpoints

* Restrict tdarr proxy endpoints

* Restrict xteve proxy endpoints

* Restrict transmission proxy endpoints

* disallow non-mapped endpoints

this change drops all requests that have un-mapped endpoint queries

allowedEndpoints is added as a method to pass proxy requests via a regex on the endpoint

most widgets with custom proxies use either no endpoint, or a static one

Co-Authored-By: Ben Phelps <ben@phelps.io>
2024-06-02 21:13:29 -07:00
Ben Phelps
8823b04291 switch DO logo
darker one looks nicer
2024-06-02 16:45:06 +03:00
dependabot[bot]
bb2da35d09 Chore(deps-dev): Bump eslint-plugin-react-hooks from 4.6.0 to 4.6.2 (#3555)
Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 4.6.0 to 4.6.2.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/packages/eslint-plugin-react-hooks/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks)

---
updated-dependencies:
- dependency-name: eslint-plugin-react-hooks
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-01 09:58:39 -07:00
dependabot[bot]
fa633a705d Chore(deps-dev): Bump eslint-plugin-react from 7.34.1 to 7.34.2 (#3554)
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.34.1 to 7.34.2.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.34.1...v7.34.2)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-01 09:53:27 -07:00
vycdev
48170fe899 Enhancement: separate Internet search settings for quicklaunch (#3541)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-05-31 21:24:42 -07:00
Simon
a53b042fec Fix: remove comma in Caddy and EVCC widgetS (#3551) 2024-05-31 18:01:27 -07:00
dependabot[bot]
c267eeabf8 Chore(deps): Bump crowdin/github-action from 1 to 2 (#3537)
Bumps [crowdin/github-action](https://github.com/crowdin/github-action) from 1 to 2.
- [Release notes](https://github.com/crowdin/github-action/releases)
- [Commits](https://github.com/crowdin/github-action/compare/v1...v2)

---
updated-dependencies:
- dependency-name: crowdin/github-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-29 10:44:23 -07:00
quietsy
c6770d233c Feature: SWAG dashboard widget (#3523) 2024-05-27 22:00:52 -07:00
Ben Phelps
0a75c831a6 Documentation: DO Credits (#3505)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-05-22 06:19:48 -07:00
Nick Disiere
4d76443846 Fix: correct icon in the longhorn widget (#3509) 2024-05-21 13:06:59 -07:00
shamoon
97d7ae21e4 Fix: handle some status cases with non-existent k8s pods (#3489) 2024-05-17 09:01:43 -07:00
Conner Hnatiuk
6ab6d6fd3a Feature: Wg-Easy Widget (#3476)
---------

Co-authored-by: ConnerWithAnE <46903591+ConnerWithAnE@users.noreply.github.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-05-16 22:26:12 -07:00
Jesus Lopez
1144f4dfa0 Fix: allow exclamation to open quicklaunch (#3475) 2024-05-16 18:09:50 -07:00
shamoon
a9ad2a2146 Improve k8s not found pod status 2024-05-16 08:28:12 -07:00
shamoon
43ebd6d0c5 Fix: handle ghostfolio v2.79.0 breaking API changes (#3471) 2024-05-16 08:07:33 -07:00
zinsmeik
d20ab844d6 Documentation: correct weatherapi example (#3436) 2024-05-10 06:23:54 -07:00
Noah S. Roberts
857ac1f7dc Documentation: use generic url in channels dvr widget docs (#3434) 2024-05-10 00:56:30 -07:00
github-actions[bot]
986a18170c New Crowdin translations by GitHub Action (#3321)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-05-05 20:51:37 -07:00
Ben Phelps
198835a697 allow seperate href for widget container links
addresses #3140
2024-05-04 19:34:38 +03:00
dependabot[bot]
5efed2e740 Chore(deps-dev): Bump eslint-config-next from 12.3.4 to 14.2.3 (#3399)
Bumps [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) from 12.3.4 to 14.2.3.
- [Release notes](https://github.com/vercel/next.js/releases)
- [Changelog](https://github.com/vercel/next.js/blob/canary/release.js)
- [Commits](https://github.com/vercel/next.js/commits/v14.2.3/packages/eslint-config-next)

---
updated-dependencies:
- dependency-name: eslint-config-next
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 12:08:26 -07:00
dependabot[bot]
43e258a58d Chore(deps): Bump react from 18.2.0 to 18.3.1 (#3400)
Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react) from 18.2.0 to 18.3.1.
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v18.3.1/packages/react)

---
updated-dependencies:
- dependency-name: react
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 09:44:31 -07:00
dependabot[bot]
8ca7f422da Chore(deps): Bump systeminformation from 5.22.0 to 5.22.7 (#3398)
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 5.22.0 to 5.22.7.
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v5.22.0...v5.22.7)

---
updated-dependencies:
- dependency-name: systeminformation
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 09:44:07 -07:00
dependabot[bot]
4fc70eb1ff Chore(deps-dev): Bump typescript from 4.9.5 to 5.4.5 (#3396)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.9.5 to 5.4.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.9.5...v5.4.5)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 09:43:52 -07:00
dependabot[bot]
d90bf8079a Chore(deps): Bump recharts from 2.12.3 to 2.12.6 (#3397)
Bumps [recharts](https://github.com/recharts/recharts) from 2.12.3 to 2.12.6.
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/recharts/recharts/compare/v2.12.3...v2.12.6)

---
updated-dependencies:
- dependency-name: recharts
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-01 09:24:21 -07:00
shamoon
ea63716b61 Fix: some error URLs aren't sanitized (#3385) 2024-04-29 17:18:55 -07:00
Edward Salter
daa51f9740 Fix: format Romm statistics (#3358) 2024-04-23 14:13:53 -07:00
Ameer Abdallah
340424391f Enhancement: add bitrate precision config option for speedtest-tracker (#3354)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-04-22 21:20:08 -07:00
Ameer Abdallah
312e97d18b Enhancement: additional tautulli jellyfin emby configuration options (#3350) 2024-04-22 17:49:19 -07:00
Liam Dyer
f4fc30cd9f Documentation: update Authentik suggested permissions (#3349) 2024-04-22 13:59:23 -07:00
Nuno Alexandre
595049f7fc Documentation: clarify uptime kuma slug (#3345)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-04-22 12:33:35 -07:00
shamoon
79e3eb9c90 Documentation: fix docker stats link 2024-04-21 07:12:49 -07:00
David Hirsch
c95837f54e Enhancement: configurable CPU temp scale (#3332)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-04-19 16:32:14 -07:00
lavavex
068e664f16 Documentation: correct Medusa link (#3320) 2024-04-17 17:00:37 -07:00
github-actions[bot]
12ec1cfdcb New Crowdin translations by GitHub Action (#3270)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-04-17 01:42:55 -07:00
shamoon
303a62369f Fix: pihole ads_percentage_today sometimes returned as string (#3313) 2024-04-16 15:50:32 -07:00
shamoon
034f6d29d6 Docs: show carbon ads on more pages too 2024-04-15 12:53:15 -07:00
Ben Phelps
60098d3909 Docs: move Carbon ads to sidebar (#3302) 2024-04-15 12:20:39 -07:00
Ben Phelps
2c68f1e7ee place carbon ads in docs (#3296)
* place carbon ads in docs

* fix lint

* keep 4 space tabs
2024-04-15 15:59:30 +03:00
brikim
bfd392026d Enhancement: option to show user for Tautulli and Emby/Jellyfin widgets (#3287)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-04-12 20:33:40 -07:00
shamoon
c18fd02c8e Fix typo in crowdsec docs 2024-04-08 15:19:35 -07:00
github-actions[bot]
ffad2b890e New Crowdin translations by GitHub Action (#3199)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-04-08 10:20:52 -07:00
shamoon
4239e8fe97 Update contributing / development guidelines 2024-04-08 08:11:55 -07:00
shamoon
f82a122e26 Fix site monitor with error 2024-04-06 20:00:16 -07:00
shamoon
d49a06efd9 Fix: rename pialert to netalertx (#3253) 2024-04-06 17:35:12 -07:00
mrmorganmurphy
9904c2db2f Documentation: update diskstation instructions (#3230) 2024-04-03 10:03:12 -07:00
XavierDupuis
60db01cc57 Documentation: fix allowed fields uniformity (#3224) 2024-04-02 15:42:34 -07:00
rgon10
4e69ea6088 Fix: TrueNAS Core support for pool stats (#3206)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-04-01 14:32:39 -07:00
dependabot[bot]
268d8efa0e Chore(deps-dev): Bump tailwindcss from 3.4.1 to 3.4.3 (#3214)
Bumps [tailwindcss](https://github.com/tailwindlabs/tailwindcss) from 3.4.1 to 3.4.3.
- [Release notes](https://github.com/tailwindlabs/tailwindcss/releases)
- [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/v3.4.3/CHANGELOG.md)
- [Commits](https://github.com/tailwindlabs/tailwindcss/compare/v3.4.1...v3.4.3)

---
updated-dependencies:
- dependency-name: tailwindcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 14:18:39 -07:00
dependabot[bot]
43bbb69d53 Chore(deps-dev): Bump eslint-plugin-react from 7.33.2 to 7.34.1 (#3213)
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.33.2 to 7.34.1.
- [Release notes](https://github.com/jsx-eslint/eslint-plugin-react/releases)
- [Changelog](https://github.com/jsx-eslint/eslint-plugin-react/blob/v7.34.1/CHANGELOG.md)
- [Commits](https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.33.2...v7.34.1)

---
updated-dependencies:
- dependency-name: eslint-plugin-react
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 14:18:29 -07:00
dependabot[bot]
cdfb5a11f7 Chore(deps): Bump recharts from 2.12.2 to 2.12.3 (#3215)
Bumps [recharts](https://github.com/recharts/recharts) from 2.12.2 to 2.12.3.
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/recharts/recharts/compare/v2.12.2...v2.12.3)

---
updated-dependencies:
- dependency-name: recharts
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 14:18:07 -07:00
Luca Herrero
2ebcb311e8 Fix: homebridge widget with numeric username or password (#3220) 2024-04-01 14:17:56 -07:00
dependabot[bot]
0d7b77260f Chore(deps-dev): Bump postcss from 8.4.35 to 8.4.38 (#3212)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.35 to 8.4.38.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.35...8.4.38)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 10:18:28 -07:00
dependabot[bot]
6f07acab15 Chore(deps): Bump follow-redirects from 1.15.5 to 1.15.6 (#3211)
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.5 to 1.15.6.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.5...v1.15.6)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 10:17:34 -07:00
shamoon
29447c55ff Fix: remove invalid form attribute (#3210) 2024-04-01 07:49:58 -07:00
Jalin Wang
dd819ad677 Documentation: correct link for Docker automatic service discovery (#3208) 2024-04-01 07:25:14 -07:00
Jalin Wang
212e517ebb Chore: fix ypos in the PR template (#3209)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-04-01 07:23:52 -07:00
shamoon
29ac7bfea7 Feature: Support pi-hole v6 (#3207) 2024-03-31 20:34:46 -07:00
shamoon
b0d57866a0 Fix glances service widgets handling of default version 2024-03-29 06:32:25 -07:00
shamoon
97d193faf1 Fix crowdsec widget with no bans / alerts 2024-03-28 21:50:10 -07:00
shamoon
d4c0e482d3 Feature: crowdsec widget (#3197) 2024-03-28 13:39:40 -07:00
shamoon
def9b27006 Enhancement: support for glances v4 (#3196) 2024-03-28 11:16:00 -05:00
ThorTheStorm
4fe4ae9622 Documentation: Update authentik api key info (#3195)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-03-28 09:51:07 -05:00
github-actions[bot]
0af975b3d9 New Crowdin translations by GitHub Action (#3096)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-03-24 00:09:15 -07:00
shamoon
01a2495e47 Fix: correctly handle direct tab navigation with encoded chars (#3172) 2024-03-23 23:22:27 -07:00
SunnyCloudy
e4b4eba445 Fix: Glances widget display (#3164)
Co-Authored-By: shamoon <4887959+shamoon@users.noreply.github.com>
2024-03-23 23:21:02 -07:00
Dawud
885b2624a8 Enhancement: support Jackett widget with admin password (#3097) (#3165)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-03-23 01:34:07 -07:00
Joseph M
f06214a295 Documentation: note that "issue" permissions are also required for Gitea widget (#3157) 2024-03-21 11:59:31 -07:00
zmweske
7627f9c5a7 Documentation: add info re pfSense API token auth (#3145) 2024-03-20 13:21:56 -07:00
she11sh0cked
556450c8de Fix: log error when getting services from Docker server fails (#3147) 2024-03-20 07:26:11 -07:00
Lukas H
edc38c93e2 Documentation: fix minor typo (#3136) 2024-03-18 15:56:04 -07:00
shamoon
b9e1a514cb Update settings.md 2024-03-17 08:06:49 -07:00
shamoon
7e0fbed06b Remove commented out code 2024-03-15 07:23:19 -07:00
Rob Gonnella
358633638f Documentation: Adds sticky cookie note for k8s multiple replica setups (#3120) 2024-03-14 21:07:35 -07:00
shamoon
fa1d343f2a Documentation: add optional auth to whatsupdocker documentation
Co-Authored-By: zmweske <31971632+zmweske@users.noreply.github.com>
2024-03-14 21:07:35 -07:00
RoboMagus
247f73f0db Fix: Add alternative 'offline' status to EspHome widget (#3107) 2024-03-11 07:06:27 -07:00
shamoon
54db9ac551 Fix: field parsing fails with docker labels (#3101) 2024-03-10 22:27:38 -07:00
github-actions[bot]
c89c4884b6 New Crowdin translations by GitHub Action (#2708)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-03-10 14:20:36 -07:00
Christian DeLuca
2d5f93668a Feature: Add Homebox widget (#3095)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-03-10 13:24:13 -07:00
Ben Phelps
b5258c5200 Enhancement: Add formatting options to weather widgets (#3093) 2024-03-09 22:52:57 -08:00
shamoon
83d1ea5ec4 Update bug_report.yml 2024-03-08 19:44:12 -08:00
sgrtye
a660b42095 Fix: truncate long process names in glances widget (#3079) 2024-03-08 19:13:36 -08:00
Jon Seager
8b029ac11c Enhancement: support LOG_TARGETS environment variable (#3075) 2024-03-08 19:13:36 -08:00
shamoon
9caede1cc3 Change: default merge pihole blocked fields (#3065) 2024-03-08 19:13:36 -08:00
teffalump
b05b9b1420 Feature: Add tandoor widget (#3060)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-03-08 19:13:36 -08:00
RoboMagus
8e9920a9d8 Feature: ESPHome widget (#2986)
Co-Authored-By: RoboMagus <68224306+RoboMagus@users.noreply.github.com>

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-03-08 19:13:36 -08:00
shamoon
4d68f55dfa Fix: omada widget missing switches field, enforce default and max fields (#3047) 2024-03-08 19:13:36 -08:00
dependabot[bot]
89fe819681 Chore(deps): Bump recharts from 2.12.1 to 2.12.2 (#3043)
Bumps [recharts](https://github.com/recharts/recharts) from 2.12.1 to 2.12.2.
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/recharts/recharts/compare/v2.12.1...v2.12.2)

---
updated-dependencies:
- dependency-name: recharts
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-08 19:13:36 -08:00
dependabot[bot]
bb311ce1a0 Chore(deps-dev): Bump prettier from 3.2.4 to 3.2.5 (#3042)
Bumps [prettier](https://github.com/prettier/prettier) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.2.4...3.2.5)

---
updated-dependencies:
- dependency-name: prettier
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-08 19:13:36 -08:00
shamoon
fc1bf53f8f Fix: info widget gaps (#3038) 2024-03-08 19:13:36 -08:00
shamoon
70f0eb3af6 Minor status refactoring 2024-03-08 19:13:36 -08:00
RoboMagus
5892d7407c Fix: docker status labels colors (#3028)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-29 07:34:26 -08:00
russkinz
f0910a9e8b Documentation: fix openwrt docs (#3016)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-28 12:32:27 -08:00
shamoon
e92ccc30ba Fix: only log errors directly if exist 2024-02-28 11:44:32 -08:00
shamoon
68e4b98ddb Fix: support cyrillic characters in quicklaunch (#3020) 2024-02-28 01:46:06 -08:00
shamoon
abce57379d Documentation: fix repository typo (#3013) 2024-02-27 00:32:05 -08:00
dependabot[bot]
da57b2779a Chore(deps): Bump recharts from 2.11.0 to 2.12.1 (#3002)
Bumps [recharts](https://github.com/recharts/recharts) from 2.11.0 to 2.12.1.
- [Release notes](https://github.com/recharts/recharts/releases)
- [Changelog](https://github.com/recharts/recharts/blob/3.x/CHANGELOG.md)
- [Commits](https://github.com/recharts/recharts/compare/v2.11...v2.12.1)

---
updated-dependencies:
- dependency-name: recharts
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-24 15:31:40 -08:00
dependabot[bot]
708a67ad03 Chore(deps-dev): Bump postcss from 8.4.33 to 8.4.35 (#3001)
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.33 to 8.4.35.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.33...8.4.35)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-24 15:30:56 -08:00
dependabot[bot]
b07221b8e9 Chore(deps-dev): Bump eslint from 8.56.0 to 8.57.0 (#3000)
Bumps [eslint](https://github.com/eslint/eslint) from 8.56.0 to 8.57.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.56.0...v8.57.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-24 15:30:40 -08:00
dependabot[bot]
c5876f22fe Chore(deps): Bump systeminformation from 5.21.24 to 5.22.0 (#2999)
Bumps [systeminformation](https://github.com/sebhildebrandt/systeminformation) from 5.21.24 to 5.22.0.
- [Changelog](https://github.com/sebhildebrandt/systeminformation/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sebhildebrandt/systeminformation/compare/v5.21.24...v5.22.0)

---
updated-dependencies:
- dependency-name: systeminformation
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-24 15:30:03 -08:00
flightcode
000d06aa04 Documentation: Fix link in Home Assistant service widget docs (#2994) 2024-02-24 15:26:05 -08:00
shamoon
5a19640c83 Move to discussion-first issues 2024-02-24 15:26:05 -08:00
shamoon
1893c9b8da Fix: Google search suggestions with accented characters (#2993) 2024-02-24 15:26:05 -08:00
shamoon
67d99a5512 Change: use byterate for Sabnzbd (#2990) 2024-02-24 15:26:05 -08:00
Zerebos
8157b03380 Feature: stash widget (#2238) (#2984) 2024-02-24 15:26:05 -08:00
RoboMagus
45a9e2a6da Documentation: fix plant-it docs (#2987)
* Fix plant-it docs

* Run pre-commit

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-24 15:26:05 -08:00
shamoon
fce694e2b9 Feature: add gitea widget (#2968) 2024-02-24 15:26:05 -08:00
shamoon
291bf422f9 Enhancement: support different bytes multipliers for disk space for resources / glances and metrics widgets (#2966) 2024-02-24 15:26:05 -08:00
shamoon
3fae59c2bd Add read-only note for development 2024-02-24 15:26:05 -08:00
Massimiliano De Luise
619f365c92 Feature: Plant-it widget (#2941) 2024-02-19 17:54:28 -08:00
shamoon
841c74d58a Add info re automatic closing 2024-02-19 06:09:07 -08:00
Steven de Jong
b0dd810b49 Enhancement: allow api auth with moonraker service (#2934)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-18 14:14:23 -08:00
shamoon
36585a2c44 Close unsupported feature requests 2024-02-17 21:56:31 -08:00
Derek Stotz
c268739e1f Enhancement: Add requestBody param for customapi (#2921) 2024-02-16 20:25:31 -08:00
Derek Stotz
0d47dcaac7 Enhancement: Add enablePools option to TrueNAS service widget (#2908)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-15 21:38:55 -08:00
Benedek Kozma
a251c34059 Change: move custom.css linking to head to avoid FOUC (#2916)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-15 15:52:59 -08:00
sgrtye
4dca4cc892 Feature: Add list view for custom api (#2891)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-14 23:18:37 -08:00
Benedek Kozma
ea0310548a Change: use Script component instead of async script for custom.js (#2901) 2024-02-13 16:42:50 -08:00
shamoon
87d1ea4f2e Update services.md 2024-02-13 10:54:34 -08:00
shamoon
35af27f209 Update ical.jsx 2024-02-10 21:37:59 -08:00
SASAGAWA Kiyoshi
1c529c0e7d Fix: iCal integration fails with all-day events (#2883)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-10 12:30:37 -08:00
Florian Hye
187291eeca Chore: add Python requirements and prettier to devcontaier (#2878) 2024-02-09 11:46:56 -08:00
Lawton Manning
eda5b0f0cf Fix: healthchecks widget does not respect fields parameter (#2875) 2024-02-09 11:28:13 -08:00
Florian Hye
3b76772f81 Fix: search opens when losing focus, prevent unnecessary search API calls (#2867)
Co-Authored-By: shamoon <4887959+shamoon@users.noreply.github.com>
2024-02-09 11:28:13 -08:00
Florian Hye
3955743590 Enhancement: initially collapsed option for layout groups 2024-02-08 10:11:35 -08:00
dependabot[bot]
74a52d9288 Chore(deps): Bump pre-commit/action from 3.0.0 to 3.0.1 (#2854)
Bumps [pre-commit/action](https://github.com/pre-commit/action) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/pre-commit/action/releases)
- [Commits](https://github.com/pre-commit/action/compare/v3.0.0...v3.0.1)

---
updated-dependencies:
- dependency-name: pre-commit/action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-07 09:34:21 -08:00
shamoon
fc7ce0a253 Update CONTRIBUTING.md 2024-02-06 08:36:01 -08:00
shamoon
ea6192e8c6 Fix: Increase icon z-index (#2842) 2024-02-06 07:11:17 -08:00
shamoon
8eb61ef9ff Unifi widget: Show a more helpful error if specified site not found (#2839) 2024-02-05 14:46:17 -08:00
shamoon
259d0f1bb9 Update repo-maintenance.yml 2024-02-05 11:21:31 -08:00
shamoon
868335fa4f Add repo maintenance workflow 2024-02-05 01:34:27 -08:00
しぐれ
888349bd64 Documentation: fix abandoned PiAlert repo (#2819) 2024-02-02 07:22:21 -08:00
dependabot[bot]
b9b9fb04aa Chore(deps-dev): Bump tailwind-scrollbar from 2.1.0 to 3.0.5 (#2813)
Bumps [tailwind-scrollbar](https://github.com/adoxography/tailwind-scrollbar) from 2.1.0 to 3.0.5.
- [Release notes](https://github.com/adoxography/tailwind-scrollbar/releases)
- [Commits](https://github.com/adoxography/tailwind-scrollbar/compare/v2.1.0...v3.0.5)

---
updated-dependencies:
- dependency-name: tailwind-scrollbar
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 17:36:55 -08:00
shamoon
4af2f9c229 Revert "Chore(deps): Bump react-i18next from 11.18.6 to 12.3.1 (#2810)"
This reverts commit bdbc3cb0ba.
2024-02-01 17:36:15 -08:00
dependabot[bot]
1a724732c8 Chore(deps): Bump dockerode from 3.3.5 to 4.0.2 (#2812)
Bumps [dockerode](https://github.com/apocas/dockerode) from 3.3.5 to 4.0.2.
- [Release notes](https://github.com/apocas/dockerode/releases)
- [Commits](https://github.com/apocas/dockerode/compare/v3.3.5...v4.0.2)

---
updated-dependencies:
- dependency-name: dockerode
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 11:43:08 -08:00
dependabot[bot]
bdbc3cb0ba Chore(deps): Bump react-i18next from 11.18.6 to 12.3.1 (#2810)
Bumps [react-i18next](https://github.com/i18next/react-i18next) from 11.18.6 to 12.3.1.
- [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md)
- [Commits](https://github.com/i18next/react-i18next/compare/v11.18.6...v12.3.1)

---
updated-dependencies:
- dependency-name: react-i18next
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 11:31:47 -08:00
Jack Bailey
6c741c620c Fix: Format Immich totals (#2814) 2024-02-01 09:38:47 -08:00
dependabot[bot]
ee38b7c757 Chore(deps): Bump compare-versions from 5.0.3 to 6.1.0 (#2809)
Bumps [compare-versions](https://github.com/omichelsen/compare-versions) from 5.0.3 to 6.1.0.
- [Changelog](https://github.com/omichelsen/compare-versions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/omichelsen/compare-versions/compare/v5.0.3...v6.1.0)

---
updated-dependencies:
- dependency-name: compare-versions
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 09:38:20 -08:00
shamoon
64ac19859c Fix quicklaunch failing to load without search provider 2024-02-01 01:32:47 -08:00
shamoon
20d1d8f914 Update packages, add dependabot for npm (#2803) 2024-02-01 01:05:02 -08:00
shamoon
ef39fce1de Update FUNDING.yml 2024-02-01 00:53:40 -08:00
shamoon
1ddd528bd7 Fix quick launch not opening with accented characters, decoding of characters in suggestions (#2802) 2024-02-01 00:42:22 -08:00
shamoon
578def33f5 Update quicklaunch.jsx 2024-01-31 23:44:12 -08:00
shamoon
e652d8faa4 Fix some quicklaunch size quirks 2024-01-31 23:41:48 -08:00
René-Marc Simard
61ae891a1e Documentation: specify role requirement in Kavita documentation (#2798) 2024-01-31 19:27:34 -08:00
Florian Hye
d5af7eda63 Feature: search suggestions for search and quick launch (#2775)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-01-31 17:17:42 -08:00
shamoon
f0635db51d Add API key to jackett 2024-01-30 21:26:04 -08:00
NotSimone
aa882f9574 Documentation: fix gluetun typo (#2787) 2024-01-29 16:55:16 -08:00
Dan Geraghty
86740c6d7b Feature: OpenWRT service widget (#2782)
* Feat: OpenWRT widget implementation

* Update proxy.js

* fixes from review

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-01-29 12:33:31 -08:00
shamoon
d20cdbb9ab Update troubleshooting.md 2024-01-27 23:51:43 -08:00
shamoon
98af4ffaa3 Update troubleshooting.md 2024-01-27 23:50:36 -08:00
shamoon
0b475797da Update README.md 2024-01-27 23:46:39 -08:00
shamoon
fe1928870b Move to discussions 2024-01-27 23:38:56 -08:00
shamoon
98499cdf69 Add missing unifi fields
Co-Authored-By: JeffRandall <1891490+JeffRandall@users.noreply.github.com>
2024-01-27 15:25:34 -08:00
shamoon
7230b622a3 Update FUNDING.yml 2024-01-26 21:52:26 -08:00
JeffRandall
05a7c0ff56 Enhancement: extend hdhomerun widget (#2757) 2024-01-26 10:57:08 -08:00
shamoon
23e697ed4a Fix romm widget name
Closes #2762
2024-01-26 09:12:56 -08:00
shamoon
99e1e3de3b Fix: iCal integration use event data hash instead of uid (#2758) 2024-01-26 01:14:43 -08:00
shamoon
a6e4786fc4 Update FUNDING.yml 2024-01-25 17:03:41 -08:00
shamoon
b74cad806b Update FUNDING.yml 2024-01-25 17:02:53 -08:00
shamoon
a01f60ec25 Make service links less weird 2024-01-24 14:27:47 -08:00
shamoon
89f4862545 Update development.md 2024-01-24 01:04:43 -08:00
Tharic99
5d550b8597 Documentation: add project links to service widget docs (#2737) 2024-01-22 10:26:15 -08:00
Arden Rasmussen
e803c3bf16 Feature: Added gatus uptime widget (#2729) 2024-01-21 21:22:19 -08:00
shamoon
58fa63f7cb Update FUNDING.yml 2024-01-21 20:54:09 -08:00
shamoon
a4657037c6 Documentation: Fix netdata docs 2024-01-21 01:03:05 -08:00
shamoon
cd29cbbdce Fix broken docker service discovery in 0.8.5 (#2717) 2024-01-20 22:12:30 -08:00
Mark Lavi
44b161799b Documentation: improve bookmarks documentation and working examples (#2713) 2024-01-20 18:35:54 -08:00
stephenc01
e206c86de8 Documentation: fix typo in coin-market-cap widget docs (#2711) 2024-01-20 15:52:46 -08:00
shamoon
71b919bbe2 Documentation: Add username / pw to romm widget 2024-01-20 10:02:45 -08:00
github-actions[bot]
8684292d02 New Crowdin translations by GitHub Action (#2534)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-01-20 00:16:55 -08:00
shamoon
cca747c0fe Fix: Calendar widget iCal integration catch RRule failures (#2706) 2024-01-20 00:15:45 -08:00
Karl0ss
f6ca3f57f7 Feature: Romm Widget (#2663)
---------

Co-authored-by: Karl Hudgell <karl.hudgell@bjss.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-01-19 23:36:44 -08:00
Gianfranco
0cdc354ead Documentation: add info for obtaining immich API keys (#2703) 2024-01-19 20:07:55 -08:00
Luke Hagar
a24b5d2fd1 Fix: remove date time load delay (#2675) 2024-01-18 14:58:42 -08:00
Mitchell
7f621ed518 Feature: Netdata service widget (#2672) 2024-01-17 16:01:20 -08:00
Denis Papec
72efd9a08d Fix: calendar timezone performance improvements (#2668) 2024-01-17 15:00:51 -08:00
shamoon
93dc6db4ef Remove mkdocs-material insiders 2024-01-17 09:35:05 -08:00
0phoff
7837864841 Enhancement: locale option for date & relativeDate format (#2658) 2024-01-17 09:23:11 -08:00
dependabot[bot]
641eb25047 Chore(deps): Bump actions/cache from 3 to 4 (#2662)
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-17 09:09:28 -08:00
shamoon
1f905bc241 Fix: constrain usage bar to 0-100 (#2650) 2024-01-16 16:07:20 -08:00
shamoon
d61d0eb88f Fix configured service weight = 0 (#2628) 2024-01-15 06:30:46 -08:00
Denis Papec
1f2081af5d Add option to specify a timezone for events (#2623)
* Add option to specify a timezone for events

* Amend message, update docs
2024-01-14 18:01:10 -08:00
Denis Papec
674d7f2e01 Fix for events repeating on mothly basis and old events that are shown as occuring today (#2624) 2024-01-14 13:49:28 -08:00
shamoon
9984e7894f Fix lint error for service anchors 2024-01-10 14:26:40 -08:00
shamoon
66a1368aa3 Fix: sort ical events in monthly view (#2604) 2024-01-10 14:24:38 -08:00
shamoon
8f121d675c Fix custom API docker labels example 2024-01-10 11:16:48 -08:00
Metin Yazici
1103df2b64 Feature: support multiple checks for healthchecks widget (#2580)
* Change healthchecks online/offline with the original up/down

* Add group statistics to healthcheck widget

* Update healthchecks docs

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2024-01-07 09:17:07 -08:00
shamoon
50c989e36a Fix: unique element key generation in quicklaunch and services (#2586) 2024-01-06 09:22:25 -08:00
shamoon
1c47d9d70e Fix: pass user/pass as strings with OMV proxy (#2555) 2023-12-31 20:18:17 -08:00
shamoon
aa7cfa58ff Better handle malformed docker labels (#2552) 2023-12-31 10:48:10 -08:00
Brandon McFarlin
ccad62b5c2 Fix: Peanut widget v2 api compatibility (#2526) 2023-12-27 07:29:27 -08:00
github-actions[bot]
32f28d32dd New Crowdin translations by GitHub Action (#2455)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2023-12-26 20:22:43 -08:00
myztillx
59ccc3a215 Added Option for Grafana Alertmanager (#2498)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-12-26 20:21:57 -08:00
William
4d6754e4a7 Chore: bump react-icons to 4.12.0 (#2507) 2023-12-22 07:38:58 -08:00
shamoon
e0886ef715 Revert "Remove groups plugin for now"
This reverts commit afd49d5327.
2023-12-18 08:13:45 -08:00
HaveAGitGat
b9f1ddd284 Fix: Tdarr widget should use viewable count if exists (#2492) 2023-12-18 00:39:30 -08:00
shamoon
afd49d5327 Remove groups plugin for now 2023-12-17 11:51:06 -08:00
shamoon
c3e0627d62 Try updating mike, changing docs action cache_id 2023-12-17 11:28:53 -08:00
Atropos
eea20defb1 Enhancement: support instanceName filtering for kubernetes deployment (#2488)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-12-17 10:55:40 -08:00
shamoon
30e4a2ae3a Include truenas in uptime refactor 2023-12-15 14:12:14 -08:00
shamoon
e768b1c83a Unify uptime formatting (#2483) 2023-12-15 14:08:37 -08:00
Thorben
24e25e8953 Enhancement: fritzbox uptime display (#2481) 2023-12-15 13:33:29 -08:00
Sean Kelly
aeaf36e0cf Fix changedetection diffs only showing up when it was the first time they were checked (#2479) 2023-12-14 19:07:52 -08:00
CosminPerRam
3bddfdfe3b Chore: update gamedig dep to 4.3.0 (#2474) 2023-12-11 14:11:44 -08:00
shamoon
15a12763f8 Fix: calendar widget radarr integration API params invalid (#2470) 2023-12-11 08:41:45 -08:00
shamoon
25767ba3c7 Fix: moonraker widget error when not printing (#2468) 2023-12-11 07:32:40 -08:00
Alice Lee
bd6f24d82a Documentation: Fix link to widgets page in docs (#2466) 2023-12-11 07:10:46 -08:00
Thorben
d38b313177 Fix: fritzbox error when response contains empty values (#2463) 2023-12-10 12:21:53 -08:00
Brandon McFarlin
bccd73fe2d Feature: Add peaNUT Widget (#2450)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-12-10 09:56:35 -08:00
Denis Papec
a72ccb6d27 Fix: show recurring and multi-day events (#2451) 2023-12-10 07:19:43 -08:00
Thorben
0a3d552114 Fix typo in fritzbox documentation (#2457) 2023-12-10 07:06:52 -08:00
github-actions[bot]
44b7de794b New Crowdin translations by GitHub Action (#2423)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2023-12-09 22:00:27 -08:00
shamoon
d855e2b396 Fix: Increase kubernetes cpu/mem usage scale (#2453) 2023-12-09 21:27:02 -08:00
shamoon
49281b30c2 Fix block label translation in strelaysrv widget 2023-12-06 20:54:32 -08:00
Lawton Manning
914cd71c76 Fix: remove translation on block labels in healthchecks widget (#2440) 2023-12-06 20:53:13 -08:00
José Marques
5e01eb4a8d Feature: setting for equal height cards (#2432) 2023-12-06 14:52:02 -08:00
dependabot[bot]
7edcf6b047 Bump actions/setup-python from 4 to 5 (#2435)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-06 09:15:14 -08:00
Thorben
0f3fc77ddf Enhancement: improve fritzbox proxy perfomance (#2429)
---------

Co-authored-by: Thorben Grove <thorben.grove@tui.de>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-12-05 00:44:13 -08:00
Ashley Buckingham
77ed445da1 Documentation: correct doc link in skeleton yaml (#2428) 2023-12-04 16:03:58 -08:00
shamoon
708e6fa789 Update crowdin.yml 2023-12-03 07:34:52 -08:00
shamoon
9afa40a6b7 Chore: migrate crowdin to GHA (#2421) 2023-12-03 07:33:43 -08:00
Kamil Markowicz
04ae39e144 Documentation: Update minimum calibre-web version reference (#2412)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-12-01 19:38:31 -08:00
Sean Kelly
a3e00e96c9 Change: changedetection.io widget dont count diff if viewed (#2401) 2023-11-29 13:06:06 -08:00
SOOROS
251881a051 Documentation: add semicolons to iframe example allow option (#2400) 2023-11-29 11:56:18 -08:00
shamoon
9112030275 Fix: quote background image URL
See #2396
2023-11-27 20:06:39 -08:00
shamoon
2f89b12f0d Revert "Fix: revert to using initialSettings in head"
This reverts commit e28faf6b98.
2023-11-27 19:04:50 -08:00
shamoon
b2a914eb2a Update guidelines 2023-11-27 08:19:13 -08:00
Thorben
4c45c6453f Feature: Fritz!Box Widget (#2387)
* Feature: Fritz!Box Widget

* Use i18n

* code style & formatting

---------

Co-authored-by: Thorben Grove <thorben.grove@tui.de>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-11-26 20:48:54 -08:00
shamoon
b3414fc35f Documentation: Fix services yaml file name 2023-11-26 13:24:03 -08:00
COxDE
259f0f8ce9 Documentation: fix typo in widgets file name (#2393) 2023-11-26 13:21:59 -08:00
shamoon
97218e9cea Update PULL_REQUEST_TEMPLATE.md 2023-11-26 10:03:35 -08:00
Nick
3e0054069d Change Unifi Widget "System Uptime" to "Uptime" (#2389)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-11-26 07:20:13 -08:00
shamoon
a3fcc3ef51 Hack reload glime styles 2023-11-25 10:48:40 -08:00
shamoon
dd5144f03a Chore: enable swc, again (#2385) 2023-11-25 10:25:24 -08:00
shamoon
90c12abf87 Revert "Chore: enable swc (#2311)"
This reverts commit 0931f5c5a6.
2023-11-25 09:29:18 -08:00
shamoon
507e72407f Add AI bot info to docs 2023-11-25 08:54:38 -08:00
Ben Phelps
5bc6730e8b New Crowdin updates (#2295) 2023-11-25 08:23:55 -08:00
shamoon
110ebe920e Documentation: Add ai bot (#2383) 2023-11-25 08:22:16 -08:00
Denis Papec
95d66707f5 Feature: Implement iCal integration for calendar, improve styling (#2376)
* Feature: Implement iCal integration, improve calendar/agenda styling

* Delete calendar.jsx

* Calendar proxy handler

* code style

* Add some basic error handling

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-11-25 08:17:25 -08:00
Denis Papec
518ed7fc4e Feature: Support previous days option in Calendar Agenda (#2375)
Signed-off-by: Denis Papec <denis.papec@gmail.com>
2023-11-24 20:32:38 -08:00
Denis Papec
acafbb5100 Enhancement: Improvements to calendar Radarr release logic (#2374)
Signed-off-by: Denis Papec <denis.papec@gmail.com>
2023-11-24 20:32:04 -08:00
shamoon
fb9ebf18ba Fix: show mem / cpu stats for k8s partial health status (#2378) 2023-11-24 20:29:23 -08:00
shamoon
6b35443100 Fix: dont ignore empty string for kubernetes podSelector (#2372) 2023-11-24 16:15:42 -08:00
nioKi
c2729e302d Enhancement: Add configurable refresh interval and max points for glances services (#2363)
---------

Co-authored-by: Quentin de Grandmaison <quentin.degrandmaison@7speaking.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-11-22 12:35:54 -08:00
Joe Stump
e98b5e2233 Documentation: Add details to Gluetun widget docs (#2357)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-11-21 11:41:56 -08:00
shamoon
0931f5c5a6 Chore: enable swc (#2311) 2023-11-20 19:34:56 -08:00
Timo
6d21ea9ba3 Enhancement: Add service discovery labels support for multiple homepage instances (#2340) 2023-11-20 19:27:19 -08:00
Aesop7
5bf6f30e2b Documentation: add Longhorn example (#2353) 2023-11-20 07:35:21 -08:00
shamoon
66fbe9f670 Fix: Disable override white bkgd with card blur (#2336) 2023-11-17 07:26:22 -08:00
shamoon
6316de6fa6 Fix: Lint docker stats throughput PR 2023-11-17 00:03:56 -08:00
shamoon
7f50f6cfaa Fix: sum throughput data for docker stats (#2334) 2023-11-16 23:55:04 -08:00
shamoon
c9991bc2a2 Fix: dont set pinned icon if custom favicon (#2326) 2023-11-14 22:10:37 -08:00
shamoon
e28faf6b98 Fix: revert to using initialSettings in head 2023-11-14 22:09:18 -08:00
Faqar
17b9b7e523 Enhancement: open the searchbox on paste (#2320)
* Open the searchbox when detecting Ctrl-V.

* support macOS, codestyle

---------

Co-authored-by: Joschka <kontakt@greiner-it.de>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-11-12 19:40:09 -08:00
shamoon
d5608c46c3 Dont push docker for feature builds 2023-11-11 21:46:40 -08:00
shamoon
428680b5df Run ci on feature/ branches 2023-11-11 21:42:13 -08:00
Jorge Benjumea
556cfd19b6 Documentation: fix typo (#2296) 2023-11-10 00:46:56 -08:00
Mohamed Aziz Ben Aissa
fc67e1a986 Feature: Added timeStyle to date format for custom API (#2294)
* Add timeStyle option to custom API date format

* Update documentation
2023-11-09 22:57:14 +02:00
Ben Phelps
dc8bea95ac New translations common.json (Afrikaans) (#2292) 2023-11-09 12:18:39 -08:00
Ben Phelps
2ea0e129f2 New Crowdin updates (#2218) 2023-11-09 08:09:00 -08:00
shamoon
b019295a06 Update services.md 2023-11-08 22:39:23 -08:00
shamoon
5fa790e9fe Use old mike 2023-11-08 22:26:17 -08:00
shamoon
7719ea17be Fix: handle immich v1.85.0 API stats breaking change (#2284) 2023-11-07 23:59:43 -08:00
shamoon
885a4051f3 Fix: support Unifi widget with Unifi OS v3.2.5+ (#2281) 2023-11-07 14:38:26 -08:00
Ingmar Delsink
67f5ee8df5 Fix: Access container memory_stats.stats safely by optional chaining (#2271) (#2272) 2023-11-05 07:39:26 -08:00
Reiss Cashmore
ebd384c62d Feature: iFrame widget (#2261)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-10-31 07:19:57 -07:00
shamoon
5512d05f00 Fix: Respect hideErrors for Calendar widget (#2259) 2023-10-29 20:14:06 -07:00
shamoon
654f16dbb5 Fix: Correct Synology DownloadStation units (#2249) 2023-10-27 14:39:57 -07:00
shamoon
bec1e5fff2 Fix: octoprint error when progress empty (#2247) 2023-10-27 09:29:36 -07:00
shamoon
1da9255578 Fix: authentik users endpoint URL (#2244) 2023-10-26 23:03:52 -07:00
shamoon
cc887214cf Fix: override some colors for white theme (#2242) 2023-10-26 21:59:18 -07:00
shamoon
98c3ca6dac Docs: Update broken links in readme
Closes #2233
2023-10-24 14:09:56 -07:00
Kirill Kuznetsov
3c4818a2b4 Feature: add date formatting option in custom api (#2228) 2023-10-23 16:54:04 -07:00
Avishek Sen
f773e026d5 docs: fix typos (#2222) 2023-10-21 11:42:37 -07:00
shamoon
3f1229555e Fix translation of no events today in calendar
See #2221
2023-10-21 07:48:17 -07:00
Denis Papec
6898faa3de Feature: Added agenda view for calendar, calendar improvements (#2216)
* Feature: Added agenda view for calendar, calendar improvements

* Fix duplicate event keys

* Additional hover on title, not date

* Show date once in list

* Rename monthly view for consistency

* Remove unneeded key props

* CSS cleanup, dont slice title to arbitrary 42 chars which can break column layouts

* Simplify agenda components

* Fix show date once in list

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-10-20 16:31:19 -07:00
shamoon
792f768a7f Feature: true ping, rename old ping to siteMonitor (#2215) 2023-10-20 00:09:33 -07:00
shamoon
0c8c759f8a Enable autoSelectFamily for http(s) requests (#2214) 2023-10-19 14:42:15 -07:00
shamoon
241c981444 Fix tab spacing on mobile (#2209) 2023-10-18 13:25:12 -07:00
shamoon
56349e57e5 Update development.md 2023-10-18 12:53:27 -07:00
shamoon
6763da57a6 Update CONTRIBUTING.md 2023-10-18 12:49:27 -07:00
shamoon
8ec488efbd Revert "Fix: subdirectory deployment (#2205)"
This revers commit b8eda91005
2023-10-18 11:44:26 -07:00
shamoon
9e3bc8e64f Update prettier package to v3 2023-10-18 09:49:33 -07:00
shamoon
29827b1c70 Add pre-commit to ci 2023-10-18 09:49:33 -07:00
shamoon
f48cf0dc9f Add instructions to dev docs for pre-commit 2023-10-18 09:49:33 -07:00
shamoon
19c25713c4 Run pre-commit hooks over existing codebase
Co-Authored-By: Ben Phelps <ben@phelps.io>
2023-10-18 09:49:33 -07:00
shamoon
fa50bbad9c Add pre-commit with prettier 2023-10-18 09:49:33 -07:00
Ben Phelps
8e6a169b50 New translations common.json (German) (#2208) 2023-10-18 09:00:58 -07:00
shamoon
4248db7f21 k8s: Support app ingress annotation (#2198) 2023-10-18 08:57:10 -07:00
Isidro Osoria
b8eda91005 Fix: subdirectory deployment (#2205) 2023-10-18 08:49:42 -07:00
Ben Phelps
5f7891d8db New translations common.json (French) (#2206) 2023-10-17 23:29:26 -07:00
Ben Phelps
b14abc2642 New Crowdin updates (#2144)
* New translations common.json (Dutch)

* New translations common.json (Dutch)

* New translations common.json (Polish)

* New translations common.json (Danish)

* New translations common.json (French)

* New translations common.json (German)

* New translations common.json (Chinese Simplified)

* New translations common.json (Chinese Simplified)

* New translations common.json (Dutch)

* New translations common.json (Dutch)

* New translations common.json (German)

* New translations common.json (German)

* New translations common.json (German)

* New translations common.json (Spanish)

* New translations common.json (Danish)

* New translations common.json (Italian)

* New translations common.json (Dutch)

* New translations common.json (Dutch)

* New translations common.json (Japanese)

* New translations common.json (Japanese)
2023-10-17 22:55:01 -07:00
icyleaf
8ea2ccf110 Enhancement: support dot-notated field properties in docker labels (#2195) 2023-10-17 22:54:17 -07:00
shamoon
cbad95bf9c Fix dot status when exited (#2204) 2023-10-17 17:47:51 -07:00
shamoon
47db8be7bb Fix glances network calculation (#2201) 2023-10-17 13:31:02 -07:00
Preetham Kulai
2f4985b977 Enhancement: mjpeg stream widget placeholder image (#2192)
* added placeholder image on stream load error

* updated placeholder image to tv static animation

* Revert "updated placeholder image to tv static animation"

This reverts commit f0efdd8833.

* Inline animated tv static image

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-10-16 13:12:28 -07:00
karpaterna
8d34dc5725 Documentation: add defaultinterval option for coinmarketcap (#2191) 2023-10-15 10:09:48 -07:00
shamoon
31c33f4f32 Specify src in jsconfig 2023-10-14 12:44:37 -07:00
shamoon
ef3e98285e Fix references to podSelector in k8s manifests (#2187) 2023-10-13 19:34:19 -07:00
smoothlystable
e012ea6050 Changedetection.io: Skip checking for diff if watch never had a change (#2186)
* Only check diff in there has ever been a change

* Code style

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-10-13 09:02:36 -07:00
Ado Nishimura
dcc2f3e8f3 Fix: proxmox CPU/MEM NaN when cluster has offline nodes (#2185) 2023-10-13 03:49:16 -07:00
shamoon
94718db22b Fix troubleshooting indentation 2023-10-12 13:12:11 -07:00
shamoon
c591049a1a Fix glances doc image assets 2023-10-12 11:53:15 -07:00
shamoon
fd04e93d68 Update k8s deployment with specific files (#2178) 2023-10-12 08:35:08 -07:00
patopesto
29b7d5756c Fix: possible sonarr widget queue duplicates (#2171) 2023-10-09 21:05:29 -07:00
shamoon
596e5c9b84 Fix glances fs metric for disks with colon (#2170) 2023-10-09 19:43:03 -07:00
shamoon
7ea1d0dd47 Fix calculation for docker container memory usage (#2167) 2023-10-08 10:26:20 -07:00
shamoon
4a04347518 Update README.md 2023-10-08 07:22:43 -07:00
shamoon
7bbb35db13 Update README.md 2023-10-08 06:46:20 -07:00
shamoon
d1d81e5753 Fix: emby / jellyfin isVideoDirect (#2156) 2023-10-07 20:58:05 -07:00
shamoon
4c2ecb9b0e Add hdhomerun 2023-10-06 21:01:37 -07:00
Ben Phelps
1066d17f70 Update translations.md (#2142)
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-10-06 13:16:20 +00:00
shamoon
462a8e001f Change weblate links to crowdin 2023-10-06 00:04:51 -07:00
Ben Phelps
0eab49a449 New translations common.json (Yue) (#2132) 2023-10-05 23:56:05 +00:00
shamoon
24121cd5f0 run ci on merge_group 2023-10-05 15:17:05 -07:00
Lavender Shannon
8aeded4774 Update gluetun.md (#2137)
Fixed link to control server documentation
2023-10-05 22:14:37 +00:00
Denis Papec
40522fbb96 Fix: Quicklaunch shows also services without a url (#2136)
* Fix: Quicklaunch show only services with a link

Signed-off-by: Denis Papec <denis.papec@gmail.com>

* Revert "Fix: Quicklaunch show only services with a link"

This reverts commit 30ee825611.

* Filter only bookmarks and services with href

---------

Signed-off-by: Denis Papec <denis.papec@gmail.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-10-05 22:14:25 +00:00
Ben Phelps
76cbb6e2ed Revert "New Crowdin updates (#2124)" (#2131)
This reverts commit b29c0f809c.
2023-10-05 10:02:01 -07:00
Ben Phelps
b29c0f809c New Crowdin updates (#2124) 2023-10-05 09:49:10 -07:00
shamoon
4f41be512c Include tailwind bg-black/white, greedy ping regex, adjust position 2023-10-05 09:28:43 -07:00
shamoon
b765330b4a Fix: dot visibility in some cases, translation strings (#2129) 2023-10-05 07:19:20 -07:00
Ben Phelps
ed3055ae1b Update Crowdin configuration file 2023-10-05 11:19:02 +03:00
Ben Phelps
5460f89cc9 Update Crowdin configuration file 2023-10-05 11:07:44 +03:00
Ben Phelps
29018873f5 Update Crowdin configuration file 2023-10-05 10:37:26 +03:00
Anonymous
11cacfb823 Translated using Weblate (Basque)
Currently translated at 6.2% (34 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-10-05 09:29:21 +02:00
Anonymous
eddec4adc2 Translated using Weblate (Indonesian)
Currently translated at 4.4% (24 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-10-05 09:29:21 +02:00
Anonymous
2faf51b4c0 Translated using Weblate (Slovenian)
Currently translated at 95.9% (521 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-10-05 09:29:21 +02:00
Anonymous
891c387062 Translated using Weblate (Greek)
Currently translated at 33.3% (181 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-10-05 09:29:21 +02:00
Anonymous
3b2b6cc064 Translated using Weblate (Korean)
Currently translated at 31.8% (173 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-10-05 09:29:20 +02:00
Anonymous
83a5d1b17a Translated using Weblate (Slovak)
Currently translated at 23.7% (129 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-10-05 09:29:20 +02:00
Anonymous
29b0240abd Translated using Weblate (Thai)
Currently translated at 8.8% (48 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-10-05 09:29:20 +02:00
Anonymous
8ad1f9f422 Translated using Weblate (Latvian)
Currently translated at 21.7% (118 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-10-05 09:29:20 +02:00
Anonymous
ea15a1b9e5 Translated using Weblate (Japanese)
Currently translated at 93.1% (506 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-10-05 09:29:20 +02:00
Anonymous
691ed78e75 Translated using Weblate (Ukrainian)
Currently translated at 93.1% (506 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-10-05 09:29:20 +02:00
Anonymous
5f58cb285d Translated using Weblate (Esperanto)
Currently translated at 26.7% (145 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-10-05 09:29:20 +02:00
Anonymous
a6696700b7 Translated using Weblate (Hindi)
Currently translated at 1.8% (10 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-10-05 09:29:19 +02:00
Anonymous
985ca4ae84 Translated using Weblate (Malay)
Currently translated at 46.4% (252 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-10-05 09:29:19 +02:00
Anonymous
ebda0f7b70 Translated using Weblate (Danish)
Currently translated at 95.9% (521 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-10-05 09:29:19 +02:00
Anonymous
8e7723b51d Translated using Weblate (Czech)
Currently translated at 81.7% (444 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-10-05 09:29:19 +02:00
Anonymous
24635268a0 Translated using Weblate (Arabic)
Currently translated at 48.2% (262 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-10-05 09:29:19 +02:00
Anonymous
729c161271 Translated using Weblate (Serbian)
Currently translated at 1.8% (10 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-10-05 09:29:19 +02:00
Anonymous
69af86eebe Translated using Weblate (Turkish)
Currently translated at 72.3% (393 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-10-05 09:29:18 +02:00
Anonymous
369a996f1f Translated using Weblate (Bulgarian)
Currently translated at 14.9% (81 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-10-05 09:29:18 +02:00
Anonymous
b7b63abee0 Translated using Weblate (Telugu)
Currently translated at 39.7% (216 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-10-05 09:29:18 +02:00
Anonymous
4ba47c426a Translated using Weblate (Finnish)
Currently translated at 32.5% (177 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-10-05 09:29:17 +02:00
Anonymous
29d54b032c Translated using Weblate (Yue (Traditional))
Currently translated at 21.7% (118 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-10-05 09:29:17 +02:00
Anonymous
8791aa8d0d Translated using Weblate (Portuguese (Brazil))
Currently translated at 84.8% (461 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-10-05 09:29:17 +02:00
Anonymous
337ada148c Translated using Weblate (Romanian)
Currently translated at 28.7% (156 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-10-05 09:29:17 +02:00
Anonymous
2c8348f5b5 Translated using Weblate (Hebrew)
Currently translated at 18.6% (101 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-10-05 09:29:17 +02:00
Anonymous
0eeaa99fe3 Translated using Weblate (Hungarian)
Currently translated at 86.7% (471 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-10-05 09:29:16 +02:00
Anonymous
38d2cc7bd7 Translated using Weblate (Croatian)
Currently translated at 86.5% (470 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-10-05 09:29:16 +02:00
Anonymous
759dc9f3d2 Translated using Weblate (Swedish)
Currently translated at 24.3% (132 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-10-05 09:29:16 +02:00
Anonymous
72d9a614fd Translated using Weblate (Polish)
Currently translated at 68.8% (374 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-10-05 09:29:16 +02:00
Anonymous
3d209bf572 Translated using Weblate (Catalan)
Currently translated at 48.0% (261 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-10-05 09:29:16 +02:00
Anonymous
3268db1298 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.3% (534 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-10-05 09:29:16 +02:00
Anonymous
ab4a28d04a Translated using Weblate (Dutch)
Currently translated at 98.3% (534 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-10-05 09:29:15 +02:00
Anonymous
3c1644e18f Translated using Weblate (Vietnamese)
Currently translated at 8.2% (45 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-10-05 09:29:15 +02:00
Anonymous
e1f6ddaeab Translated using Weblate (Norwegian Bokmål)
Currently translated at 14.9% (81 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-10-05 09:29:15 +02:00
Anonymous
826bad8ff4 Translated using Weblate (Italian)
Currently translated at 99.4% (540 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-10-05 09:29:15 +02:00
Anonymous
8aa2bbcdd3 Translated using Weblate (Chinese (Simplified))
Currently translated at 82.8% (450 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-10-05 09:29:15 +02:00
Anonymous
aece2954df Translated using Weblate (Russian)
Currently translated at 79.1% (430 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-10-05 09:29:15 +02:00
Anonymous
5fbdbce79c Translated using Weblate (Portuguese)
Currently translated at 76.4% (415 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-10-05 09:29:14 +02:00
Anonymous
ce2bfd9d21 Translated using Weblate (French)
Currently translated at 99.6% (541 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-10-05 09:29:14 +02:00
Anonymous
df4cc6086c Translated using Weblate (Spanish)
Currently translated at 99.6% (541 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-10-05 09:29:14 +02:00
Anonymous
2c632e2b3e Translated using Weblate (German)
Currently translated at 99.0% (538 of 543 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-10-05 09:29:14 +02:00
shamoon
6de20f0ab6 Update homepage-move.md 2023-10-05 00:26:41 -07:00
shamoon
7434d597c9 Update migration docs 2023-10-05 00:22:51 -07:00
shamoon
59dbc79656 Remove deprecated notification 2023-10-04 23:55:03 -07:00
shamoon
b475f89d85 Migrate more URLs 2023-10-04 23:24:59 -07:00
shamoon
7f9ae3d01b Updating more repo URLs 2023-10-04 23:15:59 -07:00
shamoon
b12d27551a Update repo in docs 2023-10-04 23:12:53 -07:00
shamoon
3cf88d290f Merge branch 'feature-move-notification' 2023-10-04 22:47:11 -07:00
shamoon
9f030d1540 Update ping.jsx 2023-10-04 22:46:31 -07:00
shamoon
e8f6d81d13 Update ping.jsx 2023-10-04 22:37:53 -07:00
shamoon
571f627b3b Enhancement: statusStyle improvements (#2119) 2023-10-04 22:12:57 -07:00
shamoon
861ab32ca3 Update links 2023-10-03 18:55:02 -07:00
shamoon
aa5d24b9e4 Support notification re deprecated repo 2023-10-03 16:17:17 -07:00
shamoon
7adfe2ffd9 Documentation: correct ping statusStyle info 2023-10-01 01:54:06 -07:00
しぐれ
f8d2bb8611 Documentation: remove extra Service Widgets section (#2096) 2023-10-01 01:54:06 -07:00
Gino Cicatiello
892ebb8bd9 Translated using Weblate (Italian)
Currently translated at 99.8% (540 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-10-01 01:54:06 -07:00
Nonoss117
456fe6afc2 Translated using Weblate (French)
Currently translated at 100.0% (541 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-10-01 01:54:06 -07:00
Antonio Sanchez Castellón
ce3fb1abc1 Translated using Weblate (Spanish)
Currently translated at 100.0% (541 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-10-01 01:54:06 -07:00
shamoon
a1e023e240 CI: filter ci by paths, docs ci test vs build, update PR template 2023-10-01 01:54:06 -07:00
Denis Papec
56f46ae85c Enhancement: go to current day when clicking calendar month name (#2091) 2023-09-30 10:01:14 -07:00
Denis Papec
67ebe29db7 Skip workflows if it is fork (#2092)
Signed-off-by: Denis Papec <denis.papec@gmail.com>
2023-09-30 09:59:41 -07:00
Nagy László Zoltán
0c2671ea00 Update services/glances.md with correct info/glances link (#2087) 2023-09-30 07:27:12 -07:00
Ben Phelps
7a6470381b update build for insiders 2023-09-30 15:06:56 +03:00
Ben Phelps
86d3fc4fbb enable social cards, allow building docs without insiders 2023-09-30 15:06:25 +03:00
Ben Phelps
ceeb007ca0 ignore mkdocs cache 2023-09-30 14:39:51 +03:00
shamoon
87113eaac4 Add social icons to footer 2023-09-29 22:38:17 -07:00
shamoon
25cd09a117 Update .gitignore 2023-09-29 17:02:18 -07:00
Ben Phelps
c18caf9ea3 update PR template 2023-09-29 21:41:28 +03:00
Ben Phelps
c5bd85ca93 update edit url 2023-09-29 21:41:16 +03:00
Ben Phelps
c6cbde1288 add docs to readme 2023-09-29 21:41:09 +03:00
Ben Phelps
5902db9597 Create docs-publish.yml 2023-09-29 21:17:43 +03:00
Ben Phelps
47765ee05e add mkdocs 2023-09-29 21:01:11 +03:00
Ben Phelps
b215843b26 Delete CNAME 2023-09-29 17:04:27 +03:00
Ben Phelps
8575aed1eb Create CNAME 2023-09-29 17:04:22 +03:00
Ben Phelps
8893e0b1df Merge pull request #2074 from LucaDev/ping-indicators
New ping-indicator styles
2023-09-29 09:23:42 +03:00
Ben Phelps
89c5d69372 statusStyle 2023-09-29 08:00:53 +03:00
Denis Papec
605042fb38 Added config for first day in week for calendar widget (#2080) 2023-09-28 15:24:37 -07:00
Anonymous
92bef4a283 Translated using Weblate (Basque)
Currently translated at 6.2% (34 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-09-28 18:25:13 +00:00
Anonymous
362696777b Translated using Weblate (Indonesian)
Currently translated at 4.4% (24 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-09-28 18:25:12 +00:00
Anonymous
a7b9d2defb Translated using Weblate (Slovenian)
Currently translated at 96.3% (521 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-09-28 18:25:11 +00:00
Anonymous
d849b323ca Translated using Weblate (Greek)
Currently translated at 33.4% (181 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-09-28 18:25:10 +00:00
Anonymous
a65edb41fe Translated using Weblate (Korean)
Currently translated at 31.9% (173 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-09-28 18:25:10 +00:00
Anonymous
de6a5316ef Translated using Weblate (Slovak)
Currently translated at 23.8% (129 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-09-28 18:25:09 +00:00
Anonymous
ae968f8f81 Translated using Weblate (Thai)
Currently translated at 8.8% (48 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-09-28 18:25:08 +00:00
Anonymous
d555fc627d Translated using Weblate (Latvian)
Currently translated at 21.8% (118 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-09-28 18:25:08 +00:00
Anonymous
3155688e48 Translated using Weblate (Japanese)
Currently translated at 93.5% (506 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-09-28 18:25:07 +00:00
Anonymous
5a6e19ffee Translated using Weblate (Ukrainian)
Currently translated at 93.5% (506 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-09-28 18:25:06 +00:00
Anonymous
ba16ad530e Translated using Weblate (Esperanto)
Currently translated at 26.8% (145 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-09-28 18:25:06 +00:00
Anonymous
a3a49406c6 Translated using Weblate (Hindi)
Currently translated at 1.8% (10 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-09-28 18:25:05 +00:00
Anonymous
3c13855139 Translated using Weblate (Malay)
Currently translated at 46.5% (252 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-09-28 18:25:04 +00:00
Anonymous
133368a5c4 Translated using Weblate (Danish)
Currently translated at 96.3% (521 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-09-28 18:25:04 +00:00
Anonymous
74c2594a21 Translated using Weblate (Czech)
Currently translated at 82.0% (444 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-09-28 18:25:03 +00:00
Anonymous
57265d85e6 Translated using Weblate (Arabic)
Currently translated at 48.4% (262 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-09-28 18:25:02 +00:00
Anonymous
169708c98e Translated using Weblate (Serbian)
Currently translated at 1.8% (10 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-09-28 18:25:02 +00:00
Anonymous
a64b04d0cd Translated using Weblate (Turkish)
Currently translated at 72.6% (393 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-09-28 18:25:01 +00:00
Anonymous
7a091af69b Translated using Weblate (Bulgarian)
Currently translated at 14.9% (81 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-09-28 18:25:00 +00:00
Anonymous
5b0088870d Translated using Weblate (Telugu)
Currently translated at 39.9% (216 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-09-28 18:25:00 +00:00
Anonymous
32d9654024 Translated using Weblate (Finnish)
Currently translated at 32.7% (177 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-09-28 18:24:59 +00:00
Anonymous
41f6343857 Translated using Weblate (Yue (Traditional))
Currently translated at 21.8% (118 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-09-28 18:24:58 +00:00
Anonymous
7d99eaea33 Translated using Weblate (Portuguese (Brazil))
Currently translated at 85.2% (461 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-09-28 18:24:58 +00:00
Anonymous
96d6d5c88e Translated using Weblate (Romanian)
Currently translated at 28.8% (156 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-09-28 18:24:57 +00:00
Anonymous
6b4284af64 Translated using Weblate (Hebrew)
Currently translated at 18.6% (101 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-09-28 18:24:56 +00:00
Anonymous
dc2890489b Translated using Weblate (Hungarian)
Currently translated at 87.0% (471 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-09-28 18:24:56 +00:00
Anonymous
c88017d9d1 Translated using Weblate (Croatian)
Currently translated at 86.8% (470 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-09-28 18:24:55 +00:00
Anonymous
b0846c2ff8 Translated using Weblate (Swedish)
Currently translated at 24.3% (132 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-09-28 18:24:54 +00:00
Anonymous
f4e409b6c8 Translated using Weblate (Polish)
Currently translated at 69.1% (374 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-09-28 18:24:54 +00:00
Anonymous
bda97987b4 Translated using Weblate (Catalan)
Currently translated at 48.2% (261 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-09-28 18:24:53 +00:00
Anonymous
3e6832d0f7 Translated using Weblate (Chinese (Traditional))
Currently translated at 98.7% (534 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-09-28 18:24:52 +00:00
Anonymous
5004d50f29 Translated using Weblate (Dutch)
Currently translated at 98.7% (534 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-09-28 18:24:52 +00:00
Anonymous
bcc264d370 Translated using Weblate (Vietnamese)
Currently translated at 8.3% (45 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-09-28 18:24:51 +00:00
Anonymous
6aac73b91e Translated using Weblate (Norwegian Bokmål)
Currently translated at 14.9% (81 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-09-28 18:24:50 +00:00
Anonymous
c77303b620 Translated using Weblate (Italian)
Currently translated at 98.7% (534 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-09-28 18:24:50 +00:00
Anonymous
15a33f355a Translated using Weblate (Chinese (Simplified))
Currently translated at 83.1% (450 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-09-28 18:24:49 +00:00
Anonymous
f5899f08a1 Translated using Weblate (Russian)
Currently translated at 79.4% (430 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-09-28 18:24:48 +00:00
Anonymous
4551bc72ed Translated using Weblate (Portuguese)
Currently translated at 76.7% (415 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-09-28 18:24:48 +00:00
Anonymous
c62c3dacfd Translated using Weblate (French)
Currently translated at 99.4% (538 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-09-28 18:24:47 +00:00
Anonymous
bbfa82f9e6 Translated using Weblate (Spanish)
Currently translated at 99.4% (538 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-09-28 18:24:46 +00:00
Anonymous
b6ba180ea6 Translated using Weblate (German)
Currently translated at 99.4% (538 of 541 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-09-28 18:24:46 +00:00
Denis Papec
4cd4103edf Feature: calendar widget (#2077)
* Implemented calendar

Signed-off-by: Denis Papec <denis.papec@gmail.com>

* Added lidarr events to calendar

Signed-off-by: Denis Papec <denis.papec@gmail.com>

* Added radarr events to calendar

Signed-off-by: Denis Papec <denis.papec@gmail.com>

* Added readarr events to calendar

Signed-off-by: Denis Papec <denis.papec@gmail.com>

* Added sonarr events to calendar

Signed-off-by: Denis Papec <denis.papec@gmail.com>

* fix sonarr series title

* integrations

* fix bad setstate call

* handle user sets includeSeries: false for sonarr

* Translate radarr release strings

* Support all widths

* readarr get author

* Finished first day in week config

Signed-off-by: Denis Papec <denis.papec@gmail.com>

---------

Signed-off-by: Denis Papec <denis.papec@gmail.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-09-28 11:23:44 -07:00
Luca Kröger
12e6b3dabb fix textsize bug 2023-09-28 09:34:55 +02:00
Nonoss117
855f12e4c1 Translated using Weblate (French)
Currently translated at 100.0% (538 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-09-27 22:59:35 +02:00
gallegonovato
9e3aa4257f Translated using Weblate (Spanish)
Currently translated at 100.0% (538 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-09-27 22:59:35 +02:00
Luca Kröger
aad51d1ea9 Translated using Weblate (German)
Currently translated at 100.0% (538 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-09-27 22:59:35 +02:00
Luca Kröger
2df5baac9d new dot styling 2023-09-27 22:07:38 +02:00
Ben Phelps
d63cf6c7a9 Update README.md 2023-09-27 22:54:22 +03:00
Luca Kröger
24825f90ea fix some linter errors 2023-09-27 13:31:39 +02:00
Luca Kröger
58c7fb15ea add ping indicator style setting 2023-09-27 13:24:10 +02:00
shamoon
68ff9a94fc Update bug_report.yml 2023-09-26 13:49:52 -07:00
shamoon
7673d86520 Update bug_report.yml 2023-09-26 13:47:35 -07:00
Anonymous
91c29fefbb Translated using Weblate (Basque)
Currently translated at 6.3% (34 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-09-26 22:03:20 +02:00
Anonymous
c2d699ef2c Translated using Weblate (Indonesian)
Currently translated at 4.4% (24 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-09-26 22:03:20 +02:00
Anonymous
cc697f2370 Translated using Weblate (Slovenian)
Currently translated at 96.8% (521 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-09-26 22:03:20 +02:00
Anonymous
1be01f0a7e Translated using Weblate (Greek)
Currently translated at 33.6% (181 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-09-26 22:03:20 +02:00
Anonymous
d3d29a76d2 Translated using Weblate (Korean)
Currently translated at 32.1% (173 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-09-26 22:03:20 +02:00
Anonymous
7fa630a42e Translated using Weblate (Slovak)
Currently translated at 23.9% (129 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-09-26 22:03:20 +02:00
Anonymous
0f9314ebc5 Translated using Weblate (Thai)
Currently translated at 8.9% (48 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-09-26 22:03:20 +02:00
Anonymous
219ebb8824 Translated using Weblate (Latvian)
Currently translated at 21.9% (118 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-09-26 22:03:20 +02:00
Anonymous
be9aac4bbd Translated using Weblate (Japanese)
Currently translated at 94.0% (506 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-09-26 22:03:20 +02:00
Anonymous
d2b8376c79 Translated using Weblate (Ukrainian)
Currently translated at 94.0% (506 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-09-26 22:03:20 +02:00
Anonymous
6d73550a67 Translated using Weblate (Esperanto)
Currently translated at 26.9% (145 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-09-26 22:03:20 +02:00
Anonymous
a27199b01c Translated using Weblate (Hindi)
Currently translated at 1.8% (10 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-09-26 22:03:19 +02:00
Anonymous
6ea80684cd Translated using Weblate (Malay)
Currently translated at 46.8% (252 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-09-26 22:03:19 +02:00
Anonymous
cb0df068f9 Translated using Weblate (Danish)
Currently translated at 96.8% (521 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-09-26 22:03:19 +02:00
Anonymous
bae131a8ae Translated using Weblate (Czech)
Currently translated at 82.5% (444 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-09-26 22:03:19 +02:00
Anonymous
17678b7e0a Translated using Weblate (Arabic)
Currently translated at 48.6% (262 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-09-26 22:03:19 +02:00
Anonymous
296d2e71ce Translated using Weblate (Serbian)
Currently translated at 1.8% (10 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-09-26 22:03:19 +02:00
Anonymous
07535eadb0 Translated using Weblate (Turkish)
Currently translated at 73.0% (393 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-09-26 22:03:19 +02:00
Anonymous
72deda0b9b Translated using Weblate (Bulgarian)
Currently translated at 15.0% (81 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-09-26 22:03:19 +02:00
Anonymous
88ecab787d Translated using Weblate (Telugu)
Currently translated at 40.1% (216 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-09-26 22:03:19 +02:00
Anonymous
2374910996 Translated using Weblate (Finnish)
Currently translated at 32.8% (177 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-09-26 22:03:19 +02:00
Anonymous
a280b7d888 Translated using Weblate (Yue (Traditional))
Currently translated at 21.9% (118 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-09-26 22:03:18 +02:00
Anonymous
0f0774f2ed Translated using Weblate (Portuguese (Brazil))
Currently translated at 85.6% (461 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-09-26 22:03:18 +02:00
Anonymous
15c359947c Translated using Weblate (Romanian)
Currently translated at 28.9% (156 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-09-26 22:03:18 +02:00
Anonymous
fd5ee56540 Translated using Weblate (Hebrew)
Currently translated at 18.7% (101 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-09-26 22:03:18 +02:00
Anonymous
ac64576514 Translated using Weblate (Hungarian)
Currently translated at 87.5% (471 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-09-26 22:03:18 +02:00
Anonymous
23c6955156 Translated using Weblate (Croatian)
Currently translated at 87.3% (470 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-09-26 22:03:18 +02:00
Anonymous
b421076f52 Translated using Weblate (Swedish)
Currently translated at 24.5% (132 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-09-26 22:03:18 +02:00
Anonymous
486ea869b6 Translated using Weblate (Polish)
Currently translated at 69.5% (374 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-09-26 22:03:18 +02:00
Anonymous
93eec4e882 Translated using Weblate (Catalan)
Currently translated at 48.5% (261 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-09-26 22:03:18 +02:00
Anonymous
623f4fcd52 Translated using Weblate (Chinese (Traditional))
Currently translated at 99.2% (534 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-09-26 22:03:17 +02:00
Anonymous
7dd6df88cf Translated using Weblate (Dutch)
Currently translated at 99.2% (534 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-09-26 22:03:17 +02:00
Anonymous
459cce1753 Translated using Weblate (Vietnamese)
Currently translated at 8.3% (45 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-09-26 22:03:17 +02:00
Anonymous
c545d0cd15 Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.0% (81 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-09-26 22:03:17 +02:00
Anonymous
a8b211b5d6 Translated using Weblate (Italian)
Currently translated at 99.2% (534 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-09-26 22:03:17 +02:00
Anonymous
dd85de22bd Translated using Weblate (Chinese (Simplified))
Currently translated at 83.6% (450 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-09-26 22:03:17 +02:00
Anonymous
6351ab55d2 Translated using Weblate (Russian)
Currently translated at 79.9% (430 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-09-26 22:03:17 +02:00
Anonymous
5022e7fd6c Translated using Weblate (Portuguese)
Currently translated at 77.1% (415 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-09-26 22:03:17 +02:00
Anonymous
cd2d9d4e24 Translated using Weblate (French)
Currently translated at 99.2% (534 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-09-26 22:03:16 +02:00
Anonymous
b4df29de7c Translated using Weblate (Spanish)
Currently translated at 99.2% (534 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-09-26 22:03:16 +02:00
Anonymous
77edfa717e Translated using Weblate (German)
Currently translated at 99.2% (534 of 538 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-09-26 22:03:16 +02:00
Gino Cicatiello
d75df5efc2 Translated using Weblate (Italian)
Currently translated at 100.0% (534 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-09-26 22:02:44 +02:00
Luca Kröger
64e8245542 Add OpenDTU Widget (#2069)
* add opendtu widget

* optimize widget

* Revert de translation files

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-09-26 13:02:41 -07:00
Batuhan Şanlı
588429c868 Feature: Added detect octoprint offline printer (#2068) 2023-09-26 03:25:11 -07:00
Juan Manuel Bennàssar Carretero
024b912467 Fix: add maximumFractionDigits to Glances memory (#2065) 2023-09-25 07:13:54 -07:00
shamoon
6483b10eba Check for empty resources disk data
Closes #2056
2023-09-24 08:31:15 -07:00
shamoon
63a47b1ad2 Fix: collapsing group should not prevent resize / stats (#2053) 2023-09-22 19:19:30 -07:00
Juan Manuel Bennàssar Carretero
770dabdf1c Fix: add maximumFractionDigits to Glances free fs (#2048) 2023-09-22 00:41:45 -07:00
shamoon
6b8c02cf2a Fix quicklaunch should only open for text keys (#2044) 2023-09-21 11:30:47 -07:00
Chun Chi Hsieh
46477dac0c Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (534 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-09-21 16:20:59 +02:00
Thierry Goettelmann
2730fef54c Enhancement: add bookmarks description option (#2034) 2023-09-20 07:05:06 -07:00
avb15621
3534a8be35 Translated using Weblate (Dutch)
Currently translated at 100.0% (534 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-09-20 10:01:44 +02:00
Juan Manuel Bennàssar Carretero
6761b38591 Translated using Weblate (Spanish)
Currently translated at 100.0% (534 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-09-20 10:01:43 +02:00
Tobias Alwast
06ee3095a1 Translated using Weblate (German)
Currently translated at 100.0% (534 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-09-20 10:01:43 +02:00
shamoon
6fee70ec45 Fix jdownloader remaining after download complete (#2032) 2023-09-19 23:28:20 -07:00
shamoon
d4a39299c5 Fix k8s traefikingresslist detection (#2030) 2023-09-19 15:00:22 -07:00
shamoon
7d2bfa2d84 Update index.jsx 2023-09-19 14:10:19 -07:00
shamoon
c094bd3d83 Update service-helpers.js 2023-09-19 13:12:03 -07:00
Daniel Li
69ee459e8a Fix: SMART result of OMV should always from monitored devices (#2025) 2023-09-19 08:46:16 -07:00
shamoon
ed0527a3da Fix custom.js not working (#2023) 2023-09-18 21:41:31 -07:00
shamoon
04a1c68ba0 Fix k3d memory specification 2023-09-18 14:35:42 -07:00
Pysta
b74faea449 Translated using Weblate (Slovak)
Currently translated at 24.1% (129 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-09-18 14:23:36 +02:00
avb15621
0c9b6480c5 Translated using Weblate (Dutch)
Currently translated at 53.9% (288 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-09-18 14:23:35 +02:00
Roel van de Wiel
6fbb3bfbb1 Translated using Weblate (Dutch)
Currently translated at 53.9% (288 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-09-18 14:23:35 +02:00
A Warmerdam
53355561a8 Translated using Weblate (Dutch)
Currently translated at 53.9% (288 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-09-18 14:23:35 +02:00
Jan-Philipp Fischer
6e43194f71 Fix: Kubernetes discovery & Check for Custom Resource Definitions (#2003)
* Implement a CRD existence check

* test adding patch
2023-09-17 16:49:03 -07:00
shamoon
a72a27a8b5 Maybe handle k8s traefik ingress routes returns nothing 2023-09-17 10:05:45 -07:00
Ben Phelps
6c682cb648 Update README.md 2023-09-17 11:00:15 +03:00
Ben Phelps
e7587b8308 update readme image 2023-09-17 10:57:37 +03:00
shamoon
e663994c9b Allow tab name 0 2023-09-16 15:24:32 -07:00
shamoon
898fb88d86 Allow numbers in tab name (#2004) 2023-09-16 14:37:06 -07:00
Ben Phelps
6f5c2a8c1e update readme 2023-09-16 22:16:34 +03:00
shamoon
2908bfcb7c Update service-helpers.js 2023-09-16 08:59:36 -07:00
shamoon
34589f0514 reduce k8s traefik discovery log noise 2023-09-16 08:28:58 -07:00
shamoon
3cd441a45e Maybe handle no traefik ingress routes
See #1998
2023-09-16 08:06:24 -07:00
shamoon
816a2a5106 Fix ping stats not clickable in 0.6.30
Closes #1997
2023-09-16 07:37:31 -07:00
shamoon
38079badc8 Pixel-perfect aligned edges 2023-09-16 02:37:24 -07:00
Denis Papec
5109facf1c Fix layouts for initial tab (#1996) 2023-09-15 09:55:23 -07:00
shamoon
ee0afaa638 Fix activeTab with no layout settings
Closes #1995
2023-09-15 09:22:37 -07:00
shamoon
42b69e44a2 replace spaces in tab slugify 2023-09-15 08:35:24 -07:00
shamoon
6dc3be6029 Fix: slugify tab names (#1994) 2023-09-15 08:17:57 -07:00
shamoon
ec1cf2f3ca Resolve bad setState warning in tabprovider (#1993) 2023-09-15 08:00:08 -07:00
shamoon
cde8c658ae Fix duplicate keys on customapi widget 2023-09-15 07:47:10 -07:00
Denis Papec
8a520e07a5 Fix for broken layout when layout is not defined (#1989)
* Fix for broken layout when layout is not defined

* code style

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-09-15 07:41:56 -07:00
Greg Look
eb2b37063f Enhancement: add remap, scale, and suffx to customapi fields (#1958) 2023-09-14 23:50:54 -07:00
Denis Papec
2d8160512f Feature: tabbed layouts (#1981) 2023-09-14 14:55:14 -07:00
shamoon
768107cde8 Update index.jsx 2023-09-14 00:18:43 -07:00
Gino Cicatiello
9fb0917054 Translated using Weblate (Italian)
Currently translated at 100.0% (534 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-09-13 05:57:42 +02:00
shamoon
1895899839 Merge pull request #1974 from benphelps/dependabot/github_actions/docker/setup-buildx-action-3
Bump docker/setup-buildx-action from 2 to 3
2023-09-12 11:02:08 -07:00
shamoon
ec25af781c Merge pull request #1973 from benphelps/dependabot/github_actions/docker/build-push-action-5
Bump docker/build-push-action from 4 to 5
2023-09-12 11:01:54 -07:00
dependabot[bot]
bda567e961 Bump docker/build-push-action from 4 to 5
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 17:29:15 +00:00
shamoon
c525dda77d Merge pull request #1972 from benphelps/dependabot/github_actions/docker/setup-qemu-action-3
Bump docker/setup-qemu-action from 2 to 3
2023-09-12 10:28:27 -07:00
shamoon
65a0b9f905 Merge pull request #1971 from benphelps/dependabot/github_actions/docker/metadata-action-5
Bump docker/metadata-action from 4 to 5
2023-09-12 10:12:52 -07:00
shamoon
74e3a3f09c Merge pull request #1970 from benphelps/dependabot/github_actions/docker/login-action-3
Bump docker/login-action from 2 to 3
2023-09-12 10:02:08 -07:00
dependabot[bot]
d610d379f8 Bump docker/setup-buildx-action from 2 to 3
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 16:46:19 +00:00
dependabot[bot]
e3acc444d8 Bump docker/setup-qemu-action from 2 to 3
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 16:46:03 +00:00
dependabot[bot]
16299ced66 Bump docker/metadata-action from 4 to 5
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 4 to 5.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 16:45:55 +00:00
dependabot[bot]
3a018d5a63 Bump docker/login-action from 2 to 3
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 16:45:50 +00:00
TheRolf
b39c79bea1 Custom JS and CSS (#1950)
* First commit for custom styles and JS

* Adjusted classes

* Added ids and classes for services and bookmarks

* Apply suggestions from code review

* Remove mime dependency

* Update settings.json

* Detect custom css / js changes, no refresh

* Added preload to custom scripts and styles so they can load earlier

* Added data attribute name for bookmarks too

* Update [path].js

* code style, revert some pointer changes

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-09-10 14:36:54 -07:00
Vojislav
0741ef0427 Added start_url in manifest.json to fulfill requirements for installable app (#1955)
Co-authored-by: Vojislav Zelić <vodzo@Vojislavs-MacBook-Air.local>
2023-09-09 11:25:29 -07:00
Alex Tzonkov
bce43c28d6 Translated using Weblate (Bulgarian)
Currently translated at 15.1% (81 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-09-09 15:52:35 +02:00
gallegonovato
e94796f878 Translated using Weblate (Spanish)
Currently translated at 100.0% (534 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-09-09 15:52:34 +02:00
CosminPerRam
2ee6881376 Update GameDig dependency to 4.1.0 and revert compressjs fix. (#1939)
* Update GD to 4.1.0 and revert compressjs fix

* Update package-lock
2023-09-09 06:18:38 -07:00
shamoon
95635fca04 Revert "Enhancement: forward cookies from request (#1804)" (#1946)
This reverts commit d4edd432d8.
2023-09-09 06:07:04 -07:00
Nils Gereke
4f1cde97ec fix: total servers only representing last node (#1936) 2023-09-09 06:04:41 -07:00
James Waters
d4edd432d8 Enhancement: forward cookies from request (#1804) 2023-09-08 16:50:32 -07:00
shamoon
63f952509e Support disable glances cpu + mem (#1931) 2023-09-08 08:59:04 -07:00
shamoon
89f2e9739d Fix error glances cpu data not available yet (#1932) 2023-09-08 08:58:56 -07:00
Ben Phelps
9569f56aa5 attempt a fix (#1929) 2023-09-08 08:58:39 -07:00
shamoon
ae3634e9d4 Change crossorigin to crossOrigin
Co-Authored-By: Shagon94 <9140783+shagon94@users.noreply.github.com>
2023-09-08 07:16:36 -07:00
Gino Cicatiello
f96154189b Translated using Weblate (Italian)
Currently translated at 99.8% (533 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-09-08 04:31:23 +02:00
BluePhi09
402f86fc1b Translated using Weblate (German)
Currently translated at 97.9% (523 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-09-08 04:31:23 +02:00
shamoon
3f71bff13f fix blur on bookmark items 2023-09-06 21:27:24 -07:00
shamoon
a061eccef5 Merge pull request #1920 from benphelps/fix/ping-blocks-link
Fix: remove pointer events on ping div
2023-09-06 12:46:06 -07:00
shamoon
957bd9491b remove pointer events on ping div 2023-09-06 12:45:03 -07:00
Ben Phelps
7a1f8850b8 pass chart to all containers 2023-09-06 15:28:37 +03:00
Anonymous
ef3da08d93 Translated using Weblate (Basque)
Currently translated at 6.3% (34 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-09-06 13:08:39 +02:00
Anonymous
5a67bcd14d Translated using Weblate (Indonesian)
Currently translated at 4.4% (24 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-09-06 13:08:39 +02:00
Anonymous
864f4ef6cc Translated using Weblate (Slovenian)
Currently translated at 97.5% (521 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-09-06 13:08:38 +02:00
Anonymous
cc88bf21a9 Translated using Weblate (Greek)
Currently translated at 33.8% (181 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-09-06 13:08:38 +02:00
Anonymous
a6eba9bcde Translated using Weblate (Korean)
Currently translated at 32.3% (173 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-09-06 13:08:38 +02:00
Anonymous
8bf3b3e217 Translated using Weblate (Slovak)
Currently translated at 1.8% (10 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-09-06 13:08:37 +02:00
Anonymous
97c3d7c513 Translated using Weblate (Thai)
Currently translated at 8.9% (48 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-09-06 13:08:37 +02:00
Anonymous
13ee73f178 Translated using Weblate (Latvian)
Currently translated at 22.0% (118 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-09-06 13:08:37 +02:00
Anonymous
eedc47e091 Translated using Weblate (Japanese)
Currently translated at 94.7% (506 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-09-06 13:08:37 +02:00
Anonymous
dc8d0f6ca9 Translated using Weblate (Ukrainian)
Currently translated at 94.7% (506 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-09-06 13:08:36 +02:00
Anonymous
9811a4d5ee Translated using Weblate (Esperanto)
Currently translated at 27.1% (145 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-09-06 13:08:36 +02:00
Anonymous
27f52fd981 Translated using Weblate (Hindi)
Currently translated at 1.8% (10 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-09-06 13:08:36 +02:00
Anonymous
7adcd6c242 Translated using Weblate (Malay)
Currently translated at 47.1% (252 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-09-06 13:08:36 +02:00
Anonymous
74b73f99b7 Translated using Weblate (Danish)
Currently translated at 97.5% (521 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-09-06 13:08:35 +02:00
Anonymous
1841a794a4 Translated using Weblate (Czech)
Currently translated at 83.1% (444 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-09-06 13:08:35 +02:00
Anonymous
bca024e3c2 Translated using Weblate (Arabic)
Currently translated at 49.0% (262 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-09-06 13:08:34 +02:00
Anonymous
7cb4780a9c Translated using Weblate (Serbian)
Currently translated at 1.8% (10 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-09-06 13:08:34 +02:00
Anonymous
b0d68b3c0e Translated using Weblate (Turkish)
Currently translated at 73.5% (393 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-09-06 13:08:34 +02:00
Anonymous
9a060b3db1 Translated using Weblate (Bulgarian)
Currently translated at 8.8% (47 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-09-06 13:08:34 +02:00
Anonymous
0ffa5b8ace Translated using Weblate (Telugu)
Currently translated at 40.4% (216 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-09-06 13:08:33 +02:00
Anonymous
2ec96a6457 Translated using Weblate (Finnish)
Currently translated at 33.1% (177 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-09-06 13:08:33 +02:00
Anonymous
1098b0d4f9 Translated using Weblate (Yue (Traditional))
Currently translated at 22.0% (118 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-09-06 13:08:33 +02:00
Anonymous
1ecfa382bc Translated using Weblate (Portuguese (Brazil))
Currently translated at 86.3% (461 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-09-06 13:08:32 +02:00
Anonymous
2f83906244 Translated using Weblate (Romanian)
Currently translated at 29.2% (156 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-09-06 13:08:32 +02:00
Anonymous
6eacff4638 Translated using Weblate (Hebrew)
Currently translated at 18.9% (101 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-09-06 13:08:32 +02:00
Anonymous
e1c615de14 Translated using Weblate (Hungarian)
Currently translated at 88.2% (471 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-09-06 13:08:31 +02:00
Anonymous
dd842ee7a8 Translated using Weblate (Croatian)
Currently translated at 88.0% (470 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-09-06 13:08:31 +02:00
Anonymous
2681930b2e Translated using Weblate (Swedish)
Currently translated at 24.7% (132 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-09-06 13:08:31 +02:00
Anonymous
4bfad4d27e Translated using Weblate (Polish)
Currently translated at 70.0% (374 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-09-06 13:08:31 +02:00
Anonymous
c13567bcb7 Translated using Weblate (Catalan)
Currently translated at 48.8% (261 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-09-06 13:08:30 +02:00
Anonymous
eb77e42264 Translated using Weblate (Chinese (Traditional))
Currently translated at 93.4% (499 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-09-06 13:08:30 +02:00
Anonymous
75b46509c1 Translated using Weblate (Dutch)
Currently translated at 45.5% (243 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-09-06 13:08:30 +02:00
Anonymous
e433d75372 Translated using Weblate (Vietnamese)
Currently translated at 8.4% (45 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-09-06 13:08:29 +02:00
Anonymous
5d76ac4c7f Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.1% (81 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-09-06 13:08:29 +02:00
Anonymous
95b91b953a Translated using Weblate (Italian)
Currently translated at 99.8% (533 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-09-06 13:08:29 +02:00
Anonymous
63e65d721b Translated using Weblate (Chinese (Simplified))
Currently translated at 84.2% (450 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-09-06 13:08:29 +02:00
Anonymous
ec6deb5ac9 Translated using Weblate (Russian)
Currently translated at 80.5% (430 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-09-06 13:08:28 +02:00
Anonymous
b4c7faf178 Translated using Weblate (Portuguese)
Currently translated at 77.7% (415 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-09-06 13:08:28 +02:00
Anonymous
132ec69f29 Translated using Weblate (French)
Currently translated at 99.8% (533 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-09-06 13:08:28 +02:00
Anonymous
673404e441 Translated using Weblate (Spanish)
Currently translated at 99.8% (533 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-09-06 13:08:28 +02:00
Anonymous
e267717898 Translated using Weblate (German)
Currently translated at 97.5% (521 of 534 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-09-06 13:08:27 +02:00
Ben Phelps
99f60eab29 Merge pull request #1917 from benphelps/non-graphs
mini-non-chart charts
2023-09-06 14:06:37 +03:00
Ben Phelps
17b0f635d8 mini-non-chart charts 2023-09-06 13:53:39 +03:00
fenix_vd
c2058f353d Translated using Weblate (Russian)
Currently translated at 80.6% (430 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-09-05 14:56:10 +02:00
shamoon
3a10214a45 Merge pull request #1903 from benphelps/feature-mixed-layout
Enhancement: mixed bookmarks / services layout
2023-09-04 20:27:04 -07:00
shamoon
9713a16e1f Merge pull request #1910 from benphelps/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2023-09-04 12:21:49 -07:00
dependabot[bot]
0e57547824 Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 16:51:58 +00:00
Anonymous
80eb03194f Translated using Weblate (German)
Currently translated at 97.7% (521 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-09-04 05:46:39 +02:00
Ettore Atalan
a0019d832e Translated using Weblate (German)
Currently translated at 97.7% (521 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-09-04 05:46:37 +02:00
shamoon
4517409dbd Support mixing services & bookmarks layout 2023-09-03 07:50:04 -07:00
Ben Phelps
61b969cced Merge pull request #1906 from benphelps/glances-fs
fix linting
2023-09-03 17:49:11 +03:00
shamoon
ed293071b4 Update fs.jsx 2023-09-03 07:49:05 -07:00
Ben Phelps
5d0a793195 fix linting 2023-09-03 17:47:54 +03:00
Ben Phelps
b2908cdd97 Merge pull request #1905 from benphelps/glances-fs
Add glances filesystem graph
2023-09-03 17:28:50 +03:00
Ben Phelps
108ca23212 Merge branch 'main' into glances-fs 2023-09-03 17:23:08 +03:00
Georges-Antoine Assi
9529553102 Enhancement: apply layout settings to bookmarks (#1902)
* Apply layout settings to bookmarks

* merge columnMap const

* Remove bookmarksOnTop setting

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-09-03 07:05:25 -07:00
Gino Cicatiello
4d55f1fba4 Translated using Weblate (Italian)
Currently translated at 100.0% (533 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-09-03 09:52:24 +02:00
gallegonovato
257ab91ffb Translated using Weblate (Spanish)
Currently translated at 100.0% (533 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-09-03 09:52:23 +02:00
shamoon
96e8882fb5 Merge pull request #1896 from benphelps/fix/issue-1894
Fix: cardBlur with boxedWidgets shrinks search widget
2023-08-31 10:45:54 -07:00
shamoon
864eb8cfbb Fix duplicate additionalClassNames 2023-08-31 10:43:57 -07:00
shamoon
147ed30b09 Merge pull request #1893 from Spideramn/fix/manifest-credentials
Add crossorigin="use-credentials" to manifest link tag.
2023-08-31 10:41:14 -07:00
CosminPerRam
14aebf9e41 Translated using Weblate (Romanian)
Currently translated at 29.2% (156 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-08-31 17:55:38 +02:00
Spideramn
76013b32b3 Add crossorigin="use-credentials" to manifest link tag. 2023-08-31 11:58:51 +02:00
CosminPerRam
f0a4ab645c Update GameDig dependency to 4.0.7 (#1886) 2023-08-30 08:19:45 -07:00
Azurite
eedb728025 Translated using Weblate (Japanese)
Currently translated at 94.9% (506 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-30 15:55:21 +02:00
Nonoss117
419e930456 Translated using Weblate (French)
Currently translated at 100.0% (533 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-30 15:55:21 +02:00
shamoon
494a1c50d5 Update index.jsx 2023-08-29 09:48:32 -07:00
shamoon
3b05655fb0 Merge pull request #1881 from benphelps/fix/issue-1878
Fix location of quicklaunch, some focus issues
2023-08-29 09:37:58 -07:00
shamoon
98baf0507b Fix location of quicklaunch, some focus issues 2023-08-29 09:33:58 -07:00
shamoon
36760caff9 Update component.jsx 2023-08-28 17:48:44 -07:00
Anonymous
2363f96f1b Translated using Weblate (Basque)
Currently translated at 6.3% (34 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-08-29 02:04:35 +02:00
Anonymous
c0c14b0233 Translated using Weblate (Indonesian)
Currently translated at 4.5% (24 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-08-29 02:04:34 +02:00
Anonymous
5c28b501f6 Translated using Weblate (Slovenian)
Currently translated at 97.7% (521 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-08-29 02:04:34 +02:00
Anonymous
5d9155ab22 Translated using Weblate (Greek)
Currently translated at 33.9% (181 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-29 02:04:33 +02:00
Anonymous
2d13c38d38 Translated using Weblate (Korean)
Currently translated at 32.4% (173 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-08-29 02:04:33 +02:00
Anonymous
d5891793dd Translated using Weblate (Slovak)
Currently translated at 1.8% (10 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-08-29 02:04:33 +02:00
Anonymous
7c8ab99df6 Translated using Weblate (Thai)
Currently translated at 9.0% (48 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-08-29 02:04:32 +02:00
Anonymous
c09785b4f5 Translated using Weblate (Latvian)
Currently translated at 22.1% (118 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-08-29 02:04:32 +02:00
Anonymous
31d7b56fb6 Translated using Weblate (Japanese)
Currently translated at 94.9% (506 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-29 02:04:32 +02:00
Anonymous
d5fd904e55 Translated using Weblate (Ukrainian)
Currently translated at 94.9% (506 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-29 02:04:32 +02:00
Anonymous
67b1ca6251 Translated using Weblate (Esperanto)
Currently translated at 27.2% (145 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-08-29 02:04:31 +02:00
Anonymous
3d13d9311d Translated using Weblate (Hindi)
Currently translated at 1.8% (10 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-08-29 02:04:31 +02:00
Anonymous
1b81942549 Translated using Weblate (Malay)
Currently translated at 47.2% (252 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-08-29 02:04:31 +02:00
Anonymous
2013fc8193 Translated using Weblate (Danish)
Currently translated at 97.7% (521 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-08-29 02:04:30 +02:00
Anonymous
a8415ab40f Translated using Weblate (Czech)
Currently translated at 83.3% (444 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-08-29 02:04:30 +02:00
Anonymous
4ce941a781 Translated using Weblate (Arabic)
Currently translated at 49.1% (262 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-08-29 02:04:29 +02:00
Anonymous
2bf5830ca8 Translated using Weblate (Serbian)
Currently translated at 1.8% (10 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-08-29 02:04:29 +02:00
Anonymous
b554683eca Translated using Weblate (Turkish)
Currently translated at 73.7% (393 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-08-29 02:04:29 +02:00
Anonymous
9612a76bce Translated using Weblate (Bulgarian)
Currently translated at 8.8% (47 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-08-29 02:04:28 +02:00
Anonymous
4a2cf8764d Translated using Weblate (Telugu)
Currently translated at 40.5% (216 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-08-29 02:04:28 +02:00
Anonymous
1d99f2ebf1 Translated using Weblate (Finnish)
Currently translated at 33.2% (177 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-08-29 02:04:27 +02:00
Anonymous
3d32c129c0 Translated using Weblate (Yue (Traditional))
Currently translated at 22.1% (118 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-08-29 02:04:27 +02:00
Anonymous
5e42da6e53 Translated using Weblate (Portuguese (Brazil))
Currently translated at 86.4% (461 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-08-29 02:04:27 +02:00
Anonymous
61190f6e49 Translated using Weblate (Romanian)
Currently translated at 28.3% (151 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-08-29 02:04:26 +02:00
Anonymous
dcb3ca52e3 Translated using Weblate (Hebrew)
Currently translated at 18.9% (101 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-08-29 02:04:26 +02:00
Anonymous
41aea0166e Translated using Weblate (Hungarian)
Currently translated at 88.3% (471 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-08-29 02:04:25 +02:00
Anonymous
5c9d2ba04c Translated using Weblate (Croatian)
Currently translated at 88.1% (470 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-08-29 02:04:25 +02:00
Anonymous
4ad13625be Translated using Weblate (Swedish)
Currently translated at 24.7% (132 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-08-29 02:04:24 +02:00
Anonymous
acb28389f4 Translated using Weblate (Polish)
Currently translated at 70.1% (374 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-08-29 02:04:23 +02:00
Anonymous
117930a6f5 Translated using Weblate (Catalan)
Currently translated at 48.9% (261 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-08-29 02:04:23 +02:00
Anonymous
d4db335d3d Translated using Weblate (Chinese (Traditional))
Currently translated at 93.6% (499 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-08-29 02:04:22 +02:00
Anonymous
7b1ac03e3a Translated using Weblate (Dutch)
Currently translated at 45.5% (243 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-08-29 02:04:22 +02:00
Anonymous
2405e8afbd Translated using Weblate (Vietnamese)
Currently translated at 8.4% (45 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-08-29 02:04:21 +02:00
Anonymous
bccf83467b Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.1% (81 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-08-29 02:04:21 +02:00
Anonymous
374e8873ce Translated using Weblate (Italian)
Currently translated at 88.1% (470 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-08-29 02:04:21 +02:00
Anonymous
313211f756 Translated using Weblate (Chinese (Simplified))
Currently translated at 84.4% (450 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-08-29 02:04:20 +02:00
Anonymous
49a68488b4 Translated using Weblate (Russian)
Currently translated at 80.1% (427 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-29 02:04:20 +02:00
Anonymous
5d66323edd Translated using Weblate (Portuguese)
Currently translated at 77.8% (415 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-08-29 02:04:19 +02:00
Anonymous
7d7964bfa8 Translated using Weblate (French)
Currently translated at 97.7% (521 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-29 02:04:19 +02:00
Anonymous
34bf5da16f Translated using Weblate (Spanish)
Currently translated at 97.7% (521 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-29 02:04:19 +02:00
Anonymous
0aefe4e327 Translated using Weblate (German)
Currently translated at 85.7% (457 of 533 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-08-29 02:04:18 +02:00
Andrej Kralj
15d36f74d3 Translated using Weblate (Slovenian)
Currently translated at 100.0% (521 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-08-29 02:02:58 +02:00
AwesomeClips
0ee1656872 Translated using Weblate (Greek)
Currently translated at 34.7% (181 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-29 02:02:58 +02:00
Azurite
0e3d05ffe2 Translated using Weblate (Japanese)
Currently translated at 97.1% (506 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-29 02:02:58 +02:00
Allan Grauengaard Hedelain
843f624655 Translated using Weblate (Danish)
Currently translated at 100.0% (521 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-08-29 02:02:58 +02:00
oxygen44k
ba77e0e0f7 Translated using Weblate (Chinese (Simplified))
Currently translated at 86.3% (450 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-08-29 02:02:58 +02:00
gallegonovato
b7198d1d52 Translated using Weblate (Spanish)
Currently translated at 100.0% (521 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-29 02:02:58 +02:00
shamoon
e990ba3394 Merge pull request #1876 from tomhoover/uptimerobot-widget
Add UptimeRobot widget

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-08-28 17:02:46 -07:00
Tom Hoover
e19dab3c5d Add UptimeRobot widget 2023-08-28 17:02:00 -07:00
Atropos
82d2f08e8b Enhancement: support silmultaneous traefik .containio.us and .io ingress routes for k8s (#1875) 2023-08-28 11:00:39 -07:00
shamoon
43b32fd1fb Merge pull request #1869 from rauenzi/widget-options
Allow widgets to add headers or set method
2023-08-27 16:12:22 -07:00
Zack Rauen
d6448763e0 Allow widgets to add header or set methods 2023-08-27 18:46:50 -04:00
shamoon
51ea4ea405 Merge pull request #1868 from benphelps/fix/issue-1866
Fix: support streaming media from jellyfin
2023-08-27 13:56:33 -07:00
shamoon
713cb217e4 Support streaming media from jellyfin 2023-08-27 13:55:47 -07:00
Nonoss117
8ef88f2153 Translated using Weblate (French)
Currently translated at 100.0% (521 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-26 13:27:32 +02:00
shamoon
6bfc98daf8 Collapse should rotate 180 degrees 2023-08-26 00:25:24 -07:00
Denis Papec
fc7e73eba2 Added custom API widget (#1858)
* Added custom API widget

* Rename custom widget to customapi

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-08-25 23:39:15 -07:00
Anonymous
14b886793c Translated using Weblate (Basque)
Currently translated at 6.5% (34 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-08-26 08:26:04 +02:00
Anonymous
c460b7594f Translated using Weblate (Indonesian)
Currently translated at 4.6% (24 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-08-26 08:26:03 +02:00
Anonymous
6cfb150c9a Translated using Weblate (Slovenian)
Currently translated at 90.4% (471 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-08-26 08:26:03 +02:00
Anonymous
f107481da2 Translated using Weblate (Greek)
Currently translated at 34.5% (180 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-26 08:26:03 +02:00
Anonymous
96891e3205 Translated using Weblate (Korean)
Currently translated at 33.2% (173 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-08-26 08:26:02 +02:00
Anonymous
582f916379 Translated using Weblate (Slovak)
Currently translated at 1.9% (10 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-08-26 08:26:02 +02:00
Anonymous
b4d12cad9d Translated using Weblate (Thai)
Currently translated at 9.2% (48 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-08-26 08:26:02 +02:00
Anonymous
2c9225cde2 Translated using Weblate (Latvian)
Currently translated at 22.6% (118 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-08-26 08:26:01 +02:00
Anonymous
26715edbd0 Translated using Weblate (Japanese)
Currently translated at 73.8% (385 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-26 08:26:01 +02:00
Anonymous
4a11c34db6 Translated using Weblate (Ukrainian)
Currently translated at 97.1% (506 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-26 08:26:01 +02:00
Anonymous
de3ff0b3ba Translated using Weblate (Esperanto)
Currently translated at 27.8% (145 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-08-26 08:26:01 +02:00
Anonymous
338715fe58 Translated using Weblate (Hindi)
Currently translated at 1.9% (10 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-08-26 08:26:00 +02:00
Anonymous
8dbe0d7fe1 Translated using Weblate (Malay)
Currently translated at 48.3% (252 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-08-26 08:26:00 +02:00
Anonymous
f63d9ea7c1 Translated using Weblate (Danish)
Currently translated at 38.0% (198 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-08-26 08:26:00 +02:00
Anonymous
00b590ed2a Translated using Weblate (Czech)
Currently translated at 85.2% (444 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-08-26 08:25:59 +02:00
Anonymous
e72d58a382 Translated using Weblate (Arabic)
Currently translated at 50.2% (262 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-08-26 08:25:59 +02:00
Anonymous
ad87faa7ed Translated using Weblate (Serbian)
Currently translated at 1.9% (10 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-08-26 08:25:59 +02:00
Anonymous
fc41d144f6 Translated using Weblate (Turkish)
Currently translated at 75.4% (393 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-08-26 08:25:58 +02:00
Anonymous
6c64295505 Translated using Weblate (Bulgarian)
Currently translated at 9.0% (47 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-08-26 08:25:58 +02:00
Anonymous
ebd48e4081 Translated using Weblate (Telugu)
Currently translated at 41.4% (216 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-08-26 08:25:58 +02:00
Anonymous
71439eb689 Translated using Weblate (Finnish)
Currently translated at 33.9% (177 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-08-26 08:25:57 +02:00
Anonymous
9c33a30fb1 Translated using Weblate (Yue (Traditional))
Currently translated at 22.6% (118 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-08-26 08:25:57 +02:00
Anonymous
f8e1207abc Translated using Weblate (Portuguese (Brazil))
Currently translated at 88.4% (461 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-08-26 08:25:57 +02:00
Anonymous
93f2bc7773 Translated using Weblate (Romanian)
Currently translated at 28.9% (151 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-08-26 08:25:56 +02:00
Anonymous
04f947b920 Translated using Weblate (Hebrew)
Currently translated at 19.3% (101 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-08-26 08:25:56 +02:00
Anonymous
d1ebfde45c Translated using Weblate (Hungarian)
Currently translated at 90.4% (471 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-08-26 08:25:56 +02:00
Anonymous
b22fdb42f4 Translated using Weblate (Croatian)
Currently translated at 90.2% (470 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-08-26 08:25:56 +02:00
Anonymous
c79d57775f Translated using Weblate (Swedish)
Currently translated at 25.3% (132 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-08-26 08:25:55 +02:00
Anonymous
caaf6c86ba Translated using Weblate (Polish)
Currently translated at 71.7% (374 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-08-26 08:25:55 +02:00
Anonymous
9484e9f963 Translated using Weblate (Catalan)
Currently translated at 50.0% (261 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-08-26 08:25:55 +02:00
Anonymous
2d13648e01 Translated using Weblate (Chinese (Traditional))
Currently translated at 95.7% (499 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-08-26 08:25:54 +02:00
Anonymous
2ddddf5cfe Translated using Weblate (Dutch)
Currently translated at 46.6% (243 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-08-26 08:25:54 +02:00
Anonymous
9086fcadc9 Translated using Weblate (Vietnamese)
Currently translated at 8.6% (45 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-08-26 08:25:54 +02:00
Anonymous
4502dba6ca Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.5% (81 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-08-26 08:25:53 +02:00
Anonymous
92d1ad2d9d Translated using Weblate (Italian)
Currently translated at 90.2% (470 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-08-26 08:25:53 +02:00
Anonymous
eb15ab054f Translated using Weblate (Chinese (Simplified))
Currently translated at 85.2% (444 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-08-26 08:25:53 +02:00
Anonymous
1047da8e23 Translated using Weblate (Russian)
Currently translated at 81.9% (427 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-26 08:25:52 +02:00
Anonymous
69ded4bd2f Translated using Weblate (Portuguese)
Currently translated at 79.6% (415 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-08-26 08:25:52 +02:00
Anonymous
6898ed3676 Translated using Weblate (French)
Currently translated at 99.2% (517 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-26 08:25:52 +02:00
Anonymous
e12184863a Translated using Weblate (Spanish)
Currently translated at 99.2% (517 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-26 08:25:51 +02:00
Anonymous
81f2906ae7 Translated using Weblate (German)
Currently translated at 87.7% (457 of 521 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-08-26 08:25:51 +02:00
Sander Hoeve
84296e573f Translated using Weblate (Dutch)
Currently translated at 47.0% (243 of 517 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-08-26 08:24:34 +02:00
Georges-Antoine Assi
4b4c63d562 Calibre web widget (#1855)
* Add widget for calibre-web with reverse-proxy auth

* Add custom proxy

* Get it working

* Fix lint issues

* Calibreweb widget: Handle empty series / authors / books

* Switch to new opds stats endpoint

* Remove calibre-web custom proxy handler

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-08-25 23:24:25 -07:00
Stathis Kefalas
1faaa1466a Translated using Weblate (Greek)
Currently translated at 34.8% (180 of 517 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-25 10:00:43 +02:00
gallegonovato
3a75fbb77d Translated using Weblate (Spanish)
Currently translated at 100.0% (517 of 517 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-25 10:00:43 +02:00
Atsumeru Developer
ad586f3853 Translated using Weblate (Ukrainian)
Currently translated at 97.8% (506 of 517 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-23 13:56:10 +02:00
Atsumeru Developer
5800957ec1 Translated using Weblate (Russian)
Currently translated at 82.5% (427 of 517 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-23 13:56:09 +02:00
shamoon
a58eabdb9b Merge pull request #1852 from benphelps:enhancement/extra-headers
Enhancement: support extra headers in widgets
2023-08-22 21:44:28 -07:00
shamoon
7cede1318e Support extra headers in widgets 2023-08-22 21:42:53 -07:00
Ben Phelps
d90a038884 fs widget? 2023-08-22 10:49:14 +03:00
João Paulo dos Santos Portela
a234eeffb1 Add user and restart options to docker-compose (#1844)
* Add user and restart options to docker-compose

Add user:group 1000:1000 to the docker compose, to match host user.
Restart container unless stopped.

* Update README.md

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-08-21 19:50:09 -07:00
Hosted Weblate
38bb974c64 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/
2023-08-22 04:32:16 +02:00
Nonoss117
0976c21fa4 Translated using Weblate (French)
Currently translated at 100.0% (520 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-22 04:32:12 +02:00
shamoon
a4c046c3e1 Merge pull request #1848 from benphelps/revert-1829-calibre-web-widget
Revert "Calibre web widget"
2023-08-21 19:32:06 -07:00
shamoon
eb67cf1d6f Revert "Calibre web widget (#1829)"
This reverts commit 4c49767a0f.
2023-08-21 19:31:48 -07:00
Anonymous
fb04972701 Translated using Weblate (Basque)
Currently translated at 6.3% (33 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-08-21 18:31:44 +02:00
Anonymous
4a80b32bb6 Translated using Weblate (Indonesian)
Currently translated at 4.6% (24 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-08-21 18:31:44 +02:00
Anonymous
d00d9ffee3 Translated using Weblate (Slovenian)
Currently translated at 90.5% (471 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-08-21 18:31:43 +02:00
Anonymous
c0af877e91 Translated using Weblate (Greek)
Currently translated at 34.6% (180 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-21 18:31:43 +02:00
Anonymous
f8586a9df6 Translated using Weblate (Korean)
Currently translated at 33.2% (173 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-08-21 18:31:43 +02:00
Anonymous
8cc19daf24 Translated using Weblate (Slovak)
Currently translated at 1.9% (10 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-08-21 18:31:43 +02:00
Anonymous
9f57f45816 Translated using Weblate (Thai)
Currently translated at 9.0% (47 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-08-21 18:31:42 +02:00
Anonymous
a11df88d8a Translated using Weblate (Latvian)
Currently translated at 22.6% (118 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-08-21 18:31:42 +02:00
Anonymous
ff81233772 Translated using Weblate (Japanese)
Currently translated at 74.0% (385 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-21 18:31:42 +02:00
Anonymous
7cec116b11 Translated using Weblate (Ukrainian)
Currently translated at 96.5% (502 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-21 18:31:41 +02:00
Anonymous
4dc84201a0 Translated using Weblate (Esperanto)
Currently translated at 27.8% (145 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-08-21 18:31:41 +02:00
Anonymous
9abdcc56a0 Translated using Weblate (Hindi)
Currently translated at 1.7% (9 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-08-21 18:31:41 +02:00
Anonymous
5b5fc60a0c Translated using Weblate (Malay)
Currently translated at 48.2% (251 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-08-21 18:31:40 +02:00
Anonymous
63b59c3964 Translated using Weblate (Danish)
Currently translated at 37.8% (197 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-08-21 18:31:40 +02:00
Anonymous
15d30abc93 Translated using Weblate (Czech)
Currently translated at 85.3% (444 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-08-21 18:31:40 +02:00
Anonymous
a7d73828e6 Translated using Weblate (Arabic)
Currently translated at 50.3% (262 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-08-21 18:31:39 +02:00
Anonymous
749d039896 Translated using Weblate (Serbian)
Currently translated at 1.7% (9 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-08-21 18:31:39 +02:00
Anonymous
651243cd9f Translated using Weblate (Turkish)
Currently translated at 75.5% (393 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-08-21 18:31:39 +02:00
Anonymous
b5ae79e1d3 Translated using Weblate (Bulgarian)
Currently translated at 8.8% (46 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-08-21 18:31:38 +02:00
Anonymous
5d81b56189 Translated using Weblate (Telugu)
Currently translated at 41.3% (215 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-08-21 18:31:38 +02:00
Anonymous
c7c600b47d Translated using Weblate (Finnish)
Currently translated at 34.0% (177 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-08-21 18:31:38 +02:00
Anonymous
8907a9cecf Translated using Weblate (Yue (Traditional))
Currently translated at 22.5% (117 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-08-21 18:31:37 +02:00
Anonymous
529927bc8b Translated using Weblate (Portuguese (Brazil))
Currently translated at 88.6% (461 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-08-21 18:31:37 +02:00
Anonymous
f27f7b3fa6 Translated using Weblate (Romanian)
Currently translated at 28.8% (150 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-08-21 18:31:37 +02:00
Anonymous
a755a0ae83 Translated using Weblate (Hebrew)
Currently translated at 19.2% (100 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-08-21 18:31:36 +02:00
Anonymous
0d1a7f1717 Translated using Weblate (Hungarian)
Currently translated at 90.5% (471 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-08-21 18:31:36 +02:00
Anonymous
ebf036c241 Translated using Weblate (Croatian)
Currently translated at 90.3% (470 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-08-21 18:31:36 +02:00
Anonymous
3fd83f9f2d Translated using Weblate (Swedish)
Currently translated at 25.3% (132 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-08-21 18:31:36 +02:00
Anonymous
67d64264bc Translated using Weblate (Polish)
Currently translated at 71.9% (374 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-08-21 18:31:35 +02:00
Anonymous
69e187f574 Translated using Weblate (Catalan)
Currently translated at 50.0% (260 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-08-21 18:31:35 +02:00
Anonymous
83e27aa41a Translated using Weblate (Chinese (Traditional))
Currently translated at 95.9% (499 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-08-21 18:31:35 +02:00
Anonymous
37b6aba1d4 Translated using Weblate (Dutch)
Currently translated at 46.3% (241 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-08-21 18:31:34 +02:00
Anonymous
33d4b4d43d Translated using Weblate (Vietnamese)
Currently translated at 8.4% (44 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-08-21 18:31:34 +02:00
Anonymous
4e230fb76a Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.3% (80 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-08-21 18:31:34 +02:00
Anonymous
04ac922cfe Translated using Weblate (Italian)
Currently translated at 90.3% (470 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-08-21 18:31:33 +02:00
Anonymous
59c22820c0 Translated using Weblate (Chinese (Simplified))
Currently translated at 85.3% (444 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-08-21 18:31:33 +02:00
Anonymous
f463f99cbe Translated using Weblate (Russian)
Currently translated at 81.3% (423 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-21 18:31:33 +02:00
Anonymous
1e27da0024 Translated using Weblate (Portuguese)
Currently translated at 79.8% (415 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-08-21 18:31:33 +02:00
Anonymous
bc9e331ac5 Translated using Weblate (French)
Currently translated at 98.6% (513 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-21 18:31:32 +02:00
Anonymous
f7f1aa88b1 Translated using Weblate (Spanish)
Currently translated at 98.6% (513 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-21 18:31:32 +02:00
Anonymous
da3541cafe Translated using Weblate (German)
Currently translated at 87.8% (457 of 520 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-08-21 18:31:31 +02:00
AtsumeruDev
a6dac34b24 Add widget for Atsumeru self-hosted media server (#1839)
* Add widget for Atsumeru self-hosted media server

* Revert localization

* Update widget.js

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-08-21 09:30:22 -07:00
Anonymous
7bd433922f Translated using Weblate (Basque)
Currently translated at 6.3% (33 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-08-21 18:24:22 +02:00
Anonymous
deaacc3b05 Translated using Weblate (Indonesian)
Currently translated at 4.6% (24 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-08-21 18:24:22 +02:00
Anonymous
2e4808db63 Translated using Weblate (Slovenian)
Currently translated at 91.2% (471 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-08-21 18:24:22 +02:00
Anonymous
b033869345 Translated using Weblate (Greek)
Currently translated at 34.8% (180 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-21 18:24:22 +02:00
Anonymous
b56de26a2f Translated using Weblate (Korean)
Currently translated at 33.5% (173 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-08-21 18:24:21 +02:00
Anonymous
6bc9c4d861 Translated using Weblate (Slovak)
Currently translated at 1.9% (10 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-08-21 18:24:21 +02:00
Anonymous
78622d368e Translated using Weblate (Thai)
Currently translated at 9.1% (47 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-08-21 18:24:20 +02:00
Anonymous
491bf0f3a9 Translated using Weblate (Latvian)
Currently translated at 22.8% (118 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-08-21 18:24:20 +02:00
Anonymous
ea1435cd87 Translated using Weblate (Japanese)
Currently translated at 74.6% (385 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-21 18:24:20 +02:00
Anonymous
f25f834809 Translated using Weblate (Ukrainian)
Currently translated at 97.2% (502 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-21 18:24:20 +02:00
Anonymous
7d66b5c895 Translated using Weblate (Esperanto)
Currently translated at 28.1% (145 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-08-21 18:24:19 +02:00
Anonymous
0dc473909e Translated using Weblate (Hindi)
Currently translated at 1.7% (9 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-08-21 18:24:19 +02:00
Anonymous
d54230745b Translated using Weblate (Malay)
Currently translated at 48.6% (251 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-08-21 18:24:19 +02:00
Anonymous
c4cbd870d1 Translated using Weblate (Danish)
Currently translated at 38.1% (197 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-08-21 18:24:18 +02:00
Anonymous
8229d28c41 Translated using Weblate (Czech)
Currently translated at 86.0% (444 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-08-21 18:24:18 +02:00
Anonymous
861f726079 Translated using Weblate (Arabic)
Currently translated at 50.7% (262 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-08-21 18:24:18 +02:00
Anonymous
0065311f33 Translated using Weblate (Serbian)
Currently translated at 1.7% (9 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-08-21 18:24:17 +02:00
Anonymous
de064fd883 Translated using Weblate (Turkish)
Currently translated at 76.1% (393 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-08-21 18:24:17 +02:00
Anonymous
f93d66dc44 Translated using Weblate (Bulgarian)
Currently translated at 8.9% (46 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-08-21 18:24:17 +02:00
Anonymous
24ed90f3a6 Translated using Weblate (Telugu)
Currently translated at 41.6% (215 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-08-21 18:24:16 +02:00
Anonymous
727a4f41f1 Translated using Weblate (Finnish)
Currently translated at 34.3% (177 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-08-21 18:24:16 +02:00
Anonymous
b1e8bbfb56 Translated using Weblate (Yue (Traditional))
Currently translated at 22.6% (117 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-08-21 18:24:15 +02:00
Anonymous
702b8683c0 Translated using Weblate (Portuguese (Brazil))
Currently translated at 89.3% (461 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-08-21 18:24:15 +02:00
Anonymous
3ee96372fd Translated using Weblate (Romanian)
Currently translated at 29.0% (150 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-08-21 18:24:14 +02:00
Anonymous
c405cfe574 Translated using Weblate (Hebrew)
Currently translated at 19.3% (100 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-08-21 18:24:14 +02:00
Anonymous
4906d21c84 Translated using Weblate (Hungarian)
Currently translated at 91.2% (471 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-08-21 18:24:14 +02:00
Anonymous
a650f7689d Translated using Weblate (Croatian)
Currently translated at 91.0% (470 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-08-21 18:24:13 +02:00
Anonymous
6410fcbaa2 Translated using Weblate (Swedish)
Currently translated at 25.5% (132 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-08-21 18:24:13 +02:00
Anonymous
aa31922681 Translated using Weblate (Polish)
Currently translated at 72.4% (374 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-08-21 18:24:12 +02:00
Anonymous
1cb0012a5a Translated using Weblate (Catalan)
Currently translated at 50.3% (260 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-08-21 18:24:12 +02:00
Anonymous
9a7a2f25f2 Translated using Weblate (Chinese (Traditional))
Currently translated at 96.7% (499 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-08-21 18:24:12 +02:00
Anonymous
a201e0fb7f Translated using Weblate (Dutch)
Currently translated at 46.7% (241 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-08-21 18:24:11 +02:00
Anonymous
0913ef74c2 Translated using Weblate (Vietnamese)
Currently translated at 8.5% (44 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-08-21 18:24:11 +02:00
Anonymous
96e887fa25 Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.5% (80 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-08-21 18:24:11 +02:00
Anonymous
36b95e68ce Translated using Weblate (Italian)
Currently translated at 91.0% (470 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-08-21 18:24:10 +02:00
Anonymous
3d2905b63c Translated using Weblate (Chinese (Simplified))
Currently translated at 86.0% (444 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-08-21 18:24:10 +02:00
Anonymous
375011bbea Translated using Weblate (Russian)
Currently translated at 81.9% (423 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-21 18:24:10 +02:00
Anonymous
56bd321f03 Translated using Weblate (Portuguese)
Currently translated at 80.4% (415 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-08-21 18:24:10 +02:00
Anonymous
b07fd98fc6 Translated using Weblate (French)
Currently translated at 99.4% (513 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-21 18:24:09 +02:00
Anonymous
6744ef49c9 Translated using Weblate (Spanish)
Currently translated at 99.4% (513 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-21 18:24:09 +02:00
Anonymous
25672a0147 Translated using Weblate (German)
Currently translated at 88.5% (457 of 516 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-08-21 18:24:08 +02:00
Georges-Antoine Assi
4c49767a0f Calibre web widget (#1829)
* Add widget for calibre-web with reverse-proxy auth

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-08-21 09:22:15 -07:00
shamoon
bb8ad4747c Update container.jsx 2023-08-21 09:14:05 -07:00
shamoon
80f26676d7 Merge pull request #1843 from benphelps/fix/issue-1828
Fix: apply cardBlur to header boxed / boxedWidgets
2023-08-21 08:54:00 -07:00
shamoon
70b4f4e1e6 Apply cardBlur to header boxed / boxedWidgets 2023-08-21 08:51:35 -07:00
Nonoss117
dce89f0c01 Translated using Weblate (French)
Currently translated at 100.0% (513 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-19 22:51:25 +02:00
gallegonovato
5b5e561c3c Translated using Weblate (Spanish)
Currently translated at 100.0% (513 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-19 22:51:24 +02:00
Anonymous
31aff205e0 Translated using Weblate (Basque)
Currently translated at 6.4% (33 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-08-18 04:54:42 +02:00
Anonymous
1136d7d2cb Translated using Weblate (Indonesian)
Currently translated at 4.6% (24 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-08-18 04:54:41 +02:00
Anonymous
74a2245c29 Translated using Weblate (Slovenian)
Currently translated at 91.8% (471 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-08-18 04:54:41 +02:00
Anonymous
0e1a41fdd1 Translated using Weblate (Greek)
Currently translated at 35.0% (180 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-18 04:54:41 +02:00
Anonymous
7a51b62e43 Translated using Weblate (Korean)
Currently translated at 33.7% (173 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-08-18 04:54:40 +02:00
Anonymous
75ecf3eba5 Translated using Weblate (Slovak)
Currently translated at 1.9% (10 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-08-18 04:54:40 +02:00
Anonymous
f18146063f Translated using Weblate (Thai)
Currently translated at 9.1% (47 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-08-18 04:54:40 +02:00
Anonymous
0af60d06c2 Translated using Weblate (Latvian)
Currently translated at 23.0% (118 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-08-18 04:54:39 +02:00
Anonymous
1f00b3828b Translated using Weblate (Japanese)
Currently translated at 75.0% (385 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-18 04:54:39 +02:00
Anonymous
9e96738487 Translated using Weblate (Ukrainian)
Currently translated at 97.8% (502 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-18 04:54:39 +02:00
Anonymous
d2fb93f7e9 Translated using Weblate (Esperanto)
Currently translated at 28.2% (145 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-08-18 04:54:38 +02:00
Anonymous
7834f2fecb Translated using Weblate (Hindi)
Currently translated at 1.7% (9 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-08-18 04:54:38 +02:00
Anonymous
9cd25d541f Translated using Weblate (Malay)
Currently translated at 48.9% (251 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-08-18 04:54:38 +02:00
Anonymous
95707d527f Translated using Weblate (Danish)
Currently translated at 38.4% (197 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-08-18 04:54:38 +02:00
Anonymous
b64bcdb817 Translated using Weblate (Czech)
Currently translated at 86.5% (444 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-08-18 04:54:37 +02:00
Anonymous
4cc113697c Translated using Weblate (Arabic)
Currently translated at 51.0% (262 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-08-18 04:54:37 +02:00
Anonymous
65115cf6dc Translated using Weblate (Serbian)
Currently translated at 1.7% (9 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-08-18 04:54:37 +02:00
Anonymous
1af888934e Translated using Weblate (Turkish)
Currently translated at 76.6% (393 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-08-18 04:54:36 +02:00
Anonymous
7281f6d3a1 Translated using Weblate (Bulgarian)
Currently translated at 8.9% (46 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-08-18 04:54:36 +02:00
Anonymous
804b69d5a6 Translated using Weblate (Telugu)
Currently translated at 41.9% (215 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-08-18 04:54:36 +02:00
Anonymous
4cb18f7129 Translated using Weblate (Finnish)
Currently translated at 34.5% (177 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-08-18 04:54:35 +02:00
Anonymous
7558a24242 Translated using Weblate (Yue (Traditional))
Currently translated at 22.8% (117 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-08-18 04:54:35 +02:00
Anonymous
e17f594101 Translated using Weblate (Portuguese (Brazil))
Currently translated at 89.8% (461 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-08-18 04:54:34 +02:00
Anonymous
ed6000262d Translated using Weblate (Romanian)
Currently translated at 29.2% (150 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-08-18 04:54:34 +02:00
Anonymous
f2900ac859 Translated using Weblate (Hebrew)
Currently translated at 19.4% (100 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-08-18 04:54:34 +02:00
Anonymous
e9c5aa13de Translated using Weblate (Hungarian)
Currently translated at 91.8% (471 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-08-18 04:54:33 +02:00
Anonymous
ede5a53b7f Translated using Weblate (Croatian)
Currently translated at 91.6% (470 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-08-18 04:54:33 +02:00
Anonymous
11fa395b76 Translated using Weblate (Swedish)
Currently translated at 25.7% (132 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-08-18 04:54:32 +02:00
Anonymous
63bc0c971e Translated using Weblate (Polish)
Currently translated at 72.9% (374 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-08-18 04:54:32 +02:00
Anonymous
6712219d59 Translated using Weblate (Catalan)
Currently translated at 50.6% (260 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-08-18 04:54:32 +02:00
Anonymous
dbfd92b643 Translated using Weblate (Chinese (Traditional))
Currently translated at 97.2% (499 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-08-18 04:54:31 +02:00
Anonymous
c30f2ec4ca Translated using Weblate (Dutch)
Currently translated at 46.9% (241 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-08-18 04:54:31 +02:00
Anonymous
ff620cebf1 Translated using Weblate (Vietnamese)
Currently translated at 8.5% (44 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-08-18 04:54:30 +02:00
Anonymous
73c30cc3b5 Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.5% (80 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-08-18 04:54:30 +02:00
Anonymous
6eb8d6a93d Translated using Weblate (Italian)
Currently translated at 91.6% (470 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-08-18 04:54:29 +02:00
Anonymous
5786b8b895 Translated using Weblate (Chinese (Simplified))
Currently translated at 86.5% (444 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-08-18 04:54:29 +02:00
Anonymous
1015005086 Translated using Weblate (Russian)
Currently translated at 82.4% (423 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-18 04:54:29 +02:00
Anonymous
51db779007 Translated using Weblate (Portuguese)
Currently translated at 80.8% (415 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-08-18 04:54:28 +02:00
Anonymous
eb06eaf292 Translated using Weblate (French)
Currently translated at 99.2% (509 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-18 04:54:28 +02:00
Anonymous
46d34040af Translated using Weblate (Spanish)
Currently translated at 99.2% (509 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-18 04:54:28 +02:00
Anonymous
e567d6b6b6 Translated using Weblate (German)
Currently translated at 89.0% (457 of 513 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-08-18 04:54:27 +02:00
shamoon
70ffe63e59 Merge pull request #1820 from joncrangle/feature/mealie-widget
Feature: mealie widget
2023-08-17 19:53:31 -07:00
joncrangle
39a94190cf Merge branch 'main' into feature/mealie-widget 2023-08-16 23:43:20 -04:00
Nonoss117
a8dfdcdac0 Translated using Weblate (French)
Currently translated at 100.0% (509 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-15 13:57:37 +02:00
gallegonovato
5dcfd555cb Translated using Weblate (Spanish)
Currently translated at 100.0% (509 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-15 13:57:37 +02:00
fredodiable
583494f27a Fix: GameDig widget missing lib (#1811) 2023-08-14 20:00:23 -07:00
Anonymous
af43b62e2f Translated using Weblate (Basque)
Currently translated at 6.4% (33 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-08-14 02:34:59 +02:00
Anonymous
dfb1e25877 Translated using Weblate (Indonesian)
Currently translated at 4.7% (24 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-08-14 02:34:59 +02:00
Anonymous
5765d48bba Translated using Weblate (Slovenian)
Currently translated at 92.5% (471 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-08-14 02:34:58 +02:00
Anonymous
15f1d0ecd2 Translated using Weblate (Greek)
Currently translated at 35.3% (180 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-14 02:34:58 +02:00
Anonymous
2da13e3cd4 Translated using Weblate (Korean)
Currently translated at 33.9% (173 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-08-14 02:34:58 +02:00
Anonymous
32b139a436 Translated using Weblate (Slovak)
Currently translated at 1.9% (10 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-08-14 02:34:57 +02:00
Anonymous
8b6f174c51 Translated using Weblate (Thai)
Currently translated at 9.2% (47 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-08-14 02:34:57 +02:00
Anonymous
33b0aefd8a Translated using Weblate (Latvian)
Currently translated at 23.1% (118 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-08-14 02:34:57 +02:00
Anonymous
d8bd19d997 Translated using Weblate (Japanese)
Currently translated at 75.6% (385 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-14 02:34:56 +02:00
Anonymous
6cfd08bb85 Translated using Weblate (Ukrainian)
Currently translated at 98.6% (502 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-14 02:34:56 +02:00
Anonymous
deaf49ce8b Translated using Weblate (Esperanto)
Currently translated at 28.4% (145 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-08-14 02:34:56 +02:00
Anonymous
4cafb8decd Translated using Weblate (Hindi)
Currently translated at 1.7% (9 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-08-14 02:34:55 +02:00
Anonymous
a4cc538388 Translated using Weblate (Malay)
Currently translated at 49.3% (251 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-08-14 02:34:55 +02:00
Anonymous
828c52d90a Translated using Weblate (Danish)
Currently translated at 38.7% (197 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-08-14 02:34:55 +02:00
Anonymous
52bf9718ca Translated using Weblate (Czech)
Currently translated at 87.2% (444 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-08-14 02:34:54 +02:00
Anonymous
48bd6e8436 Translated using Weblate (Arabic)
Currently translated at 51.4% (262 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-08-14 02:34:54 +02:00
Anonymous
5e9d2d8439 Translated using Weblate (Serbian)
Currently translated at 1.7% (9 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-08-14 02:34:53 +02:00
Anonymous
08dbd59f1b Translated using Weblate (Turkish)
Currently translated at 77.2% (393 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-08-14 02:34:53 +02:00
Anonymous
b1706e79be Translated using Weblate (Bulgarian)
Currently translated at 9.0% (46 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-08-14 02:34:53 +02:00
Anonymous
62c914c57e Translated using Weblate (Telugu)
Currently translated at 42.2% (215 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-08-14 02:34:52 +02:00
Anonymous
d55e328c90 Translated using Weblate (Finnish)
Currently translated at 34.7% (177 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-08-14 02:34:52 +02:00
Anonymous
f80e7c4f25 Translated using Weblate (Yue (Traditional))
Currently translated at 22.9% (117 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-08-14 02:34:51 +02:00
Anonymous
0d38cbae8e Translated using Weblate (Portuguese (Brazil))
Currently translated at 90.5% (461 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-08-14 02:34:51 +02:00
Anonymous
6e5f15b6ec Translated using Weblate (Romanian)
Currently translated at 29.4% (150 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-08-14 02:34:51 +02:00
Anonymous
6f6f06ed38 Translated using Weblate (Hebrew)
Currently translated at 19.6% (100 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-08-14 02:34:50 +02:00
Anonymous
7a930d2173 Translated using Weblate (Hungarian)
Currently translated at 92.5% (471 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-08-14 02:34:50 +02:00
Anonymous
d71e316b5d Translated using Weblate (Croatian)
Currently translated at 92.3% (470 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-08-14 02:34:50 +02:00
Anonymous
63f8e1e5b1 Translated using Weblate (Swedish)
Currently translated at 25.9% (132 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-08-14 02:34:49 +02:00
Anonymous
c542ca1d0c Translated using Weblate (Polish)
Currently translated at 73.4% (374 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-08-14 02:34:48 +02:00
Anonymous
3f3f315e19 Translated using Weblate (Catalan)
Currently translated at 51.0% (260 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-08-14 02:34:48 +02:00
Anonymous
9f632c58fc Translated using Weblate (Chinese (Traditional))
Currently translated at 98.0% (499 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-08-14 02:34:48 +02:00
Anonymous
7e0ed2b8a7 Translated using Weblate (Dutch)
Currently translated at 47.3% (241 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-08-14 02:34:47 +02:00
Anonymous
22a2649b6e Translated using Weblate (Vietnamese)
Currently translated at 8.6% (44 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-08-14 02:34:47 +02:00
Anonymous
2ea780435a Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.7% (80 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-08-14 02:34:46 +02:00
Anonymous
7174b0ab24 Translated using Weblate (Italian)
Currently translated at 92.3% (470 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-08-14 02:34:46 +02:00
Anonymous
112d1e77b9 Translated using Weblate (Chinese (Simplified))
Currently translated at 87.2% (444 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-08-14 02:34:45 +02:00
Anonymous
f89cccf209 Translated using Weblate (Russian)
Currently translated at 83.1% (423 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-14 02:34:45 +02:00
Anonymous
41b1589347 Translated using Weblate (Portuguese)
Currently translated at 81.5% (415 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-08-14 02:34:45 +02:00
Anonymous
4896cc9457 Translated using Weblate (French)
Currently translated at 98.8% (503 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-14 02:34:44 +02:00
Anonymous
b9d523f0c4 Translated using Weblate (Spanish)
Currently translated at 98.8% (503 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-14 02:34:44 +02:00
Anonymous
d1a8523630 Translated using Weblate (German)
Currently translated at 89.7% (457 of 509 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-08-14 02:34:44 +02:00
George Stefanakis
46b2fc029d Translated using Weblate (Greek)
Currently translated at 35.7% (180 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-14 02:33:37 +02:00
Dan
f2f199124f Translated using Weblate (Ukrainian)
Currently translated at 99.8% (502 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-14 02:33:37 +02:00
Xinos
8d6f3b82f3 Translated using Weblate (Russian)
Currently translated at 84.0% (423 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-14 02:33:37 +02:00
shamoon
b0f29709c2 Merge pull request #1807 from userXinos/omv-widget
OpenMediaVault widget
2023-08-13 17:33:30 -07:00
Xinos
bf8c10bb61 OMV widget implementation 2023-08-13 09:24:03 -07:00
joncrangle
dc19ce4d38 Merge branch 'benphelps:main' into feature/mealie-widget 2023-08-11 15:10:16 -04:00
shamoon
3b1c9a69a4 Merge pull request #1802 from benphelps/fix/issue-1747
Fix jobStats potentially accessed before instantiated
2023-08-11 08:00:22 -07:00
shamoon
5c25279439 Fix jobStats potentially accessed before instantiated 2023-08-11 07:59:47 -07:00
Nonoss117
19bf7a0e5a Translated using Weblate (French)
Currently translated at 100.0% (503 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-10 21:49:41 +02:00
gallegonovato
9a3eb5a2b3 Translated using Weblate (Spanish)
Currently translated at 100.0% (503 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-10 21:49:41 +02:00
Jonathan Crangle
58f4cf6edd Add mealie widget 2023-08-09 15:13:17 -04:00
shamoon
63d4c6bdf8 Merge pull request #1784 from benphelps/mjpeg
Feature: mjpeg stream widget
2023-08-09 00:14:49 -07:00
Anonymous
369031a5e1 Translated using Weblate (Basque)
Currently translated at 6.5% (33 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eu/
2023-08-09 09:13:08 +02:00
Anonymous
3bf59245a6 Translated using Weblate (Indonesian)
Currently translated at 4.7% (24 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/id/
2023-08-09 09:13:08 +02:00
Anonymous
ef04ae8abe Translated using Weblate (Slovenian)
Currently translated at 93.6% (471 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sl/
2023-08-09 09:13:07 +02:00
Anonymous
64c0e9909d Translated using Weblate (Greek)
Currently translated at 30.2% (152 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-09 09:13:07 +02:00
Anonymous
2e6a146cb6 Translated using Weblate (Korean)
Currently translated at 34.3% (173 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ko/
2023-08-09 09:13:07 +02:00
Anonymous
a605b64d18 Translated using Weblate (Slovak)
Currently translated at 1.7% (9 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sk/
2023-08-09 09:13:06 +02:00
Anonymous
747cc147cb Translated using Weblate (Thai)
Currently translated at 9.3% (47 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/th/
2023-08-09 09:13:06 +02:00
Anonymous
3986634e0d Translated using Weblate (Latvian)
Currently translated at 23.4% (118 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/lv/
2023-08-09 09:13:06 +02:00
Anonymous
022dff6b99 Translated using Weblate (Japanese)
Currently translated at 76.5% (385 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ja/
2023-08-09 09:13:06 +02:00
Anonymous
828d1a5a3a Translated using Weblate (Ukrainian)
Currently translated at 99.2% (499 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-09 09:13:05 +02:00
Anonymous
1b629aed4f Translated using Weblate (Esperanto)
Currently translated at 28.8% (145 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/eo/
2023-08-09 09:13:05 +02:00
Anonymous
77eaf00c06 Translated using Weblate (Hindi)
Currently translated at 1.7% (9 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hi/
2023-08-09 09:13:05 +02:00
Anonymous
247d46bbbc Translated using Weblate (Malay)
Currently translated at 49.9% (251 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ms/
2023-08-09 09:13:04 +02:00
Anonymous
7f8782732d Translated using Weblate (Danish)
Currently translated at 39.1% (197 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/da/
2023-08-09 09:13:04 +02:00
Anonymous
ffae7e1058 Translated using Weblate (Czech)
Currently translated at 88.2% (444 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/cs/
2023-08-09 09:13:04 +02:00
Anonymous
6414b7c61d Translated using Weblate (Arabic)
Currently translated at 52.0% (262 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ar/
2023-08-09 09:13:04 +02:00
Anonymous
a0b6a90042 Translated using Weblate (Serbian)
Currently translated at 1.7% (9 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sr/
2023-08-09 09:13:03 +02:00
Anonymous
b6141c7235 Translated using Weblate (Turkish)
Currently translated at 78.1% (393 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/tr/
2023-08-09 09:13:03 +02:00
Anonymous
719f6c8a3a Translated using Weblate (Bulgarian)
Currently translated at 9.1% (46 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/bg/
2023-08-09 09:13:03 +02:00
Anonymous
6d22e1b283 Translated using Weblate (Telugu)
Currently translated at 42.7% (215 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/te/
2023-08-09 09:13:03 +02:00
Anonymous
64025ddb1b Translated using Weblate (Finnish)
Currently translated at 35.1% (177 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fi/
2023-08-09 09:13:02 +02:00
Anonymous
338a9da697 Translated using Weblate (Yue (Traditional))
Currently translated at 23.2% (117 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/yue_Hant/
2023-08-09 09:13:02 +02:00
Anonymous
af9dc9311c Translated using Weblate (Portuguese (Brazil))
Currently translated at 91.6% (461 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt_BR/
2023-08-09 09:13:02 +02:00
Anonymous
b63977a129 Translated using Weblate (Romanian)
Currently translated at 29.8% (150 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ro/
2023-08-09 09:13:01 +02:00
Anonymous
8058736918 Translated using Weblate (Hebrew)
Currently translated at 19.8% (100 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/he/
2023-08-09 09:13:01 +02:00
Anonymous
e805ed2e88 Translated using Weblate (Hungarian)
Currently translated at 93.6% (471 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hu/
2023-08-09 09:13:01 +02:00
Anonymous
3ebc302f02 Translated using Weblate (Croatian)
Currently translated at 93.4% (470 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/hr/
2023-08-09 09:13:00 +02:00
Anonymous
61cb50e12a Translated using Weblate (Swedish)
Currently translated at 26.2% (132 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/sv/
2023-08-09 09:13:00 +02:00
Anonymous
56c1627c7e Translated using Weblate (Polish)
Currently translated at 74.3% (374 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pl/
2023-08-09 09:13:00 +02:00
Anonymous
d41abd7126 Translated using Weblate (Catalan)
Currently translated at 51.6% (260 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ca/
2023-08-09 09:13:00 +02:00
Anonymous
781dc4b02c Translated using Weblate (Chinese (Traditional))
Currently translated at 99.2% (499 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-08-09 09:12:59 +02:00
Anonymous
fa78735f12 Translated using Weblate (Dutch)
Currently translated at 47.9% (241 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nl/
2023-08-09 09:12:59 +02:00
Anonymous
a6dc7db96e Translated using Weblate (Vietnamese)
Currently translated at 8.7% (44 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/vi/
2023-08-09 09:12:59 +02:00
Anonymous
ab8e4e21a1 Translated using Weblate (Norwegian Bokmål)
Currently translated at 15.9% (80 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/nb_NO/
2023-08-09 09:12:58 +02:00
Anonymous
ae124e49b3 Translated using Weblate (Italian)
Currently translated at 93.4% (470 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/it/
2023-08-09 09:12:58 +02:00
Anonymous
e4c7a90d14 Translated using Weblate (Chinese (Simplified))
Currently translated at 88.2% (444 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hans/
2023-08-09 09:12:58 +02:00
Anonymous
db6b5bb175 Translated using Weblate (Russian)
Currently translated at 84.6% (426 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/ru/
2023-08-09 09:12:58 +02:00
Anonymous
a96e875944 Translated using Weblate (Portuguese)
Currently translated at 82.5% (415 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/pt/
2023-08-09 09:12:57 +02:00
Anonymous
b0ae89c4ba Translated using Weblate (French)
Currently translated at 99.4% (500 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-09 09:12:57 +02:00
Anonymous
3802b54593 Translated using Weblate (Spanish)
Currently translated at 99.4% (500 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-09 09:12:57 +02:00
Anonymous
f2fdd77f96 Translated using Weblate (German)
Currently translated at 90.8% (457 of 503 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/de/
2023-08-09 09:12:56 +02:00
George Stefanakis
75ae5a9cf1 Translated using Weblate (Greek)
Currently translated at 30.4% (152 of 500 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/el/
2023-08-09 09:12:13 +02:00
Dan
715ceed97b Translated using Weblate (Ukrainian)
Currently translated at 99.8% (499 of 500 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/uk/
2023-08-09 09:12:13 +02:00
shamoon
1db38e5ca2 Merge pull request #1789 from fredodiable/main
Added status field for GameDig widget
2023-08-09 00:12:06 -07:00
fredodiable
70ea5ad60d Added status field for GameDig widget 2023-08-09 00:08:11 -07:00
Nitzan Miranda
12736cc003 Fix(AzureDevOps): PR approved count and Pipeline running status (#1788)
* fix pr-votes for approved with suggestions counts

* remove top1 result

top1 result prevent from running pipeline to show in request

* Update src/widgets/azuredevops/component.jsx

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>

---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2023-08-09 00:05:34 -07:00
shamoon
5611baa0b8 Merge pull request #1783 from benphelps/hidden-headers
allow hiding section headers
2023-08-06 07:36:05 -07:00
shamoon
f8c382c480 Allow specify object fit for mjpeg widget 2023-08-06 07:33:08 -07:00
Ben Phelps
ba19f77b8f add mjpeg stream widget 2023-08-06 14:21:01 +03:00
Ben Phelps
167ecb42de allow hiding section headers 2023-08-06 04:38:37 +03:00
Chun Chi Hsieh
15bf55952b Translated using Weblate (Chinese (Traditional))
Currently translated at 99.8% (499 of 500 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/zh_Hant/
2023-08-05 06:06:02 +02:00
Nonoss117
0f8f5e15a3 Translated using Weblate (French)
Currently translated at 100.0% (500 of 500 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/fr/
2023-08-05 06:06:02 +02:00
gallegonovato
33e3603d26 Translated using Weblate (Spanish)
Currently translated at 100.0% (500 of 500 strings)

Translation: Homepage/Homepage
Translate-URL: https://hosted.weblate.org/projects/homepage/homepage/es/
2023-08-05 06:06:01 +02:00
652 changed files with 52198 additions and 20827 deletions

View File

@@ -3,4 +3,10 @@ FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:${VARIANT}
RUN npm install -g pnpm
RUN apt-get update \
&& apt-get -y install --no-install-recommends \
python3-pip \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
ENV PATH="${PATH}:./node_modules/.bin"

View File

@@ -1,27 +1,26 @@
{
"name": "homepage",
"build": {
"dockerfile": "Dockerfile",
"args": {
"VARIANT": "18-bullseye"
}
},
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"mhutchie.git-graph",
"streetsidesoftware.code-spell-checker",
],
"settings": {
"eslint.format.enable": true,
"eslint.lintTask.enable": true,
"eslint.packageManager": "pnpm"
}
}
},
"postCreateCommand": ".devcontainer/setup.sh",
"forwardPorts": [
3000
]
"name": "homepage",
"build": {
"dockerfile": "Dockerfile",
"args": {
"VARIANT": "18-bullseye",
},
},
"customizations": {
"vscode": {
"extensions": [
"dbaeumer.vscode-eslint",
"mhutchie.git-graph",
"streetsidesoftware.code-spell-checker",
"esbenp.prettier-vscode",
],
"settings": {
"eslint.format.enable": true,
"eslint.lintTask.enable": true,
"eslint.packageManager": "pnpm",
},
},
},
"postCreateCommand": ".devcontainer/setup.sh",
"forwardPorts": [3000],
}

View File

@@ -3,6 +3,8 @@
# Install Node packages
pnpm install
python3 -m pip install -r requirements.txt
# Copy in skeleton configuration if there is no existing configuration
if [ ! -d "config/" ]; then
echo "Adding skeleton config"

View File

@@ -11,3 +11,6 @@ charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
max_line_length = 120
[*.md]
trim_trailing_whitespace = false

View File

@@ -13,6 +13,12 @@
{
"newlines-between": "always"
}
],
"no-else-return": [
"error",
{
"allowElseIf": true
}
]
},
"settings": {

56
.github/DISCUSSION_TEMPLATE/support.yml vendored Normal file
View File

@@ -0,0 +1,56 @@
body:
- type: markdown
attributes:
value: |
### ⚠️ Before opening a discussion:
- [Check the troubleshooting guide](https://gethomepage.dev/latest/troubleshooting/).
- [Search existing issues](https://github.com/gethomepage/homepage/search?q=&type=issues) [and discussions](https://github.com/gethomepage/homepage/search?q=&type=discussions).
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of the issue or question. If applicable, add screenshots to help explain your problem.
validations:
required: true
- type: input
id: version
attributes:
label: homepage version
placeholder: e.g. v0.4.18 (4ea2798)
validations:
required: true
- type: dropdown
id: install-method
attributes:
label: Installation method
options:
- Docker
- Unraid
- Source
- Other (please describe above)
validations:
required: true
- type: textarea
id: config
attributes:
label: Configuration
description: Please provide any relevant service, widget or otherwise related configuration here
render: yaml
- type: textarea
id: container-logs
attributes:
label: Container Logs
description: Please review and provide any logs from the container, if relevant
- type: textarea
id: browser-logs
attributes:
label: Browser Logs
description: Please review and provide any logs from the browser, if relevant
- type: textarea
id: troubleshooting
attributes:
label: Troubleshooting
description: Please include output from your [troubleshooting tests](https://gethomepage.dev/latest/more/troubleshooting/#service-widget-errors), if relevant.
validations:
required: true

6
.github/FUNDING.yml vendored
View File

@@ -1,3 +1,3 @@
github: benphelps
ko_fi: benphelps
custom: ["https://paypal.me/phelpsben"]
github: [gethomepage]
open_collective: homepage
patreon: gethomepage

View File

@@ -1,94 +1,33 @@
name: Bug report
description: Create a report to help us improve
title: "[Bug] "
labels: ["bug, unconfirmed"]
name: 🐛 Bug report
description: Please only raise an issue if you've been advised to do so in a GitHub discussion. Thanks! 🙏
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
Have a question? 👉 [Start a new discussion](https://github.com/benphelps/homepage/discussions/new) or [ask in chat](https://discord.gg/SaPGSzrEZC).
Before opening an issue, please double check:
- [The troubleshooting guide](https://gethomepage.dev/en/more/troubleshooting/).
- [The homepage documentation](https://gethomepage.dev/)
- [Existing issues](https://github.com/benphelps/homepage/search?q=&type=issues) and [discussions](https://github.com/benphelps/homepage/search?q=&type=discussions).
- type: textarea
id: description
attributes:
label: Description
description: A clear and concise description of what the bug is. If applicable, add screenshots to help explain your problem.
placeholder: |
Currently homepage does not work when...
[Screenshot if applicable]
validations:
required: true
- type: textarea
id: reproduction
attributes:
label: Steps to reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. Go to '...'
2. Click on '....'
3. See error
validations:
required: true
- type: input
id: version
attributes:
label: homepage version
placeholder: e.g. v0.4.18 (4ea2798)
validations:
required: true
- type: dropdown
id: install-method
attributes:
label: Installation method
options:
- Docker
- Unraid
- Source
- Other (please describe above)
validations:
required: true
- type: textarea
id: config
attributes:
label: Configuration
description: Please provide any relevant service, widget or otherwise related configuration here
render: yaml
- type: textarea
id: container-logs
attributes:
label: Container Logs
description: Please review and provide any logs from the container, if relevant
- type: textarea
id: browser-logs
attributes:
label: Browser Logs
description: Please review and provide any logs from the browser, if relevant
- type: textarea
id: troubleshooting
attributes:
label: Troubleshooting
description: Please include output from your [troubleshooting tests](https://gethomepage.dev/en/more/troubleshooting/#service-widget-errors). If this is a service widget issue and you do not include any information here your issue will be closed. If it is not, indicate e.g. 'n/a'
validations:
required: true
- type: textarea
id: other
attributes:
label: Other
description: Include any other relevant details. E.g. service version or API version, docker version, etc.
## ⚠️ Please note
The starting point for a bug report should always be a [GitHub discussion](https://github.com/gethomepage/homepage/discussions/new?category=support)
Thank you for contributing to homepage! ✊
- type: checkboxes
id: pre-flight
attributes:
label: Before submitting, I have made sure to
label: Before submitting, please confirm the following
options:
- label: Check [the documentation](https://gethomepage.dev/)
- label: I confirm this was discussed, and the maintainers asked that I open an issue.
required: true
- label: Follow [the troubleshooting guide](https://gethomepage.dev/en/more/troubleshooting/) (please include output above if applicable).
required: true
- label: Search [existing issues](https://github.com/benphelps/homepage/search?q=&type=issues) and [discussions](https://github.com/benphelps/homepage/search?q=&type=discussions).
- label: I am aware that if I create this issue without a discussion, it will be removed without a response.
required: true
- type: input
id: discussion
attributes:
label: Discussion Link
description: |
Please link to the GitHub discussion that led to this issue.
validations:
required: true
- type: textarea
id: additional
attributes:
label: Additional context
description: Optional
render: Text

View File

@@ -1,11 +1,11 @@
blank_issues_enabled: false
contact_links:
- name: 🤔 Questions and Help
url: https://github.com/benphelps/homepage/discussions
about: This issue tracker is for bugs only, not general support questions. Please refer to our Discussions.
url: https://github.com/gethomepage/homepage/discussions
about: For support, possible bug reports or general questions.
- name: 💬 Chat
url: https://discord.gg/k4ruYNrudu
about: Want to discuss homepage with others? Check out our chat.
- name: 🚀 Feature Request
url: https://github.com/benphelps/homepage/discussions/new?category=feature-requests
url: https://github.com/gethomepage/homepage/discussions/new?category=feature-requests
about: Remember to search for existing feature requests and "up-vote" any you like

View File

@@ -1,12 +1,12 @@
## Proposed change
<!--
Please include a summary of the change. Screenshots and / or videos can also be helpful if appropriate.
Please include a summary of the change. Screenshots and/or videos can also be helpful if appropriate.
*** Please see the development guidelines for new widgets: https://gethomepage.dev/en/more/development/#service-widget-guidelines
*** Please see the development guidelines for new widgets: https://gethomepage.dev/latest/more/development/#service-widget-guidelines
*** If you do not follow these guidelines your PR will likely be closed without review.
New service widgets should include example(s) of relevant relevant API output as well as a PR to the docs for the new widget.
New service widgets should include example(s) of relevant API output as well as updates to the docs for the new widget.
-->
Closes # (issue)
@@ -20,11 +20,12 @@ What type of change does your PR introduce to Homepage?
- [ ] New service widget
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Documentation only
- [ ] Other (please explain)
## Checklist:
- [ ] If adding a service widget or a change that requires it, I have added a corresponding PR to the [documentation](https://github.com/benphelps/homepage-docs) here:
- [ ] If adding a new widget I have reviewed the [guidelines](https://gethomepage.dev/en/more/development/#service-widget-guidelines).
- [ ] If applicable, I have checked that all tests pass with e.g. `pnpm lint`.
- [ ] If applicable, I have added corresponding documentation changes.
- [ ] If applicable, I have reviewed the [feature](https://gethomepage.dev/latest/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/latest/more/development/#service-widget-guidelines).
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/latest/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/latest/more/development/#code-linting).
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.

View File

@@ -5,7 +5,11 @@
version: 2
updates:
- package-ecosystem: "github-actions" # Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "monthly"

31
.github/workflows/crowdin.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: Crowdin Action
on:
workflow_dispatch:
schedule:
- cron: '2 */12 * * *'
push:
paths: [
'/public/locales/en/**',
]
branches: [ main ]
jobs:
synchronize-with-crowdin:
name: Crowdin Sync
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: crowdin action
uses: crowdin/github-action@v2
with:
upload_translations: false
download_translations: true
crowdin_branch_name: main
localization_branch_name: l10n_main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}

View File

@@ -9,11 +9,20 @@ on:
schedule:
- cron: '20 0 * * *'
push:
branches: [ "main" ]
branches:
- main
- feature/**
# Publish semver tags as releases.
tags: [ 'v*.*.*' ]
paths-ignore:
- 'docs/**'
- 'mkdocs.yml'
pull_request:
branches: [ "main" ]
paths-ignore:
- 'docs/**'
- 'mkdocs.yml'
merge_group:
env:
# Use docker.io for Docker Hub if empty
@@ -23,9 +32,28 @@ env:
jobs:
build:
pre-commit:
name: Linting Checks
runs-on: ubuntu-22.04
steps:
-
name: Checkout repository
uses: actions/checkout@v4
-
name: Install python
uses: actions/setup-python@v5
with:
python-version: 3.x
-
name: Check files
uses: pre-commit/action@v3.0.1
build:
name: Docker Build & Push
if: github.repository == 'gethomepage/homepage'
runs-on: self-hosted
needs:
- pre-commit
permissions:
contents: read
packages: write
@@ -35,7 +63,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
# Install the cosign tool except on PR
# https://github.com/sigstore/cosign-installer
@@ -48,12 +76,12 @@ jobs:
# Setup QEMU
# https://github.com/marketplace/actions/docker-setup-buildx#with-qemu
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
# Workaround: https://github.com/docker/build-push-action/issues/461
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
# This step is being disabled because the runner is on a self-hosted machine
# where the cache will stick between runs.
# - name: Cache Docker layers
@@ -68,7 +96,7 @@ jobs:
# https://github.com/docker/login-action
- name: Log into registry ${{ env.REGISTRY }}
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
@@ -78,7 +106,7 @@ jobs:
# https://github.com/docker/metadata-action
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
flavor: |
@@ -88,10 +116,10 @@ jobs:
# https://github.com/docker/build-push-action
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
push: ${{ github.event_name != 'pull_request' && !(github.event_name == 'push' && startsWith(github.ref, 'refs/heads/feature')) }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |

98
.github/workflows/docs-publish.yml vendored Normal file
View File

@@ -0,0 +1,98 @@
name: Docs
on:
push:
tags: ["v*.*.*"]
branches: ["main"]
paths:
- "docs/**"
- "mkdocs.yml"
pull_request:
paths:
- "docs/**"
- "mkdocs.yml"
merge_group:
workflow_dispatch:
permissions:
contents: write
jobs:
pre-commit:
name: Linting Checks
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install python
uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Check files
uses: pre-commit/action@v3.0.1
test:
name: Test Build
if: github.repository == 'gethomepage/homepage' && github.event_name == 'pull_request'
runs-on: ubuntu-latest
needs:
- pre-commit
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: echo "cache_id=$(date --utc '+%V')" >> $GITHUB_ENV
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: sudo apt-get install pngquant
- run: pip install mike
- run: pip install mkdocs-material mkdocs-redirects "mkdocs-material[imaging]"
- name: Test Docs Build
run: MKINSIDERS=false mkdocs build
deploy:
name: Build & Deploy
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request'
runs-on: ubuntu-latest
needs:
- pre-commit
steps:
- uses: actions/checkout@v4
with:
ref: main
- uses: actions/setup-python@v5
with:
python-version: 3.x
- run: echo "cache_id=${{github.sha}}" >> $GITHUB_ENV
- uses: actions/cache@v4
with:
key: mkdocs-material-${{ env.cache_id }}
path: .cache
restore-keys: |
mkdocs-material-
- run: sudo apt-get install pngquant
- run: pip install mike==2.0.0
- run: pip install git+https://${GH_TOKEN}@github.com/benphelps/mkdocs-material-insiders.git
- run: pip install mkdocs-redirects "mkdocs-material[imaging]"
- name: Set Git config
run: |
git config --global user.name "GitHub Action"
git config --global user.email "action@github.com"
- name: Sync gh-pages
run: |
git fetch origin gh-pages
git checkout gh-pages
git pull origin gh-pages
git checkout main
- name: Docs Deploy for Main
if: github.ref == 'refs/heads/main'
run: MKINSIDERS=true mike deploy --update --push ${{github.ref_name}}
- name: Docs Deploy for Tags
if: github.ref != 'refs/heads/main'
run: MKINSIDERS=true mike deploy --update --push ${{github.ref_name}} latest
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}

280
.github/workflows/repo-maintenance.yml vendored Normal file
View File

@@ -0,0 +1,280 @@
name: 'Repository Maintenance'
on:
schedule:
- cron: '0 3 * * *'
workflow_dispatch:
permissions:
issues: write
pull-requests: write
discussions: write
concurrency:
group: lock
jobs:
stale:
name: 'Stale'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
days-before-stale: 7
days-before-close: 14
stale-issue-label: stale
stale-pr-label: stale
stale-issue-message: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-respoistory-maintenance) for more details.
lock-threads:
name: 'Lock Old Threads'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v5
with:
issue-inactive-days: '30'
pr-inactive-days: '30'
discussion-inactive-days: '30'
log-output: true
issue-comment: >
This issue has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new discussion for related concerns.
See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.
pr-comment: >
This pull request has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new discussion for related concerns.
See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.
discussion-comment: >
This discussion has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new discussion for related concerns.
See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.
close-answered-discussions:
name: 'Close Answered Discussions'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
script: |
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const query = `query($owner:String!, $name:String!) {
repository(owner:$owner, name:$name){
discussions(first:100, answered:true, states:[OPEN]) {
nodes {
id,
number
}
}
}
}`;
const variables = {
owner: context.repo.owner,
name: context.repo.repo,
}
const result = await github.graphql(query, variables)
console.log(`Found ${result.repository.discussions.nodes.length} open answered discussions`)
for (const discussion of result.repository.discussions.nodes) {
console.log(`Closing discussion #${discussion.number} (${discussion.id})`)
const addCommentMutation = `mutation($discussion:ID!, $body:String!) {
addDiscussionComment(input:{discussionId:$discussion, body:$body}) {
clientMutationId
}
}`;
const commentVariables = {
discussion: discussion.id,
body: 'This discussion has been automatically closed because it was marked as answered. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.',
}
await github.graphql(addCommentMutation, commentVariables)
const closeDiscussionMutation = `mutation($discussion:ID!, $reason:DiscussionCloseReason!) {
closeDiscussion(input:{discussionId:$discussion, reason:$reason}) {
clientMutationId
}
}`;
const closeVariables = {
discussion: discussion.id,
reason: "RESOLVED",
}
await github.graphql(closeDiscussionMutation, closeVariables)
await sleep(1000)
}
close-outdated-discussions:
name: 'Close Outdated Discussions'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
script: |
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const CUTOFF_DAYS = 180;
const cutoff = new Date();
cutoff.setDate(cutoff.getDate() - CUTOFF_DAYS);
const query = `query(
$owner:String!,
$name:String!,
$supportCategory:ID!,
$generalCategory:ID!,
) {
supportDiscussions: repository(owner:$owner, name:$name){
discussions(
categoryId:$supportCategory,
last:50,
answered:false,
states:[OPEN],
) {
nodes {
id,
number,
updatedAt
}
},
},
generalDiscussions: repository(owner:$owner, name:$name){
discussions(
categoryId:$generalCategory,
last:50,
states:[OPEN],
) {
nodes {
id,
number,
updatedAt
}
}
}
}`;
const variables = {
owner: context.repo.owner,
name: context.repo.repo,
supportCategory: "DIC_kwDOH31rQM4CRErR",
generalCategory: "DIC_kwDOH31rQM4CRErQ"
}
const result = await github.graphql(query, variables);
const combinedDiscussions = [
...result.supportDiscussions.discussions.nodes,
...result.generalDiscussions.discussions.nodes,
]
console.log(`Checking ${combinedDiscussions.length} open discussions`);
for (const discussion of combinedDiscussions) {
if (new Date(discussion.updatedAt) < cutoff) {
console.log(`Closing outdated discussion #${discussion.number} (${discussion.id}), last updated at ${discussion.updatedAt}`);
const addCommentMutation = `mutation($discussion:ID!, $body:String!) {
addDiscussionComment(input:{discussionId:$discussion, body:$body}) {
clientMutationId
}
}`;
const commentVariables = {
discussion: discussion.id,
body: 'This discussion has been automatically closed due to inactivity. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.',
}
await github.graphql(addCommentMutation, commentVariables);
const closeDiscussionMutation = `mutation($discussion:ID!, $reason:DiscussionCloseReason!) {
closeDiscussion(input:{discussionId:$discussion, reason:$reason}) {
clientMutationId
}
}`;
const closeVariables = {
discussion: discussion.id,
reason: "OUTDATED",
}
await github.graphql(closeDiscussionMutation, closeVariables);
await sleep(1000);
}
}
close-unsupported-feature-requests:
name: 'Close Unsupported Feature Requests'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
with:
script: |
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
const CUTOFF_1_DAYS = 180;
const CUTOFF_1_COUNT = 5;
const CUTOFF_2_DAYS = 365;
const CUTOFF_2_COUNT = 10;
const cutoff1Date = new Date();
cutoff1Date.setDate(cutoff1Date.getDate() - CUTOFF_1_DAYS);
const cutoff2Date = new Date();
cutoff2Date.setDate(cutoff2Date.getDate() - CUTOFF_2_DAYS);
const query = `query(
$owner:String!,
$name:String!,
$featureRequestsCategory:ID!,
) {
repository(owner:$owner, name:$name){
discussions(
categoryId:$featureRequestsCategory,
last:100,
states:[OPEN],
) {
nodes {
id,
number,
updatedAt,
upvoteCount,
}
},
}
}`;
const variables = {
owner: context.repo.owner,
name: context.repo.repo,
featureRequestsCategory: "DIC_kwDOH31rQM4CRErS"
}
const result = await github.graphql(query, variables);
for (const discussion of result.repository.discussions.nodes) {
const discussionDate = new Date(discussion.updatedAt);
if ((discussionDate < cutoff1Date && discussion.upvoteCount < CUTOFF_1_COUNT) ||
(discussionDate < cutoff2Date && discussion.upvoteCount < CUTOFF_2_COUNT)) {
console.log(`Closing discussion #${discussion.number} (${discussion.id}), last updated at ${discussion.updatedAt} with votes ${discussion.upvoteCount}`);
const addCommentMutation = `mutation($discussion:ID!, $body:String!) {
addDiscussionComment(input:{discussionId:$discussion, body:$body}) {
clientMutationId
}
}`;
const commentVariables = {
discussion: discussion.id,
body: 'This discussion has been automatically closed due to lack of community support. See our [contributing guidelines](https://github.com/gethomepage/homepage/blob/main/CONTRIBUTING.md#automatic-repository-maintenance) for more details.',
}
await github.graphql(addCommentMutation, commentVariables);
const closeDiscussionMutation = `mutation($discussion:ID!, $reason:DiscussionCloseReason!) {
closeDiscussion(input:{discussionId:$discussion, reason:$reason}) {
clientMutationId
}
}`;
const closeVariables = {
discussion: discussion.id,
reason: "OUTDATED",
}
await github.graphql(closeDiscussionMutation, closeVariables);
await sleep(1000);
}
}

5
.gitignore vendored
View File

@@ -46,4 +46,9 @@ next-env.d.ts
# IDEs
/.idea/
# MkDocs documentation
site*/
.cache/
# venv
.venv/

19
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,19 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.2.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
exclude: "(^mkdocs\\.yml$)"
- id: check-added-large-files
- repo: https://github.com/pre-commit/mirrors-prettier
rev: 'v3.0.3'
hooks:
- id: prettier
types_or:
- javascript
- markdown
- jsx

1
.prettierrc Normal file
View File

@@ -0,0 +1 @@
{}

2
.vscode/launch.json vendored
View File

@@ -16,4 +16,4 @@
}
}
]
}
}

17
.vscode/settings.json vendored
View File

@@ -2,5 +2,18 @@
"files.exclude": {
"**/.next": true,
"**/node_modules": true
}
}
},
"yaml.schemas": {
"https://squidfunk.github.io/mkdocs-material/schema.json": "mkdocs.yml"
},
"yaml.customTags": [
"!ENV scalar",
"!ENV sequence",
"tag:yaml.org,2002:python/name:material.extensions.emoji.to_svg",
"tag:yaml.org,2002:python/name:material.extensions.emoji.twemoji",
"tag:yaml.org,2002:python/name:pymdownx.superfences.fence_code_format"
],
"[python]": {
"editor.defaultFormatter": "ms-python.autopep8"
},
}

View File

@@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
- Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
- Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
@@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within

View File

@@ -1,4 +1,5 @@
# Contributing to Homepage
We love your input! We want to make contributing to this project as easy and transparent as possible, whether it's:
- Reporting a bug
@@ -8,16 +9,20 @@ We love your input! We want to make contributing to this project as easy and tra
- Becoming a maintainer
## We Develop with Github
We use github to host code, to track issues and feature requests, as well as accept pull requests.
## Any contributions you make will be under the GNU General Public License v3.0
In short, when you submit code changes, your submissions are understood to be under the same [GNU General Public License v3.0](https://choosealicense.com/licenses/gpl-3.0/) that covers the project. Feel free to contact the maintainers if that's a concern.
## Report bugs using Github's [issues](https://github.com/benphelps/homepage/issues)
We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/benphelps/homepage/issues/new); it's that easy!
## Report bugs using Github [discussions](https://github.com/gethomepage/homepage/discussions)
We use GitHub discussions to triage bugs. Report a bug by [opening a new discussion](https://github.com/gethomepage/homepage/discussions/new?category=support); it's that easy! Please do not open an issue unless instructed to do so by a project maintainer.
## Write bug reports with detail, background, and sample configurations
Homepage includes a lot of configuration options and is often deploying in larger systems. Please include as much information (configurations, deployment method, Docker & API versions, etc) as you can when reporting an issue.
Homepage includes a lot of configuration options and is often deploying in larger systems. Please include as much information (configurations, deployment method, Docker & API versions, etc) as you can when reporting an issue.
**Great Bug Reports** tend to have:
@@ -29,16 +34,38 @@ Homepage includes a lot of configuration options and is often deploying in large
- What actually happens
- Notes (possibly including why you think this might be happening, or stuff you tried that didn't work)
People *love* thorough bug reports. I'm not even kidding.
People _love_ thorough bug reports. I'm not even kidding.
## Development Guidelines
Please see the [documentation regarding development](https://gethomepage.dev/en/more/development/) and specifically the [guidelines for new service widgets](https://gethomepage.dev/en/more/development/#service-widget-guidelines) if you are considering making one.
Please see the [documentation regarding development](https://gethomepage.dev/latest/more/development/) and specifically the [guidelines for new service widgets](https://gethomepage.dev/latest/more/development/#service-widget-guidelines) if you are considering making one.
## Use a Consistent Coding Style
This project follows the [Airbnb JavaScript Style Guide](https://github.com/airbnb/javascript), please follow it when submitting pull requests.
Please see information in the docs regarding [code formatting with pre-commit hooks](https://gethomepage.dev/latest/more/development/#code-formatting-with-pre-commit-hooks).
## License
By contributing, you agree that your contributions will be licensed under its GNU General Public License.
## Use of AI for pull requests
In general, homepage does not accept "AI-generated" PRs. If you choose to use something like that to aid the development process to generate a significant proportion of the pull request, please make sure this is explicitly stated in the PR itself.
## References
This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/main/CONTRIBUTING.md)
## Automatic Respository Maintenance
The homepage team appreciates all effort and interest from the community in filing bug reports, creating feature requests, sharing ideas and helping other community members. That said, in an effort to keep the repository organized and managebale the project uses automatic handling of certain areas:
- Issues, pull requests and discussions that are closed will be locked after 30 days of inactivity.
- Discussions with a marked answer will be automatically closed.
- Discussions in the 'General' or 'Support' categories will be closed after 180 days of inactivity.
- Feature requests that do not meet the following thresholds will be closed: 5 "up-votes" after 180 days of inactivity or 10 "up-votes" after 365 days.
In all cases, threads can be re-opened by project maintainers and, of course, users can always create a new discussion for related concerns.
Finally, remember that all information remains searchable and 'closed' feature requests can still serve as inspiration for new features.
Thank you all for your contributions.

View File

@@ -36,9 +36,9 @@ RUN npm run telemetry \
FROM docker.io/node:18-alpine AS runner
LABEL org.opencontainers.image.title "Homepage"
LABEL org.opencontainers.image.description "A self-hosted services landing page, with docker and service integrations."
LABEL org.opencontainers.image.url="https://github.com/benphelps/homepage"
LABEL org.opencontainers.image.documentation='https://github.com/benphelps/homepage/wiki'
LABEL org.opencontainers.image.source='https://github.com/benphelps/homepage'
LABEL org.opencontainers.image.url="https://github.com/gethomepage/homepage"
LABEL org.opencontainers.image.documentation='https://github.com/gethomepage/homepage/wiki'
LABEL org.opencontainers.image.source='https://github.com/gethomepage/homepage'
LABEL org.opencontainers.image.licenses='Apache-2.0'
ENV NODE_ENV production

162
README.md
View File

@@ -6,99 +6,109 @@
</p>
<p align="center">
A modern <em>(fully static, fast)</em>, secure <em>(fully proxied)</em>, highly customizable application dashboard with integrations for more than 25 services and translations for over 15 languages. Easily configured via YAML files (or discovery via docker labels).
A modern, <em>fully static, fast</em>, secure <em>fully proxied</em>, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. Easily configured via YAML files or through docker label discovery.
</p>
<p align="center">
<img src="images/1.png" />
<img src="images/1.png?v=2" />
</p>
<p align="center">
<img src="images/2.png" width="19%" />
<img src="images/3.png" width="19%" />
<img src="images/4.png" width="19%" />
<img src="images/5.png" width="19%" />
<img src="images/6.png" width="19%" />
<a href="https://github.com/gethomepage/homepage/actions/workflows/docker-publish.yml"><img alt="GitHub Workflow Status (with event)" src="https://img.shields.io/github/actions/workflow/status/gethomepage/homepage/docker-publish.yml"></a>
&nbsp;
<a href="https://crowdin.com/project/gethomepage" target="_blank"><img src="https://badges.crowdin.net/gethomepage/localized.svg"></a>
&nbsp;
<a href="https://discord.gg/k4ruYNrudu"><img alt="Discord" src="https://img.shields.io/discord/1019316731635834932"></a>
&nbsp;
<a href="http://gethomepage.dev/latest/" title="Docs"><img title="Docs" src="https://github.com/gethomepage/homepage/actions/workflows/docs-publish.yml/badge.svg"/></a>
&nbsp;
<a href="https://paypal.me/phelpsben" title="Donate"><img alt="GitHub Sponsors" src="https://img.shields.io/github/sponsors/benphelps"></a>
</p>
<p align="center">
<a href="https://discord.gg/k4ruYNrudu"><img src="https://img.shields.io/badge/Discord - Chat-blue?logo=discord&logoColor=white" /></a>
<a href="https://paypal.me/phelpsben" title="Donate"><img src="https://img.shields.io/badge/PayPal - Donate-blue?logo=paypal&logoColor=white" alt="Linkedin - phelpsben"></a>
<a href="https://www.digitalocean.com/?refcode=df14bcb7c016&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="https://web-platforms.sfo2.cdn.digitaloceanspaces.com/WWW/Badge%201.svg" alt="DigitalOcean Referral Badge" /></a>
</p>
<p align="center">
<a href="https://github.com/benphelps/homepage/actions/workflows/docker-publish.yml"><img src="https://github.com/benphelps/homepage/actions/workflows/docker-publish.yml/badge.svg" alt="Docker"></a>
<a href="https://hosted.weblate.org/engage/homepage/"><img src="https://hosted.weblate.org/widgets/homepage/-/homepage/svg-badge.svg" alt="Weblate"></a>
<em>Homepage builds are kindly powered by DigitalOcean.</em>
</p>
## Features
# Features
- **Fast!** The entire site is statically generated at build time, so you can expect instant load times
- **Secure!** Every API request to backend services goes through a proxy server, so your API keys are never exposed to the frontend client.
- Images built for AMD64 (x86_64), ARM64, ARMv7 and ARMv6
- Supports all Raspberry Pi's, most SBCs & Apple Silicon
- Full i18n support with translations for Catalan, Chinese, Dutch, Finnish, French, German, Hebrew, Hungarian, Malay, Norwegian Bokmål, Polish, Portuguese, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish and Yue
- Want to help translate? [Join the Weblate project](https://hosted.weblate.org/engage/homepage/)
- Service & Web Bookmarks
- Docker Integration
- Container status (Running / Stopped) & statistics (CPU, Memory, Network)
- Automatic service discovery (via labels)
- Service Integration
- Sonarr, Radarr, Readarr, Prowlarr, Bazarr, Lidarr, Emby, Jellyfin, Tautulli, Plex and more
- Ombi, Overseerr, Jellyseerr, Jackett, NZBGet, SABnzbd, ruTorrent, Transmission, qBittorrent and more
- Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify, Syncthing Relay Server, Authentik, Proxmox and more
- Information Providers
- Coin Market Cap, Mastodon and more
- Information & Utility Widgets
- System Stats (Disk, CPU, Memory)
- Weather via [OpenWeatherMap](https://openweathermap.org/) or [Open-Meteo](https://open-meteo.com/)
- Web Search Bar
- UniFi Console, Glances and more
- Instant "Quick-launch" search
- Customizable
- 21 theme colors with light and dark mode support
- Background image support
- Column and Row layout options
With features like quick search, bookmarks, weather support, a wide range of integrations and widgets, an elegant and modern design, and a focus on performance, Homepage is your ideal start to the day and a handy companion throughout it.
## Support & Suggestions
- **Fast** - The site is statically generated at build time for instant load times.
- **Secure** - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community.
- **For Everyone** - Images built for AMD64, ARM64, ARMv7, and ARMv6.
- **Full i18n** - Support for over 40 languages.
- **Service & Web Bookmarks** - Add custom links to the homepage.
- **Docker Integration** - Container status and stats. Automatic service discovery via labels.
- **Service Integration** - Over 100 service integrations, including popular starr and self-hosted apps.
- **Information & Utility Widgets** - Weather, time, date, search, and more.
- **And much more...**
If you have any questions, suggestions, or general issues, please start a discussion on the [Discussions](https://github.com/benphelps/homepage/discussions) page.
## Docker Integration
For bug reports, please open an issue on the [Issues](https://github.com/benphelps/homepage/issues) page.
Homepage has built-in support for Docker, and can automatically discover and add services to the homepage based on labels. See the [Docker Service Discovery](https://gethomepage.dev/latest/configs/docker/#automatic-service-discovery) page for more information.
## Getting Started
## Service Widgets
For configuration options, examples and more, [please check out the homepage site](http://gethomepage.dev).
Homepage also has support for over 100 3rd party services, including all popular starr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd party APIs. See the [Service](https://gethomepage.dev/latest/widgets/) page for more information.
### With Docker
## Information Widgets
Homepage has built-in support for a number of information providers, including weather, time, date, search, glances and more. System and status information presented at the top of the page. See the [Information Providers](https://gethomepage.dev/latest/widgets/) page for more information.
## Customization
Homepage is highly customizable, with support for custom themes, custom CSS & JS, custom layouts, formatting, localization and more. See the [Settings](https://gethomepage.dev/latest/configs/settings/) page for more information.
# Getting Started
For configuration options, examples and more, [please check out the homepage documentation](http://gethomepage.dev).
## Security Notice 🔒
Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN.
## With Docker
Using docker compose:
```yaml
version: "3.3"
services:
homepage:
image: ghcr.io/benphelps/homepage:latest
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
environment:
PUID: 1000 # optional, your user id
PGID: 1000 # optional, your group id
ports:
- 3000:3000
volumes:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations
- /var/run/docker.sock:/var/run/docker.sock:ro # optional, for docker integrations
restart: unless-stopped
```
or docker run:
```bash
docker run -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/benphelps/homepage:latest
docker run --name homepage \
-e PUID=1000 \
-e PGID=1000 \
-p 3000:3000 \
-v /path/to/config:/app/config \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
--restart unless-stopped \
ghcr.io/gethomepage/homepage:latest
```
### With Node
## From Source
First, clone the repository:
```bash
git clone https://github.com/benphelps/homepage.git
git clone https://github.com/gethomepage/homepage.git
```
Then install dependencies and build the production bundle (I'm using pnpm here, you can use npm or yarn if you like):
@@ -110,22 +120,17 @@ pnpm build
If this is your first time starting, copy the `src/skeleton` directory to `config/` to populate initial example config files.
Finally, run the server:
Finally, run the server in production mode:
```bash
pnpm start
```
## Configuration
# Configuration
Configuration files will be generated and placed on the first request.
Please refer to the [homepage documentation website](https://gethomepage.dev/) for more information. Everything you need to know about configuring Homepage is there. Please read everything carefully before asking for help, as most questions are answered there or are simple YAML configuration issues.
Configuration is done in the /config directory using .yaml files. Refer to each config for
the specific configuration options.
You may also check [the homepage site](http://gethomepage.dev) for detailed configuration instructions, examples and more.
## Development
# Development
Install NPM packages, this project uses [pnpm](https://pnpm.io/) (and so should you!):
@@ -141,21 +146,36 @@ pnpm dev
Open [http://localhost:3000](http://localhost:3000) to start.
This is a [Next.js](https://nextjs.org/) application, see their documentation for more information:
This is a [Next.js](https://nextjs.org/) application, see their documentation for more information.
## Contributors
# Documentation
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
The homepage documentation is available at [https://gethomepage.dev/](https://gethomepage.dev/).
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
Homepage uses Material for MkDocs for documentation. To run the documentation locally, first install the dependencies:
<!-- ALL-CONTRIBUTORS-LIST:END -->
```bash
pip install -r requirements.txt
```
Then run the development server:
```bash
mkdocs serve # or build, to build the static site
```
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
[![All Contributors](https://img.shields.io/badge/all_contributors-13-orange.svg?style=flat-square)](#contributors)
<!-- ALL-CONTRIBUTORS-BADGE:END -->
# Support & Suggestions
If you have any questions, suggestions, or general issues, please start a discussion on the [Discussions](https://github.com/gethomepage/homepage/discussions) page.
## Troubleshooting
In addition to the docs, the [troubleshooting guide](https://gethomepage.dev/latest/troubleshooting/) can help reveal many basic config or network issues. If you're having a problem, it's a good place to start.
## Contributing & Contributors
Contributions are welcome! Please see the [CONTRIBUTING.md](CONTRIBUTING.md) file for more information.
Thanks to the over 200 contributors who have helped make this project what it is today!
Especially huge thanks to [@shamoon](https://github.com/shamoon), who has been the backbone of this community from the very start.

6
crowdin.yml Normal file
View File

@@ -0,0 +1,6 @@
project_id_env: CROWDIN_PROJECT_ID
api_token_env: CROWDIN_PERSONAL_TOKEN
preserve_hierarchy: true
files:
- source: /public/locales/en/*.json
translation: /public/locales/%osx_locale%/%original_file_name%

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

3
docs/assets/custom.css Normal file
View File

@@ -0,0 +1,3 @@
.md-typeset[data-page-id="landing"] .md-header-anchor {
display: none;
}

BIN
docs/assets/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 734 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 721 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
docs/assets/sections.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

BIN
docs/assets/sections.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

37
docs/configs/bookmarks.md Normal file
View File

@@ -0,0 +1,37 @@
---
title: Bookmarks
description: Bookmark Configuration
---
Bookmarks are configured in the `bookmarks.yaml` file. They function much the same as [Services](services.md), in how groups and lists work. They're just much simpler, smaller, and contain no extra features other than being a link out.
The design of homepage expects `abbr` to be 2 letters, but is not otherwise forced.
You can also use an icon for bookmarks similar to the [options for service icons](services.md#icons). If both icon and abbreviation are supplied, the icon takes precedence.
By default, the description will use the hostname of the link, but you can override it with a custom description.
```yaml
---
- Developer:
- Github:
- abbr: GH
href: https://github.com/
- Social:
- Reddit:
- icon: reddit.png
href: https://reddit.com/
description: The front page of the internet
- Entertainment:
- YouTube:
- abbr: YT
href: https://youtube.com/
```
which renders to (depending on your theme, etc.):
<img width="1000" alt="Bookmarks" src="https://user-images.githubusercontent.com/19408/269307009-d7e45885-230f-4e07-b421-9822017ae878.png">
The default [bookmarks.yaml](https://github.com/gethomepage/homepage/blob/main/src/skeleton/bookmarks.yaml) is a working example.

View File

@@ -0,0 +1,17 @@
---
title: Custom CSS & JS
description: Adding Custom CSS or JS
---
As of version v0.6.30 homepage supports adding your own custom css & javascript. Please do so **at your own risk**.
To add custom css simply edit the `custom.css` file under your config directory, similarly for javascript you would edit `custom.js`. You can then target elements in homepage with various classes / ids to customize things to your liking.
You can also set a specific `id` for a service or bookmark to target with your custom css or javascript, e.g.
```yaml
Service:
id: myserviceid
icon: icon.png
...
```

238
docs/configs/docker.md Normal file
View File

@@ -0,0 +1,238 @@
---
title: Docker
description: Docker Configuration
---
Docker instances are configured inside the `docker.yaml` file. Both IP:PORT and Socket connections are supported.
For IP:PORT, simply make sure your Docker instance [has been configured](https://gist.github.com/styblope/dc55e0ad2a9848f2cc3307d4819d819f) to accept API traffic over the HTTP API.
```yaml
my-remote-docker:
host: 192.168.0.101
port: 2375
```
## Using Docker TLS
Since Docker supports connecting with TLS and client certificate authentication, you can include TLS details when connecting to the HTTP API. Further details of setting up Docker to accept TLS connections, and generation of the keys and certs can be found [in the Docker documentation](https://docs.docker.com/engine/security/protect-access/#use-tls-https-to-protect-the-docker-daemon-socket). The file entries are relative to the `config` directory (location of `docker.yaml` file).
```yaml
my-remote-docker:
host: 192.168.0.101
port: 275
tls:
keyFile: tls/key.pem
caFile: tls/ca.pem
certFile: tls/cert.pem
```
## Using Docker Socket Proxy
Due to security concerns with exposing the docker socket directly, you can use a [docker-socket-proxy](https://github.com/Tecnativa/docker-socket-proxy) container to expose the docker socket on a more restricted and secure API.
Here is an example docker-compose file that will expose the docker socket, and then connect to it from the homepage container:
```yaml
dockerproxy:
image: ghcr.io/tecnativa/docker-socket-proxy:latest
container_name: dockerproxy
environment:
- CONTAINERS=1 # Allow access to viewing containers
- SERVICES=1 # Allow access to viewing services (necessary when using Docker Swarm)
- TASKS=1 # Allow access to viewing tasks (necessary when using Docker Swarm)
- POST=0 # Disallow any POST operations (effectively read-only)
ports:
- 127.0.0.1:2375:2375
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Mounted as read-only
restart: unless-stopped
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
volumes:
- /path/to/config:/app/config
ports:
- 3000:3000
restart: unless-stopped
```
Then, inside of your `docker.yaml` settings file, you'd configure the docker instance like so:
```yaml
my-docker:
host: dockerproxy
port: 2375
```
## Using Socket Directly
If you'd rather use the socket directly, first make sure that you're passing the local socket into the Docker container.
!!! note
In order to use the socket directly homepage must be running as root
```yaml
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
volumes:
- /path/to/config:/app/config
- /var/run/docker.sock:/var/run/docker.sock # pass local proxy
ports:
- 3000:3000
restart: unless-stopped
```
If you're using `docker run`, this would be `-v /var/run/docker.sock:/var/run/docker.sock`.
Then, inside of your `docker.yaml` settings file, you'd configure the docker instance like so:
```yaml
my-docker:
socket: /var/run/docker.sock
```
## Services
Once you've configured your docker instances, you can then apply them to your services, to get stats and status reporting shown.
Inside of the service you'd like to connect to docker:
```yaml
- Emby:
icon: emby.png
href: "http://emby.home/"
description: Media server
server: my-docker # The docker server that was configured
container: emby # The name of the container you'd like to connect
```
## Automatic Service Discovery
Homepage features automatic service discovery for containers with the proper labels attached, all configuration options can be applied using dot notation, beginning with `homepage`.
Below is an example of the same service entry shown above, as docker labels.
```yaml
services:
emby:
image: lscr.io/linuxserver/emby:latest
container_name: emby
ports:
- 8096:8096
restart: unless-stopped
labels:
- homepage.group=Media
- homepage.name=Emby
- homepage.icon=emby.png
- homepage.href=http://emby.home/
- homepage.description=Media server
```
When your Docker instance has been properly configured, this service will be automatically discovered and added to your Homepage. **You do not need to specify the `server` or `container` values, as they will be automatically inferred.**
**When using docker swarm use _deploy/labels_**
## Widgets
You may also configure widgets, along with the standard service entry, again, using dot notation.
```yaml
labels:
- homepage.group=Media
- homepage.name=Emby
- homepage.icon=emby.png
- homepage.href=http://emby.home/
- homepage.description=Media server
- homepage.widget.type=emby
- homepage.widget.url=http://emby.home
- homepage.widget.key=yourembyapikeyhere
- homepage.widget.fields=["field1","field2"] # optional
```
You can add specify fields for e.g. the [CustomAPI](../widgets/services/customapi.md) widget by using array-style dot notation:
```yaml
labels:
- homepage.group=Media
- homepage.name=Emby
- homepage.icon=emby.png
- homepage.href=http://emby.home/
- homepage.description=Media server
- homepage.widget.type=customapi
- homepage.widget.url=http://argus.service/api/v1/service/summary/emby
- homepage.widget.mappings[0].label=Deployed Version
- homepage.widget.mappings[0].field.status=deployed_version
- homepage.widget.mappings[1].label=Latest Version
- homepage.widget.mappings[1].field.status=latest_version
```
## Docker Swarm
Docker swarm is supported and Docker services are specified with the same `server` and `container` notation. To enable swarm support you will need to include a `swarm` setting in your docker.yaml, e.g.
```yaml
my-docker:
socket: /var/run/docker.sock
swarm: true
```
For the automatic service discovery to discover all services it is important that homepage should be deployed on a manager node. Set deploy requirements to the master node in your stack yaml config, e.g.
```yaml
....
deploy:
placement:
constraints:
- node.role == manager
...
```
In order to detect every service within the Docker swarm it is necessary that service labels should be used and not container labels. Specify the homepage labels as:
```yaml
....
deploy:
labels:
- homepage.icon=foobar
...
```
## Multiple Homepage Instances
The optional field `instanceName` can be configured in [settings.yaml](settings.md#instance-name) to differentiate between multiple homepage instances.
To limit a label to an instance, insert `.instance.{{instanceName}}` after the `homepage` prefix.
```yaml
labels:
- homepage.group=Media
- homepage.name=Emby
- homepage.icon=emby.png
- homepage.instance.internal.href=http://emby.lan/
- homepage.instance.public.href=https://emby.mydomain.com/
- homepage.description=Media server
```
## Ordering
As of v0.6.4 discovered services can include an optional `weight` field to determine sorting such that:
- Default weight for discovered services is 0
- Default weight for configured services is their index within their group scaled by 100, i.e. (index + 1) \* 100
- If two items have the same weight value, then they will be sorted by name
## Show stats
You can show the docker stats by clicking the status indicator but this can also be controlled per-service with:
```yaml
- Example Service:
...
showStats: true
```
Also see the settings for [show docker stats](settings.md#show-docker-stats).

17
docs/configs/index.md Normal file
View File

@@ -0,0 +1,17 @@
---
title: Configuration
description: Homepage Configuration
icon: material/cog
---
Homepage uses YAML for configuration, YAML stands for "YAML Ain't Markup Language.". It's a human-readable data serialization format that's a superset of JSON. Great for config files, easy to read and write. Supports complex data types like lists and objects. **Indentation matters.** If you already use Docker Compose, you already use YAML.
Here are some tips when writing YAML:
1. **Use Indentation Carefully**: YAML relies on indentation, not brackets.
2. Avoid Tabs: Stick to spaces for indentation to avoid parsing errors. 2 spaces are common.
3. Quote Strings: Use single or double quotes for strings with special characters, this is especially important for API keys.
4. Key-Value Syntax: Use key: value format. Colon must be followed by a space.
5. Validate: Always validate your YAML with a linter before deploying.
You can find tons of online YAML validators, here's one: [https://codebeautify.org/yaml-validator](https://codebeautify.org/yaml-validator), heres another: [https://jsonformatter.org/yaml-validator](https://jsonformatter.org/yaml-validator).

145
docs/configs/kubernetes.md Normal file
View File

@@ -0,0 +1,145 @@
---
title: Kubernetes
description: Kubernetes Configuration
---
The Kubernetes connectivity has the following requirements:
- Kubernetes 1.19+
- Metrics Service
- An Ingress controller
The Kubernetes connection is configured in the `kubernetes.yaml` file. There are 3 modes to choose from:
- **disabled** - disables kubernetes connectivity
- **default** - uses the default kubeconfig [resolution](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
- **cluster** - uses a service account inside the cluster
```yaml
mode: default
```
## Services
Once the Kubernetes connection is configured, individual services can be configured to pull statistics. Only CPU and Memory are currently supported.
Inside of the service you'd like to connect to a pod:
```yaml
- Emby:
icon: emby.png
href: "http://emby.home/"
description: Media server
namespace: media # The kubernetes namespace the app resides in
app: emby # The name of the deployed app
```
The `app` field is used to create a label selector, in this example case it would match pods with the label: `app.kubernetes.io/name=emby`.
Sometimes this is insufficient for complex or atypical application deployments. In these cases, the `podSelector` field can be used. Any field selector can be used with it, so it allows for some very powerful selection capabilities.
For instance, it can be utilized to roll multiple underlying deployments under one application to see a high-level aggregate:
```yaml
- Element Chat:
icon: matrix-light.png
href: https://chat.example.com
description: Matrix Synapse Powered Chat
app: matrix-element
namespace: comms
podSelector: >-
app.kubernetes.io/instance in (
matrix-element,
matrix-media-repo,
matrix-media-repo-postgresql,
matrix-synapse
)
```
!!! note
A blank string as a podSelector does not deactivate it, but will actually select all pods in the namespace. This is a useful way to capture the resource usage of a complex application siloed to a single namespace, like Longhorn.
## Automatic Service Discovery
Homepage features automatic service discovery by Ingress annotations. All configuration options can be applied using typical annotation syntax, beginning with `gethomepage.dev/`.
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: emby
annotations:
gethomepage.dev/enabled: "true"
gethomepage.dev/description: Media Server
gethomepage.dev/group: Media
gethomepage.dev/icon: emby.png
gethomepage.dev/name: Emby
gethomepage.dev/widget.type: "emby"
gethomepage.dev/widget.url: "https://emby.example.com"
gethomepage.dev/pod-selector: ""
gethomepage.dev/weight: 10 # optional
gethomepage.dev/instance: "public" # optional
spec:
rules:
- host: emby.example.com
http:
paths:
- backend:
service:
name: emby
port:
number: 8080
path: /
pathType: Prefix
```
When the Kubernetes cluster connection has been properly configured, this service will be automatically discovered and added to your Homepage. **You do not need to specify the `namespace` or `app` values, as they will be automatically inferred.**
If you are using multiple instances of homepage, an `instance` annotation can be specified to limit services to a specific instance. If no instance is provided, the service will be visible on all instances.
If you have a single service that needs to be shown on multiple specific instances of homepage (but not on all of them), the service can be annotated by multiple `instance.name` annotations, where `name` can be the names of your specific multiple homepage instances. For example, a service that is annotated with `gethomepage.dev/instance.public: ""` and `gethomepage.dev/instance.internal: ""` will be shown on `public` and `internal` homepage instances.
### Traefik IngressRoute support
Homepage can also read ingresses defined using the Traefik IngressRoute custom resource definition. Due to the complex nature of Traefik routing rules, it is required for the `gethomepage.dev/href` annotation to be set:
```yaml
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: emby
annotations:
gethomepage.dev/href: "https://emby.example.com"
gethomepage.dev/enabled: "true"
gethomepage.dev/description: Media Server
gethomepage.dev/group: Media
gethomepage.dev/icon: emby.png
gethomepage.dev/app: emby-app # optional, may be needed if app.kubernetes.io/name != ingress metadata.name
gethomepage.dev/name: Emby
gethomepage.dev/widget.type: "emby"
gethomepage.dev/widget.url: "https://emby.example.com"
gethomepage.dev/pod-selector: ""
gethomepage.dev/weight: 10 # optional
gethomepage.dev/instance: "public" # optional
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`emby.example.com`)
services:
- kind: Service
name: emby
namespace: emby
port: 8080
scheme: http
strategy: RoundRobin
weight: 10
```
If the `href` attribute is not present, Homepage will ignore the specific IngressRoute.
## Caveats
Similarly to Docker service discovery, there currently is no rigid ordering to discovered services and discovered services will be displayed above those specified in the `services.yaml`.

View File

@@ -0,0 +1,40 @@
---
title: Service Widgets
description: Service Widget Configuration
---
Unless otherwise noted, URLs should not end with a `/` or other API path. Each widget will handle the path on its own.
Each service can have one widget attached to it (often matching the service type, but that's not forced).
In addition to the href of the service, you can also specify the target location in which to open that link. See [Link Target](settings.md#link-target) for more details.
Using Emby as an example, this is how you would attach the Emby service widget.
```yaml
- Emby:
icon: emby.png
href: http://emby.host.or.ip/
description: Movies & TV Shows
widget:
type: emby
url: http://emby.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```
## Field Visibility
Each widget can optionally provide a list of which fields should be visible via the `fields` widget property. If no fields are specified, then all fields will be displayed. The `fields` property must be a valid YAML array of strings. As an example, here is the entry for Sonarr showing only a couple of fields.
**In all cases a widget will work and display all fields without specifying the `fields` property.**
```yaml
- Sonarr:
icon: sonarr.png
href: http://sonarr.host.or.ip
widget:
type: sonarr
fields: ["wanted", "queued"]
url: http://sonarr.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```

208
docs/configs/services.md Normal file
View File

@@ -0,0 +1,208 @@
---
title: Services
description: Service Configuration
---
Services are configured inside the `services.yaml` file. You can have any number of groups, and any number of services per group.
## Groups
Groups are defined as top-level array entries.
```yaml
- Group A:
- Service A:
href: http://localhost/
- Group B:
- Service B:
href: http://localhost/
```
<img width="1038" alt="Service Groups" src="https://user-images.githubusercontent.com/82196/187040754-28065242-4534-4409-881c-93d1921c6141.png">
## Services
Services are defined as array entries on groups,
```yaml
- Group A:
- Service A:
href: http://localhost/
- Service B:
href: http://localhost/
- Service C:
href: http://localhost/
- Group B:
- Service D:
href: http://localhost/
```
<img width="1038" alt="Service Services" src="https://user-images.githubusercontent.com/82196/187040763-038023a2-8bee-4d87-b5cc-13447e7365a4.png">
## Descriptions
Services may have descriptions,
```yaml
- Group A:
- Service A:
href: http://localhost/
description: This is my service
- Group B:
- Service B:
href: http://localhost/
description: This is another service
```
<img width="1038" alt="Service Descriptions" src="https://user-images.githubusercontent.com/82196/187040817-11a3d0eb-c997-4ef9-8f06-2d03a11332b6.png">
## Icons
Services may have an icon attached to them, you can use icons from [Dashboard Icons](https://github.com/walkxcode/dashboard-icons) automatically, by passing the name of the icon, with, or without `.png` or with `.svg` to use the svg version.
You can also specify prefixed icons from [Material Design Icons](https://materialdesignicons.com) with `mdi-XX` or [Simple Icons](https://simpleicons.org/) with `si-XX`.
You can specify a custom color by adding a hex color code as suffix e.g. `mdi-XX-#f0d453` or `si-XX-#a712a2`.
To use a remote icon, use the absolute URL (e.g. `https://...`).
To use a local icon, first create a Docker mount to `/app/public/icons` and then reference your icon as `/icons/myicon.png`. You will need to restart the container when adding new icons.
!!! warning
Material Design Icons for **brands** were deprecated and may be removed in the future. Using Simple Icons for brand icons will prevent any issues if / when the Material Design Icons are removed.
```yaml
- Group A:
- Sonarr:
icon: sonarr.png
href: http://sonarr.host/
description: Series management
- Group B:
- Radarr:
icon: radarr.png
href: http://radarr.host/
description: Movie management
- Group C:
- Service:
icon: mdi-flask-outline
href: http://service.host/
description: My cool service
```
<img width="1038" alt="Service Icons" src="https://user-images.githubusercontent.com/82196/187040777-da1361d7-f0c4-4531-95db-136cd00a1611.png">
## Ping
Services may have an optional `ping` property that allows you to monitor the availability of an external host. As of v0.8.0, the ping feature attempts to use a true (ICMP) ping command on the underlying host. Currently, only IPv4 is supported.
```yaml
- Group A:
- Sonarr:
icon: sonarr.png
href: http://sonarr.host/
ping: sonarr.host
- Group B:
- Radarr:
icon: radarr.png
href: http://radarr.host/
ping: some.other.host
```
<img width="1038" alt="Ping" src="https://github.com/gethomepage/homepage/assets/88257202/7bc13bd3-0d0b-44e3-888c-a20e069a3233">
You can also apply different styles to the ping indicator by using the `statusStyle` property, see [settings](settings.md#status-style).
## Site Monitor
Services may have an optional `siteMonitor` property (formerly `ping`) that allows you to monitor the availability of a URL you chose and have the response time displayed. You do not need to set your monitor URL equal to your href or ping URL.
!!! note
The site monitor feature works by making an http `HEAD` request to the URL, and falls back to `GET` in case that fails. It will not, for example, login if the URL requires auth or is behind e.g. Authelia. In the case of a reverse proxy and/or auth this usually requires the use of an 'internal' URL to make the site monitor feature correctly display status.
```yaml
- Group A:
- Sonarr:
icon: sonarr.png
href: http://sonarr.host/
siteMonitor: http://sonarr.host/
- Group B:
- Radarr:
icon: radarr.png
href: http://radarr.host/
siteMonitor: http://some.other.host/
```
You can also apply different styles to the site monitor indicator by using the `statusStyle` property, see [settings](settings.md#status-style).
## Docker Integration
Services may be connected to a Docker container, either running on the local machine, or a remote machine.
```yaml
- Group A:
- Service A:
href: http://localhost/
description: This is my service
server: my-server
container: my-container
- Group B:
- Service B:
href: http://localhost/
description: This is another service
server: other-server
container: other-container
```
<img width="1038" alt="Service Containers" src="https://github.com/gethomepage/homepage/assets/88257202/4c685783-52c6-4e55-afb3-affe9baac09b">
**Clicking on the status label of a service with Docker integration enabled will expand the container stats, where you can see CPU, Memory, and Network activity.**
!!! note
This can also be controlled with `showStats`. See [show docker stats](docker.md#show-docker-stats) for more information
<img width="1038" alt="Docker Stats Expanded" src="https://github.com/gethomepage/homepage/assets/88257202/f95fd595-449e-48ae-af67-fd89618904ec">
## Service Integrations
Services may also have a service widget (or integration) attached to them, this works independently of the Docker integration.
You can find information and configuration for each of the supported integrations on the [Widgets](../widgets/index.md) page.
Here is an example of a Radarr & Sonarr service, with their respective integrations.
```yaml
- Group A:
- Sonarr:
icon: sonarr.png
href: http://sonarr.host/
description: Series management
widget:
type: sonarr
url: http://sonarr.host
key: apikeyapikeyapikeyapikeyapikey
- Group B:
- Radarr:
icon: radarr.png
href: http://radarr.host/
description: Movie management
widget:
type: radarr
url: http://radarr.host
key: apikeyapikeyapikeyapikeyapikey
```
<img width="1038" alt="Service Integrations" src="https://user-images.githubusercontent.com/82196/187040838-6cd518c2-4f08-41ef-8aa6-364df5e2660e.png">

493
docs/configs/settings.md Normal file
View File

@@ -0,0 +1,493 @@
---
title: Settings
description: Service Configuration
---
The `settings.yaml` file allows you to define application level options. For changes made to this file to take effect, you will need to regenerate the static HTML, this can be done by clicking the refresh icon in the bottom right of the page.
## Title
You can customize the title of the page if you'd like.
```yaml
title: My Awesome Homepage
```
## Start URL
You can customize the start_url as required for installable apps. The default is "/".
```yaml
startUrl: https://custom.url
```
## Background Image
!!! warning "Heads Up!"
You will need to restart the container any time you add new images, this is a limitation of the Next.js static site server.
!!! warning "Heads Up!"
Do not create a bind mount to the entire `/app/public/` directory.
If you'd like to use a background image instead of the solid theme color, you may provide a full URL to an image of your choice.
```yaml
background: https://images.unsplash.com/photo-1502790671504-542ad42d5189?auto=format&fit=crop&w=2560&q=80
```
Or you may pass the path to a local image relative to e.g. `/app/public/images` directory.
For example, inside of your Docker Compose file, mount a path to where your images are kept:
```yaml
volumes:
- /my/homepage/images:/app/public/images
```
and then reference that image:
```yaml
background: /images/background.png
```
### Background Opacity & Filters
You can specify filters to apply over your background image for blur, saturation and brightness as well as opacity to blend with the background color. The first three filter settings use tailwind CSS classes, see notes below regarding the options for each. You do not need to specify all options.
```yaml
background:
image: /images/background.png
blur: sm # sm, "", md, xl... see https://tailwindcss.com/docs/backdrop-blur
saturate: 50 # 0, 50, 100... see https://tailwindcss.com/docs/backdrop-saturate
brightness: 50 # 0, 50, 75... see https://tailwindcss.com/docs/backdrop-brightness
opacity: 50 # 0-100
```
### Card Background Blur
You can apply a blur filter to the service & bookmark cards. Note this option is incompatible with the background blur, saturate and brightness filters.
```yaml
cardBlur: sm # sm, "", md, etc... see https://tailwindcss.com/docs/backdrop-blur
```
## Favicon
If you'd like to use a custom favicon instead of the included one, you may provide a full URL to an image of your choice.
```yaml
favicon: https://www.google.com/favicon.ico
```
Or you may pass the path to a local image relative to the `/app/public` directory. See [Background Image](#background-image) for more detailed information on how to provide your own files.
## Theme
You can configure a fixed theme (and disable the theme switcher) by passing the `theme` option, like so:
```yaml
theme: dark # or light
```
## Color Palette
You can configured a fixed color palette (and disable the palette switcher) by passing the `color` option, like so:
```yaml
color: slate
```
Supported colors are: `slate`, `gray`, `zinc`, `neutral`, `stone`, `amber`, `yellow`, `lime`, `green`, `emerald`, `teal`, `cyan`, `sky`, `blue`, `indigo`, `violet`, `purple`, `fuchsia`, `pink`, `rose`, `red`, `white`
## Layout
You can configure service and bookmarks sections to be either "column" or "row" based layouts, like so:
Assuming you have a group named `Media` in your `services.yaml` or `bookmarks.yaml` file,
```yaml
layout:
Media:
style: row
columns: 4
```
As an example, this would produce the following layout:
<img width="1260" alt="Screenshot 2022-09-15 at 8 03 57 PM" src="https://user-images.githubusercontent.com/82196/190466646-8ca94505-0fcf-4964-9687-3a6c7cd3144f.png">
### Sorting
Service groups and bookmark groups can be mixed in order, **but should use different group names**. If you do not specify any bookmark groups they will all show at the bottom of the page.
**_Using the same name for a service and bookmark group can cause unexpected behavior like a bookmark group being hidden_**
Groups will sort based on the order in the layout block. You can also mix in groups defined by docker labels, e.g.
```yaml
layout:
- Auto-Discovered1:
- Configured1:
- Configured2:
- Auto-Discovered2:
- Configured3:
style: row
columns: 3
```
### Headers
You can hide headers for each section in the layout as well by passing `header` as false, like so:
```yaml
layout:
Section A:
header: false
Section B:
style: row
columns: 3
header: false
```
### Category Icons
You can also add an icon to a category under the `layout` setting similar to the [options for service icons](services.md#icons), e.g.
```yaml
Home Management & Info:
icon: home-assistant.png
Server Tools:
icon: https://cdn-icons-png.flaticon.com/512/252/252035.png
...
```
### Icon Style
The default style for icons (e.g. `icon: mdi-XXXX`) is a gradient, or you can specify that prefixed icons match your theme with a 'flat' style using the setting below.
More information about prefixed icons can be found in [options for service icons](services.md#icons).
```yaml
iconStyle: theme # optional, defaults to gradient
```
### Tabs
Version 0.6.30 introduced a tabbed view to layouts which can be optionally specified in the layout. Tabs is only active if you set the `tab` field on at least one layout group.
Tabs are sorted based on the order in the layout block. If a group has no tab specified (and tabs are set on other groups), services and bookmarks will be shown on all tabs.
Every tab can be accessed directly by visiting Homepage URL with `#Group` (name lowercase and URI-encoded) at the end of the URL.
For example, the following would create four tabs:
```yaml
layout:
...
Bookmark Group on First Tab:
tab: First
First Service Group:
tab: First
style: row
columns: 4
Second Service Group:
tab: Second
columns: 4
Third Service Group:
tab: Third
style: row
Bookmark Group on Fourth Tab:
tab: Fourth
Service Group on every Tab:
style: row
columns: 4
```
### Five Columns
You can add a fifth column to services (when `style: columns` which is default) by adding:
```yaml
fiveColumns: true
```
By default homepage will max out at 4 columns for services with `columns` style
### Collapsible sections
You can disable the collapsible feature of services & bookmarks by adding:
```yaml
disableCollapse: true
```
By default the feature is enabled.
### Initially collapsed sections
You can initially collapse sections by adding the `initiallyCollapsed` option to the layout group.
```yaml
layout:
Section A:
initiallyCollapsed: true
```
This can also be set globaly using the `groupsInitiallyCollapsed` option.
```yaml
groupsInitiallyCollapsed: true
```
The value set on a group will overwrite the global setting.
By default the feature is disabled.
### Use Equal Height Cards
You can enable equal height cards for groups of services, this will make all cards in a row the same height.
Global setting in `settings.yaml`:
```yaml
useEqualHeights: true
```
Per layout group in `settings.yaml`:
```yaml
useEqualHeights: false
layout:
...
Group Name:
useEqualHeights: true # overrides global setting
```
By default the feature is disabled
## Header Style
There are currently 4 options for header styles, you can see each one below.
<img width="1000" alt="underlined" src="https://user-images.githubusercontent.com/82196/194725622-39ce271c-34e5-414d-be53-62d221811f88.png">
```yaml
headerStyle: underlined # default style
```
---
<img width="1000" alt="boxed" src="https://user-images.githubusercontent.com/82196/194725645-abcb8ed9-d017-416f-9e74-cc5642fa982c.png">
```yaml
headerStyle: boxed
```
---
<img width="1000" alt="clean" src="https://user-images.githubusercontent.com/82196/194725650-7a86e818-172d-4d0f-9861-5eae7fecb50a.png">
```yaml
headerStyle: clean
```
---
<img width="1000" alt="boxedWidgets" src="https://user-images.githubusercontent.com/5442891/232258758-ed5262d6-f940-462c-b39e-00e54c19b9ce.png">
```yaml
headerStyle: boxedWidgets
```
## Base URL
In some proxy configurations, it may be necessary to set the documents base URL. You can do this by providing a `base` value, like so:
```yaml
base: http://host.local/homepage
```
**_The URL must be a full, absolute URL, or it will be ignored by the browser._**
## Language
Set your desired language using:
```yaml
language: fr
```
Currently supported languages: ca, de, en, es, fr, he, hr, hu, it, nb-NO, nl, pt, ru, sv, vi, zh-CN, zh-Hant
You can also specify locales e.g. for the DateTime widget, e.g. en-AU, en-GB, etc.
## Link Target
Changes the behaviour of links on the homepage,
```yaml
target: _blank # Possible options include _blank, _self, and _top
```
Use `_blank` to open links in a new tab, `_self` to open links in the same tab, and `_top` to open links in a new window.
This can also be set for individual services. Note setting this at the service level overrides any setting in settings.json, e.g.:
```yaml
- Example Service:
href: https://example.com/
...
target: _self
```
## Providers
The `providers` section allows you to define shared API provider options and secrets. Currently this allows you to define your weather API keys in secret and is also the location of the Longhorn URL and credentials.
```yaml
providers:
openweathermap: openweathermapapikey
weatherapi: weatherapiapikey
longhorn:
url: https://longhorn.example.com
username: admin
password: LonghornPassword
```
You can then pass `provider` instead of `apiKey` in your widget configuration.
```yaml
- weatherapi:
latitude: 50.449684
longitude: 30.525026
provider: weatherapi
```
## Quick Launch
You can use the 'Quick Launch' feature to search services, perform a web search or open a URL. To use Quick Launch, just start typing while on your homepage (as long as the search widget doesn't have focus).
<img width="1000" alt="quicklaunch" src="https://user-images.githubusercontent.com/4887959/216880811-90ff72cb-2990-4475-889b-7c3a31e6beef.png">
There are a few optional settings for the Quick Launch feature:
- `searchDescriptions`: which lets you control whether item descriptions are included in searches. This is false by default. When enabled, results that match the item name will be placed above those that only match the description.
- `hideInternetSearch`: disable automatically including the currently-selected web search (e.g. from the widget) as a Quick Launch option. This is false by default, enabling the feature.
- `showSearchSuggestions`: show search suggestions for the internet search. If this is not specified then the setting will be inherited from the search widget. If it is not specified there either, it will default to false. For custom providers the `suggestionUrl` needs to be set in order for this to work.
- `provider`: search engine provider. If none is specified it will try to use the provider set for the Search Widget, if neither are present then internet search will be disabled.
- `hideVisitURL`: disable detecting and offering an option to open URLs. This is false by default, enabling the feature.
```yaml
quicklaunch:
searchDescriptions: true
hideInternetSearch: true
showSearchSuggestions: true
hideVisitURL: true
provider: google # google, duckduckgo, bing, baidu, brave or custom
```
or for a custom search:
```yaml
quicklaunch:
provider: custom
url: https://www.ecosia.org/search?q=
target: _blank
suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q=
```
## Homepage Version
By default the release version is displayed at the bottom of the page. To hide this, use the `hideVersion` setting, like so:
```yaml
hideVersion: true
```
## Log Path
By default the homepage logfile is written to the a `logs` subdirectory of the `config` folder. In order to customize this path, you can set the `logpath` setting. A `logs` folder will be created in that location where the logfile will be written.
```yaml
logpath: /logfile/path
```
By default, logs are sent both to `stdout` and to a file at the path specified. This can be changed by setting the `LOG_TARGETS` environment variable to one of `both` (default), `stdout` or `file`.
## Show Docker Stats
You can show all docker stats expanded in `settings.yaml`:
```yaml
showStats: true
```
or per-service (`services.yaml`) with:
```yaml
- Example Service:
...
showStats: true
```
If you have both set the per-service settings take precedence.
## Status Style
You can choose from the following styles for docker or k8s status, site monitor and ping: `dot` or `basic`
- The default is no value, and displays the monitor and ping response time in ms and the docker / k8s container status
- `dot` shows a green dot for a successful monitor ping or healthy status.
- `basic` shows either UP or DOWN for monitor & ping
For example:
```yaml
statusStyle: "dot"
```
or per-service (`services.yaml`) with:
```yaml
- Example Service:
...
statusStyle: 'dot'
```
If you have both set, the per-service settings take precedence.
## Instance Name
Name used by automatic docker service discovery to differentiate between multiple homepage instances.
For example:
```yaml
instanceName: public
```
## Hide Widget Error Messages
Hide the visible API error messages either globally in `settings.yaml`:
```yaml
hideErrors: true
```
or per service widget (`services.yaml`) with:
```yaml
- Example Service:
...
widget:
...
hideErrors: true
```
If either value is set to true, the error message will be hidden.

32
docs/index.md Normal file
View File

@@ -0,0 +1,32 @@
---
title: Home
description: A modern, fully static, fast, secure, fully proxied, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages.
icon: material/home
hide:
- navigation
- toc
- path
---
#
<div style="margin-top: -100px;"></div>
<div style="max-width: 70%; margin: 0 auto; display: block;">
<img src="assets/banner_light@2x.webp" alt="homepage" style="max-width: 100%; max-height: 175px; margin: 0 auto; display: block;" />
<img src="assets/homepage_demo_clip.webp" alt="homepage" style="max-width: 100%; margin: 0 auto; display: block;" />
<p style="margin: 0 0 30px;">A modern, <em>fully static, fast</em>, secure <em>fully proxied</em>, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. Easily configured via YAML files or through docker label discovery.</p>
</div>
<style>
.md-header__source {
display: none;
}
.md-typeset img, .md-typeset svg, .md-typeset video {
box-shadow: none;
}
</style>

View File

@@ -0,0 +1,55 @@
---
title: Docker Installation
description: Install and run homepage from Docker
---
Using docker compose:
```yaml
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- 3000:3000
volumes:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
```
### Running as non-root
By default, the Homepage container runs as root. Homepage also supports running your container as non-root via the standard `PUID` and `PGID` environment variables. When using these variables, make sure that any volumes mounted in to the container have the correct ownership and permissions set.
_Using the docker socket directly is not the recommended method of integration and requires either running homepage as root or that the user be part of the docker group_
In the docker compose example below, the environment variables `$PUID` and `$PGID` are set in a `.env` file.
```yaml
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- 3000:3000
volumes:
- /path/to/config:/app/config # Make sure your local config directory exists
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
environment:
PUID: $PUID
PGID: $PGID
```
### With Docker Run
```bash
docker run -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest
```
### Using Environment Secrets
You can also include environment variables in your config files to protect sensitive information. Note:
- Environment variables must start with `HOMEPAGE_VAR_` or `HOMEPAGE_FILE_`
- The value of env var `HOMEPAGE_VAR_XXX` will replace `{{HOMEPAGE_VAR_XXX}}` in any config
- The value of env var `HOMEPAGE_FILE_XXX` must be a file path, the contents of which will be used to replace `{{HOMEPAGE_FILE_XXX}}` in any config

View File

@@ -0,0 +1,30 @@
---
title: Installation
description: Docs intro
icon: simple/docker
---
<p>
You have a few options for deploying homepage, depending on your needs. We offer docker images for a majority of platforms. You can also install and run homepage from source if Docker is not your thing. It can even be installed on Kubernetes with Helm.
</p>
!!! danger
Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN.
<br>
<div class="grid cards" style="margin: 0 auto;" markdown>
:simple-docker: [&nbsp; Install on Docker :octicons-arrow-right-24:](docker.md)
{ .card }
:simple-kubernetes: [&nbsp; Install on Kubernetes :octicons-arrow-right-24:](k8s.md)
{ .card }
:simple-unraid: [&nbsp; Install on UNRAID :octicons-arrow-right-24:](unraid.md)
{ .card }
:simple-nextdotjs: [&nbsp; Building from source :octicons-arrow-right-24:](source.md)
{ .card }
</div>

393
docs/installation/k8s.md Normal file
View File

@@ -0,0 +1,393 @@
---
title: Kubernetes Installation
description: Install on Kubernetes
---
## Install with Helm
There is an [unofficial helm chart](https://github.com/jameswynn/helm-charts/tree/main/charts/homepage) that creates all the necessary manifests, including the service account and RBAC entities necessary for service discovery.
```sh
helm repo add jameswynn https://jameswynn.github.io/helm-charts
helm install homepage jameswynn/homepage -f values.yaml
```
The helm chart allows for all the configurations to be inlined directly in your `values.yaml`:
```yaml
config:
bookmarks:
- Developer:
- Github:
- abbr: GH
href: https://github.com/
services:
- My First Group:
- My First Service:
href: http://localhost/
description: Homepage is awesome
- My Second Group:
- My Second Service:
href: http://localhost/
description: Homepage is the best
- My Third Group:
- My Third Service:
href: http://localhost/
description: Homepage is 😎
widgets:
# show the kubernetes widget, with the cluster summary and individual nodes
- kubernetes:
cluster:
show: true
cpu: true
memory: true
showLabel: true
label: "cluster"
nodes:
show: true
cpu: true
memory: true
showLabel: true
- search:
provider: duckduckgo
target: _blank
kubernetes:
mode: cluster
settings:
# The service account is necessary to allow discovery of other services
serviceAccount:
create: true
name: homepage
# This enables the service account to access the necessary resources
enableRbac: true
ingress:
main:
enabled: true
annotations:
# Example annotations to add Homepage to your Homepage!
gethomepage.dev/enabled: "true"
gethomepage.dev/name: "Homepage"
gethomepage.dev/description: "Dynamically Detected Homepage"
gethomepage.dev/group: "Dynamic"
gethomepage.dev/icon: "homepage.png"
hosts:
- host: homepage.example.com
paths:
- path: /
pathType: Prefix
```
## Install with Kubernetes Manifests
If you don't want to use the unofficial Helm chart, you can also create your own Kubernetes manifest(s) and apply them with `kubectl apply -f filename.yaml`.
Here's a working example of the resources you need:
#### ServiceAccount
```yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: homepage
namespace: default
labels:
app.kubernetes.io/name: homepage
secrets:
- name: homepage
```
#### Secret
```yaml
apiVersion: v1
kind: Secret
type: kubernetes.io/service-account-token
metadata:
name: homepage
namespace: default
labels:
app.kubernetes.io/name: homepage
annotations:
kubernetes.io/service-account.name: homepage
```
#### ConfigMap
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: homepage
namespace: default
labels:
app.kubernetes.io/name: homepage
data:
kubernetes.yaml: |
mode: cluster
settings.yaml: ""
#settings.yaml: |
# providers:
# longhorn:
# url: https://longhorn.my.network
custom.css: ""
custom.js: ""
bookmarks.yaml: |
- Developer:
- Github:
- abbr: GH
href: https://github.com/
services.yaml: |
- My First Group:
- My First Service:
href: http://localhost/
description: Homepage is awesome
- My Second Group:
- My Second Service:
href: http://localhost/
description: Homepage is the best
- My Third Group:
- My Third Service:
href: http://localhost/
description: Homepage is 😎
widgets.yaml: |
- kubernetes:
cluster:
show: true
cpu: true
memory: true
showLabel: true
label: "cluster"
nodes:
show: true
cpu: true
memory: true
showLabel: true
- resources:
backend: resources
expanded: true
cpu: true
memory: true
- search:
provider: duckduckgo
target: _blank
docker.yaml: ""
```
#### ClusterRole and ClusterRoleBinding
```yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: homepage
labels:
app.kubernetes.io/name: homepage
rules:
- apiGroups:
- ""
resources:
- namespaces
- pods
- nodes
verbs:
- get
- list
- apiGroups:
- extensions
- networking.k8s.io
resources:
- ingresses
verbs:
- get
- list
- apiGroups:
- traefik.containo.us
resources:
- ingressroutes
verbs:
- get
- list
- apiGroups:
- metrics.k8s.io
resources:
- nodes
- pods
verbs:
- get
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: homepage
labels:
app.kubernetes.io/name: homepage
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: homepage
subjects:
- kind: ServiceAccount
name: homepage
namespace: default
```
#### Service
```yaml
apiVersion: v1
kind: Service
metadata:
name: homepage
namespace: default
labels:
app.kubernetes.io/name: homepage
annotations:
spec:
type: ClusterIP
ports:
- port: 3000
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: homepage
```
#### Deployment
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: homepage
namespace: default
labels:
app.kubernetes.io/name: homepage
spec:
revisionHistoryLimit: 3
replicas: 1
strategy:
type: RollingUpdate
selector:
matchLabels:
app.kubernetes.io/name: homepage
template:
metadata:
labels:
app.kubernetes.io/name: homepage
spec:
serviceAccountName: homepage
automountServiceAccountToken: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
containers:
- name: homepage
image: "ghcr.io/gethomepage/homepage:latest"
imagePullPolicy: Always
ports:
- name: http
containerPort: 3000
protocol: TCP
volumeMounts:
- mountPath: /app/config/custom.js
name: homepage-config
subPath: custom.js
- mountPath: /app/config/custom.css
name: homepage-config
subPath: custom.css
- mountPath: /app/config/bookmarks.yaml
name: homepage-config
subPath: bookmarks.yaml
- mountPath: /app/config/docker.yaml
name: homepage-config
subPath: docker.yaml
- mountPath: /app/config/kubernetes.yaml
name: homepage-config
subPath: kubernetes.yaml
- mountPath: /app/config/services.yaml
name: homepage-config
subPath: services.yaml
- mountPath: /app/config/settings.yaml
name: homepage-config
subPath: settings.yaml
- mountPath: /app/config/widgets.yaml
name: homepage-config
subPath: widgets.yaml
- mountPath: /app/config/logs
name: logs
volumes:
- name: homepage-config
configMap:
name: homepage
- name: logs
emptyDir: {}
```
#### Ingress
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: homepage
namespace: default
labels:
app.kubernetes.io/name: homepage
annotations:
gethomepage.dev/description: Dynamically Detected Homepage
gethomepage.dev/enabled: "true"
gethomepage.dev/group: Cluster Management
gethomepage.dev/icon: homepage.png
gethomepage.dev/name: Homepage
spec:
rules:
- host: "homepage.my.network"
http:
paths:
- path: "/"
pathType: Prefix
backend:
service:
name: homepage
port:
number: 3000
```
### Multiple Replicas
If you plan to deploy homepage with a replica count greater than 1, you may
want to consider enabling sticky sessions on the homepage route. This will
prevent unnecessary re-renders on page loads and window / tab focusing. The
procedure for enabling sticky sessions depends on your Ingress controller. Below
is an example using Traefik as the Ingress controller.
```
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: homepage.example.com
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: Host(`homepage.example.com`)
services:
- kind: Service
name: homepage
port: 3000
sticky:
cookie:
httpOnly: true
secure: true
sameSite: none
```

View File

@@ -0,0 +1,25 @@
---
title: Source Installation
description: Install and run homepage from source
---
First, clone the repository:
```bash
git clone https://github.com/gethomepage/homepage.git
```
Then install dependencies and build the production bundle (I'm using pnpm here, you can use npm or yarn if you like):
```bash
pnpm install
pnpm build
```
If this is your first time starting, copy the `src/skeleton` directory to `config/` to populate initial example config files.
Finally, run the server:
```bash
pnpm start
```

View File

@@ -0,0 +1,45 @@
---
title: UNRAID Installation
description: Install and run homepage on UNRAID
---
Homepage has an UNRAID community package that you may use to install homepage. This is the easiest way to get started with homepage on UNRAID.
## Install the Plugin
- In the UNRAID webGUI, go to the **Apps** tab.
- In the search bar, search for `homepage`.
- Click on **Install**.
- Change the parameters to your liking.
- Click on **APPLY**.
## Run the Container
- While the container is running, open the WebUI.
- Opening the page will generate the configuration files.
You may need to set the permissions of the folders to be able to edit the files.
- Click on the Homepage icon.
- Click on **Console**.
- Enter `chmod -R u-x,go-rwx,go+u,ugo+X /app/config` and press **Enter**.
- Enter `chmod -R u-x,go-rwx,go+u,ugo+X /app/public/icons` and press **Enter**.
- Enter `chown -R nobody:users /app/config` and press **Enter**.
- Enter `chown -R nobody:users /app/public/icons` and press **Enter**.
## Some Other Notes
- To use the [Docker integration](../configs/docker.md), you only need to use the `container:` parameter. There is no need to set the server.
!!! note
To view detailed container statistics (CPU, RAM, etc.), or if you use a remote docker socket, `container:` will still need to be set. For example:
```
- Plex:
icon: /icons/plex.png
href: https://app.plex.com
container: plex
```
- When you upload a new image into the **/images** folder, you will need to restart the container for it to show up in the WebUI. Please see the [service icons](../configs/services.md#icons) for more information.

252
docs/layouts/custom.yml Normal file
View File

@@ -0,0 +1,252 @@
# Copyright (c) 2016-2024 Martin Donath <martin.donath@squidfunk.com>
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
# -----------------------------------------------------------------------------
# Configuration
# -----------------------------------------------------------------------------
# Definitions
definitions:
# Background image
- &background_image >-
{{ layout.background_image | x }}
# Background color (default: indigo)
- &background_color >-
{%- if layout.background_color -%}
{{ layout.background_color }}
{%- else -%}
{%- set palette = config.theme.palette or {} -%}
{%- if not palette is mapping -%}
{%- set list = palette | selectattr("primary") | list + palette -%}
{%- set palette = list | first -%}
{%- endif -%}
{%- set primary = palette.get("primary", "indigo") -%}
{%- set primary = primary.replace(" ", "-") -%}
{{ {
"red": "#ef5552",
"pink": "#e92063",
"purple": "#ab47bd",
"deep-purple": "#7e56c2",
"indigo": "#4051b5",
"blue": "#2094f3",
"light-blue": "#02a6f2",
"cyan": "#00bdd6",
"teal": "#009485",
"green": "#4cae4f",
"light-green": "#8bc34b",
"lime": "#cbdc38",
"yellow": "#ffec3d",
"amber": "#ffc105",
"orange": "#ffa724",
"deep-orange": "#ff6e42",
"brown": "#795649",
"grey": "#757575",
"blue-grey": "#546d78",
"black": "#000000",
"white": "#ffffff"
}[primary] or "#4051b5" }}
{%- endif -%}
# Text color (default: white)
- &color >-
{%- if layout.color -%}
{{ layout.color }}
{%- else -%}
{%- set palette = config.theme.palette or {} -%}
{%- if not palette is mapping -%}
{%- set list = palette | selectattr("primary") | list + palette -%}
{%- set palette = list | first -%}
{%- endif -%}
{%- set primary = palette.get("primary", "indigo") -%}
{%- set primary = primary.replace(" ", "-") -%}
{{ {
"red": "#ffffff",
"pink": "#ffffff",
"purple": "#ffffff",
"deep-purple": "#ffffff",
"indigo": "#ffffff",
"blue": "#ffffff",
"light-blue": "#ffffff",
"cyan": "#ffffff",
"teal": "#ffffff",
"green": "#ffffff",
"light-green": "#ffffff",
"lime": "#000000",
"yellow": "#000000",
"amber": "#000000",
"orange": "#000000",
"deep-orange": "#ffffff",
"brown": "#ffffff",
"grey": "#ffffff",
"blue-grey": "#ffffff",
"black": "#ffffff",
"white": "#000000"
}[primary] or "#ffffff" }}
{%- endif -%}
# Font family (default: Roboto)
- &font_family >-
{%- if layout.font_family -%}
{{ layout.font_family }}
{%- elif config.theme.font is mapping -%}
{{ config.theme.font.get("text", "Roboto") }}
{%- else -%}
Roboto
{%- endif -%}
# Font variant
- &font_variant >-
{%- if layout.font_variant -%}
{{ layout.font_variant }}
{%- endif -%}
# Site name
- &site_name >-
{{ config.site_name }}
# Page title
- &page_title >-
{%- if layout.title -%}
{{ layout.title }}
{%- else -%}
{{ page.meta.get("title", page.title) }}
{%- endif -%}
# Page title with site name
- &page_title_with_site_name >-
{%- if not page.is_homepage -%}
{{ page.meta.get("title", page.title) }} - {{ config.site_name }}
{%- else -%}
{{ page.meta.get("title", page.title) }}
{%- endif -%}
# Page description
- &page_description >-
{%- if layout.description -%}
{{ layout.description }}
{%- else -%}
{{ page.meta.get("description", config.site_description) | x }}
{%- endif -%}
# Page icon
- &page_icon >-
{{ page.meta.icon | x }}
# Logo
- &logo >-
{%- if layout.logo -%}
{{ layout.logo }}
{%- elif config.theme.logo -%}
{{ config.docs_dir }}/{{ config.theme.logo }}
{%- endif -%}
# Logo (icon)
- &logo_icon >-
{%- if not layout.logo and config.theme.icon -%}
{{ config.theme.icon.logo | x }}
{%- endif -%}
# Meta tags
tags:
# Open Graph
og:type: website
og:title: *page_title_with_site_name
og:description: *page_description
og:image: "{{ image.url }}"
og:image:type: "{{ image.type }}"
og:image:width: "{{ image.width }}"
og:image:height: "{{ image.height }}"
og:url: "{{ page.canonical_url }}"
# Twitter
twitter:card: summary_large_image
twitter:title: *page_title_with_site_name
twitter:description: *page_description
twitter:image: "{{ image.url }}"
# -----------------------------------------------------------------------------
# Specification
# -----------------------------------------------------------------------------
# Card size and layers
size: { width: 1200, height: 630 }
layers:
# Background
- background:
image: *background_image
color: *background_color
# Page icon
- size: { width: 630, height: 630 }
offset: { x: 800, y: 0 }
icon:
value: *page_icon
color: "#FFFFFF20"
# Logo
- size: { width: 64, height: 64 }
offset: { x: 64, y: 64 }
background:
image: *logo
icon:
value: *logo_icon
color: *color
# Site name
- size: { width: 768, height: 42 }
offset: { x: 160, y: 74 }
typography:
content: *site_name
color: *color
font:
family: *font_family
variant: *font_variant
style: Bold
# Page title
- size: { width: 864, height: 256 }
offset: { x: 62, y: 192 }
typography:
content: *page_title
align: start
color: *color
line:
amount: 3
height: 1.25
font:
family: *font_family
variant: *font_variant
style: Bold
# Page description
- size: { width: 864, height: 64 }
offset: { x: 64, y: 512 }
typography:
content: *page_description
align: start
color: *color
line:
amount: 2
height: 1.5
font:
family: *font_family
variant: *font_variant
style: Regular

57
docs/more/coverage.md Normal file
View File

@@ -0,0 +1,57 @@
---
title: Community Coverage
description: Homepage has been covered by quite a few YouTube channels, here are some of them.
---
Homepage has been covered by quite a few YouTube channels, here are some of them. If you have a video you'd like to add, please open a PR!
## English
<div class="grid" markdown>
[![Youtube Video](https://img.youtube.com/vi/mC3tjysJ01E/maxresdefault.jpg)](https://www.youtube.com/watch?v=mC3tjysJ01E)
[![Youtube Video](https://img.youtube.com/vi/o9SLve4wBPY/maxresdefault.jpg)](https://www.youtube.com/watch?v=o9SLve4wBPY)
[![Youtube Video](https://img.youtube.com/vi/j9kbQucNwlc/maxresdefault.jpg)](https://www.youtube.com/watch?v=j9kbQucNwlc)
[![Youtube Video](https://img.youtube.com/vi/3Ux7zfCCM1A/maxresdefault.jpg)](https://www.youtube.com/watch?v=3Ux7zfCCM1A)
[![Youtube Video](https://img.youtube.com/vi/4AwUNy2eztA/maxresdefault.jpg)](https://www.youtube.com/watch?v=4AwUNy2eztA)
[![Youtube Video](https://img.youtube.com/vi/7mUUCB3kP0E/maxresdefault.jpg)](https://www.youtube.com/watch?v=7mUUCB3kP0E)
[![Youtube Video](https://img.youtube.com/vi/a5-4u0qFKaE/maxresdefault.jpg)](https://www.youtube.com/watch?v=a5-4u0qFKaE)
[![Youtube Video](https://img.youtube.com/vi/tV7-06FU4gQ/maxresdefault.jpg)](https://www.youtube.com/watch?v=tV7-06FU4gQ)
[![Youtube Video](https://img.youtube.com/vi/X2ycbT7rPu4/maxresdefault.jpg)](https://www.youtube.com/watch?v=X2ycbT7rPu4)
[![Youtube Video](https://img.youtube.com/vi/1jEWUJqL-eo/maxresdefault.jpg)](https://www.youtube.com/watch?v=1jEWUJqL-eo)
</div>
<div class="grid" markdown>
<div markdown>
## French
[![Youtube Video](https://img.youtube.com/vi/aGztk8you6o/maxresdefault.jpg)](https://www.youtube.com/watch?v=aGztk8you6o)
[![Youtube Video](https://img.youtube.com/vi/pQfhWqZh7YE/maxresdefault.jpg)](https://www.youtube.com/watch?v=pQfhWqZh7YE)
</div>
<div markdown>
## German
[![Youtube Video](https://img.youtube.com/vi/DrDgg-WRA2g/maxresdefault.jpg)](https://www.youtube.com/watch?v=DrDgg-WRA2g)
</div>
<div markdown>
## Chinese
[![Youtube Video](https://img.youtube.com/vi/DAW15ckt4n4/mqdefault.jpg){: style="width: 100%"}](https://www.youtube.com/watch?v=DAW15ckt4n4)
</div>
<div markdown>
## Russian
[![Youtube Video](https://img.youtube.com/vi/dk3Cp5ck8mY/maxresdefault.jpg)](https://www.youtube.com/watch?v=dk3Cp5ck8mY)
</div>
</div>

View File

@@ -0,0 +1,8 @@
---
title: Homepage Move
description: Homepage Container Deprecation
---
As of v0.7.2 homepage migrated from benphelps/homepage to an "organization" repository located at [gethomepage/homepage](https://github.com/gethomepage/homepage/). The reason for this was to setup the project for longevity and allow for community maintenance.
Migrating your installation should be as simple as changing `image: ghcr.io/benphelps/homepage:latest` to `image: ghcr.io/gethomepage/homepage:latest`.

7
docs/more/index.md Normal file
View File

@@ -0,0 +1,7 @@
---
title: More
description: More homepage resources and guides.
icon: material/information-slab-circle
---
Here you'll find resources and guides for Homepage, troubleshooting tips, and more.

58
docs/more/sponsors.md Normal file
View File

@@ -0,0 +1,58 @@
---
title: Sponsors
description: Homepage is supported by these awesome people and companies.
---
If you would like to support the Homepage project, you can do so by becoming a sponsor. Your sponsorship helps to keep the project running and growing.
<div class="grid" markdown>
[:simple-github: GitHub Sponsors](https://github.com/sponsors/gethomepage){ .md-button }
[:simple-opencollective: OpenCollective](https://opencollective.com/homepage){ .md-button }
[:simple-patreon: Patreon](https://www.patreon.com/gethomepage){ .md-button .w-full }
</div>
<hr style="margin-top: 48px;" />
These companies help the Homepage project by providing services, tools, and resources.
<div class="grid" markdown>
<div style="margin-bottom: 16px;">
<a href="https://www.digitalocean.com/?refcode=df14bcb7c016&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="https://web-platforms.sfo2.cdn.digitaloceanspaces.com/WWW/Badge%202.svg" alt="DigitalOcean" style="max-width: 100%; height: 64px; display: block;" /></a>
<p>
DigitalOcean provides the GitHub Actions runner for the project. Dramatically speeding up the CI/CD process.
</p>
</div>
<div style="margin-bottom: 16px;">
<a href="https://crowdin.com/project/homepage"><img src="https://support.crowdin.com/assets/logos/core-logo/png/crowdin-core-logo-cWhite.png" alt="Crowdin" style="max-width: 100%; height: 64px; display: block;" /></a>
<p>
Crowdin provides the translation platform for the project. Making it easy to translate the project into multiple languages.
</p>
</div>
<div style="margin-bottom: 16px;">
<a href="https://www.jetbrains.com/"><img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.png" alt="JetBrains" style="max-width: 100%; height: 64px; display: block;" /></a>
<p>
JetBrains provides the project with free licenses for their awesome tools.
</p>
</div>
<div style="margin-bottom: 16px;">
<a href="https://www.buysellads.com/"><img src="https://www.buysellads.com/hubfs/raw_assets/public/BSA-2023/images/logo.svg" alt="BuySellAds" style="max-width: 100%; height: 64px; display: block; filter: invert();" /></a>
<p>
BuySellAds provides the project with the ability to monetize the website, with high quality ads from the CarbonAds network. All earnings are sent directly to the projects OpenCollective.
</p>
</div>
</div>
<style>
.md-typeset img,
.md-typeset svg,
.md-typeset video {
box-shadow: none;
}
</style>

19
docs/more/translations.md Normal file
View File

@@ -0,0 +1,19 @@
---
title: Translations
description: Contributing Translations
---
Homepage is developed in English, component contributions must be in English. All translations are community provided, so a huge thanks go out to all those who have helped out so far!
## Support Translations
If you'd like to lend a hand in translating Homepage into more languages, or to improve existing translations, the process is very simple:
1. Create a free account at [Crowdin](https://crowdin.com/join)
2. Visit the [Homepage project](https://crowdin.com/project/gethomepage)
3. Select the language you'd like to translate
4. Start translating!
## Adding a new language
If you'd like to add a new language, please [create a new Discussion on Crowdin](https://crowdin.com/project/gethomepage/discussions), and we'll add it to the project.

52
docs/overrides/main.html Normal file
View File

@@ -0,0 +1,52 @@
{% extends "base.html" %}
{% block header %}
<div id="blur-overlay" class="blur-overlay"></div>
{% include "partials/header.html" %}
{% endblock %}
{% block site_nav %}
<!-- Navigation -->
{% if nav %}
{% if page.meta and page.meta.hide %}
{% set hidden = "hidden" if "navigation" in page.meta.hide %}
{% endif %}
<div
class="md-sidebar md-sidebar--primary"
data-md-component="sidebar"
data-md-type="navigation"
{{ hidden }}
>
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
{% include "partials/nav.html" %}
{% if 'widgets/' not in page.url and 'more/' not in page.url %}
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CWYIL2JU&placement=gethomepagedev&format=cover" id="_carbonads_js"></script>
{% endif %}
</div>
</div>
</div>
{% endif %}
<!-- Table of contents -->
{% if "toc.integrate" not in features %}
{% if page.meta and page.meta.hide %}
{% set hidden = "hidden" if "toc" in page.meta.hide %}
{% endif %}
<div
class="md-sidebar md-sidebar--secondary"
data-md-component="sidebar"
data-md-type="toc"
{{ hidden }}
>
<div class="md-sidebar__scrollwrap" style="height: 200px;">
<div class="md-sidebar__inner">
{% include "partials/toc.html" %}
{% if 'widgets/' in page.url or 'more/' in page.url %}
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?serve=CWYIL2JU&placement=gethomepagedev&format=cover" id="_carbonads_js"></script>
{% endif %}
</div>
</div>
</div>
{% endif %}
{% endblock %}

283
docs/stylesheets/extra.css Normal file
View File

@@ -0,0 +1,283 @@
[data-md-color-scheme="slate"] {
--md-hue: 220;
--md-default-bg-color: hsla(0, 0%, 14%, 0.6);
--md-code-bg-color: hsla(0, 0%, 0%, 0.2);
}
[data-md-color-scheme="default"] {
--md-hue: 220;
--md-default-fg-color--light: white;
--md-default-fg-color--lighter: hsla(0, 0%, 100%, 0.6);
--md-default-bg-color: hsla(0, 0%, 100%, 0.8);
--md-code-bg-color: hsla(0, 0%, 100%, 0.6);
--md-code-bg-color--lighter: hsla(0, 0%, 100%, 0.6);
--md-default-fg-color: white;
}
[data-md-color-scheme="default"] .md-search__inner {
--md-default-fg-color--light: gray;
--md-default-fg-color--lighter: black;
--md-default-bg-color: hsla(0, 0%, 100%, 0.9);
}
[data-md-color-scheme="default"] .md-search__inner .md-search__input {
color: var(--md-default-fg-color--light);
}
[data-md-toggle="search"]:not(:checked) ~ .md-header .md-search__form::after {
position: absolute;
top: 0.3rem;
right: 0.3rem;
display: block;
padding: 0.1rem 0.4rem;
color: var(--md-default-fg-color--lighter);
font-weight: bold;
font-size: 0.8rem;
border: 0.05rem solid var(--md-default-fg-color--lighter);
border-radius: 0.1rem;
content: "/";
}
[data-md-color-scheme="default"][data-md-color-primary="black"] {
[data-md-toggle="search"]:not(:checked) ~ .md-header .md-search__form::after {
color: var(--md-default-bg-color--lighter);
border-color: var(--md-default-bg-color--lighter);
}
}
#carbonads {
margin-top: 10px;
}
#carbon-responsive {
--carbon-padding: 1em;
--carbon-max-char: 20ch;
--carbon-bg-primary: var(--md-default-bg-color) !important;
--carbon-bg-secondary: var(--md-default-fg-color--lightest) !important;
--carbon-text-color: var(--md-typeset-color) !important;
}
.md-typeset__table {
width: 100%;
}
.md-typeset table:not([class]) {
display: table;
}
/* less than 1440px wide */
@media (max-width: 1440px) {
.md-footer-meta__inner {
justify-content: center;
}
}
/* less than 740px wide */
@media (max-width: 740px) {
.md-footer-meta__inner {
justify-content: left;
flex-direction: column;
}
.md-social {
padding-top: 0;
}
}
.md-header__button.md-logo {
padding: 0;
margin: 0;
}
.md-header__button.md-logo img,
.md-header__button.md-logo svg {
height: 2rem;
}
.md-header__topic .md-ellipsis {
display: none;
}
body {
background-color: transparent !important;
background-image: url("https://raw.githubusercontent.com/gethomepage/homepage/main/docs/assets/blossom_valley.jpg");
background-size: cover;
background-attachment: fixed;
background-position: center;
color: rgba(255, 255, 255, 0.8);
}
.md-typeset h1 {
color: #fff;
}
body[data-md-color-scheme="default"] {
color: rgba(255, 255, 255, 1);
}
.blur-overlay {
z-index: -1;
position: fixed;
width: 100%;
height: 100%;
background: hsl(0deg 0% 0% / 10%);
backdrop-filter: blur(128px);
-webkit-backdrop-filter: blur(128px);
}
[data-md-color-scheme="default"] .blur-overlay {
background: hsla(0, 0%, 0%, 0);
}
.md-nav--lifted > .md-nav__list > .md-nav__item--active > .md-nav__link,
.md-nav--secondary .md-nav__title {
background: none;
box-shadow: none;
}
[data-md-color-scheme="slate"] .md-main,
[data-md-color-scheme="slate"] .md-tabs,
[data-md-color-scheme="slate"] .md-footer {
background-color: hsla(0, 0%, 0%, 0.3);
}
[data-md-color-scheme="default"] .md-main,
[data-md-color-scheme="default"] .md-tabs,
[data-md-color-scheme="default"] .md-footer {
background-color: hsla(0, 0%, 100%, 0.1);
}
[data-md-color-scheme="slate"] .md-header {
background-color: hsla(0, 0%, 0%, 0.3);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
[data-md-color-scheme="default"] .md-header {
background-color: hsla(0, 0%, 100%, 0.1);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
.md-header:has(.md-search-result__item),
.md-header:has(.md-search__input.focus-visible) {
backdrop-filter: none !important;
-webkit-backdrop-filter: none !important;
}
.md-footer-meta {
background-color: transparent;
}
[data-md-color-scheme="slate"][data-md-color-primary="black"],
[data-md-color-scheme="default"][data-md-color-primary="black"] {
--md-typeset-a-color: #ffffff;
}
.md-content__inner a {
text-decoration: underline;
font-weight: bolder;
}
[data-md-color-scheme="default"] .highlight .p,
[data-md-color-scheme="default"] .highlight .o,
[data-md-color-scheme="default"] .highlight .ow,
[data-md-color-scheme="default"] .highlight .c,
[data-md-color-scheme="default"] .highlight .c1,
[data-md-color-scheme="default"] .highlight .ch,
[data-md-color-scheme="default"] .highlight .cm,
[data-md-color-scheme="default"] .highlight .cs,
[data-md-color-scheme="default"] .highlight .sd {
color: #36464eaa;
}
[data-md-color-scheme="default"] .md-annotation__index:after {
background-color: #36464ecc;
}
/* I know this is a farce, but I want it to look nice. */
.css-9if7bc {
background-color: hsla(0, 0%, 0%, 0.3);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
@media screen and (max-width: 76.234375em) {
.md-nav--primary,
.md-nav--primary .md-nav {
background-color: hsla(0, 0%, 0%, 0.8);
}
}
@media screen and (max-width: 76.234375em) {
.md-nav--primary .md-nav__title ~ .md-nav__list {
background-color: hsla(0, 0%, 0%, 0.8);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
}
@media screen and (max-width: 76.234375em) {
.md-nav--primary .md-nav__title {
background-color: hsla(0, 0%, 0%, 0.8);
backdrop-filter: blur(16px);
}
}
.md-search__scrollwrap {
background-color: hsla(0, 0%, 0%, 0.8);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
}
.md-search-result .md-typeset h1 {
color: #fff;
}
[data-md-color-scheme="default"] .highlight span.filename,
[data-md-color-scheme="default"] .linenodiv a {
color: #36464e;
font-weight: light;
}
.linenodiv a {
text-decoration: none;
}
.md-typeset .admonition,
.md-typeset details {
background-color: transparent;
}
.md-typeset img,
.md-typeset svg,
.md-typeset video {
box-shadow: 0 0 1rem 0.25rem hsla(0, 0%, 0%, 0.1);
}
.highlight {
box-shadow: 0 0 1rem 0.25rem hsla(0, 0%, 0%, 0.1);
}
.md-typeset .admonition.tip,
.md-typeset details.tip {
box-shadow: 0 0 1rem 0.25rem hsl(171.83deg 100% 37.45% / 20%);
}
.md-typeset .admonition.note,
.md-typeset details.note {
box-shadow: 0 0 1rem 0.25rem hsl(214.29deg 100% 37.45% / 20%);
}
.md-typeset .admonition.warning,
.md-typeset details.warning {
box-shadow: 0 0 1rem 0.25rem hsl(40.91deg 100% 37.45% / 20%);
}
.md-typeset .admonition.danger,
.md-typeset details.danger {
box-shadow: 0 0 1rem 0.25rem hsl(0deg 100% 37.45% / 20%);
}
.md-tabs__link {
transform: translateZ(0);
}

View File

@@ -0,0 +1,66 @@
---
title: Troubleshooting
description: Basic Troubleshooting
icon: material/message-question
hide:
- navigation
---
## General Troubleshooting Tips
- For API errors, clicking the "API Error Information" button in the widget will usually show some helpful information as to whether the issue is reaching the service host, an authentication issue, etc.
- Check config/logs/homepage.log, on docker simply e.g. `docker logs homepage`. This may provide some insight into the reason for an error.
- Check the browser error console, this can also sometimes provide useful information.
- Consider setting the `ENV` variable `LOG_LEVEL` to `debug`.
## Service Widget Errors
All service widgets work essentially the same, that is, homepage makes a proxied call to an API made available by that service. The majority of the time widgets don't work it is a configuration issue. Of course, sometimes things do break. Some basic steps to try:
1. Ensure that you follow the rule mentioned on https://gethomepage.dev/latest/configs/service-widgets/. **Unless otherwise noted, URLs should not end with a / or other API path. Each widget will handle the path on its own.**. This is very important as including a trailing slash can result in an error.
2. Verify the homepage installation can connect to the IP address or host you are using for the widget `url`. This is most simply achieved by pinging the server from the homepage machine, in Docker this means _from inside the container_ itself, e.g.:
```
docker exec homepage ping SERVICEIPORDOMAIN
```
If your homepage install (container) cannot reach the service then you need to figure out why, for example in Docker this can mean putting the two containers on the same network, checking firewall issues, etc.
3. If you have verified that homepage can in fact reach the service then you can also check the API output using e.g. `curl`, which is often helpful if you do need to file a bug report. Again, depending on your networking setup this may need to be run from _inside the container_ as IP / hostname resolution can differ inside vs outside.
!!! note
`curl` is not installed in the base image by default but can be added inside the container with `apk add curl`.
The exact API endpoints and authentication vary of course, but in many cases instructions can be found by searching the web or if you feel comfortable looking at the homepage source code (e.g. `src/widgets/{widget}/widget.js`).
It is out of the scope of this to go into full detail about how to , but an example for PiHole would be:
```
curl -L -k http://PIHOLEIPORHOST/admin/api.php
```
Or for AdGuard:
```
curl -L -k -u 'username:password' http://ADGUARDIPORHOST/control/stats
```
Or for Portainer:
```
curl -L -k -H 'X-Api-Key:YOURKEY' 'https://PORTAINERIPORHOST:PORT/api/endpoints/2/docker/containers/json'
```
Sonarr:
```
curl -L -k 'http://SONARRIPORHOST:PORT/api/v3/queue?apikey=YOURAPIKEY'
```
This will return some data which may reveal an issue causing a true bug in the service widget.
## Missing custom icons
If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container.

View File

@@ -0,0 +1,50 @@
---
title: API Guide
description: Get comfortable with making API calls from inside your widget.
---
Homepage provides the `useWidgetAPI` hook to help you fetch data from an API. This hook insures that the data is fetched using a proxy, and is critical for security.
Here is an example of how the `useWidgetAPI` hook looks:
```js title="Fetch data from the stats endpoint"
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { data, error } = useWidgetAPI(widget, "stats");
}
```
## `useWidgetAPI`
`useWidgetAPI` takes three possible arguments:
- `widget`: The widget metadata object.
- `endpoint`: The name of the endpoint to fetch data from.
- `params`: An optional object containing query parameters to pass to the API.
### `widget`
The `widget` argument is the metadata object for the widget. It contains information about the API endpoint, proxy handler, and mappings. This object is used by the `useWidgetAPI` hook to fetch data from the API. This is generally passed in as a prop from the parent component.
### `endpoint`
The `endpoint` argument is the name of the endpoint to fetch data from. This is [defined in the widget metadata object](metadata.md#endpoint). The `useWidgetAPI` hook uses this argument to determine which endpoint to fetch data from.
If no endpoint is provided, the `useWidgetAPI` hook will call the API endpoint defined in the widget metadata object directly.
### `params`
The `params` argument is an optional object containing query parameters to pass to the API. This is useful for filtering data or passing additional information to the API. This object is passed directly to the API endpoint as query parameters.
Here is an example of how to use the `params` argument:
```js title="Fetch data from the stats endpoint with query parameters"
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { data, error } = useWidgetAPI(widget, "stats", { start: "2021-01-01", end: "2021-12-31" });
}
```
The `params` must be [whitelisted in the widget metadata object](metadata.md#params). This is done to prevent arbitrary query parameters from being passed to the API.

View File

@@ -0,0 +1,102 @@
---
title: Component Guide
description: Learn more about the widget component in Homepage, and how to build your widget UI.
---
Homepage widgets are built using React components. These components are responsible for fetching data from the API and rendering the widget UI. Homepage provides a set of hooks and utilities to help you build your widget component.
## A Basic Widget Component
Here is an example of a basic widget component:
```js
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data, error } = useWidgetAPI(widget, "info");
if (error) {
return <Container service={service} error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label="yourwidget.key1" />
<Block label="yourwidget.key2" />
<Block label="yourwidget.key3" />
</Container>
);
}
return (
<Container service={service}>
<Block label="yourwidget.key1" value={t("common.number", { value: data.key1 })} />
<Block label="yourwidget.key2" value={t("common.number", { value: data.key2 })} />
<Block label="yourwidget.key3" value={t("common.number", { value: data.key3 })} />
</Container>
);
}
```
### Breakdown
We'll cover two sections of the widget component: hooks and components.
#### Hooks
**`useTranslation`**
This hook is used to translate text and numerical content in widgets. Homepage provides a set of helpers to help you localize your widgets. You can learn more about translations in the [Translations Guide](translations.md).
**`useWidgetAPI`**
This hook is used to fetch data from the API. We cover this hook in more detail in the [API Guide](api.md).
#### Components
Homepage provides a set of components to help you build your widget UI. These components are designed to provide a consistent layout, and all widgets are expected to use these components.
![Component Sections](../../assets/sections.webp)
**`<Container>`**
This component is a wrapper for the widget. It provides a consistent layout for all widgets.
```js
<Container service={service}></Container>
```
`service` is a prop that is passed to the widget component. It contains information about the service that the widget is displaying.
If there is an error fetching data from the API, the `error` prop can be passed to the `Container` component.
```js
<Container service={service} error={error}></Container>
```
**`<Block>`**
This component is used to display a key-value pair. It takes a label and value as props.
```js
<Block label="yourwidget.key1" value={t("common.number", { value: data.key1 })} />
```
The `label` prop is used to look up the translation key in the translation files. The `value` prop is used to display the value of the block. To learn more about translations, please refer to the [Translations Guide](translations.md).
If there is no data available, the `Block` component can be used to display a placeholder layout.
```js
<Container service={service}>
<Block label="yourwidget.key1" />
<Block label="yourwidget.key2" />
<Block label="yourwidget.key3" />
</Container>
```

View File

@@ -0,0 +1,65 @@
---
title: Getting Started
description: Get started developing for Homepage.
---
We'll cover getting homepage up and running on your local machine for development, as well as some guidelines for developing new features and widgets.
## Development
First, clone the homepage repository.
For installing NPM packages, this project uses [pnpm](https://pnpm.io/) (and so should you!):
```bash
pnpm install
```
Start the development server:
```bash
pnpm dev
```
Open [http://localhost:3000](http://localhost:3000) to start.
This is a [Next.js](https://nextjs.org/) application, see their documentation for more information.
## Code Linting
Once dependencies have been installed you can lint your code with
```bash
pnpm lint
```
## Code formatting with pre-commit hooks
To ensure a consistent style and formatting across the project source, the project utilizes Git [`pre-commit`](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks) hooks to perform some formatting and linting before a commit is allowed.
Once installed, hooks will run when you commit. If the formatting isn't quite right, the commit will be rejected and you'll need to look at the output and fix the issue. Most hooks will automatically format failing files, so all you need to do is `git add` those files again and retry your commit.
See the [pre-commit documentation](https://pre-commit.com/#install) to get started.
## Preferring self-hosted open-source software
In general, homepage is meant to be a dashboard for 'self-hosted' services and we believe it is a small way we can help showcase this kind of software. While exceptions are made, mostly when there is no viable
self-hosted / open-source alternative, we ask that any widgets, etc. are developed primarily for a self-hosted tool.
## New Feature Guidelines
- New features should be linked to an existing feature request with at least 10 'up-votes'. The purpose of this requirement is to avoid the addition (and maintenance) of features that might only benefit a small number of users.
- If you have ideas for a larger feature, please open a discussion first.
- Please note that though it is a requirement, a discussion with 10 'up-votes' in no way guarantees that a PR will be merged.
## Service Widget Guidelines
To ensure cohesiveness of various widgets, the following should be used as a guide for developing new widgets:
- Please only submit widgets that have been requested and have at least 10 'up-votes'. The purpose of this requirement is to avoid the addition (and maintenance) of service widgets that might only benefit a small number of users.
- Note that we reserve the right to decline widgets for projects that are very young (eg < ~1y) or those with a small reach (eg low GitHub stars). Again, this is in an effort to keep overall widget maintenance under control.
- Widgets should be only one row of blocks
- Widgets should be no more than 4 blocks wide and generally conform to the styling / design choices of other widgets
- Minimize the number of API calls
- Avoid the use of custom proxy unless absolutely necessary
- Widgets should be 'read-only', as in they should not make write changes using the relevant tool's API. Homepage widgets are designed to surface information, not to be a (usually worse) replacement for the tool itself.

View File

@@ -0,0 +1,33 @@
---
title: Guides & Tutorials
description: Learn how to create and customize widgets in Homepage. Explore translations, widget components, widget metadata, proxy handlers, and making API calls.
icon: fontawesome/solid/graduation-cap
---
Widgets are a core component of Homepage. They are used to display information about your system, services, and environment.
## Overview
If you are new to Homepage widgets, and are looking to create a new widget, please follow along with the guide here: [Widget Tutorial](tutorial.md).
### Translations
All text and numerical content in widgets should be translated and localized. English is the default language, and other languages can be added via [Crowdin](https://crowdin.com/project/gethomepage).
To learn more about translations, please refer to the guide here: [Translations Guide](translations.md).
### Widget Component
The widget component is the core of the widget. It is responsible for [fetching data from the API](api.md) and rendering the widget UI. Homepage provides a set of hooks and utilities to help you build your widget component.
To learn more about widget components, please refer to the guide here: [Component Guide](component.md).
### Widget Metadata
Widget metadata defines the configuration of the widget. It defines the API endpoint to fetch data from, the proxy handler to use, and any data mappings.
To learn more about widget metadata, endpoint and data mapping, please refer to the guide here: [Metadata Guide](metadata.md).
To learn more about proxy handlers, please refer to the guide here: [Proxies Guide](proxies.md).
To learn more about making API calls from inside your widget, please refer to the guide here: [API Guide](api.md).

View File

@@ -0,0 +1,310 @@
---
title: Metadata Guide
description: Explore all the metadata properties that can be used to configure a widget in Homepage.
---
Here, we will go over how to create and configure Homepage widget metadata. Metadata is a JS object that contains information about the widget, such as the API endpoint, proxy handler, and mappings. This metadata is used by Homepage to fetch data from the API and pass it to the widget.
## Widgets Configuration
Here are some examples of how to configure a widget's metadata object.
=== "Basic Example"
```js
import genericProxyHandler from "utils/proxy/handlers/generic";
const widgetExample = {
api: "{url}/api/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
stats: { endpoint: "stats" }
},
};
```
=== "Advanced Example"
```js
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
import { asJson, jsonArrayFilter } from "utils/proxy/api-helpers";
const widgetExample = {
api: "{url}/api/{endpoint}",
proxyHandler: credentialedProxyHandler,
mappings: {
stats: {
endpoint: "stats",
validate: ["total", "average"],
params: ["start", "end"],
},
notices: {
endpoint: "notices",
map: (data) => {
total: asJson(data).length;
},
},
warnings: {
endpoint: "notices",
map: (data) => {
total: jsonArrayFilter(data, (alert) => alert.type === "warning").length;
},
},
},
};
```
A widget's metadata is quite powerful and can be configured in many different ways.
## Configuration Properties
### `api`
The `api` property is a string that represents the URL of the API endpoint that the widget will use to fetch data. The URL can contain placeholders that will be replaced with actual values at runtime. For example, the `{url}` placeholder will be replaced with the URL of the configured widget, and the `{endpoint}` placeholder will be replaced with the value of the `endpoint` property in the `mappings` object.
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
};
```
### `proxyHandler`
The `proxyHandler` property is a function that will be used to make the API request. Homepage includes some built-in proxy handlers that can be used out of the box:
Here is an example of the generic proxy handler that makes unauthenticated requests to the specified API endpoint.
=== "widget.js"
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
proxyHandler: genericProxyHandler,
};
```
=== "services.yaml"
```yaml
- Services:
- Your Widget:
icon: yourwidget.svg
href: https://example.com/
widget:
type: yourwidget
url: http://127.0.0.1:1337
```
If you are looking to learn more about proxy handlers, please refer to the guide here: [Proxies Guide](proxies.md).
### `mappings`
The `mappings` property is an object that contains information about the API endpoint, such as the endpoint name, validation rules, and parameter names. The `mappings` object can contain multiple endpoints, each with its own configuration.
!!! note "Security Note"
The `mappings` or `allowedEndpoints` property is required for the widget to fetch data from more than a static URL. Homepage uses a whitelist approach to ensure that widgets only access allowed endpoints.
```js
import { asJson } from "utils/proxy/api-helpers";
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/stats?start=...&end=...`
stats: {
endpoint: "stats",
validate: ["total", "average"],
params: ["start", "end"],
},
// `/api/notices`
notices: {
endpoint: "notices",
map: (data) => {
total: asJson(data).length;
},
},
},
};
```
#### `endpoint`
The `endpoint` property is a string that represents the name of the API endpoint that the widget will use to fetch data. This value will be used to replace the `{endpoint}` placeholder in the `api` property.
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/stats`
stats: {
endpoint: "stats",
},
},
};
```
#### `validate`
The `validate` property is an array of strings that represent the keys that should be validated in the API response. If the response does not contain all of the specified keys, the widget will not render.
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/stats`
stats: {
endpoint: "stats",
validate: ["total", "average"],
},
},
};
```
This configuration will ensure that the API response contains the `total` and `average` keys before the widget is rendered.
#### `params`
The `params` property is an array of strings that represent the keys that should be passed as parameters to the API endpoint. These keys will be replaced with the actual values at runtime.
=== "widget.js"
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/stats?start=...&end=...`
stats: {
endpoint: "stats",
params: ["start", "end"],
},
},
};
```
=== "component.jsx"
```js
const { data: statsData, error: statsError } = useWidgetAPI(widget, "stats", {
start: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),
end: new Date(),
});
```
This configuration will pass the `start` and `end` keys as parameters to the API endpoint. The values are passed as an object to the `useWidgetAPI` hook.
#### `map`
The `map` property is a function that will be used to transform the API response before it is passed to the widget. This function is passed the raw API response and should return the transformed data.
```js
import { asJson } from "utils/proxy/api-helpers";
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/notices`
notices: {
endpoint: "notices",
map: (data) => {
total: asJson(data).length;
},
},
// `/api/notices`
warnings: {
endpoint: "notices",
map: (data) => {
total: asJson(data).filter((alert) => alert.type === "warning").length;
},
},
},
};
```
#### `method`
The `method` property is a string that represents the HTTP method that should be used to make the API request. The default value is `GET`.
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/stats`
stats: {
endpoint: "stats",
method: "POST",
},
},
};
```
#### `headers`
The `headers` property is an object that contains additional headers that should be included in the API request. If your endpoint requires specific headers, you can include them here.
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/stats`
stats: {
endpoint: "stats",
method: "POST",
headers: {
"Content-Type": "application/json",
},
},
},
};
```
#### `body`
The `body` property is an object that contains the data that should be sent in the request body. This property is only used when the `method` property is set to `POST` or `PUT`.
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/graphql`
stats: {
endpoint: "graphql",
method: "POST",
body: {
query: `
query {
stats {
total
average
}
}
`,
},
headers: {
"Content-Type": "application/json",
},
},
},
};
```
### `allowedEndpoints`
The `allowedEndpoints` property is a RegExp that represents the allowed endpoints that the widget can use. If the widget tries to access an endpoint that is not allowed, the request will be blocked.
`allowedEndpoints` can be used when endpoint validation is simple and can be done using a regular expression, and more control is not required.
!!! note "Security Note"
The `mappings` or `allowedEndpoints` property is required for the widget to fetch data from more than a static URL. Homepage uses a whitelist approach to ensure that widgets only access allowed endpoints.
```js
const widgetExample = {
api: "{url}/api/{endpoint}",
allowedEndpoints: /^stats|notices$/,
};
```
This configuration will only allow the widget to access the `stats` and `notices` endpoints.

View File

@@ -0,0 +1,203 @@
---
title: Proxies Guide
description: Learn about proxy handlers in Homepage, and how to securely fetch data from an API.
---
Homepage includes a set of built-in proxy handlers that can be used to fetch data from an API. We will go over how to use these proxy handlers and briefly cover how to create your own.
## Available Proxy Handlers
Homepage comes with a few built-in proxy handlers that can be used to fetch data from an API. These handlers are located in the `utils/proxy/handlers` directory.
### `genericProxyHandler`
A proxy handler that makes generally unauthenticated requests to the specified API endpoint.
```js
import genericProxyHandler from "utils/proxy/handlers/generic";
const widgetExample = {
api: "{url}/api/{endpoint}",
proxyHandler: genericProxyHandler,
};
```
You can also pass API keys from the widget configuration to the proxy handler, for authenticated requests.
=== "widget.js"
```js
import genericProxyHandler from "utils/proxy/handlers/generic";
const widgetExample = {
api: "{url}/api/{endpoint}?key={key}",
proxyHandler: genericProxyHandler,
};
```
=== "services.yaml"
```yaml
# Widget Configuration
- Your Widget:
icon: yourwidget.svg
href: https://example.com/
widget:
type: yourwidget
url: http://example.com
key: your-api-key
```
### `credentialedProxyHandler`
A proxy handler that makes authenticated by setting request headers. Credentials are pulled from the widgets configuration.
By default the key is passed as an `X-API-Key` header. If you need to pass the key as something else, either add a case to the credentialedProxyHandler or create a new proxy handler.
=== "widget.js"
```js
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
const widgetExample = {
api: "{url}/api/{endpoint}?key={key}",
proxyHandler: credentialedProxyHandler,
};
```
=== "services.yaml"
```yaml
- Your Widget:
icon: yourwidget.svg
href: https://example.com/
widget:
type: yourwidget
url: http://127.0.0.1:1337
key: your-api-key
```
### `jsonrpcProxyHandler`
A proxy handler that makes authenticated JSON-RPC requests to the specified API endpoint, either using username + password or an API token.
The endpoint is the method to call and queryParams are used as the parameters.
=== "component.js"
```js
import Container from "components/services/widget/container";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { widget } = service;
const { data, error } = useWidgetAPI(widget, 'trigger', { "triggerids": "14062", "output": "extend", "selectFunctions": "extend" });
}
```
=== "widget.js"
```js
import jsonrpcProxyHandler from "utils/proxy/handlers/jsonrpc";
const widgetExample = {
api: "{url}/api/jsonrpc",
proxyHandler: jsonrpcProxyHandler,
mappings: {
total: { endpoint: "total" },
average: { endpoint: "average" },
trigger: { endpoint: "trigger.get" },
},
};
```
=== "services.yaml"
```yaml
- Your Widget:
icon: yourwidget.svg
href: https://example.com/
widget:
type: yourwidget
url: http://127.0.0.1:1337
username: your-username
password: your-password
```
```yaml
- Your Widget:
icon: yourwidget.svg
href: https://example.com/
widget:
type: yourwidget
url: http://127.0.0.1:1337
key: your-api-token
```
### `synologyProxyHandler`
A proxy handler that makes authenticated requests to the specified Synology API endpoint. This is used exclusively for Synology DSM services.
=== "widget.js"
```js
import synologyProxyHandler from "utils/proxy/handlers/synology";
const widgetExample = {
api: "{url}/webapi/{cgiPath}?api={apiName}&version={maxVersion}&method={apiMethod}",
proxyHandler: synologyProxyHandler,
mappings: {
system_storage: {
apiName: "SYNO.Core.System",
apiMethod: 'info&type="storage"',
endpoint: "system_storage",
}
},
};
```
=== "services.yaml"
```yaml
- Your Widget:
icon: yourwidget.svg
href: https://example.com/
widget:
type: yourwidget
url: http://127.0.0.1:1337
username: your-username
password: your-password
```
## Creating a Custom Proxy Handler
You can create your own proxy handler to fetch data from an API. A proxy handler is a function that takes a configuration object and returns a function that makes the API request.
The proxy handler function takes three arguments:
- `req`: The request object.
- `res`: The response object.
- `map`: A function that maps the API response to the widget data.
The proxy handler function should return a promise that resolves to the API response.
Here is an example of a simple proxy handler that fetches data from an API and passes it to the widget:
```js
import createLogger from "utils/logger";
import { httpProxy } from "utils/proxy/http";
const logger = createLogger("customProxyHandler");
export default async function customProxyHandler(req, res, map) {
const { url } = req.query;
const [status, contentType, data] = await httpProxy(url);
return res.status(status).send(data);
}
```
Proxy handlers are a complex topic and require a good understanding of JavaScript and the Homepage codebase. If you are new to Homepage, we recommend using the built-in proxy handlers.

View File

@@ -0,0 +1,88 @@
---
title: Translations Guide
description: Tips and tricks for translating and localizing Homepage widgets.
---
All text and numerical content in widgets should be translated and localized. English is the default language, and other languages can be added via [Crowdin](https://crowdin.com/project/gethomepage).
## Translations
Homepage uses the [next-i18next](https://github.com/i18next/next-i18next) library to handle translations. This library provides a set of hooks and utilities to help you localize your widgets, and Homepage has extended this library to support additional features.
=== "component.jsx"
```js
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
export default function Component() {
const { t } = useTranslation();
return (
<Container service={service}>
<Block label="yourwidget.key1" />
<Block label="yourwidget.key2" />
<Block label="yourwidget.key3" />
</Container>
);
}
```
## Set up translation strings
Homepage uses translated and localized strings for **all text and numerical content** in widgets. English is the default language, and other languages can be added via [Crowdin](https://crowdin.com/project/gethomepage). To add the English translations for your widget, follow these steps:
Open the `public/locales/en/common.js` file.
Add a new object for your widget to the bottom of the list, like this:
```json
"yourwidget": {
"key1": "Value 1",
"key2": "Value 2",
"key3": "Value 3"
}
```
!!! note
Even if you natively speak another language, you should only add English translations. You can then add translations in your native language via [Crowdin](https://crowdin.com/project/gethomepage), once your widget is merged.
## Common Translations
Homepage provides a set of common translations that you can use in your widgets. These translations are used to format numerical content, dates, and other common elements.
### Numbers
| Key | Translation | Description |
| --------------------- | --------------- | -------------------------------- |
| `common.bytes` | `1,000 B` | Format a number in bytes. |
| `common.bits` | `1,000 bit` | Format a number in bits. |
| `common.bbytes` | `1 KiB` | Format a number in binary bytes. |
| `common.bbits` | `1 Kibit` | Format a number in binary bits. |
| `common.byterate` | `1,000 B/s` | Format a byte rate. |
| `common.bibyterate` | `1 KiB/s` | Format a binary byte rate. |
| `common.bitrate` | `1,000 bit/s` | Format a bit rate. |
| `common.bibitrate` | `1 Kibit/s` | Format a binary bit rate. |
| `common.percent` | `50%` | Format a percentage. |
| `common.number` | `1,000` | Format a number. |
| `common.ms` | `1,000 ms` | Format a number in milliseconds. |
| `common.date` | `2024-01-01` | Format a date. |
| `common.relativeDate` | `1 day ago` | Format a relative date. |
| `common.uptime` | `1 day, 1 hour` | Format an uptime. |
### Text
| Key | Translation | Description |
| ------------------ | ----------- | ------------------ |
| `resources.cpu` | `CPU` | CPU usage. |
| `resources.mem` | `MEM` | Memory usage. |
| `resources.total` | `Total` | Total resource. |
| `resources.free` | `Free` | Free resource. |
| `resources.used` | `Used` | Used resource. |
| `resources.load` | `Load` | Load value. |
| `resources.temp` | `TEMP` | Temperature value. |
| `resources.max` | `Max` | Maximum value. |
| `resources.uptime` | `UP` | Uptime. |

View File

@@ -0,0 +1,273 @@
---
title: Widget Tutorial
description: Follow along with this guide to learn how to create a custom widget for Homepage. We'll cover the basic structure of a widget, how to use translations, and how to fetch data from an API.
---
In this guide, we'll walk through the process of creating a custom widget for Homepage. We'll cover the basic structure of a widget, how to use translations, and how to fetch data from an API. By the end of this guide, you'll have a solid understanding of how to build your own custom widget.
**Prerequisites:**
- Basic knowledge of React and JavaScript
- Familiarity with the Homepage platform
- Understanding of JSON and API interactions
Throughout this guide, we'll use `yourwidget` as a placeholder for the unique name of your custom widget. Replace `yourwidget` with the actual name of your widget. It should contain only lowercase letters and no spaces.
This guide makes use of a fake API, which would return a JSON response as such, when called with the `v1/info` endpoint:
```json
{ "key1": 123, "key2": 456, "key3": 789 }
```
## Set up the widget definition
Create a new folder for your widget in the `src/widgets` directory. Name the folder `yourwidget`.
Inside the `yourwidget` folder, create a new file named `widget.js`. This file will contain the metadata for your widget.
Open the `widget.js` file and add the following code:
```js title="src/widgets/yourwidget/widget.js"
import genericProxyHandler from "utils/proxy/handlers/generic"; // (1)!
const widget = /* (2)! */ {
api: "{url}/{endpoint}" /* (3)! */,
proxyHandler: genericProxyHandler /* (1)! */,
mappings: /* (4)! */ {
info: /* (5)! */ {
endpoint: "v1/info" /* (6)! */,
},
},
};
export default widget;
```
1. We import the `genericProxyHandler` from the `utils/proxy/handlers/generic` module. The `genericProxyHandler` is a generic handler that can be used to fetch data from an API. We then assign the `genericProxyHandler` to the `proxyHandler` property of the `widget` object. There are other handlers available that you can use depending on your requirements. You can also create custom handlers if needed.
2. We define a `widget` object that contains the metadata for the widget.
3. The API endpoint to fetch data from. You can use placeholders like `{url}` and `{endpoint}` to dynamically generate the API endpoint based on the widget configuration.
4. An object that contains mappings for different endpoints. Each mapping should have an `endpoint` property that specifies the endpoint to fetch data from.
5. A mapping named `info` that specifies the `v1/info` endpoint to fetch data from. This would be called from the component as such: `#!js useWidgetAPI(widget, "info");`
6. The `endpoint` property of the `info` mapping specifies the endpoint to fetch data from. There are other properties you can pass to the mapping, such as `method`, `headers`, and `body`.
!!! warning "Important"
All widgets that fetch data from dynamic endpoints should have either `mappings` or an `allowedEndpoints` property.
## Including translation strings in your widget
Refer to the [translations guide](translations.md) for more details. The Homepage community prides itself on being multilingual, and we strongly encourage you to add translations for your widgets.
## Create the widget component
Create a new file for your widgets component, named `component.jsx`, in the `src/widgets/yourwidget` directory. We'll build the contents of the `component.jsx` file step by step.
First, we'll import the necessary dependencies:
```js title="src/widgets/yourwidget/component.jsx" linenums="1"
import { useTranslation } from "next-i18next"; // (1)!
import Container from "components/services/widget/container"; // (2)!
import Block from "components/services/widget/block"; // (3)!
import useWidgetAPI from "utils/proxy/use-widget-api"; // (4)!
```
1. `#!js useTranslation()` is a hook provided by `next-i18next` that allows us to access the translation strings
2. `#!jsx <Container>` and `#!jsx <Block>` are custom components that we'll use to structure our widget.
3. `#!jsx <Container>` and `#!jsx <Block>` are custom components that we'll use to structure our widget.
4. `#!js useWidgetAPI(widget, endpoint)` is a custom hook that we'll use to fetch data from an API.
---
Next, we'll define a functional component named `Component` that takes a `service` prop.
```js title="src/widgets/yourwidget/component.jsx" linenums="7"
export default function Component({ service }) {}
```
---
We grab the helper functions from the `useTranslation` hook.
```js title="src/widgets/yourwidget/component.jsx" linenums="8"
const { t } = useTranslation();
```
---
We destructure the `widget` object from the `service` prop. The `widget` object contains the metadata for the widget, such as the API endpoint to fetch data from.
```js title="src/widgets/yourwidget/component.jsx" linenums="9"
const { widget } = service;
```
---
Now, the fun part! We use the `useWidgetAPI` hook to fetch data from an API. The `useWidgetAPI` hook takes two arguments: the `widget` object and the API endpoint to fetch data from. The `useWidgetAPI` hook returns an object with `data` and `error` properties.
```js title="src/widgets/yourwidget/component.jsx" linenums="10"
const { data, error } = useWidgetAPI(widget, "info");
```
!!! tip "API Tips"
You'll see here how part of the API url is built using the `url` and `endpoint` properties from the widget definition.
In this case, we're fetching data from the `info` endpoint. The `info` endpoint is defined in the `mappings` object. So the full API endpoint will be `"{url}/v1/info"`.
The mapping and endpoint are often the same, but must be defined regardless.
---
Next, we check if there's an error or no data.
If there's an error, we return a `Container` and pass it the `service` and `error` as props. The `Container` component will handle displaying the error message.
```js title="src/widgets/yourwidget/component.jsx" linenums="12"
if (error) {
return <Container service={service} error={error} />;
}
```
---
If there's no data, we return a `Container` component with three `Block` components, each with a `label`.
```js title="src/widgets/yourwidget/component.jsx" linenums="16"
if (!data) {
return (
<Container service={service}>
<Block label="yourwidget.key1" />
<Block label="yourwidget.key2" />
<Block label="yourwidget.key3" />
</Container>
);
}
```
This will render the widget with placeholders for the data, i.e., a skeleton view.
!!! tip "Translation Tips"
The `label` prop in the `Block` component corresponds to the translation key we defined earlier in the `common.js` file. All text and numerical content should be translated.
---
If there is data, we return a `Container` component with three `Block` components, each with a `label` and a `value`.
Here we use the `t` function from the `useTranslation` hook to translate the data values. The `t` function takes the translation key and an object with variables to interpolate into the translation string.
We're using the `common.number` translation key to format the data values as numbers. This allows for easy localization of numbers, such as using commas or periods as decimal separators.
There are a large number of `common` numerical translation keys available, which you can learn more about in the [Translation Guide](translations.md).
```js title="src/widgets/yourwidget/component.jsx" linenums="26"
return (
<Container service={service}>
<Block label="yourwidget.key1" value={t("common.number", { value: data.key1 })} />
<Block label="yourwidget.key2" value={t("common.number", { value: data.key2 })} />
<Block label="yourwidget.key3" value={t("common.number", { value: data.key3 })} />
</Container>
);
```
---
Here's the complete `component.jsx` file:
```js title="src/widgets/yourwidget/component.jsx" linenums="1"
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
const { data, error } = useWidgetAPI(widget, "info");
if (error) {
return <Container service={service} error={error} />;
}
if (!data) {
return (
<Container service={service}>
<Block label="yourwidget.key1" />
<Block label="yourwidget.key2" />
<Block label="yourwidget.key3" />
</Container>
);
}
return (
<Container service={service}>
<Block label="yourwidget.key1" value={t("common.number", { value: data.key1 })} />
<Block label="yourwidget.key2" value={t("common.number", { value: data.key2 })} />
<Block label="yourwidget.key3" value={t("common.number", { value: data.key3 })} />
</Container>
);
}
```
## Add the widget to the Homepage
To add your widget to the Homepage, you need to register it in the `src/widgets/widgets.js` file.
Open the `src/widgets/widgets.js` file and import the `Component` from your widget's `component.jsx` file. Please keep the alphabetical order.
```js
// ...
import yourwidget from "./yourwidget/widget";
// ...
```
Add `yourwidget` to the `widgets` object. Please keep the alphabetical order.
```js
const widgets = {
// ...
yourwidget: yourwidget,
// ...
};
```
You also need to add the widget to the `components` object in the `src/widgets/components.js` file.
Open the `src/widgets/components.js` file and import the `Component` from your widget's `component.jsx` file.
Please keep the alphabetical order.
```js
const components = {
// ...
yourwidget: dynamic(() => import("./yourwidget/component")),
// ...
};
```
## Using the widget
You can now use your custom widget in your Homepage. Open your `services.yaml` file and add a new service with the `yourwidget` widget.
```yaml
- Services:
- Your Widget:
icon: yourwidget.svg
href: https://example.com/
widget:
type: yourwidget
url: http://127.0.0.1:1337
```
!!! tip "API Tips"
You'll see here how part of the API url is built using the `url` and `endpoint` properties from the widget definition.
We defined the api endpoint as `"{url}/{endpoint}"`. This is where the `url` is defined. So the full API endpoint will be `http://127.0.0.1:1337/{endpoint}`.
---
That's it! You've successfully created a custom widget for Homepage. If you have any questions or need help, feel free to reach out to the Homepage community for assistance. Happy coding!

38
docs/widgets/index.md Normal file
View File

@@ -0,0 +1,38 @@
---
title: Widgets
description: Find information on how to configure specific widgets in Homepage.
icon: material/widgets
---
Homepage has two types of widgets: info and service. Below we'll cover each type and how to configure them.
The left navigation of this site contains links to all available widgets.
## Service Widgets
Service widgets are used to display the status of a service, often a web service or API. Services (and their widgets) are defined in your `services.yaml` file. Here's an example:
```yaml
- Plex:
icon: plex.png
href: https://plex.my.host
description: Watch movies and TV shows.
server: localhost
container: plex
widget:
type: tautulli
url: http://172.16.1.1:8181
key: aabbccddeeffgghhiijjkkllmmnnoo
```
## Info Widgets
Info widgets are used to display information in the header, often about your system or environment. Info widgets are defined your `widgets.yaml` file. Here's an example:
```yaml
- openmeteo:
label: Current
latitude: 36.66
longitude: -117.51
cache: 5
```

View File

@@ -0,0 +1,51 @@
---
title: Date & Time
description: Date & Time Information Widget Configuration
---
This allows you to display the date and/or time, can be heavily configured using [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat).
Formatting is locale aware and will present your date in the regional format you expect, for example, `9/16/22, 3:03 PM` for locale `en` and `16.09.22, 15:03` for `de`. You can also specify a locale just for the datetime widget with the `locale` option (see below).
```yaml
- datetime:
text_size: xl
format:
timeStyle: short
```
Any options passed to `format` are passed directly to [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat), please reference the MDN documentation for all available options.
Valid text sizes are `4xl`, `3xl`, `2xl`, `xl`, `md`, `sm`, `xs`.
A few examples,
```yaml
# 13:37
format:
timeStyle: short
hourCycle: h23
```
```yaml
# 1:37 PM
format:
timeStyle: short
hour12: true
```
```yaml
# 1/23/22, 1:37 PM
format:
dateStyle: short
timeStyle: short
hour12: true
```
```yaml
# 4 januari 2023 om 13:51:25 PST
locale: nl
format:
dateStyle: long
timeStyle: long
```

View File

@@ -0,0 +1,35 @@
---
title: Glances
description: Glances Information Widget Configuration
---
_(Find the Glances service widget [here](../services/glances.md))_
The Glances widget allows you to monitor the resources (CPU, memory, storage, temp & uptime) of host or another machine, and is designed to match the `resources` info widget. You can have multiple instances by adding another configuration block. The `cputemp`, `uptime` & `disk` states require separate API calls and thus are not enabled by default. Glances needs to be running in "web server" mode to enable the API, see the [glances docs](https://glances.readthedocs.io/en/latest/quickstart.html#web-server-mode).
```yaml
- glances:
url: http://host.or.ip:port
username: user # optional if auth enabled in Glances
password: pass # optional if auth enabled in Glances
version: 4 # required only if running glances v4 or higher, defaults to 3
cpu: true # optional, enabled by default, disable by setting to false
mem: true # optional, enabled by default, disable by setting to false
cputemp: true # disabled by default
uptime: true # disabled by default
disk: / # disabled by default, use mount point of disk(s) in glances. Can also be a list (see below)
diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
expanded: true # show the expanded view
label: MyMachine # optional
```
Multiple disks can be specified as:
```yaml
disk:
- /
- /boot
...
```
_Added in v0.4.18, updated in v0.6.11, v0.6.21_

View File

@@ -0,0 +1,14 @@
---
title: Greeting
description: Greeting Information Widget Configuration
---
This allows you to display simple text, can be configured like so:
```yaml
- greeting:
text_size: xl
text: Greeting Text
```
Valid text sizes are `4xl`, `3xl`, `2xl`, `xl`, `md`, `sm`, `xs`.

View File

@@ -0,0 +1,21 @@
---
title: Info Widgets
description: Homepage info widgets.
search:
exclude: true
---
You can also find a list of all available info widgets in the sidebar navigation.
- [Date & Time](datetime.md)
- [Glances](glances.md)
- [Greeting](greeting.md)
- [Kubernetes](kubernetes.md)
- [Logo](logo.md)
- [Longhorn](longhorn.md)
- [OpenMeteo](openmeteo.md)
- [OpenWeatherMap](openweathermap.md)
- [Resources](resources.md)
- [Search](search.md)
- [Stocks](stocks.md)
- [UniFi Controller](unifi_controller.md)

View File

@@ -0,0 +1,31 @@
---
title: Kubernetes
description: Kubernetes Information Widget Configuration
---
This is very similar to the Resources widget, but provides resource information about a Kubernetes cluster.
It provides CPU and Memory usage, by node and/or at the cluster level.
```yaml
- kubernetes:
cluster:
# Shows cluster-wide statistics
show: true
# Shows the aggregate CPU stats
cpu: true
# Shows the aggregate memory stats
memory: true
# Shows a custom label
showLabel: true
label: "cluster"
nodes:
# Shows node-specific statistics
show: true
# Shows the CPU for each node
cpu: true
# Shows the memory for each node
memory: true
# Shows the label, which is always the node name
showLabel: true
```

13
docs/widgets/info/logo.md Normal file
View File

@@ -0,0 +1,13 @@
---
title: Logo
description: Logo Information Widget Configuration
---
This allows you to display the homepage logo, you can optionally specify your own icon using similar options as other icons, see [service icons](../../configs/services.md#icons).
```yaml
- logo:
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d5/I_Love_New_York.svg/1101px-I_Love_New_York.svg.png # optional
```
_Added in v0.4.18, updated in 0.X.X_

View File

@@ -0,0 +1,37 @@
---
title: Longhorn
description: Longhorn Storage Widget Configuration
---
The Longhorn widget pulls storage utilization metrics from the Longhorn storage driver on Kubernetes.
It is designed to appear similar to the Resource widget's disk representation.
The exact metrics should be very similar to what is seen on the Longhorn dashboard itself.
It can show the aggregate metrics and/or the individual node metrics.
```yaml
- longhorn:
# Show the expanded view
expanded: true
# Shows a node representing the aggregate values
total: true
# Shows the node names as labels
labels: true
# Show the nodes
nodes: true
# An explicit list of nodes to show. All are shown by default if "nodes" is true
include:
- node1
- node2
```
The Longhorn URL and credentials are stored in the `providers` section of the `settings.yaml`. e.g.:
```yaml
providers:
longhorn:
username: "longhorn-username" # optional
password: "very-secret-longhorn-password" # optional
url: https://longhorn.aesop.network
```

View File

@@ -0,0 +1,20 @@
---
title: Open-Meteo
description: Open-Meteo Information Widget Configuration
---
No registration is required at all! See [https://open-meteo.com/en/docs](https://open-meteo.com/en/docs)
```yaml
- openmeteo:
label: Kyiv # optional
latitude: 50.449684
longitude: 30.525026
timezone: Europe/Kiev # optional
units: metric # or imperial
cache: 5 # Time in minutes to cache API responses, to stay within limits
format: # optional, Intl.NumberFormat options
maximumFractionDigits: 1
```
You can optionally not pass a `latitude` and `longitude` and the widget will use your current location (requires a secure context, eg. HTTPS).

View File

@@ -0,0 +1,21 @@
---
title: OpenWeatherMap
description: OpenWeatherMap Information Widget Configuration
---
The free tier "One Call API" is all that's required, you will need to [subscribe](https://home.openweathermap.org/subscriptions/unauth_subscribe/onecall_30/base) and grab your API key.
```yaml
- openweathermap:
label: Kyiv #optional
latitude: 50.449684
longitude: 30.525026
units: metric # or imperial
provider: openweathermap
apiKey: youropenweathermapkey # required only if not using provider, this reveals api key in requests
cache: 5 # Time in minutes to cache API responses, to stay within limits
format: # optional, Intl.NumberFormat options
maximumFractionDigits: 1
```
You can optionally not pass a `latitude` and `longitude` and the widget will use your current location (requires a secure context, eg. HTTPS).

View File

@@ -0,0 +1,76 @@
---
title: Resources
description: Resources Information Widget Configuration
---
You can include all or some of the available resources. If you do not want to see that resource, simply pass `false`.
The disk path is the path reported by `df` (Mounted On), or the mount point of the disk.
The cpu and memory resource information are the container's usage while [glances](glances.md) displays statistics for the host machine on which it is installed.
The resources widget primarily relies on a popular tool called [systeminformation](https://systeminformation.io). Thus, any limitiations of that software apply, for example, BRTFS RAID is not supported for the disk usage. In this case users may want to use the [glances widget](glances.md) instead.
_Note: unfortunately, the package used for getting CPU temp ([systeminformation](https://systeminformation.io)) is not compatible with some setups and will not report any value(s) for CPU temp._
**Any disk you wish to access must be mounted to your container as a volume.**
```yaml
- resources:
cpu: true
memory: true
disk: /disk/mount/path
cputemp: true
tempmin: 0 # optional, minimum cpu temp
tempmax: 100 # optional, maximum cpu temp
uptime: true
units: imperial # only used by cpu temp
refresh: 3000 # optional, in ms
diskUnits: bytes # optional, bytes (default) or bbytes. Only applies to disk
```
You can also pass a `label` option, which allows you to group resources under named sections,
```yaml
- resources:
label: System
cpu: true
memory: true
- resources:
label: Storage
disk: /mnt/storage
```
Which produces something like this,
<img width="373" alt="Resource Groups" src="https://user-images.githubusercontent.com/82196/189524699-e9005138-e049-4a9c-8833-ac06e39882da.png">
If you have more than a single disk and would like to group them together under the same label, you can pass an array of paths instead,
```yaml
- resources:
label: Storage
disk:
- /mnt/storage
- /mnt/backup
- /mnt/media
```
To produce something like this,
<img width="369" alt="Screenshot 2022-09-11 at 2 15 42 PM" src="https://user-images.githubusercontent.com/82196/189524583-abdf4cc6-99da-430c-b316-16c567db5639.png">
You can additionally supply an optional `expanded` property set to true in order to show additional details about the resources. By default the expanded property is set to false when not supplied.
```yaml
- resources:
label: Array Disks
expanded: true
disk:
- /disk1
- /disk2
- /disk3
```
![194136533-c4238c82-4d67-41a4-b3c8-18bf26d33ac2](https://user-images.githubusercontent.com/3441425/194728642-a9885274-922b-4027-acf5-a746f58fdfce.png)

View File

@@ -0,0 +1,55 @@
---
title: Search
description: Search Information Widget Configuration
---
You can add a search bar to your top widget area that can search using Google, Duckduckgo, Bing, Baidu, Brave or any other custom provider that supports the basic `?q=` search query param.
```yaml
- search:
provider: google # google, duckduckgo, bing, baidu, brave or custom
focus: true # Optional, will set focus to the search bar on page load
showSearchSuggestions: true # Optional, will show search suggestions. Defaults to false
target: _blank # One of _self, _blank, _parent or _top
```
or for a custom search:
```yaml
- search:
provider: custom
url: https://www.ecosia.org/search?q=
target: _blank
suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q= # Optional
showSearchSuggestions: true # Optional
```
multiple providers is also supported via a dropdown (excluding custom):
```yaml
- search:
provider: [brave, google, duckduckgo]
```
The response body for the URL provided with the `suggestionUrl` option should look like this:
```json
[
"home",
[
"home depot",
"home depot near me",
"home equity loan",
"homeworkify",
"homedepot.com",
"homebase login",
"home depot credit card",
"home goods"
]
]
```
The first entry of the array contains the search query, the second one is an array of the suggestions.
In the example above, the search query was **home**.
_Added in v0.1.6, updated in 0.6.0_

View File

@@ -0,0 +1,48 @@
---
title: Stocks
description: Stocks Information Widget Configuration
---
_(Find the Stocks service widget [here](../services/stocks.md))_
The Stocks Information Widget allows you to include basic stock market data in
your Homepage header. The widget includes the current price of a stock, and the
change in price for the day.
Finnhub.io is currently the only supported provider for the stocks widget.
You can sign up for a free api key at [finnhub.io](https://finnhub.io).
You are encouraged to read finnhub.io's
[terms of service/privacy policy](https://finnhub.io/terms-of-service) before
signing up. The documentation for the endpoint that is utilized can be viewed
[here](https://finnhub.io/docs/api/quote).
You must set `finnhub` as a provider in your `settings.yaml` like below:
```yaml
providers:
finnhub: yourfinnhubapikeyhere
```
Next, configure the stocks widget in your `widgets.yaml`:
The information widget allows for up to 8 items in the watchlist.
```yaml
- stocks:
provider: finnhub
color: true # optional, defaults to true
cache: 1 # optional, default caches results for 1 minute
watchlist:
- GME
- AMC
- NVDA
- AMD
- TSM
- MSFT
- AAPL
- BRK.A
```
The above configuration would result in something like this:
![Example of Stocks Widget](../../assets/widget_stocks_demo.png)

View File

@@ -0,0 +1,26 @@
---
title: Unifi Controller
description: Unifi Controller Information Widget Configuration
---
_(Find the Unifi Controller service widget [here](../services/unifi-controller.md))_
You can display general connectivity status from your Unifi (Network) Controller. When authenticating you will want to use a local account that has at least read privileges.
An optional 'site' parameter can be supplied, if it is not the widget will use the default site for the controller.
!!! hint
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container to clear the cache.
<img width="162" alt="unifi_infowidget" src="https://user-images.githubusercontent.com/4887959/197706832-f5a8706b-7282-4892-a666-b7d999752562.png">
```yaml
- unifi_console:
url: https://unifi.host.or.ip:port
username: user
password: pass
site: Site Name # optional
```
_Added in v0.4.18, updated in 0.6.7_

View File

@@ -0,0 +1,22 @@
---
title: Weather API
description: Weather API Information Widget Configuration
---
**Note: this widget is considered 'deprecated' since there is no longer a free Weather API tier for new members. See the openmeteo or openweathermap widgets for alternatives.**
The free tier is all that's required, you will need to [register](https://www.weatherapi.com/signup.aspx) and grab your API key.
```yaml
- weatherapi:
label: Kyiv # optional
latitude: 50.449684
longitude: 30.525026
units: metric # or imperial
apiKey: yourweatherapikey
cache: 5 # Time in minutes to cache API responses, to stay within limits
format: # optional, Intl.NumberFormat options
maximumFractionDigits: 1
```
You can optionally not pass a `latitude` and `longitude` and the widget will use your current location (requires a secure context, eg. HTTPS).

View File

@@ -0,0 +1,18 @@
---
title: Adguard Home
description: Adguard Home Widget Configuration
---
Learn more about [Adguard Home](https://github.com/AdguardTeam/AdGuardHome).
The username and password are the same as used to login to the web interface.
Allowed fields: `["queries", "blocked", "filtered", "latency"]`.
```yaml
widget:
type: adguard
url: http://adguard.host.or.ip
username: admin
password: password
```

View File

@@ -0,0 +1,18 @@
---
title: Atsumeru
description: Atsumeru Widget Configuration
---
Learn more about [Atsumeru](https://github.com/AtsumeruDev/Atsumeru).
Define same username and password that is used for login from web or supported apps
Allowed fields: `["series", "archives", "chapters", "categories"]`.
```yaml
widget:
type: atsumeru
url: http://atsumeru.host.or.ip:port
username: username
password: password
```

View File

@@ -0,0 +1,17 @@
---
title: Audiobookshelf
description: Audiobookshelf Widget Configuration
---
Learn more about [Audiobookshelf](https://github.com/advplyr/audiobookshelf).
You can find your API token by logging into the Audiobookshelf web app as an admin, go to the config → users page, and click on your account.
Allowed fields: `["podcasts", "podcastsDuration", "books", "booksDuration"]`
```yaml
widget:
type: audiobookshelf
url: http://audiobookshelf.host.or.ip:port
key: audiobookshelflapikey
```

View File

@@ -0,0 +1,25 @@
---
title: Authentik
description: Authentik Widget Configuration
---
Learn more about [Authentik](https://github.com/goauthentik/authentik).
This widget reads the number of active users in the system, as well as logins for the last 24 hours.
You will need to generate an API token for an existing user under `Admin Portal` > `Directory` > `Tokens & App passwords`.
Make sure to set Intent to "API Token".
The account you made the API token for also needs the following **Assigned global permissions** in Authentik:
- authentik Core -> Can view User (Model: User)
- authentik Events -> Can view Event (Model: Event)
Allowed fields: `["users", "loginsLast24H", "failedLoginsLast24H"]`.
```yaml
widget:
type: authentik
url: http://authentik.host.or.ip:22070
key: api_token
```

View File

@@ -0,0 +1,17 @@
---
title: Autobrr
description: Autobrr Widget Configuration
---
Learn more about [Autobrr](https://github.com/autobrr/autobrr).
Find your API key under `Settings > API Keys`.
Allowed fields: `["approvedPushes", "rejectedPushes", "filters", "indexers"]`.
```yaml
widget:
type: autobrr
url: http://autobrr.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```

View File

@@ -0,0 +1,28 @@
---
title: Azure DevOps
description: Azure DevOps Widget Configuration
---
Learn more about [Azure DevOps](https://azure.microsoft.com/en-us/products/devops).
This widget has 2 functions:
1. Pipelines: checks if the relevant pipeline is running or not, and if not, reports the last status.<br>
Allowed fields: `["result", "status"]`.
2. Pull Requests: returns the amount of open PRs, the amount of the PRs you have open, and how many PRs that you open are marked as 'Approved' by at least 1 person and not yet completed.<br>
Allowed fields: `["totalPrs", "myPrs", "approved"]`.
You will need to generate a personal access token for an existing user, see the [azure documentation](https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&tabs=Windows#create-a-pat)
```yaml
widget:
type: azuredevops
organization: myOrganization
project: myProject
definitionId: pipelineDefinitionId # required for pipelines
branchName: branchName # optional for pipelines, leave empty for all
userEmail: email # required for pull requests
repositoryId: prRepositoryId # required for pull requests
key: personalaccesstoken
```

View File

@@ -0,0 +1,17 @@
---
title: Bazarr
description: Bazarr Widget Configuration
---
Learn more about [Bazarr](https://github.com/morpheus65535/bazarr).
Find your API key under `Settings > General`.
Allowed fields: `["missingEpisodes", "missingMovies"]`.
```yaml
widget:
type: bazarr
url: http://bazarr.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```

View File

@@ -0,0 +1,14 @@
---
title: Caddy
description: Caddy Widget Configuration
---
Learn more about [Caddy](https://github.com/caddyserver/caddy).
Allowed fields: `["upstreams", "requests", "requests_failed"]`.
```yaml
widget:
type: caddy
url: http://caddy.host.or.ip:adminport # default admin port is 2019
```

View File

@@ -0,0 +1,57 @@
---
title: Calendar
description: Calendar widget
---
## Monthly view
<img alt="calendar" src="https://user-images.githubusercontent.com/5442891/271131282-6767a3ea-573e-4005-aeb9-6e14ee01e845.png">
This widget shows monthly calendar, with optional integrations to show events from supported widgets.
```yaml
widget:
type: calendar
firstDayInWeek: sunday # optional - defaults to monday
view: monthly # optional - possible values monthly, agenda
maxEvents: 10 # optional - defaults to 10
showTime: true # optional - show time for event happening today - defaults to false
timezone: America/Los_Angeles # optional and only when timezone is not detected properly (slightly slower performance) - force timezone for ical events (if it's the same - no change, if missing or different in ical - will be converted to this timezone)
integrations: # optional
- type: sonarr # active widget type that is currently enabled on homepage - possible values: radarr, sonarr, lidarr, readarr, ical
service_group: Media # group name where widget exists
service_name: Sonarr # service name for that widget
color: teal # optional - defaults to pre-defined color for the service (teal for sonarr)
params: # optional - additional params for the service
unmonitored: true # optional - defaults to false, used with *arr stack
- type: ical # Show calendar events from another service
url: https://domain.url/with/link/to.ics # URL with calendar events
name: My Events # required - name for these calendar events
color: zinc # optional - defaults to pre-defined color for the service (zinc for ical)
params: # optional - additional params for the service
showName: true # optional - show name before event title in event line - defaults to false
```
## Agenda
This view shows only list of events from configured integrations
```yaml
widget:
type: calendar
view: agenda
maxEvents: 10 # optional - defaults to 10
showTime: true # optional - show time for event happening today - defaults to false
previousDays: 3 # optional - shows events since three days ago - defaults to 0
integrations: # same as in Monthly view example
```
## Integrations
Currently integrated widgets are [sonarr](sonarr.md), [radarr](radarr.md), [lidarr](lidarr.md) and [readarr](readarr.md).
Supported colors can be found on [color palette](../../configs/settings.md#color-palette).
### iCal
This custom integration allows you to show events from any calendar that supports iCal format, for example, Google Calendar (go to `Settings`, select specific calendar, go to `Integrate calendar`, copy URL from `Public Address in iCal format`).

View File

@@ -0,0 +1,18 @@
---
title: Calibre-web
description: Calibre-web Widget Configuration
---
Learn more about [Calibre-web](https://github.com/janeczku/calibre-web).
**Note: widget requires calibre-web ≥ v0.6.21.**
Allowed fields: `["books", "authors", "categories", "series"]`.
```yaml
widget:
type: calibreweb
url: http://your.calibreweb.host:port
username: username
password: password
```

View File

@@ -0,0 +1,15 @@
---
title: Changedetection.io
description: Changedetection.io Widget Configuration
---
Learn more about [Changedetection.io](https://github.com/dgtlmoon/changedetection.io).
Find your API key under `Settings > API`.
```yaml
widget:
type: changedetectionio
url: http://changedetection.host.or.ip:port
key: apikeyapikeyapikeyapikeyapikey
```

View File

@@ -0,0 +1,12 @@
---
title: Channels DVR Server
description: Channels DVR Server Widget Configuration
---
Learn more about [Channels DVR Server](https://getchannels.com/dvr-server/).
```yaml
widget:
type: channelsdvrserver
url: http://server.host.or.ip:port
```

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