Skip to content

Releases: fdm-monster/fdm-monster

1.9.0 Lots of Link ⛓️

20 May 06:17
d94bb45
Compare
Choose a tag to compare

FDM Monster 1.9.0

For features released in 1.9.0-rc1 please visit those release notes: https://github.com/fdm-monster/fdm-monster/releases/tag/1.9.0-rc1

Summary:
image
This release introduces the ability to manage PrusaLink based printers. PrusaLink is now an experimental printer type. Please visit settings to enable the experimental mode.
image
When creating or updating a printer, the PrusaLink printer will appear. Please enter the username and password that you can retrieve manually from your printer.
image

More 1.9.0 related changes:

Features

  • Introduce separate upload timeout setting for better control and resilience
  • Ability to add startPrint to specify print or not after upload

Fixes

  • OctoPrint 1.8.7 needs explicit passive flag in body instead of header to login
  • PrusaLink subfeature was not added to printer type feature (new client packaged)
  • Improve Moonraker error logging
  • Make colored logs opt-in with "ENABLE_COLORED_LOGS: true" env var
  • SocketIO gateway logs errors more explicitly
  • Logger is now static, reducing memory usage and test duration

What's Changed

  • chore(deps): update dependency @types/express to v5.0.1 by @renovate in #4149
  • chore(deps): update fdmmonster/fdm-monster docker tag to v1.8.3 by @renovate in #4152
  • fix(deps): update dependency axios to v1.8.4 by @renovate in #4150
  • chore(deps): lock file maintenance by @renovate in #4153
  • chore(deps): update dependency supertest to v7.1.0 by @renovate in #4156
  • chore(deps): update dependency eslint to v9.23.0 by @renovate in #4159
  • fix(deps): update dependency multer to v1.4.5-lts.2 by @renovate in #4155
  • fix(deps): update dependency @sentry/node to v9.8.0 by @renovate in #4157
  • chore(deps): lock file maintenance by @renovate in #4158
  • chore(deps): update dependency node to v22 by @renovate in #4126
  • chore: cleanup unfinished or unused code for decreased code complexity by @davidzwa in #4160
  • Chore/reduce type errors by @davidzwa in #4162
  • chore(deps): update dependency @swc/core to v1.11.12 by @renovate in #4163
  • chore(deps): lock file maintenance by @renovate in #4165
  • chore(deps): update dependency @swc/core to v1.11.13 by @renovate in #4166
  • chore(deps): update dependency @types/node to v22.13.12 by @renovate in #4167
  • chore(deps): update dependency @types/node to v22.13.13 by @renovate in #4168
  • chore(deps): update dependency @types/supertest to v6.0.3 by @renovate in #4169
  • fix(deps): update dependency @sentry/node to v9.9.0 by @renovate in #4170
  • chore(deps): lock file maintenance by @renovate in #4171
  • fix(deps): update dependency luxon to v3.6.0 by @renovate in #4172
  • chore(deps): lock file maintenance by @renovate in #4173
  • chore(deps): update dependency eslint-plugin-n to v17.17.0 by @renovate in #4174
  • chore(deps): update dependency @types/semver to v7.7.0 by @renovate in #4175
  • chore(deps): update dependency @types/node to v22.13.14 by @renovate in #4176
  • chore(deps): lock file maintenance by @renovate in #4177
  • fix(deps): update dependency @sentry/node to v9.10.0 by @renovate in #4178
  • chore(deps): lock file maintenance by @renovate in #4179
  • chore(deps): update yarn to v4.8.0 by @renovate in #4180
  • fix(deps): update dependency @sentry/node to v9.10.1 by @renovate in #4181
  • docs: add thatguy-jaysenodell as a contributor for bug by @allcontributors in #4182
  • chore(deps): lock file maintenance by @renovate in #4183
  • chore: fix punycode userland alternative warning by @davidzwa in #4187
  • chore(deps): update yarn to v4.8.1 by @renovate in #4188
  • feat: all API controllers have been updated to decorator based routing by @davidzwa in #4190
  • feat: switch to awilix CLASSIC injection mode for better code maintai… by @davidzwa in #4191
  • chore: remove base entity by @davidzwa in #4192
  • fix(deps): update dependency luxon to v3.6.1 by @renovate in #4195
  • Feat/3721 replace node input validator legacy dependency by @davidzwa in #4185
  • chore(deps): update dependency @types/luxon to v3.6.0 by @renovate in #4196
  • chore(deps): lock file maintenance by @renovate in #4197
  • chore(deps): update dependency @swc/core to v1.11.15 by @renovate in #4198
  • chore(deps): update dependency @types/node to v22.13.15 by @renovate in #4199
  • feat: simplify api key superRefine validation so it shares same api key schema as before (OctoPrint api key) by @davidzwa in #4201
  • chore(deps): update dependency @swc/core to v1.11.16 by @renovate in #4202
  • chore(deps): update dependency @types/node to v22.13.16 by @renovate in #4203
  • chore(deps): update dependency @types/node to v22.13.17 by @renovate in #4204
  • chore(deps): update dependency @types/ws to v8.18.1 by @renovate in #4205
  • fix(deps): update dependency @fdm-monster/client to v1.9.1 by @renovate in #4206
  • chore(deps): lock file maintenance by @renovate in #4207
  • chore(deps): update dependency @types/node to v22.14.0 by @renovate in #4208
  • chore(deps): lock file maintenance by @renovate in #4209
  • fix(deps): update dependency typeorm to v0.3.22 by @renovate in #4210
  • fix(deps): update dependency @sentry/node to v9.11.0 by @renovate in #4211
  • chore(deps): update dependency @types/luxon to v3.6.1 by @renovate in #4212
  • chore(deps): update dependency @types/luxon to v3.6.2 by @renovate in #4213
  • chore(deps): lock file maintenance by @renovate in #4214
  • chore(deps): update dependency eslint to v9.24.0 by @renovate in #4215
  • chore(deps): update dependency typescript to v5.8.3 by @renovate in #4216
  • chore(deps): lock file maintenance by @renovate in #4217
  • chore(deps): lock file maintenance by @renovate in #4218
  • chore(deps): update dependency @swc/core to v1.11.18 by @renovate in #4221
  • chore: add biome, remove prettier and eslint by @davidzwa in #4223
  • fix: enable tsc (typescript compiler) in pull-requests for type strictness by @davidzwa in #4220
  • chore(deps): lock file maintenance by @renovate in #4224
  • Fix/4219 continuation by @davidzwa in #4225
  • fix(deps): update dependency @sentry/node to v9.12.0 by @renovate in #4226
  • chore(deps): lock file maintenance by @renovate in #4227
  • chore(deps): update yarn to v4.9.0 by @renovate in #4228
  • chore(deps): lock file maintenance by @renovate in #4229
  • fix(deps): update dependency dotenv to v16.5.0 by @renovate in #4230
  • chore(deps): update dependency @swc/core ...
