From 51b46496289361d6f9a8947c276aa66dc02b87f4 Mon Sep 17 00:00:00 2001 From: tanasegabriel Date: Tue, 6 May 2025 17:09:36 +0000 Subject: [PATCH 01/62] Improve PiHole status --- src/components/services/PiHole.vue | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/components/services/PiHole.vue b/src/components/services/PiHole.vue index 02a82de..788f7d7 100644 --- a/src/components/services/PiHole.vue +++ b/src/components/services/PiHole.vue @@ -162,16 +162,23 @@ export default { const authenticated = await this.authenticate(); if (!authenticated) return; } - const response = await this.fetch( + const summary_response = await this.fetch( `api/stats/summary?sid=${encodeURIComponent(this.sessionId)}`, ); - if (response?.queries?.percent_blocked === undefined) { + const status_response = await this.fetch( + `api/dns/blocking?sid=${encodeURIComponent(this.sessionId)}`, + ); + + if ( + summary_response?.queries?.percent_blocked === undefined || + status_response?.blocking === undefined + ) { throw new Error("Invalid response format"); } - this.status = "enabled"; - this.percent_blocked = response.queries.percent_blocked; + this.status = status_response.blocking; + this.percent_blocked = summary_response.queries.percent_blocked; this.retryCount = 0; } catch (e) { const isAuthError = @@ -182,7 +189,7 @@ export default { } this.handleError( `Failed to fetch status: ${e.message || e}`, - "disabled", + "error", ); this.removeCacheSession(); } @@ -192,7 +199,7 @@ export default { ? `?summaryRaw&auth=${this.item.apikey}` : ""; const result = await this.fetch(`/api.php${authQueryParams}`).catch((e) => - this.handleError(`Failed to fetch status: ${e}`, "disabled"), + this.handleError(`Failed to fetch status: ${e}`, "error"), ); this.status = result.status; From adf671772b3fef0cb0ecb00eff59ab17df0e6cdb Mon Sep 17 00:00:00 2001 From: tanasegabriel Date: Tue, 6 May 2025 17:37:48 +0000 Subject: [PATCH 02/62] Add orange indicator for disabled blocking --- src/components/services/PiHole.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/services/PiHole.vue b/src/components/services/PiHole.vue index 788f7d7..aa702fd 100644 --- a/src/components/services/PiHole.vue +++ b/src/components/services/PiHole.vue @@ -221,6 +221,12 @@ export default { } &.disabled:before { + background-color: #f5a623; + border-color: #e59400; + box-shadow: 0 0 5px 1px #f5a623; + } + + &.error:before { background-color: #c9404d; border-color: #c42c3b; box-shadow: 0 0 5px 1px #c9404d; From c230392da8a30a7a6995bea0e9180e261fedd635 Mon Sep 17 00:00:00 2001 From: tanasegabriel Date: Sat, 17 May 2025 18:18:13 +0000 Subject: [PATCH 03/62] Use promises for HTTP calls --- src/components/services/PiHole.vue | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/services/PiHole.vue b/src/components/services/PiHole.vue index aa702fd..d976184 100644 --- a/src/components/services/PiHole.vue +++ b/src/components/services/PiHole.vue @@ -162,13 +162,15 @@ export default { const authenticated = await this.authenticate(); if (!authenticated) return; } - const summary_response = await this.fetch( - `api/stats/summary?sid=${encodeURIComponent(this.sessionId)}`, - ); - const status_response = await this.fetch( - `api/dns/blocking?sid=${encodeURIComponent(this.sessionId)}`, - ); + const [summary_response, status_response] = await Promise.all([ + this.fetch( + `api/stats/summary?sid=${encodeURIComponent(this.sessionId)}` + ), + this.fetch( + `api/dns/blocking?sid=${encodeURIComponent(this.sessionId)}` + ) + ]); if ( summary_response?.queries?.percent_blocked === undefined || From fcf730f61030d0b4239919b262b865bb39f9ba88 Mon Sep 17 00:00:00 2001 From: Cs137 <42220742+Cs137@users.noreply.github.com> Date: Sun, 13 Jul 2025 13:42:28 +0200 Subject: [PATCH 04/62] Update docs: Fix typo --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 6fb47b8..1c37ae8 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,6 +1,6 @@ # Configuration -Homer rely on a single [yaml](http://yaml.org/) configuration file, located in the `/assets` directory. +Homer relies on a single [yaml](http://yaml.org/) configuration file, located in the `/assets` directory. `.dist` sample configuration files are available to help you get started. Alternatively, the example below can be copied into the config file. From 60cc984f12481331d23577ec1f7ca0467582dd28 Mon Sep 17 00:00:00 2001 From: Cs137 <42220742+Cs137@users.noreply.github.com> Date: Sun, 13 Jul 2025 13:45:55 +0200 Subject: [PATCH 05/62] Update docs: Fix typo mentioning user --- docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration.md b/docs/configuration.md index 1c37ae8..a7b2942 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -207,7 +207,7 @@ The `/assets/manifest.json` can also be edited to change the app (pwa) name, des ### Community theme - [Dracula theme](https://draculatheme.com/homer) by [@Tuetenk0pp](https://github.com/Tuetenk0pp) -- [Homer Theme v2](https://github.com/walkxcode/homer-theme) by [walkxcode](https://github.com/walkxcode) +- [Homer Theme v2](https://github.com/walkxcode/homer-theme) by [@walkxcode](https://github.com/walkxcode) - [Catppuccin theme](https://github.com/mrpbennett/catppucin-homer) by [@mrpbenett](https://github.com/mrpbennett) ## PWA Icons From 7ea9b2e88275d1822c8f29b6a82ef15c2e6bc2ef Mon Sep 17 00:00:00 2001 From: Cs137 <42220742+Cs137@users.noreply.github.com> Date: Sun, 13 Jul 2025 13:47:42 +0200 Subject: [PATCH 06/62] Add community theme: DietPi --- docs/configuration.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/configuration.md b/docs/configuration.md index a7b2942..6af8c9f 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -209,6 +209,7 @@ The `/assets/manifest.json` can also be edited to change the app (pwa) name, des - [Dracula theme](https://draculatheme.com/homer) by [@Tuetenk0pp](https://github.com/Tuetenk0pp) - [Homer Theme v2](https://github.com/walkxcode/homer-theme) by [@walkxcode](https://github.com/walkxcode) - [Catppuccin theme](https://github.com/mrpbennett/catppucin-homer) by [@mrpbenett](https://github.com/mrpbennett) +- [DietPi theme](https://codeberg.org/Cs137/homer-theme-dietpi) by [@Cs137](https://codeberg.org/Cs137) ## PWA Icons From a38514739de6ff1e98a0577e4a385e198090d648 Mon Sep 17 00:00:00 2001 From: Cs137 <42220742+Cs137@users.noreply.github.com> Date: Tue, 22 Jul 2025 21:42:05 +0200 Subject: [PATCH 07/62] Sort community themes alphabetically --- docs/configuration.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/configuration.md b/docs/configuration.md index 6af8c9f..578e035 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -206,10 +206,10 @@ The `/assets/manifest.json` can also be edited to change the app (pwa) name, des ### Community theme -- [Dracula theme](https://draculatheme.com/homer) by [@Tuetenk0pp](https://github.com/Tuetenk0pp) -- [Homer Theme v2](https://github.com/walkxcode/homer-theme) by [@walkxcode](https://github.com/walkxcode) - [Catppuccin theme](https://github.com/mrpbennett/catppucin-homer) by [@mrpbenett](https://github.com/mrpbennett) - [DietPi theme](https://codeberg.org/Cs137/homer-theme-dietpi) by [@Cs137](https://codeberg.org/Cs137) +- [Dracula theme](https://draculatheme.com/homer) by [@Tuetenk0pp](https://github.com/Tuetenk0pp) +- [Homer Theme v2](https://github.com/walkxcode/homer-theme) by [@walkxcode](https://github.com/walkxcode) ## PWA Icons From b4e20fe8af20b45ccc76b66e4a41f8e7465f4ba5 Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Wed, 6 Aug 2025 16:09:34 +0200 Subject: [PATCH 08/62] refactor(layouts): remove duplicated code. --- src/App.vue | 74 ++++++++------------------------- src/components/GroupHeader.vue | 23 ++++++++++ src/components/ServiceGroup.vue | 69 ++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 56 deletions(-) create mode 100644 src/components/GroupHeader.vue create mode 100644 src/components/ServiceGroup.vue diff --git a/src/App.vue b/src/App.vue index 5860aef..364c611 100644 --- a/src/App.vue +++ b/src/App.vue @@ -68,64 +68,23 @@ - -
- -
- - +
-
-

- - - {{ group.name }} -

- -
+ :group="group" + :is-vertical="vlayout && !filter" + :proxy="config.proxy" + :columns="config.columns" + :group-index="groupIndex" + />
@@ -150,7 +109,7 @@ import merge from "lodash.merge"; import Navbar from "./components/Navbar.vue"; import GetStarted from "./components/GetStarted.vue"; import ConnectivityChecker from "./components/ConnectivityChecker.vue"; -import Service from "./components/Service.vue"; +import ServiceGroup from "./components/ServiceGroup.vue"; import Message from "./components/Message.vue"; import SearchInput from "./components/SearchInput.vue"; import SettingToggle from "./components/SettingToggle.vue"; @@ -165,7 +124,7 @@ export default { Navbar, GetStarted, ConnectivityChecker, - Service, + ServiceGroup, Message, SearchInput, SettingToggle, @@ -196,6 +155,9 @@ export default { window.onhashchange = this.buildDashboard; this.loaded = true; }, + beforeUnmount() { + window.onhashchange = null; + }, methods: { searchHotkey() { if (this.config.hotkey && this.config.hotkey.search) { diff --git a/src/components/GroupHeader.vue b/src/components/GroupHeader.vue new file mode 100644 index 0000000..34c48a3 --- /dev/null +++ b/src/components/GroupHeader.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ServiceGroup.vue b/src/components/ServiceGroup.vue new file mode 100644 index 0000000..4e40183 --- /dev/null +++ b/src/components/ServiceGroup.vue @@ -0,0 +1,69 @@ + + + From 83152453c50fba42fbf5c77df04bf3065e1d2749 Mon Sep 17 00:00:00 2001 From: Bastien Wirtz Date: Wed, 6 Aug 2025 22:56:55 +0200 Subject: [PATCH 09/62] fix(connectivity-checker): fix network offline issue with auth proxies #961 --- src/components/ConnectivityChecker.vue | 66 ++++++++++++++++---------- 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/src/components/ConnectivityChecker.vue b/src/components/ConnectivityChecker.vue index 6ca0b39..2541e51 100644 --- a/src/components/ConnectivityChecker.vue +++ b/src/components/ConnectivityChecker.vue @@ -1,9 +1,20 @@