The Storage tab's list/metadata/delete went over OrcaSonar's Moonraker
façade, so they failed when the façade was disabled. Send the files.* MQTT
commands on the LAN connection instead - the same transport OrcaCloud uses -
and match replies by sequence_id.
Thumbnails still use the façade (no MQTT equivalent); gcode upload is
unchanged.
OrcaSonar's /mqtt WebSocket proxy writes each ~8 KiB TCP read as its own
WebSocket binary message, so an MQTT packet larger than one read (e.g. a
files.list reply) spans several messages, and several packets can arrive in
one. OrcaMqttConnection assumed exactly one packet per message, so packets
that spanned messages were dropped and the request timed out ("Load failed").
Keep a per-connection byte buffer and extract complete packets by their
remaining-length header, dispatching each. A malformed header (or a declared
size past a 16 MiB cap) drops the connection so the worker reconnects rather
than buffering forever.
Follow-up to the feature/OrcaSonar review. Scopes the new behavior to the
OrcaSonar agent, fixes several AMS-sync and lifecycle bugs, and makes the
MQTT tests run in CI. Non-OrcaSonar agents keep their existing behavior.
## Changes
Discovery
- Gate the background SSDP scan to a configured OrcaSonar machine instead of
running for every non-BBL profile; drive discovery on demand from the
machine-select popup and back off idle rounds from 5s to 60s.
- Add NSLocalNetworkUsageDescription and NSBonjourServices to both macOS
Info.plist templates.
AMS sync
- Resolve id-less printer-set trays by material type in get_ams_cobox_infos
and the sidebar badge loop, matching sync_ams_list, so combo arrays and
badges stay aligned.
- Keep a printer-set tray that resolved by type out of the "unknown or
incompatible filaments" dialog.
AMS device UI
- Gate the "Empty" tray classification, and the editable temperature fields,
to the OrcaSonar agent; Bambu keeps "?" and read-only presets.
- Validate AMS material temps on confirm: reject out-of-range values and
min > max before the command is sent.
Storage tab
- Bind the show/hide handler on the panel's ancestors (StoragePanel and
MonitorPanel) and unbind on destruction, so the Bambu file system stops
when the tab is left.
Transport
- Load /etc/ssl/cert.pem on macOS in add_platform_root_certificates, after
set_default_verify_paths.
- Release lifecycle_mutex before start()'s connect wait so stop() can cancel
the attempt and signal completion instead of stalling the UI thread.
Localization
- Add OrcaFilesPanel.cpp to list.txt and regenerate the catalogs.
## Tests
- Un-hide the loopback MockBroker integration tests (ephemeral port, no
network) so ctest registers and runs them.
- Mock broker tracks SUBSCRIBE/UNSUBSCRIBE and delivers push_report only to a
subscribed topic; the reconnect test asserts the re-SUBSCRIBE.
- Add bbl empty-tray cases, an AMS combo-alignment case, and unknowns
assertions to the AMS sync tests.
* plates-toolbar-scrollbar-size
* update
* filament grouping dialog
* mixed filament list
* Update StepMeshDialog.cpp
* moves plot scrollbar
* fix position of popups
* printer agent combo box width
* match multiline text control background
* add dots to configure button
* also correct label color for multiline input
* side tools connecting text color
* recenter dialog text color
* preferences experimental features
* upgrade panel hyperlink color + right margin
* fix position of + sign on printer selector
* speed control popup
* bbl fan control window
* AMS materials setting
* monitor > ams section
* match background color of multiline text editor on project page
* Fix SwitchButton colors
* bbl camera popup
* BBL > Send print dialog
* Revert "BBL > Send print dialog"
This reverts commit 128e145897.
* Revert "bbl fan control window"
This reverts commit 4a0db62790.
* Revert "bbl camera popup"
This reverts commit e2301e3237.
* Revert "monitor > ams section"
This reverts commit 66e6894eb1.
* Revert "fix position of + sign on printer selector"
This reverts commit 1523ba24c0.
* Revert "upgrade panel hyperlink color + right margin"
This reverts commit 541f2514c5.
* Revert "side tools connecting text color"
This reverts commit a9ab074247.
* Revert "recenter dialog text color"
This reverts commit f4670d32b2.
* Revert "AMS materials setting"
This reverts commit b12827f9b5.
* Revert "Fix SwitchButton colors"
This reverts commit 2d4f1d1fe9.
* match object list background color
* match compare dialog wxDataViewCtrl background color
* fix centering of iconized buttons on linux
* fix compare dialog background color not applied on linux
* edit gcode dialog components background color
* Update Plater.cpp
* fix dev button font size
* Fix scaling issue on SwitchButton while using 150%
* transfer or discard changes dialog wiki label
* "Transfer or Discard changes" / "Unsaved Changes" dialog header color
* object table colors & header spacing
* progress dialog
* fix progressbar look on linux
* fix build
* fix build
* fix centering of iconized icon again
* fix header background color
* revert bbl fan control
* add includes
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
The only use of Slic3r::create_thread in this file sits behind
!BBL_RELEASE_TO_PUBLIC && __WINDOWS__, so the include looked unused in
every configuration CI builds. Windows Debug and RelWithDebInfo builds
failed without it.
Resolve the filament list's printer model from the agent-reported model id or the selected printer profile, so the AMS Materials Setting dropdown and its Confirm button work on OrcaSonar. Third-party trays pre-fill and allow editing their temps, and the popup's initial selection no longer overwrites them.
Render explicitly-empty trays as "Empty" instead of "?" using a wire-derived DevAmsTray::is_empty, while keeping the slot editable.
Hide the flow-dynamics K/N controls for non-Bambu agents — tile, dialog, validation and sends — with Bambu behavior unchanged.
Tests cover model resolution, the K/N gate and empty-tray classification.
Drop the index-correlation gate so mapped prints are gated only on the filament_mapping capability
Resolve AMS trays set on the printer UI to the matching Generic preset using their material type and color
Skip the forced external-spool selection on printers without an AMS and add coverage for the mapping gates
Parse connector-scope capabilities from get_capabilities: supported_features, capabilities.protocol.features and supported_commands are read for orca devices even when the reply has no flags block, reset before each parse, and left untouched for Bambu.
Gate macro-backed AMS commands on fms plus the advertised command (change filament, select tray, control, user settings, RFID, drying stop); gate slot metadata writes on filament_slots. Unknown capability is not support.
Serialize PrintParams::ams_mapping2 into print.gcode_file.filament_mapping with the array position as filament_index and {255,255} dropped. The field is omitted when empty, so an unmapped print stays byte-identical. A mapped print is refused visibly while ORCA_FILAMENT_MAPPING_CORRELATION_VERIFIED is false or the connector did not advertise filament_mapping; the GUI predicate shares the serializer's definition so both gates agree. Refuse a partially mapped print that leaves a used filament without a target.
Return a non-success result from start_local_print_with_record so PrintJob falls back to start_print instead of treating an unsent print as success.
Tests cover serializer keying and omission, GUI/agent gate agreement, payload shape, the with_record result, capability parsing, and the per-command AMS gate.
* Remove Unused Project Includes and Forward-Declare Where a Type Is Only Referenced
Generated with include-what-you-use and applied conservatively. Only OrcaSlicer's own headers, the ones under src/ and tests/, are removed or forward-declared; standard-library and third-party includes are left alone. An include is removed only when both the Release and the Debug configuration leave it unused, never from inside a conditional block, and never from a file with platform-specific blocks, which only gain includes. Files whose only use of a header sits behind a feature or debug macro (libvgcode's OpenGL ES and marker code, the ARACHNE/TESTS_EXPORT_SVGS debug output) keep their includes.
clonable_ptr.hpp gains #pragma once; it had no include guard and was only safe while Config.hpp was its sole includer.
* Remove Unused Project Includes From Files With Platform-Specific Code
A Linux include-what-you-use run cannot see the code inside _WIN32, __APPLE__ or __linux__ blocks, so its verdict is only taken where nothing the removed header declares, directly or through what it includes, is named inside those blocks. Removals also have to hold in both the Release and Debug configuration and never touch a line inside a conditional block.
* Restore the libslic3r Precompiled Header and Direct Includes Lost in the Platform Pass
The platform-file pass treated pchheader.hpp as an ordinary header and
emptied it, and left GUI_Preview.hpp and 14 other files relying on
headers they no longer reached directly.
* Restore MainFrame.hpp in ParamsDialog.cpp for the Windows-Only Reparent Call
* Include Headers That Files Reached Through Ones the Cleanup Removed
* Drop Includes Duplicated by the Cleanup or by Main's Own Additions
* Leave PreciseSeam.cpp as Main Has It After the Precise Seam Rework
The Design view drew sinking outlines by looking up its bodies in the
plate's model, reading past the end of an object's volumes once a body
was committed. The Design canvas no longer draws sinking outlines.
Commit to Plate now sends all visible bodies to Prepare as one object with a
part per body, so their relative placement survives. A dropdown beside the
button switches to Commit to Plate (as bodies), the previous one-object-per-body
behaviour, and the choice is remembered.
GLGizmoSlaSupports, GLGizmoHollow, GLGizmoFaceDetector, GLGizmoText and GLGizmoAdvancedCut were already left out of the build, and GLGizmos.hpp, the only header including some of them, had no includers. VoxelizeCSGMesh.hpp uses types that no longer exist, SLA/bicubic.h does not compile, and Utils/ProfileDescription.hpp is included nowhere. Their CMake and gettext source-list entries go with them.
Selections are drawn as opaque faces in the selection colour with a cased outline instead of a
translucent tint over the body, so they read on a body of any colour. Selecting a Feature tree
row lights the faces that feature made rather than its whole body, which also makes fillet and
chamfer rows highlight again.
Each Feature tree row now carries Edit, Show/hide and Delete, and each
Bodies row carries Move, Show/hide and Delete. These act on that row
instead of on the selection. The eye shows a closed eye when the item
is hidden. Every clickable icon in the sidebar now highlights on hover.
Rename and Color now come first in the right-click menu, as items of
their own instead of inside Modify. This applies wherever they appear,
whether opened from the viewport or from a Bodies row.
Clicking an already-selected row no longer starts a rename; use F2,
the row's right-click menu, or the Rename command.