Read more

1.9.0-rc1 Lots of Link ⛓️

11 May 09:22
a711560
Compare
Choose a tag to compare
Pre-release

Description

prusa-link-logo

Summary:
This release candidate introduces the ability to manage PrusaLink based printers. PrusaLink is now an experimental printer type.
image
image
Furthermore it brings opt-in Prometheus metrics and Loki logging.
It is expected that after 1.9.0-rc1, we will immediately head to release 1.9.0 in a couple of weeks.
Please take a look at the milestone for progress https://github.com/fdm-monster/fdm-monster/milestone/17

Personal motivational note
From my perspective this release candidate resembles traveling back in time. I've had to revisit choices of the past 3 years, cleaning up a lot of noise and past mistakes. Overall I'm really happy with the effort! FDM Monster is becoming more and more able to move in new directions because old unfinished code/features are now gone. This makes me excited to continue working on this project!

Features

  • Introduce PrusaLink adapter for limited printer support for these printers: MK3S(+) (needs PrusaLink extension with Raspberry Pi), Mini(+), MK4(S), XL, Core One
  • Add opt-in Prometheus integration (still experimental)
  • Add opt-in Loki integration (still experimental)

Fixes

  • Fix punycode warning by pinning tr46 package
  • Fix camera dto and entity to be consistent
  • Make yaml import fill in default arrays
  • Make printCompletionSchema context type any
  • Enforce properties on camera stream Mongoose schema for consistency with TypeORM camera stream entity
  • Enforce floor id on Mongoose schema for consistency with TypeORM floor entity
  • Set floor id in Mongoose floor service for consistency with typeorm service
  • Fix print completion interface and dto
  • Improved API key validation: klipper validation completely isolated from OctoPrint api key validation
  • Query parameter forceSave in printer create/update API was used incorrectly (flipped around)
  • Fixed all typescript issues
  • Server settings would not always migrate properly
  • Printer files store will not cache files of disabled printers
  • Klipper printer should print on upload

