Skip to content

Commit 3ee86d6

Browse files
GhostTypesclaude
andcommitted
chore: release 1.1.0
- Bump version to 1.1.0 - Add CHANGELOG.md following keepachangelog.com/en/1.1.0/ format - Documents all changes since 1.0.0: A3 client, legacy file upload, PID fallback discovery, configurable ports, multicast EINVAL fix, TempControl fix, and AD5X detection via capability flag Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 6e94b6f commit 3ee86d6

2 files changed

Lines changed: 78 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
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+
## [1.1.0] - 2026-03-08
11+
12+
### Added
13+
14+
- `FlashForgeA3Client` — full Adventurer 3 TCP client aligned with the documented G-code protocol, exported from the package root
15+
- `A3GCodeController` — A3-specific G-code command controller with a dedicated instruction set
16+
- `A3BuildVolume`, `A3FileEntry`, `A3PrinterInfo`, `A3Thumbnail` types for typed Adventurer 3 responses
17+
- `GCodeClientCapabilities` interface for capability-based client selection across printer generations
18+
- `PrinterModel`, `DiscoveryProtocol`, `PrinterStatus` enums providing fully-typed discovery results
19+
- `DiscoveredPrinter` and `DiscoveryOptions` TypeScript interfaces replacing loosely-typed discovery objects
20+
- `DiscoveryErrors` — custom error class hierarchy for structured discovery error handling
21+
- PID-based legacy model fallback in `PrinterDiscovery`: known USB product IDs (`0x0008` Adventurer 3, `0x001e` Adventurer 4) are used as a secondary hint when name heuristics are inconclusive
22+
- `FlashForgeTcpClient.uploadFile()` — M28 / raw-binary / M29 file upload flow for legacy printers, with automatic filename normalization
23+
- `FiveMClientConnectionOptions` — optional HTTP port and TCP port overrides for `FiveMClient` construction
24+
- `FlashForgeTcpClientOptions` — optional TCP port override for `FlashForgeTcpClient` construction
25+
- Vitest test suite with unit coverage for discovery, client lifecycle, and response parsers
26+
- Biome linter and formatter configuration
27+
28+
### Changed
29+
30+
- `FlashForgePrinterDiscovery` renamed to `PrinterDiscovery`; a migration guide is available in `docs/MIGRATION_GUIDE.md`
31+
- Discovery multicast now joins each multicast group once per socket instead of once per port, eliminating duplicate `addMembership` calls
32+
- Legacy model detection upgraded: USB product ID hints are checked as a fallback after name-based matching
33+
- AD5X detection now uses the `hasMatlStation` capability flag and material-station slot data instead of relying solely on the model name string
34+
- M661 (list local files) command settle window increased from 500 ms to 1200 ms to correctly handle two-stage firmware responses
35+
- Package manager migrated from npm to pnpm
36+
- All `any` types eliminated; codebase is fully strict-TypeScript compliant
37+
38+
### Fixed
39+
40+
- Windows multicast `EINVAL` error (`addMembership EINVAL`) caused by calling `addMembership` on the same group multiple times on the same socket
41+
- Missing `client` property on `TempControl` class that caused runtime failures when calling temperature methods
42+
- Discovery monitor incorrectly re-entering active state after idle timeout; transport option semantics clarified
43+
- m661 file list response parsing race: wider settlement window prevents intermittent empty-list returns on real hardware and emulators
44+
45+
## [1.0.0] - 2025-11-15
46+
47+
### Added
48+
49+
- `FiveMClient` — modern HTTP/JSON API client for Adventurer 5M and Adventurer 5M Pro
50+
- `FlashForgeClient` / `FlashForgeTcpClient` — legacy TCP G-code client base
51+
- `FlashForgePrinterDiscovery` — UDP multicast and broadcast discovery covering all FlashForge models
52+
- `Control`, `Files`, `Info`, `JobControl`, `TempControl` — modern API action classes for printer control
53+
- `Filament` — filament data accessor for modern printers
54+
- `GCodeController` — G-code command controller for legacy TCP printers
55+
- `GCodes`, `Commands`, `Endpoints` — G-code and HTTP API constant tables
56+
- `EndstopStatus`, `LocationInfo`, `PrintStatus`, `TempInfo`, `ThumbnailInfo` — TCP response parsers and models
57+
- `MachineInfo` — unified machine state model with AD5X material station support
58+
- `FNetCode`, `NetworkUtils` — network response code constants and HTTP utility helpers
59+
- `FFMachineInfo`, `FFPrinterDetail`, `MatlStationInfo`, `SlotInfo` — typed models for printer detail responses
60+
- AD5X material station support: `AD5XLocalJobParams`, `AD5XSingleColorJobParams`, `AD5XUploadParams`, `AD5XMaterialMapping`
61+
- `Product` enum for modern printer model identification
62+
- LED control for legacy TCP clients
63+
- Thumbnail fetching for legacy TCP clients via `getThumbnail`
64+
- GitHub Actions CI/CD workflow for automated publish to GitHub Package Registry
65+
66+
### Fixed
67+
68+
- Homing command (`G28`) incorrectly triggering a short timeout — extended to 15 s
69+
- M661 local file list response parsing rewritten to handle varied firmware delimiter patterns
70+
- `Commands` / `Endpoints` constant lookup inconsistencies on initial port
71+
- `FlashForgeTcpClient` shutdown race condition
72+
- AD5X job info parsing returning incomplete data
73+
- `NetworkUtils.isOk` usage corrected across response handlers
74+
75+
[Unreleased]: https://github.com/GhostTypes/ff-5mp-api-ts/compare/v1.1.0...HEAD
76+
[1.1.0]: https://github.com/GhostTypes/ff-5mp-api-ts/compare/v1.0.0...v1.1.0
77+
[1.0.0]: https://github.com/GhostTypes/ff-5mp-api-ts/releases/tag/v1.0.0

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ghosttypes/ff-api",
3-
"version": "1.0.0",
3+
"version": "1.1.0",
44
"description": "FlashForge 3D Printer API for Node.js",
55
"main": "dist/index.js",
66
"types": "dist/index.d.ts",

0 commit comments

Comments
 (0)