Skip to content

Commit cc33fe1

Browse files
committed
chore(release): 1.2.0-alpha.4 with UI hotfixes
1 parent 15aa8fd commit cc33fe1

5 files changed

Lines changed: 45 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.2.0-alpha.4] - 2026-07-26
9+
10+
### Fixed
11+
12+
- The dashboard was unusable on a fresh load: a full-screen "Rebooting printer…" overlay rendered whenever no printer was connected (including `--no-printers` startup) and could not be dismissed. The `.reboot-overlay` `display: flex` rule had equal CSS specificity to `.hidden` and came later in source order, so the overlay was always visible. Added `.reboot-overlay.hidden { display: none; }`, mirroring the existing `.cal-overlay.hidden` override. Regression from the SSH toolset port in 1.2.0-alpha.3
13+
- Same latent CSS specificity bug on the file-manager overlay (`.fm-overlay`); added the matching `.fm-overlay.hidden { display: none; }` override. It only surfaced when the file-manager modal was open, not on a fresh load
14+
- Lucide "icon name was not found" warnings in the browser console. The vendored lucide bundle (v0.552.0) dropped the legacy kebab-case aliases the boot-time icon scan relied on (wifi, trash-2, alert-triangle, refresh-cw, and others). The boot-time pre-hydration set was expanded to cover every icon used in the static HTML, resolved to its PascalCase key via the existing kebab→PascalCase helper
15+
816
## [1.2.0-alpha.3] - 2026-07-26
917

1018
### Added
@@ -239,7 +247,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
239247
- Optional password authentication
240248
- Configuration persistence in `data/config.json`
241249

242-
[Unreleased]: https://github.com/Parallel-7/FlashForgeWebUI/compare/v1.2.0-alpha.3...HEAD
250+
[Unreleased]: https://github.com/Parallel-7/FlashForgeWebUI/compare/v1.2.0-alpha.4...HEAD
251+
[1.2.0-alpha.4]: https://github.com/Parallel-7/FlashForgeWebUI/compare/v1.2.0-alpha.3...v1.2.0-alpha.4
243252
[1.2.0-alpha.3]: https://github.com/Parallel-7/FlashForgeWebUI/compare/v1.2.0-alpha.2...v1.2.0-alpha.3
244253
[1.2.0-alpha.2]: https://github.com/Parallel-7/FlashForgeWebUI/compare/v1.2.0-alpha.1...v1.2.0-alpha.2
245254
[1.2.0-alpha.1]: https://github.com/Parallel-7/FlashForgeWebUI/compare/v1.1.0...v1.2.0-alpha.1

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "flashforge-webui",
3-
"version": "1.2.0-alpha.3",
3+
"version": "1.2.0-alpha.4",
44
"description": "Standalone WebUI for FlashForge 3D Printers",
55
"main": "dist/index.js",
66
"bin": "dist/index.js",

src/webui/static/shared/icons.ts

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,28 @@ export function hydrateLucideIcons(
7575
}
7676

7777
export function initializeLucideIcons(): void {
78-
hydrateLucideIcons(['settings', 'lock', 'package', 'search', 'circle', 'folder', 'gauge', 'power'], document);
78+
// Pre-hydrate every icon referenced by static `data-lucide` markup in
79+
// index.html so it renders at boot. The vendored lucide build (v0.552.0)
80+
// dropped its legacy kebab-case aliases, so lucide's own bare `createIcons()`
81+
// scan can no longer resolve names like `hard-drive` or `alert-triangle`.
82+
// `hydrateLucideIcons` converts each name to PascalCase (e.g. `alert-triangle`
83+
// -> `AlertTriangle`, which still exists in the registry), registers the node,
84+
// and renders it in one pass. Icons only used inside dynamically rendered
85+
// markup (file-manager tiles, calibration tabs, reboot overlay) are hydrated
86+
// by their own scoped `hydrateLucideIcons(...)` calls at render time.
87+
hydrateLucideIcons(
88+
[
89+
// Header / global chrome
90+
'settings', 'lock', 'package', 'search', 'circle', 'folder', 'gauge', 'power',
91+
// Printer discovery modal
92+
'wifi', 'keyboard', 'archive', 'link',
93+
// File manager / storage browser
94+
'hard-drive', 'usb', 'refresh-cw', 'check-square', 'square', 'trash-2',
95+
'pencil', 'alert-triangle',
96+
// Calibration modal + shared action icons
97+
'grid-3x3', 'activity', 'terminal', 'history', 'file-up', 'download', 'play',
98+
'sparkles', 'copy', 'upload', 'plug', 'unplug', 'check-circle',
99+
],
100+
document,
101+
);
79102
}

src/webui/static/webui.css

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2536,6 +2536,10 @@ body {
25362536
border-radius: inherit;
25372537
}
25382538

2539+
.fm-overlay.hidden {
2540+
display: none;
2541+
}
2542+
25392543
.fm-overlay-panel {
25402544
background: var(--theme-surface);
25412545
border: 1px solid var(--border-color);
@@ -2676,6 +2680,10 @@ body {
26762680
z-index: 1200;
26772681
}
26782682

2683+
.reboot-overlay.hidden {
2684+
display: none;
2685+
}
2686+
26792687
.reboot-overlay-panel {
26802688
background: var(--theme-surface);
26812689
border: 1px solid var(--border-color);

0 commit comments

Comments
 (0)