Changes

  • tsconfig.json strictNullChecks and strictPropertyInitialization set to true for better null propagation logic.
  • Update dependency injection with awilix, switch to CLASSIC mode for less verbose code
  • Update API controller, use decorators over api builder
  • Remove PrinterFile entity (unused)
  • Remove printer/connection PATCH endpoint (unused)
  • Remove debug settings from server settings database
  • Remove all API compatibility feature flags except for printerGroupsApi and multiplePrinterServices

Chores

  • Remove unused code for OctoPrint plugin support (this work needs to go through triage again)
  • Remove unused code for OctoPrint plugin backup (this work needs to go through triage again)
  • Remove unused code for OctoPrint plugin firmware update (this work needs to go through triage again)
  • Remove unused code for OctoPrint plugin repository
  • Remove unused code for Prusa firmware releases
  • Remove printer API endpoints for OctoPrint plugins, backups and firmware updates
  • Remove cache-manager package
  • Remove unused console files
  • Update .env.template
  • Removed BaseEntity
  • Make printerId camera nullish
  • Merge create and update schema floor
  • Schema printerPositionsSchema simplified
  • Add biome linter/formatter, remove prettier and eslint

What's Changed

Read more

1.8.3 Thumbnail Thumper 🔨

19 Mar 22:07
a9680db
Compare
Choose a tag to compare

Fixes

  • Introduce HttpClientBuilder pattern for Octoprint client
  • Fix Sentry usage has updated
  • Fix upload progress was not updated properly
  • Fix failures and completions in file upload to OctoPrint/Moonraker were not consistently pushed over SocketIO
  • Fix Moonraker file upload did not track upload, failure or completion
  • Fix Moonraker file upload did not try-catch failures
  • Fix thumbnail is now parsed after file upload instead of before, preventing premature thumbnail switch in case of upload failure.
  • Fix file uploads were never unlinked, except for server startup.

What's Changed

Read more

1.8.2 Thumbnail Thumper 🔨

03 Jan 09:24
86aa016
Compare
Choose a tag to compare

Changes

Update client to 1.8.8

Chore

  • Change developer setup to be node based only (remove concurrently and nodemon packages)
  • Replace server restart with NotImplementedException
  • Remove simple-git package
  • Remove git-pull-based server update mechanic
  • Remove unnecessary environment utilities

Fixes

  • OctoPrint client: filter folders on calling getLocalFiles for OctoPrint

What's Changed

Full Changelog: 1.8.1...1.8.2

1.8.1 Thumbnail Thumper 🔨

13 Dec 14:48
da4c722
Compare
Choose a tag to compare

Changes

  • Update to client 1.8.4

Fixes

  • YAML import: regression caused all imports to fail validation
  • YAML import: a bug caused all import with printers without api key to fail validation

What's Changed

Full Changelog: 1.8.0...1.8.1

1.8.0 Thumbnail Thumper 🔨

02 Dec 20:24
e69d276
Compare
Choose a tag to compare

Chores

  • Remove unused influxdb v2 service and package

