From 63db1f90bb733cf2505034b69b194d7d35c18d7c Mon Sep 17 00:00:00 2001 From: mutatrum Date: Wed, 13 May 2026 13:49:48 +0200 Subject: [PATCH 1/6] Show target temp on temp bars --- .../app/components/edit/edit.component.html | 2 +- .../app/components/home/home.component.html | 36 +++++++++++++++---- .../src/app/components/home/home.component.ts | 6 ++-- .../app/components/swarm/swarm.component.html | 12 +++---- 4 files changed, 40 insertions(+), 16 deletions(-) diff --git a/main/http_server/axe-os/src/app/components/edit/edit.component.html b/main/http_server/axe-os/src/app/components/edit/edit.component.html index 528d928312..c0b93fdad5 100644 --- a/main/http_server/axe-os/src/app/components/edit/edit.component.html +++ b/main/http_server/axe-os/src/app/components/edit/edit.component.html @@ -67,7 +67,7 @@
diff --git a/main/http_server/axe-os/src/app/components/home/home.component.html b/main/http_server/axe-os/src/app/components/home/home.component.html index aa4dd76e7c..50dbd1f60e 100644 --- a/main/http_server/axe-os/src/app/components/home/home.component.html +++ b/main/http_server/axe-os/src/app/components/home/home.component.html @@ -308,9 +308,21 @@
- - - +
+ + + + + +
+ + {{info.temptarget}} °C + +
+
Danger: High Temperature @@ -324,9 +336,21 @@
{{info.temp2}} °C
- - - +
+ + + + + +
+ + {{info.temptarget}} °C + +
+
Danger: High Temperature diff --git a/main/http_server/axe-os/src/app/components/home/home.component.ts b/main/http_server/axe-os/src/app/components/home/home.component.ts index a36a66b7ba..2f27e4dcf8 100644 --- a/main/http_server/axe-os/src/app/components/home/home.component.ts +++ b/main/http_server/axe-os/src/app/components/home/home.component.ts @@ -729,7 +729,7 @@ export class HomeComponent implements OnInit, OnDestroy { this.maxPower = Math.max(info.maxPower, info.power); this.nominalVoltage = info.nominalVoltage; - this.maxTemp = Math.max(75, info.temp); + this.maxTemp = Math.max(75, info.temp || 0, info.temp2 || 0, info.temptarget || 0); this.maxRpm = Math.max(7000, info.fanrpm, info.fan2rpm); this.maxFrequency = Math.max(800, info.frequency); @@ -873,7 +873,7 @@ export class HomeComponent implements OnInit, OnDestroy { parts.push( info.hostname, (info.hashRate ? HashSuffixPipe.transform(info.hashRate) : ''), - (info.temp ? `${info.temp}${info.temp2 > -1 ? `/${info.temp2}` : ''}${info.vrTemp ? `/${info.vrTemp}` : ''} °C` : ''), + (info.temp ? `${info.temp}${info.temp2 > -1 ? `/${info.temp2}` : ''}${info.vrTemp ? `/${info.vrTemp}` : ''} °C` : ''), (!info.power_fault ? `${info.power} W` : ''), (info.bestDiff ? DiffSuffixPipe.transform(info.bestDiff) : ''), ); @@ -1181,7 +1181,7 @@ export class HomeComponent implements OnInit, OnDestroy { case eChartLabel.errorPercentage: return {suffix: ' %', precision: 2}; case eChartLabel.asicTemp: case eChartLabel.asicTemp2: - case eChartLabel.vrTemp: return {suffix: ' °C', precision: 1}; + case eChartLabel.vrTemp: return {suffix: ' °C', precision: 1}; case eChartLabel.asicVoltage: case eChartLabel.voltage: return {suffix: ' V', precision: 1}; case eChartLabel.power: return {suffix: ' W', precision: 1}; diff --git a/main/http_server/axe-os/src/app/components/swarm/swarm.component.html b/main/http_server/axe-os/src/app/components/swarm/swarm.component.html index 4873f9e415..e6d3d27066 100644 --- a/main/http_server/axe-os/src/app/components/swarm/swarm.component.html +++ b/main/http_server/axe-os/src/app/components/swarm/swarm.component.html @@ -191,14 +191,14 @@

Swarm

- {{axe.vrTemp | number: '1.0-1'}} °C + {{axe.vrTemp | number: '1.0-1'}} °C - {{axe.temp2 | number: '1.0-1'}} °C + {{axe.temp2 | number: '1.0-1'}} °C - {{axe.temp | number: '1.0-1'}} °C + {{axe.temp | number: '1.0-1'}} °C
@@ -282,14 +282,14 @@

Swarm

- {{axe.temp | number: '1.0-1'}} °C + {{axe.temp | number: '1.0-1'}} °C

- {{axe.temp2 | number: '1.0-1'}} °C + {{axe.temp2 | number: '1.0-1'}} °C

- {{axe.vrTemp | number: '1.0-1'}} °C + {{axe.vrTemp | number: '1.0-1'}} °C

{{axe.poolDifficulty}} From 3966c74d672c99c0a3d148da649d6738e688c875 Mon Sep 17 00:00:00 2001 From: mutatrum Date: Tue, 30 Jun 2026 16:29:27 +0200 Subject: [PATCH 2/6] Fix marker styling --- .../app/components/home/home.component.html | 24 +++++++------------ .../src/app/layout/styles/layout/_axe-os.scss | 22 +++++++++++++++++ 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/main/http_server/axe-os/src/app/components/home/home.component.html b/main/http_server/axe-os/src/app/components/home/home.component.html index 5369f43200..7e7ba11a4d 100644 --- a/main/http_server/axe-os/src/app/components/home/home.component.html +++ b/main/http_server/axe-os/src/app/components/home/home.component.html @@ -261,11 +261,9 @@
-
- +
+ {{info.nominalVoltage}} V
@@ -322,11 +320,9 @@
-
- +
+ {{info.temptarget}} °C
@@ -350,11 +346,9 @@
-
- +
+ {{info.temptarget}} °C
diff --git a/main/http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss b/main/http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss index 843b145a73..bfc90b2e90 100644 --- a/main/http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss +++ b/main/http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss @@ -43,6 +43,28 @@ } } +.progressbar-marker { + position: absolute; + width: 1px; + height: 10px; + top: -2px; + transform: translateY(-50%); + background-color: #ffffff; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.85); + z-index: 2; + + &-label { + position: absolute; + bottom: -0.9rem; + left: 50%; + transform: translateX(-50%); + color: var(--text-color-secondary); + white-space: nowrap; + font-size: 0.7rem; + font-weight: 500; + } +} + /* Select - Base Reset */ .p-select { background: transparent !important; From 8c57876150f4ecd29b8c49b38210484c5bdfe627 Mon Sep 17 00:00:00 2001 From: mutatrum Date: Tue, 30 Jun 2026 16:39:36 +0200 Subject: [PATCH 3/6] Only show single target temp number if there are 2 temp sensors. --- .../axe-os/src/app/components/home/home.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/http_server/axe-os/src/app/components/home/home.component.html b/main/http_server/axe-os/src/app/components/home/home.component.html index 7e7ba11a4d..7622ed6a42 100644 --- a/main/http_server/axe-os/src/app/components/home/home.component.html +++ b/main/http_server/axe-os/src/app/components/home/home.component.html @@ -322,7 +322,7 @@
- + {{info.temptarget}} °C
From 24ed250fcba9082812e9787d3141a03a961de167 Mon Sep 17 00:00:00 2001 From: mutatrum Date: Tue, 30 Jun 2026 16:41:37 +0200 Subject: [PATCH 4/6] Fix position --- .../http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss | 1 - 1 file changed, 1 deletion(-) diff --git a/main/http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss b/main/http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss index bfc90b2e90..f42af5ef4a 100644 --- a/main/http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss +++ b/main/http_server/axe-os/src/app/layout/styles/layout/_axe-os.scss @@ -48,7 +48,6 @@ width: 1px; height: 10px; top: -2px; - transform: translateY(-50%); background-color: #ffffff; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.85); z-index: 2; From 2a20f6d0cb2337ec07ae8005f36afa33f61f844c Mon Sep 17 00:00:00 2001 From: mutatrum Date: Tue, 30 Jun 2026 16:49:48 +0200 Subject: [PATCH 5/6] =?UTF-8?q?Revert=20html=20code=20for=20=C2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axe-os/src/app/components/home/home.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/http_server/axe-os/src/app/components/home/home.component.ts b/main/http_server/axe-os/src/app/components/home/home.component.ts index 907ee319da..c3caf41b29 100644 --- a/main/http_server/axe-os/src/app/components/home/home.component.ts +++ b/main/http_server/axe-os/src/app/components/home/home.component.ts @@ -1029,7 +1029,7 @@ export class HomeComponent implements OnInit, OnDestroy { parts.push( info.hostname, (info.hashRate ? HashSuffixPipe.transform(info.hashRate) : ''), - (info.temp ? `${info.temp}${info.temp2 > -1 ? `/${info.temp2}` : ''}${info.vrTemp ? `/${info.vrTemp}` : ''} °C` : ''), + (info.temp ? `${info.temp}${info.temp2 > -1 ? `/${info.temp2}` : ''}${info.vrTemp ? `/${info.vrTemp}` : ''} °C` : ''), (!info.power_fault ? `${info.power} W` : ''), (info.bestDiff ? DiffSuffixPipe.transform(info.bestDiff) : ''), ); @@ -1350,7 +1350,7 @@ export class HomeComponent implements OnInit, OnDestroy { case eChartLabel.errorPercentage: return {suffix: ' %', precision: 2}; case eChartLabel.asicTemp: case eChartLabel.asicTemp2: - case eChartLabel.vrTemp: return {suffix: ' °C', precision: 1}; + case eChartLabel.vrTemp: return {suffix: ' °C', precision: 1}; case eChartLabel.asicVoltage: case eChartLabel.voltage: return {suffix: ' V', precision: 1}; case eChartLabel.power: return {suffix: ' W', precision: 1}; From 03dc012a0b346f58b9ed2e8521deb61ba39add33 Mon Sep 17 00:00:00 2001 From: mutatrum Date: Sat, 18 Jul 2026 22:20:25 +0200 Subject: [PATCH 6/6] Extract ProgressbarComponent --- main/http_server/axe-os/src/app/app.module.ts | 2 + .../app/components/home/home.component.html | 79 ++++--------------- .../components/home/home.component.spec.ts | 2 + .../progressbar/progressbar.component.ts | 44 +++++++++++ .../components/update/update.component.html | 4 +- .../update/update.component.spec.ts | 3 +- 6 files changed, 68 insertions(+), 66 deletions(-) create mode 100644 main/http_server/axe-os/src/app/components/progressbar/progressbar.component.ts diff --git a/main/http_server/axe-os/src/app/app.module.ts b/main/http_server/axe-os/src/app/app.module.ts index 3af3754720..11513ccd19 100644 --- a/main/http_server/axe-os/src/app/app.module.ts +++ b/main/http_server/axe-os/src/app/app.module.ts @@ -13,6 +13,7 @@ import { RadioButtonComponent } from './components/radio-button/radio-button.com import { SliderComponent } from './components/slider/slider.component'; import { AppChartComponent } from './components/chart/app-chart.component'; import { DropdownComponent } from './components/dropdown/dropdown.component'; +import { ProgressbarComponent } from './components/progressbar/progressbar.component'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @@ -90,6 +91,7 @@ const components = [ AppChartComponent, EditComponent, SettingsComponent, + ProgressbarComponent, ANSIPipe, DateAgoPipe, HashSuffixPipe, diff --git a/main/http_server/axe-os/src/app/components/home/home.component.html b/main/http_server/axe-os/src/app/components/home/home.component.html index b0518db66d..c5bc803af5 100644 --- a/main/http_server/axe-os/src/app/components/home/home.component.html +++ b/main/http_server/axe-os/src/app/components/home/home.component.html @@ -237,30 +237,17 @@

Power

Power{{info.power}} W
- @let powerProgress = ((info.power / info.maxPower) * 100); -
-
-
+
Input Voltage{{info.voltage}} V
-
- @let voltageProgress = ((info.voltage / (info.nominalVoltage + .5)) * 100); -
-
-
- - -
- - {{info.nominalVoltage}} V - -
-
+ + Danger: Low Voltage @@ -270,20 +257,14 @@
ASIC Frequency{{info.actualFrequency | number: '1.0-4'}} MHz
- @let freqProgress = ((info.actualFrequency / maxFrequency) * 100); -
-
-
+
Measured ASIC Voltage{{info.coreVoltageActual}} V
- @let coreVoltProgress = ((info.coreVoltageActual / 1.8) * 100); -
-
-
+
@@ -309,20 +290,10 @@
-
- @let tempProgress = ((info.temp / maxTemp) * 100); -
-
-
- - -
- - {{info.temptarget}} °C - -
-
+ + Danger: High Temperature @@ -336,20 +307,10 @@
{{info.temp2}} °C
-
- @let temp2Progress = ((info.temp2 / maxTemp) * 100); -
-
-
- - -
- - {{info.temptarget}} °C - -
-
+ + Danger: High Temperature @@ -360,10 +321,7 @@
Voltage Regulator Temperature{{info.vrTemp}} °C
- @let vrTempProgress = ((info.vrTemp / 120) * 100); -
-
-
+ Danger: High Temperature @@ -392,10 +350,7 @@

Fan

{{info.fanspeed.toFixed(1)}} %
- @let fanProgress = info.fanspeed; -
-
-
+ diff --git a/main/http_server/axe-os/src/app/components/home/home.component.spec.ts b/main/http_server/axe-os/src/app/components/home/home.component.spec.ts index 4335899bfb..af44b5f6c9 100644 --- a/main/http_server/axe-os/src/app/components/home/home.component.spec.ts +++ b/main/http_server/axe-os/src/app/components/home/home.component.spec.ts @@ -10,6 +10,7 @@ import { provideRouter } from '@angular/router'; import { AppChartComponent } from 'src/app/components/chart/app-chart.component'; import { TooltipDirective } from 'src/app/directives/tooltip.directive'; import { DropdownComponent } from 'src/app/components/dropdown/dropdown.component'; +import { ProgressbarComponent } from 'src/app/components/progressbar/progressbar.component'; import { BehaviorSubject, of } from 'rxjs'; import { HashSuffixPipe } from 'src/app/pipes/hash-suffix.pipe'; @@ -160,6 +161,7 @@ describe('HomeComponent', () => { NoopAnimationsModule, AppChartComponent, DropdownComponent, + ProgressbarComponent, TooltipDirective, HashSuffixPipe, DiffSuffixPipe, diff --git a/main/http_server/axe-os/src/app/components/progressbar/progressbar.component.ts b/main/http_server/axe-os/src/app/components/progressbar/progressbar.component.ts new file mode 100644 index 0000000000..d6cec1390a --- /dev/null +++ b/main/http_server/axe-os/src/app/components/progressbar/progressbar.component.ts @@ -0,0 +1,44 @@ +import { Component, Input } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +export interface ProgressBarMarker { + value: number; // Percentage (0 to 100) + label: string; // Text label for the marker + visible?: boolean; // Optional visibility condition +} + +@Component({ + selector: 'app-progressbar', + standalone: true, + imports: [CommonModule], + template: ` +
+ +
+
+
+ + + @for (marker of markers; track $index) { + @if (marker.visible !== false) { +
+ + {{ marker.label }} + +
+ } + } +
+ `, + styles: [` + :host { + display: block; + width: 100%; + } + `] +}) +export class ProgressbarComponent { + @Input() value: number = 0; // Current progress value (0 to 100) + @Input() markers: ProgressBarMarker[] = []; // Optional marker lines + @Input() heightClass: string = 'h-[6px]'; // Custom height class (e.g. h-6 for updates) +} diff --git a/main/http_server/axe-os/src/app/components/update/update.component.html b/main/http_server/axe-os/src/app/components/update/update.component.html index 88609af49d..e1e71e99f4 100644 --- a/main/http_server/axe-os/src/app/components/update/update.component.html +++ b/main/http_server/axe-os/src/app/components/update/update.component.html @@ -100,9 +100,7 @@

Update Firmware

@let progressVal = (updateTarget === 'AxeOS' ? websiteUpdateProgress : firmwareUpdateProgress); -
-
-
+
Please do not disconnect the power. diff --git a/main/http_server/axe-os/src/app/components/update/update.component.spec.ts b/main/http_server/axe-os/src/app/components/update/update.component.spec.ts index aae9df64db..3cb2ed5279 100644 --- a/main/http_server/axe-os/src/app/components/update/update.component.spec.ts +++ b/main/http_server/axe-os/src/app/components/update/update.component.spec.ts @@ -3,6 +3,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { UpdateComponent } from './update.component'; import { ModalComponent } from '../modal/modal.component'; import { CheckboxComponent } from '../checkbox/checkbox.component'; +import { ProgressbarComponent } from '../progressbar/progressbar.component'; import { provideHttpClient } from '@angular/common/http'; import { provideToastr } from 'ngx-toastr'; @@ -13,7 +14,7 @@ describe('UpdateComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ declarations: [UpdateComponent, ModalComponent], - imports: [CheckboxComponent], + imports: [CheckboxComponent, ProgressbarComponent], providers: [provideHttpClient(), provideToastr()] }); fixture = TestBed.createComponent(UpdateComponent);