Skip to content

Commit 97a3369

Browse files
committed
Merge branch 'develop'
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2 parents 3b54dc4 + 4d58074 commit 97a3369

110 files changed

Lines changed: 2396 additions & 1526 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,7 @@ src/
179179
- ESLint enforced: `neostandard` + `pluginVue.configs['flat/vue2-recommended']` + `pluginRegexp` + `@vue/eslint-config-typescript`
180180
- `.editorconfig` rules: 2 spaces, LF line endings, UTF-8, trim trailing whitespace, max line 100 (code)
181181
- camelCase for variables/methods, PascalCase for components
182+
- Any link opening a new tab (`target="_blank"`) **must** also set `rel="noopener noreferrer"` — applies to `<a>`, `<v-btn>`/`<app-btn>` with `:href`, and any HTML strings rendered via `v-safe-html` (e.g. `src/util/link-external-urls.ts`)
182183
- Use `consola` for logging, not `console.log` (configured in `src/setupConsola.ts` — warn in prod, verbose in dev)
183184
- Type imports: `import type { ... }` for types only (`verbatimModuleSyntax: true`)
184185
- `satisfies` keyword for store module type checking

components.d.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ declare module 'vue' {
3636
AppFocusableContainer: typeof import('./src/components/ui/AppFocusableContainer.vue')['default']
3737
AppFooter: typeof import('./src/components/layout/AppFooter.vue')['default']
3838
AppIcon: typeof import('./src/components/ui/AppIcon.vue')['default']
39+
AppInlineChart: typeof import('./src/components/ui/AppInlineChart.vue')['default']
3940
AppInlineHelp: typeof import('./src/components/ui/AppInlineHelp.vue')['default']
4041
AppIroColorPicker: typeof import('./src/components/ui/AppIroColorPicker.vue')['default']
4142
AppNamedSelect: typeof import('./src/components/ui/AppNamedSelect.vue')['default']
@@ -82,6 +83,8 @@ declare module 'vue' {
8283
VApp: typeof import('vuetify/lib')['VApp']
8384
VAppBar: typeof import('vuetify/lib')['VAppBar']
8485
VBadge: typeof import('vuetify/lib')['VBadge']
86+
VBreadcrumbs: typeof import('vuetify/lib')['VBreadcrumbs']
87+
VBreadcrumbsItem: typeof import('vuetify/lib')['VBreadcrumbsItem']
8588
VBtn: typeof import('vuetify/lib')['VBtn']
8689
VBtnToggle: typeof import('vuetify/lib')['VBtnToggle']
8790
VCard: typeof import('vuetify/lib')['VCard']

docs/docs/features/system-and-notifications.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,34 @@ When configured, Fluidd displays power device controls on the dashboard and
4747
in the top navigation bar. You can toggle devices on and off directly from
4848
the UI.
4949

50+
## Sensors
51+
52+
!!! note "Moonraker configuration required"
53+
The Sensors card shows generic sensors exposed via Moonraker's `[sensor]`
54+
component (for example power meters or environmental sensors). See the
55+
[Moonraker sensor documentation](https://moonraker.readthedocs.io/en/latest/configuration/#sensor)
56+
for setup details and supported sensor types.
57+
58+
These are distinct from the Klipper temperature sensors shown in the
59+
[Thermals](thermals.md) chart.
60+
61+
The **Sensors** dashboard card lists each configured sensor as a collapsible
62+
panel:
63+
64+
- The panel header shows the sensor's friendly name and the current value of
65+
each of its measurements.
66+
- Expand a panel to see a real-time history chart for every numeric
67+
measurement. Sensors with no numeric measurements show **No data**.
68+
5069
## Notifications
5170

5271
Fluidd has a built-in notification system that warns you of potential issues:
5372

5473
- **Pending updates** — shown when Klipper, Moonraker, Fluidd, or other
5574
components have updates available.
75+
- **Outdated Moonraker** — a warning shown when the connected Moonraker is
76+
older than the minimum version Fluidd supports, with a link to the versions
77+
list in Settings.
5678
- **Throttle conditions** — fires when the host reports throttling (e.g.
5779
undervoltage or thermal throttling on a Raspberry Pi via `vcgencmd`).
5880
- **Moonraker announcements** — important messages from the Fluidd developers

docs/docs/features/thermals.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@ fans in real time.
1919

2020
![Thermal graph showing real-time temperature history for heaters and sensors](/assets/images/graph.png)
2121

22+
## Sensor colors
23+
24+
Each heater, fan, and sensor row displays a colored icon. Click it to open a
25+
color picker and set a custom color for that sensor. The color is reflected
26+
immediately in both the list and the chart.
27+
28+
To revert to the automatically assigned palette color, open the picker and
29+
click **Reset to default**.
30+
31+
Colors are saved per sensor in Moonraker's database and restored on the next
32+
page load.
33+
2234
## Presets
2335

2436
Fluidd supports custom thermal presets — saved temperature profiles you can

package.json

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,28 +31,28 @@
3131
"@fontsource/roboto": "^5.2.10",
3232
"@irojs/iro-core": "^1.2.1",
3333
"@jaames/iro": "^5.5.2",
34-
"axios": "^1.16.1",
34+
"axios": "^1.17.0",
3535
"consola": "^3.4.2",
36-
"dompurify": "^3.4.7",
37-
"echarts": "^6.1.0",
36+
"dompurify": "catalog:",
37+
"echarts": "catalog:",
3838
"echarts-gl": "^2.1.0",
3939
"hls.js": "^1.6.16",
4040
"ipaddr.js": "^2.4.0",
4141
"jwt-decode": "^4.0.0",
4242
"lodash-es": "^4.18.1",
43-
"marked": "^18.0.4",
43+
"marked": "^18.0.5",
4444
"marked-base-url": "^1.1.9",
4545
"md5": "^2.3.0",
4646
"monaco-editor": "^0.55.1",
4747
"panzoom": "^9.4.4",
4848
"path-browserify": "^1.0.1",
4949
"qr-scanner": "^1.4.2",
5050
"qrcode.vue": "^1.7.0",
51-
"semver": "^7.8.1",
51+
"semver": "^7.8.4",
5252
"shlex": "^3.0.0",
5353
"sortablejs": "^1.15.7",
5454
"uuid": "^14.0.0",
55-
"vue": "^2.7.16",
55+
"vue": "catalog:",
5656
"vue-class-component": "^7.2.6",
5757
"vue-echarts": "^7.0.3",
5858
"vue-i18n": "^8.28.2",
@@ -77,29 +77,29 @@
7777
"@types/node": "^24.12.4",
7878
"@types/semver": "^7.7.1",
7979
"@types/sortablejs": "^1.15.9",
80-
"@vue/eslint-config-typescript": "^14.7.0",
80+
"@vue/eslint-config-typescript": "^14.8.0",
8181
"@vue/test-utils": "^1.3.6",
8282
"@vue/tsconfig": "^0.9.1",
8383
"commit-and-tag-version": "^12.7.3",
84-
"esbuild": "^0.28.0",
84+
"esbuild": "^0.28.1",
8585
"eslint": "^9.39.4",
8686
"eslint-plugin-regexp": "^3.1.0",
8787
"eslint-plugin-vue": "^9.33.0",
8888
"husky": "^9.1.7",
8989
"jsdom": "^29.1.1",
9090
"mockdate": "^3.0.5",
9191
"neostandard": "^0.13.0",
92-
"rollup": "^4.60.4",
92+
"rollup": "^4.61.1",
9393
"sass-embedded": "^1.100.0",
9494
"skott": "^0.35.11",
9595
"svgo": "^4.0.1",
9696
"typescript": "^6.0.3",
97-
"typescript-eslint": "^8.60.0",
97+
"typescript-eslint": "^8.61.0",
9898
"unplugin-vue-components": "^30.0.0",
99-
"vite": "^8.0.14",
100-
"vite-plugin-checker": "^0.13.0",
99+
"vite": "catalog:",
100+
"vite-plugin-checker": "^0.14.1",
101101
"vite-plugin-pwa": "^1.3.0",
102-
"vitest": "^4.1.7",
102+
"vitest": "^4.1.8",
103103
"vue-debounce-decorator": "^1.0.1",
104104
"vue-template-compiler": "^2.7.16",
105105
"vue-tsc": "~3.0.10",
@@ -126,5 +126,5 @@
126126
"engines": {
127127
"node": "^22.12.0 || ^24"
128128
},
129-
"packageManager": "pnpm@11.3.0+sha512.2c403d6594527287672b1f7056343a1f7c3634036a67ffabfcc2b3d7595d843768f8787148d1b57cf7956c90606bbd192857c363af19e96d2d0ec9ec5741d215"
129+
"packageManager": "pnpm@11.6.0+sha512.9a36518224080c6fe5165afdcfe79bfa118c29be703f3f462b1e32efe1e98e47e8750b148e08286250aad4113cc7993ca413c4e2cd447752708c2ee5751bc95f"
130130
}

0 commit comments

Comments
 (0)