Fixes

  • Moonraker 'notify_service_state_changed' event: sometimes the moonraker services object can miss properties
  • PrinterEventsCache: remove cache protection against deleted keys as this caused retry loops to stop updating printer state. Cache prevention on this level is too rough and needs to be moved to the place responsible for socket deletion.
  • WebsocketAdapters (OctoPrint, Moonraker): prevent a deleted socket from entering cache state again by silencing the event emits in the printer socket
  • Url http/https normalization: Printer loaded over https:// wont open websocket over wss://

Features

  • Settings: add grid setting to show cancel button instead of quick stop button
  • Scan and save gcode thumbnails per printer
  • Support uploading .bgcode format files

What's Changed

  • chore(deps): update fdmmonster/fdm-monster docker tag to v1.7.6 by @renovate in #3833
  • chore(deps): update dependency @types/cookie-parser to v1.4.8 by @renovate in #3834
  • chore(deps): update dependency @types/node to v22.9.4 by @renovate in #3835
  • chore(deps): update dependency @types/node to v22.10.0 by @renovate in #3838
  • fix(deps): update dependency axios to v1.7.8 by @renovate in #3836
  • fix(deps): update dependency better-sqlite3 to v11.6.0 by @renovate in #3837
  • fix(deps): update dependency mongoose to v6.13.5 by @renovate in #3840
  • chore(deps): update dependency eslint-plugin-promise to v7.2.1 by @renovate in #3841
  • chore(deps): lock file maintenance by @renovate in #3842
  • fix(deps): update dependency @sentry/node to v8.41.0 by @renovate in #3843
  • feat: add grid setting for UI to show cancel button instead of quick stop button by @davidzwa in #3844
  • chore(deps): lock file maintenance by @renovate in #3845
  • chore(deps): update dependency @types/node to v22.10.1 by @renovate in #3846
  • chore(deps): update dependency @types/adm-zip to v0.5.7 by @renovate in #3847
  • chore(deps): lock file maintenance by @renovate in #3848
  • chore(deps): update dependency eslint to v9.16.0 by @renovate in #3849
  • chore(deps): lock file maintenance by @renovate in #3850
  • Feat/parse printer thumbnails png only by @davidzwa in #3816
  • chore(deps): lock file maintenance by @renovate in #3851
  • fix: update normalize-url sindresorhus and fix file url encoding by @davidzwa in #3852
  • fix: sometimes the moonraker services object can miss properties by @davidzwa in #3853
  • chore(deps): lock file maintenance by @renovate in #3854
  • chore(deps): update dependency @swc/cli to v0.5.2 by @renovate in #3855
  • Fix/3856 bug regression 3778 printer state not reloaded by @davidzwa in #3857
  • chore: remove unused influxdb service and package by @davidzwa in #3859
  • fix(deps): update dependency @sentry/node to v8.42.0 by @renovate in #3860
  • fix: Printer loaded over https:// wont open websocket over wss:// by @davidzwa in #3862
  • Release 1.8.0 by @davidzwa in #3863

Full Changelog: 1.7.6...1.8.0

1.7.6 Klipper Ripper 📎

25 Nov 16:18
3efe59d
Compare
Choose a tag to compare

Fixes

  • UserService: MongoDB had incorrect root user checks and SQLite user service missed the check altogether. Now root user checks are robust.
  • Camera API: GUEST should not have access to change cameras
  • YAML import validation: new API keys are not accepted by outdated YAML validation

What's Changed

Full Changelog: 1.7.5...1.7.6

1.7.5 Klipper Ripper 📎

23 Nov 15:17
68f8bb7
Compare
Choose a tag to compare

Fixes

  • Demo mode should never show first-time-setup. It would always return "first time setup completed: false". Now this will return true.
  • Incorrect UI state "No USB" shown, when OctoPrint USB is disconnected.

Features

  • Remove whitelist settings from database, API, validation and remove IP package (CVE)

