Skip to content

Commit 2672d72

Browse files
committed
Create CHANGELOG.md
1 parent 0813a62 commit 2672d72

1 file changed

Lines changed: 107 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
### Added
11+
12+
- Comprehensive test suite with 118 passing tests covering core functionality:
13+
- EnvironmentService: Package detection, path resolution, environment state (23 tests)
14+
- ConfigManager: Configuration loading, updates, validation, events (23 tests)
15+
- Error utilities: All error codes, factories, handlers, serialization (68 tests)
16+
- WebUIManager integration: Static files, API routes, SPA routing, middleware (24 tests)
17+
- End-to-end testing workflow for all binary platforms (Windows, macOS, Linux x64/ARM64/ARMv7)
18+
- Production-ready shutdown timeout system with three-tier timeout strategy:
19+
- Hard deadline: 10s absolute maximum
20+
- Per-printer disconnect: 5s timeout with forced cleanup
21+
- WebUI server stop: 3s timeout with connection force-close
22+
- Parallel printer disconnection via `Promise.allSettled()`
23+
- `ShutdownTimeout` utility module (`src/utils/ShutdownTimeout.ts`) with:
24+
- `TimeoutError` class for timeout failures
25+
- `withTimeout()` wrapper for promises with timeout enforcement
26+
- `createHardDeadline()` for absolute maximum shutdown time
27+
- Test scripts: `npm test`, `npm run test:watch`, `npm run test:coverage`, `npm run test:verbose`
28+
- Express.js skill documentation for Claude Code (4,574 lines of reference material)
29+
30+
### Fixed
31+
32+
- **Production-ready shutdown system** to prevent indefinite hangs during graceful shutdown:
33+
- Single printer: < 5s shutdown
34+
- Multiple printers: < 10s (parallelized)
35+
- Hard deadline: Always exits within 10s maximum
36+
- Preserved double Ctrl+C for immediate force exit
37+
- **Express 5 wildcard route compatibility** - Changed unnamed wildcards to named wildcards (`/*splat`)
38+
- **Local build scripts** - Corrected binary name from `yao-pkg` to `pkg`
39+
- **Missing index.html error handling** - Returns proper 500 server error with debugging context instead of misleading 404
40+
- **ESLint configuration** - Split configuration for backend (CommonJS) and frontend (ES modules) with appropriate tsconfig references
41+
- **404 error reporting** - Fixed catch-all route to use `req.originalUrl` instead of `req.path`
42+
- **Windows E2E process management**:
43+
- Use `taskkill /F /IM` and `tasklist /FI` for reliable process matching
44+
- Implemented cmd.exe wrapper with `-WindowStyle Hidden` for proper process detachment
45+
- Use `127.0.0.1` instead of `localhost` for health checks
46+
- Fixed PowerShell reserved variable `$pid` renamed to `$serverPid`
47+
- **Platform-specific test failures**:
48+
- Fixed macOS stat command format (`-f%z` not `-f%`)
49+
- Skip ARMv7 execution tests on x64 runners (cross-compiled)
50+
- Fixed API test to check for `authRequired` field instead of `authenticated`
51+
- **Windows readline import** - Replaced conditional `require()` with proper ES6 top-level import
52+
- **E2E test triggers** - Updated workflow to run on all branches and PRs, not just main
53+
- **Static file serving in packaged binaries** - Assets now properly embedded and served
54+
- **Platform selection troubleshooting documentation**
55+
56+
### Changed
57+
58+
- **Shutdown logic** - Replaced sequential printer disconnection with parallel `Promise.allSettled()`
59+
- **ConnectionFlowManager.disconnectContext()** - Added 5s configurable timeout with forced cleanup on timeout
60+
- **WebUIManager.stop()** - Added 3s configurable timeout with `closeAllConnections()` force-close on timeout
61+
- **Documentation - SPA fallback purpose** - Clarified that fallback supports page refreshes and direct URL access, not client-side routing
62+
- **Documentation - Production-ready status** - Updated CLAUDE.md project status from "not fully tested" to "production-ready"
63+
- **Documentation - README improvements**:
64+
- Added Usage section explaining WebUI access (localhost:3000)
65+
- Documented default password (`changeme`) and how to change it
66+
- Replaced JSON config block with clear settings table
67+
- Added descriptions for all configuration options
68+
- **Build configuration** - Updated for proper asset packaging
69+
- **tsconfig.json** - Added test files to include array
70+
71+
### Removed
72+
73+
- `TEST_SUMMARY.md` documentation file - Test information available in CI/CD workflows and test files
74+
- Unnecessary E2E test workflow comments
75+
- FlashForgeUI-Electron reference from Related Projects (internal reference)
76+
- Redundant `withTimeout` wrapper from shutdown disconnect calls (now handled internally by ConnectionFlowManager)
77+
78+
### Security
79+
80+
- No security vulnerabilities addressed in this release
81+
82+
## [1.0.1] - 2026-01-20
83+
84+
### Added
85+
86+
- Multi-printer context switching
87+
- Spoolman integration for filament tracking
88+
- Platform-specific binary builds (Linux ARM, Linux x64, Windows, macOS)
89+
90+
## [1.0.0] - 2026-01-15
91+
92+
### Added
93+
94+
- Initial release of FlashForgeWebUI
95+
- Web-based interface for controlling and monitoring FlashForge 3D printers
96+
- Multi-printer support with isolated contexts
97+
- Camera proxy service for MJPEG streaming
98+
- RTSP stream management
99+
- Temperature monitoring with anomaly detection
100+
- Print state monitoring with progress tracking
101+
- WebSocket-based real-time communication
102+
- Optional password authentication
103+
- Configuration persistence in `data/config.json`
104+
105+
[Unreleased]: https://github.com/Parallel-7/FlashForgeWebUI/compare/v1.0.1...HEAD
106+
[1.0.1]: https://github.com/Parallel-7/FlashForgeWebUI/compare/v1.0.0...v1.0.1
107+
[1.0.0]: https://github.com/Parallel-7/FlashForgeWebUI/releases/tag/v1.0.0

0 commit comments

Comments
 (0)