What's Changed

  • chore(deps): update fdmmonster/fdm-monster docker tag to v1.7.4 by @renovate in #3781
  • chore(config): migrate renovate config by @renovate in #3782
  • chore(deps): lock file maintenance by @renovate in #3783
  • feat: remove experimental 🧪 whitelist settings and ip package (CVE) by @davidzwa in #3784
  • fix(deps): update dependency @fdm-monster/client-next to v0.0.9 by @renovate in #3767
  • fix(deps): update dependency @fdm-monster/client to v1.7.0 by @renovate in #3766
  • chore(deps): update codecov/codecov-action action to v5 by @renovate in #3786
  • chore(deps): lock file maintenance by @renovate in #3787
  • chore(deps): update dependency eslint-plugin-n to v17.13.2 by @renovate in #3788
  • chore(deps): update dependency eslint to v9.15.0 by @renovate in #3789
  • fix(deps): update dependency mongoose to v6.13.4 by @renovate in #3790
  • chore(deps): lock file maintenance by @renovate in #3791
  • chore(deps): lock file maintenance by @renovate in #3792
  • fix: demo mode should never show first-time-setup by @davidzwa in #3794
  • fix: incorrect UI state "No USB" shown, when OctoPrint USB is disconnected by @davidzwa in #3796
  • fix(deps): update dependency @fdm-monster/client to v1.7.1 by @renovate in #3797
  • fix(deps): update dependency @fdm-monster/client-next to v0.0.10 by @renovate in #3798
  • chore(deps): lock file maintenance by @renovate in #3799
  • chore(deps): update dependency @swc/cli to v0.5.1 by @renovate in #3801
  • fix(deps): update dependency @sentry/node to v8.39.0 by @renovate in #3802
  • chore(deps): update dependency @types/node to v22.9.1 by @renovate in #3804
  • chore(deps): lock file maintenance by @renovate in #3805
  • chore(deps): lock file maintenance by @renovate in #3806
  • chore(deps): update dependency eslint-plugin-n to v17.14.0 by @renovate in #3807
  • chore(deps): update yarn to v4.5.2 by @renovate in #3808
  • chore(deps): lock file maintenance by @renovate in #3809
  • chore(deps): update dependency @swc/core to v1.9.3 by @renovate in #3810
  • fix(deps): update dependency @sentry/node to v8.40.0 by @renovate in #3811
  • chore(deps): update dependency typescript to v5.7.2 by @renovate in #3812
  • chore(deps): update dependency @types/node to v22.9.2 by @renovate in #3813
  • chore(deps): lock file maintenance by @renovate in #3814
  • chore(deps): update dependency @types/node to v22.9.3 by @renovate in #3815
  • Bugfix release 1.7.5 by @davidzwa in #3817

Full Changelog: 1.7.4...1.7.5

1.7.4 Klipper Ripper 📎

13 Nov 15:37
8b7fe14
Compare
Choose a tag to compare

Features:

  • User API: new endpoint which registers user directly with roles and without verification step

Fixes:

  • PrinterEventsCache: when printers and test printers are deleted, the printer events cache should not be allowed to be filled by late update events

What's Changed

  • chore(deps): update fdmmonster/fdm-monster docker tag to v1.7.3 by @renovate in #3769
  • chore(deps): lock file maintenance by @renovate in #3770
  • fix(deps): update dependency @sentry/node to v8.38.0 by @renovate in #3771
  • chore(deps): lock file maintenance by @renovate in #3776
  • Fix/create user admin endpoint by @davidzwa in #3773
  • fix: when printers and test printers are deleted, the printer events cache should not be allowed to be filled by late update events by @davidzwa in #3779
  • release: 1.7.4 by @davidzwa in #3780

Full Changelog: 1.7.3...1.7.4

1.7.3 Klipper Ripper 📎

11 Nov 20:39
522c64f
Compare
Choose a tag to compare

Fixes:

  • BaseService: catch null or undefined id before querying database
  • Add set user roles API to avoid users staying in limbo with GUEST role after verification.
  • User API apply consistent string number coercion in user API to avoid unexpected ID comparison

What's Changed

Full Changelog: 1.7.2...1.7.3