Commit Graph

29502 Commits

Author SHA1 Message Date
HYzd766
b882da99ad Modifications to the hotbed temperature of various types of printing plates (#13717) 2026-05-20 22:55:58 +08:00
grant0013
c27339dac5 harktech: parse K2 Plus CFS slot state values (1=selected, 2=loaded)
Root-cause + fix for the K2 Plus sparse-slot / wrong-slot-mapping bug
reported by multiple testers on Reddit and PR #13744 (DaviBe92, Psych0SW,
swilsonnc, TrainAss, Gullible-Price-4257).

DaviBe92 supplied a raw /box/getRealBoxesInfo payload from a K2 Plus
running printer FW 1.1.5.2 / CFS 1.2.2 that shows the K2 Plus uses
THREE state values for slots:

  state: 0 → empty
  state: 1 → loaded AND currently selected as the active spool
  state: 2 → loaded but not currently selected

K2 (base) and K2 Pro firmwares — confirmed against the maintainer's
test printer — only use 0/1. Our parser had assumed the 0/1 form and
filtered with `if (state != 1) continue`, dropping every state=2 slot.

Symptoms this explains:
* DaviBe92: 3 spools loaded, only 1 displayed (the state=1 slot).
* Psych0SW / swilsonnc: 2 of 4 slots returned, "2nd shows 3rd's data"
  — the parser dropped slots with state=2, leaving a sparse map that
  PresetBundle::sync_ams_list then packs into consecutive UI trays.
* TrainAss / Gullible-Price-4257: "No loaded slots detected" — likely
  the same root cause when zero slots happen to be state=1.

Fix: treat any non-zero state as loaded. Belt-and-braces: also skip
entries that are blanked-out (vendor and type both empty) regardless of
state, in case a future firmware uses yet another encoding for empty.

No change required for K2 / K2 Pro behaviour — they already only emit
state=0 (empty) or state=1 (loaded), and the new filter accepts both.
2026-05-20 12:19:15 +00:00
grant0013
3df71d86aa harktech: normalize Creality K2 filament profiles per repo convention
CI flagged ~150 K2 profile files for using space indentation; repo convention
is tab indentation. Ran the upstream-provided fixer:

    python3 scripts/orca_filament_lib.py -v Creality -p filament -f --force

Mechanical normalization:
- Spaces → tabs (1 tab per indent level)
- Field ordering normalized (name + type first)
- Single-value scalar fields converted to single-element arrays where the
  schema expects arrays (filament_cost, filament_density,
  temperature_vitrification, filament_max_volumetric_speed)

No semantic content changes. Pre-existing issue from the original K2
profile import; touching these files in the multicolor_method strip
brought them into the validator's PR-diff scope.
2026-05-20 11:27:29 +00:00
ExPikaPaka
19eb9e634f Adds force sync UI button. Added missing code for previous PR (#13757) 2026-05-20 19:25:51 +08:00
Ian Chua
62d4344e59 feat: Updated UI for better distinction of orca cloud and bambu cloud (#13755)
* feat: Updated UI for better distinction of orca cloud and bambu cloud

* refined UI
2026-05-20 19:21:02 +08:00
Ian Chua
4542a15009 fix: use bambu's network plugin (#13756) 2026-05-20 19:20:09 +08:00
grant0013
32cf78d0e6 harktech: move CFS filament sync into CrealityPrintAgent
Per @SoftFever review on #13752, printer-specific filament sync logic
belongs in the agent rather than in Sidebar. This consolidates the
previously-duplicated code so all CFS-specific work lives in
CrealityPrintAgent.

Changes:
- New: CrealityPrintAgent::sync_filaments_into_ams_list() — static method
  that builds a CrealityPrint host from a printer_cfg, queries CFS slots,
  populates PresetBundle::filament_ams_list, and triggers sync_ams_list().
  GUI-free; returns a result struct (Status + counts + detail) so the
  caller decides what dialog to show.
- New: nested CFSAmsListResult struct describing the five possible
  outcomes (Success / NotCfsCapable / QueryFailed / EmptySlots / NoMatches).
- Removed: Sidebar::sync_filaments_from_creality_cfs() entirely (its body
  is now the agent method).
- Plater.hpp loses the declaration; Plater.cpp dispatches to the agent
  inline within sync_ams_list() and owns only the dialog + post-sync UI
  refresh (combo updates, layout, preset selection, persistence).

Two CFS-related entry points on the agent now coexist:
- fetch_filament_info() — agent-driven path; publishes via AmsTrayData
  and build_ams_payload(). Active when a MachineObject is bound (BBL
  concept, not currently created for Creality LAN hosts).
- sync_filaments_into_ams_list() — explicit-pull path used today by the
  Sidebar's "Sync filaments" button until the K-series MachineObject
  work catches up.

No user-visible behaviour change — same end-to-end flow, the data work
just lives in the agent now.
2026-05-20 11:17:06 +00:00
grant0013
d643701529 harktech: move vendored mdns into deps_src/ per repo convention
Per @SoftFever review on #13752, third-party vendored libraries belong in
deps_src/ alongside expat, imgui, hidapi, etc.

- All 5 files (mdns.{h,c}, cxmdns.{h,cpp}, NOTICE.md) move from
  src/slic3r/Utils/mdns/ to deps_src/mdns/.
- deps_src/mdns/CMakeLists.txt builds mdns as a STATIC library and scopes
  the MSVC Iphlpapi/Ws2_32 link requirement to that target instead of
  libslic3r_gui's global MSVC block.
- deps_src/CMakeLists.txt gains add_subdirectory(mdns).
- src/slic3r/CMakeLists.txt drops the inline source listings and links
  libslic3r_gui against the new mdns target; MSVC block keeps only
  Setupapi.lib.
- src/slic3r/Utils/CrealityHostDiscovery.cpp #include updated to use the
  include dir exposed by the new mdns target.

Verified by a clean Linux build (orca-slicer links successfully).
2026-05-20 11:16:13 +00:00
grant0013
7349464392 harktech: fix Creality filament profile bugs from Reddit feedback
Two data-only fixes:

#1 Strip undefined {if !multicolor_method} wrapper from filament_start_gcode on 110 K2-Plus profiles. The placeholder is a CrealityPrint-ism that survived the profile port; Orca has no such variable, so slicing failed with a hard parser error (reported on Hyper PLA by u/Gullible-Price-4257). Inner per-layer temp logic now runs unconditionally, which is the correct default.

#4 Add filament_vendor: [Creality] to 50 Creality Generic profiles missing the field. Without it the UI grouped them under Generic instead of Creality (reported by u/mharrop94).
2026-05-20 08:50:52 +00:00
Joseph Robertson
218881c6f6 fix assembly bounding box truncation problems noticed by hotcubcar (#28) 2026-05-20 02:46:41 -05:00
raistlin7447
b7f872541d Fix input_filename_base using object name instead of project name (#13753) 2026-05-20 12:32:53 +08:00
ExPikaPaka
1aedf8f22c Added UI force-sync button and fixed bug that didn't sync in one case… (#13745)
* Added UI force-sync button and fixed bug that didn't sync in one case and caused orange highlight

* Fix sync preset race: join old thread before starting new one

---------

Co-authored-by: Mykola Nahirnyi <mnahirnyi@amcbridge.com>
Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-20 12:18:08 +08:00
Joseph Robertson
cd5fb68d38 Merge branch 'main' into belt/baseChanges 2026-05-19 23:00:14 -05:00
Joseph Robertson
f87a46ec6e fix X mirroring (#26)
Thanks to @hotcubcar for catching this!
2026-05-19 22:54:50 -05:00
Grant Harkness
dcb2de37c6 Merge branch 'OrcaSlicer:main' into harktech/k2-discovery 2026-05-19 21:05:55 +01:00
grant0013
598df9ff0b Add Creality K-series LAN discovery via DNS-SD mDNS
When a user adds a Creality K-series printer (host_type=crealityprint)
and clicks the existing "Browse" button in the Physical Printer dialog,
dispatch to a new CrealityDiscoveryDialog that finds K2 / K2 Plus /
K2 Pro printers on the LAN automatically. For other host types the
button keeps its existing BonjourDialog behaviour.

  CrealityHostDiscovery (src/slic3r/Utils/CrealityHostDiscovery.{hpp,cpp})

    Wraps the vendored cxmdns wrapper from the previous commit:

      static std::vector<CrealityHost> scan(bool probe_info = true);

    Calls cxnet::syncDiscoveryService({"Creality", "creality"}) to find
    K-series printers via DNS-SD, dedupes by IP, then optionally HTTP
    GETs http://<ip>/info on each match to fetch the model code
    (F008 = K2 Plus, F012 = K2 Pro, F021 = K2) and MAC. Returns enriched
    {ip, hostname, model_code, model_name, mac, cfs_capable} entries.

  CrealityDiscoveryDialog (src/slic3r/GUI/CrealityDiscoveryDialog.{hpp,cpp})

    Modal dialog with a wxListView showing Model / Hostname / IP per
    discovered host. Runs CrealityHostDiscovery::scan() synchronously
    with wxBusyCursor + wxWindowDisabler (5-10s total wait). User picks
    one, dialog returns the IP via selected_ip().

  PhysicalPrinterDialog (src/slic3r/GUI/PhysicalPrinterDialog.cpp)

    The "Browse" button's click handler now reads host_type from the
    edited config. If htCrealityPrint, opens CrealityDiscoveryDialog
    and writes "http://<ip>" into the print_host field. Otherwise the
    existing BonjourDialog path runs unchanged -- no behaviour change
    for OctoPrint / Moonraker / Klipper users.

No new UI surface: one existing button now does the right thing per
host_type, mirroring how Creality Print discovers its own printers.
2026-05-19 20:03:54 +00:00
grant0013
d6cffbba26 Vendor mjansson/mdns + cxmdns wrapper for DNS-SD discovery
Drop a public-domain mDNS / DNS-SD lookup library into the tree at
src/slic3r/Utils/mdns/. Two pieces:

  mdns.{h,c}    -- public-domain library by Mattias Jansson from
                   https://github.com/mjansson/mdns
  cxmdns.{h,cpp} -- C++ wrapper from CrealityOfficial/CrealityPrint
                    v7.1.1 (AGPL-3.0, compatible with OrcaSlicer's
                    AGPL-3.0)

cxmdns exposes one function:

  std::vector<machine_info> cxnet::syncDiscoveryService(
      const std::vector<std::string>& prefix);

It sends a DNS-SD meta-discovery query (_services._dns-sd._udp.local.),
listens ~5 seconds, and returns {ip, service_name} for every service
announcement whose name contains any of the given prefixes.

Motivation: Creality K-series firmware announces each printer under a
per-device-unique service type _Creality-<MAC-derived-hex>._udp.local.,
so OrcaSlicer's existing Bonjour code (which queries fixed service
names like _octoprint._tcp) cannot find them. The DNS-SD meta-browser
approach implemented here is the standard way to discover services
when you do not know their exact names in advance.

mdns.c calls GetAdaptersAddresses (iphlpapi) and Winsock2 functions,
neither of which were on libslic3r_gui's MSVC link line; both are
added here so the vendored sources compile and link standalone.
Attribution captured in src/slic3r/Utils/mdns/NOTICE.md. No callers
yet; the K-series discovery class + UI lands in the next commit.
2026-05-19 20:03:53 +00:00
SoftFever
d2c24fdabb Fix Linux/Wayland crash on Preview tab at startup (#13747) 2026-05-20 01:54:17 +08:00
Kappa971
5a77daf75c Fix Italian translation (#13720) 2026-05-20 00:46:22 +08:00
Ioannis Giannakas
75039f8bec Fix first layer toolhead preaheating bug with 2+ extuders and ooze prevention enabled (#13741) 2026-05-20 00:23:04 +08:00
grant0013
e7283fab2c CrealityPrintAgent: prefer system bases over user copies in CFS matcher
The matcher tiebreaker previously preferred user-edited filament
presets over system bases on a tied score. For a K2 owner who has
a custom copy of Creality Generic PLA @K2-all called eg
Creality Hyper PLA @K2 (mine), the matcher scored both that copy
and the shipped brand-specific Hyper PLA @Creality K2 0.4 nozzle
at 30, then tiebreak picked the user copy. User copies inherit
filament_id from their parent -- in this case the generic PLA
GFL99 -- so the returned id pointed at Generic PLA, not at
Hyper PLA brand-specific id (01001). PresetBundle::sync_ams_list
then resolved by id back to Creality Generic PLA @K2-all, visibly
losing the brand on every sync.

Flip the tiebreaker to prefer system over user. The shipped
brand-specific preset always wins now and sync_ams_list lands on
the right slot label.

Drop the post-sync user-override step from the sidebar path that
was layered on to compensate -- silently substituting the user
local tuning is the wrong default for an upstream-shipped
feature; users who want their local tuning on a synced slot still
get to it via the existing combo dropdown.
2026-05-19 16:01:14 +00:00
grant0013
3af72ab54d Creality: import K2/K2 Plus/K2 Pro filament profiles from CrealityPrint
Import 191 brand-specific filament presets for the K2 family of
printers (K2, K2 Plus, K2 Pro), lifted from
CrealityOfficial/CrealityPrint v7.1.1 under AGPL-3.0 (compatible
with OrcaSlicer AGPL-3.0).

Brand coverage:
  CR-series:    CR-PLA, CR-PLA Matte, CR-PLA Fluo, CR-Silk,
                CR-TPU, CR-ABS, CR-Nylon
  Hyper-series: Hyper PLA, Hyper PLA-CF, Hyper ABS, Hyper PA-CF,
                Hyper PA6-CF, Hyper PAHT-CF, Hyper PA612-CF,
                Hyper PC, Hyper Marble, Hyper Stardust,
                Hyper L-W PLA, Hyper PPA-CF
  Third-party:  eSUN PLA+ / PLA-HS / PLA-Matte / PLA-Silk /
                PLA-CF / PLA-LW / PLA-Lite, PolySonic PLA /
                PLA Pro, Panchroma PLA Matte / Satin, Soleyin
                Ultra PLA, HP Ultra PLA, HP-ASA, HP-TPU
  Ender PLA variants and CrealityPrint per-K2 Generic versions of
  PLA, ABS, ASA, PA, PA-CF, PAHT-CF, PET, etc.

This closes the matching gap exposed by the CFS filament-sync
work. When the K2 reports spool brand Hyper PLA or CR-PLA, the
existing Creality vendor only had a generic Creality Generic PLA
@K2-all preset to fall back to, so per-brand temps / PA / cooling
tuning was lost on every sync.

Schema and naming are drop-in compatible -- CrealityPrint
references the K2/K2 Plus/K2 Pro machine names already present in
OrcaSlicer Creality vendor (Creality K2 0.4 nozzle, etc), so no
machine-side changes or compatible_printers rewrites are required.

K2 SE filaments and the PETG/PP/PPS/HIPS family are deferred. K2
SE machine profile is not yet in OrcaSlicer Creality vendor, and
the PETG/PP/PPS/HIPS family relies on fdm_filament_* base
templates that do not exist in Orca Creality vendor -- importing
those bases from CrealityPrint did not make them register as valid
parents at preset-load time. Coverage for the missing families
will land in a follow-up once the loader requirements for new
bases are understood.

Vendor version bumped to 02.03.02.75 to trigger the per-user
profile refresh on next launch. Source attribution captured in
resources/profiles/Creality/NOTICE.md.
2026-05-19 16:01:14 +00:00
grant0013
251f5faefa Add Sidebar::sync_filaments_from_creality_cfs explicit-pull path
The agent fetch_filament_info() path does not fire for Creality
K-series hosts because Sidebar::build_filament_ams_list()
short-circuits when no MachineObject is bound. MachineObject is a
BBL cloud-connected-printer concept that does not apply to LAN
Moonraker-style hosts like the K2 -- the AMS-sync icon click was a
no-op for them.

Mirror what Creality Print own slicer does (explicit Auto Mapping
button bypassing the BBL plumbing): when the user clicks the
existing AMS-sync icon and host_type=crealityprint, dispatch to a
new Sidebar::sync_filaments_from_creality_cfs() that reads the
active printer host config, confirms the printer is a CFS-capable
K-series board, queries boxsInfo over the printer WS on port 9999,
scores each loaded slot against the user filament presets and
builds a filament_ams_list entry with the matched filament_id,
colour and slot indices, then routes through
PresetBundle::sync_ams_list so the filament combo widgets get the
same rebuild as BBL printers and runs the BBL post-sync refresh
sequence (on_filament_count_change + combo update + select_preset
+ export_selections + update_dynamic_filament_list).

No new UI surface -- the existing AMS-sync icon does the right
thing per host_type. Match-and-resolve logic is hoisted out of the
agent anonymous namespace into public statics so the sidebar can
call it without duplicating scoring rules.
2026-05-19 16:01:14 +00:00
grant0013
7514cf4012 CrealityPrint: default Device-tab WebView URL to Mainsail on :4408
K-series printers (K2, K2 Plus, K2 Pro) ship with Mainsail on port
4408. Port 80 hosts only the Creality control/upload API, which
returns 404 for unknown paths and renders as a blank/404 page in
Orca Device tab.

Override CrealityPrint::get_print_host_webui() to default to
http://<host>:4408/ when the user has not explicitly set
print_host_webui, giving K-series owners a complete printer
dashboard in the Device tab out of the box.
2026-05-19 16:01:13 +00:00
grant0013
a4ea6c6fde CrealityPrintAgent: match Orca filament presets by vendor + brand name
Score visible compatible filament presets against the CFS spool
(vendor, brand_name, type) tuple to pick the right preset:

  +20  preset name contains the brand_name as a substring
       (eg Hyper PLA in Hyper PLA @Creality K2 0.4 nozzle)
  +10  preset name contains the vendor substring (eg Creality)

Requires preset.filament_type to equal the spool base type so a
PETG preset is never auto-picked for a PLA spool. Falls back to
filaments.filament_id_by_type(base_type) when nothing scores.

Considers both base/system presets and user-derived copies -- K2
owners frequently keep tweaked copies of system presets (per-spool
PA, temps), so filtering to bases-only would skip exactly the
presets users care about most.
2026-05-19 16:01:13 +00:00
grant0013
d1a33d2efd Add CrealityPrintAgent for CFS filament sync
Subclass of MoonrakerPrinterAgent for K-series Creality printers
(K2, K2 Plus, K2 Pro) with CFS support. Registers in
NetworkAgentFactory under host_type=crealityprint. Overrides
fetch_filament_info() to defer to base when the host is not a
CFS-capable K-series board, otherwise query the boxsInfo WebSocket
on port 9999, parse the box hierarchy into CFSSlot[], and publish
each loaded slot as an AmsTrayData entry via build_ams_payload()
so they surface in Orca filament UI.

boxsInfo schema reference (verified against K2 Combo F021 firmware
v1.1.260206):
  materialBoxs[].materials[] fields: id, state, vendor, type, name,
  color, pressure, rfid, percent. state=1 means loaded; box.type=0
  is a CFS unit, type=1 is the external spool holder (handled by
  the upload dialog).

Accepted CFS boxes are renumbered sequentially since the K2 raw
box.id has gaps for the external spool holder. Model detection is
delegated to CrealityPrint::supports_multi_color_print() added in
PR #13291.
2026-05-19 16:01:13 +00:00
Ian Chua
ebf9d9fd42 feat: add UI feedback on http error and some logs (#13738)
* feat: add UI feedback on http error and some logs

* spelling fix

* show error dialog only once per session

* show errors with plater notification when on developer mode

* remove return

* remove irrelevant logs
2026-05-19 23:15:44 +08:00
Ian Bassi
ff68a2859d Ignore Jerk values Warning if using JD (#13575)
* Ignore Jerk values if using JD

* add flavor check
2026-05-19 09:42:44 -03:00
Rodrigo Faselli
8dc91d8b1d Merge branch 'main' into belt/baseChanges 2026-05-19 08:06:57 -03:00
SoftFever
46e47cec0a Fix ObjectTable crash on cell deselect after wxWidgets 3.3.2 upgrade (#13740)
GridCellSupportEditor::DoActivate dereferenced
grid->GetSelectedBlocks().begin() without checking against end(). In
wxWidgets 3.1.5 that range always contained at least one block; in 3.3.2
it is empty after the user deselects, and the dereference crashes inside
wxGridBlockCoords::GetLeftCol().

Fall back to the (row, col) that triggered activation when the selection
is empty, so the existing single-cell branch handles it. While here,
drop a dead local_table cast that was never read.
2026-05-19 18:14:33 +08:00
Ioannis Giannakas
f4a9830752 Fix reverse on even hint (#13739) 2026-05-19 10:50:26 +01:00
Brandon Wees
1f2ed70288 fix: macOS deep links after wxWidgets 3.3.2 upgrade (#13737)
Fix macOS orcaslicer:// deep links after wxWidgets 3.3.2 upgrade

Install an OrcaSlicer-owned kAEGetURL Apple Event handler from
on_init_inner(). The wxWidgets 3.3.2 handler registered in
applicationWillFinishLaunching: stopped delivering URL events to
GUI_App::MacOpenURL on macOS (#13119), so links from Printables /
Thingiverse opened a blank project instead of importing the model.

Registering our own handler late in startup is last-writer-wins on
NSAppleEventManager and routes back to the existing MacOpenURL ->
start_download path, restoring the pre-upgrade behavior without
touching wxWidgets.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 17:13:07 +08:00
Ioannis Giannakas
3370e224b2 Cooling: add per-printer non-zero fan PWM floor and fix N=0 fan ramp override (#13715)
* Cooling: add per-printer non-zero fan PWM floor and fix N=0 ramp override
* updated parameter naming
2026-05-19 09:40:53 +01:00
SoftFever
7fc1e109c5 delete misshaped profiles 2026-05-19 14:35:20 +08:00
SoftFever
374e4ad8a9 Follow up update for PR #13724: improve GC and shorten comments 2026-05-19 14:32:18 +08:00
SoftFever
d0fbda3af1 Fix Linux segfault when loading Fluidd/Mainsail printer hosts (#7210) (#13724)
* Fix Linux segfault when loading Fluidd/Mainsail printer hosts (#7210)

Co-authored-by: VittC <58783944+VittC@users.noreply.github.com>

* narrow down the changes

---------

Co-authored-by: VittC <58783944+VittC@users.noreply.github.com>
2026-05-19 14:26:34 +08:00
Joseph Robertson
da8b11b8ab HOTFIX: update generic belt printer profile (#23)
oops
2026-05-19 01:06:39 -05:00
Joseph Robertson
c79970bedb Clean Up Settings Interface, Update Generic Profile (#22)
* clean up UI elements

* further cleaning

* final cleanup for first round of settings UI streamlining

* update generic belt printer settings

* fix generic again
2026-05-19 00:56:08 -05:00
Andrew
f78836bef4 Stop tracking .idea files (#13735) 2026-05-19 11:20:04 +08:00
harrierpigeon
7252f6acb7 Merge upstream/main into belt/rebase/may-18
Reconciles the belt-printer branch with upstream PRs through #13723. Six
files had conflicts; three additional files needed manual follow-up fixes
where the auto-merge produced code that referenced upstream-renamed fields
or changed function signatures.

Notable reconciliations:
- TreeSupport.cpp: kept belt-floor early-exit branches around HEAD's
  drop-down logic, folded upstream's `(distance_to_top > 0 ? 1 : 0)`
  formula into the non-belt-floor path (upstream PR #11812). Dropped dead
  `roof_enabled`/`force_tip_to_roof` locals.
- TreeSupport3D.cpp: combined upstream's safety-offset + remove_small
  changes with HEAD's belt-floor clip in the per-slice trim loop. Dropped
  HEAD's `else` block (superseded by upstream's rewritten bottom-contact
  propagation) and re-added the belt-floor clip into the new propagation
  loop. Gated the propagation on belt printers to prevent OOM when
  belt-floor clipping produces empty initial slices.
- TriangleSelector.{cpp,hpp}: merged both new `select_patch` parameters
  (HEAD's `up_direction` and upstream's `select_partially`); body uses
  `dot(up_direction)` for the overhang angle check and forwards
  `select_partially` to `select_triangle`.
- SupportMaterial.cpp: `slicing_params.soluble_interface` →
  `zero_gap_interface_bottom` in HEAD's `detect_belt_floor_bottom_contacts`,
  matching upstream's same-purpose rename at line 2495.
- Custom.json, GCodeWriter.cpp: simple additive merges (kept entries /
  includes from both sides).

Verified by building OrcaSlicer (RelWithDebInfo) after a full deps
rebuild (Eigen v5.0.1, libigl v2.6.0 are now managed deps) and slicing
a scaled Benchy on the NORMALIZER belt-printer profile without OOM.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-18 21:53:24 -05:00
Joseph Robertson
6a2d690f45 Decouple Slicing From Machine Frame Logic (#21)
* minor logic swap

* first attempt, has a race condition

* fixed the offset issue

* found a solution, I think things work now (at least once I quash this race condition)

* still chasing down race conditions

* add manual shear / scale order strategy swap

* tweak manual shear, fix ui uninitialization crash

* fix z height / g-code desync issue

* fix shear then scale cutoff planes

* getting closer

* fix support termination planes

* fix incorrect offsets in shear-then-scale mode

* test - fix overextrusion due to model/layer scale
2026-05-18 19:01:43 -05:00
SoftFever
d8369e5f75 Fix faint toolbar icons on Wayland (#13723)
Use glBlendFuncSeparate in GLTexture::render_sub_texture so destination
  alpha stays at 1.0. The Wayland compositor honors framebuffer alpha for     window compositing; the previous straight-alpha blend reduced dst alpha
  at anti-aliased icon edges, making them semi-transparent against the
  desktop. RGB blending is unchanged, so X11/Windows/macOS are unaffected.
2026-05-19 01:38:37 +08:00
SoftFever
88b4a63228 Fix Linux data-view dropdown popup parenting (#13721)
Delay opening the object-list filament dropdown on wxGTK until the editor
  window is mapped, avoiding popup creation without a valid native toplevel.
  Also set the GTK transient parent for dropdown popups created from data-view
  cell editors.
2026-05-19 01:01:53 +08:00
yw4z
dc12126b78 Fix 2 Linux assertation errors on gtk_window_resize() (#13718)
Update DropDown.cpp
2026-05-18 19:01:42 +03:00
yw4z
054a173af7 Fix possible crash on startup because of low max volumetric speed on profiles (#13716)
* Update fdm_filament_common.json

* update

* Update fdm_filament_common.json
2026-05-18 19:00:48 +03:00
Kappa971
248a55abd0 Update Italian translation (#13674) 2026-05-18 10:29:38 -03:00
yw4z
b4aa070c40 MultiChooseDialog & CheckList class & improvements for Profile Dependencies (#9971)
* init

* fix

* fix

* update

* update

* update

* Update Tab.cpp

* Update CheckList.cpp
2026-05-18 19:46:47 +08:00
Thomas Henauer
b9ff15054f Fix wxGTK submenu popup parenting and sizing on Wayland (#13707) 2026-05-18 18:01:19 +08:00
CSLRDoesntGameDev
ddeaa4ba82 Add patches to the Anycubic Kobra X machine json (#13677)
add patched anycubic kobra x machine json

Co-authored-by: SoftFever <softfeverever@gmail.com>
2026-05-18 16:57:24 +08:00
Ian Chua
b333b04815 log: add logs surrounding logout to potentially catch any unwanted logouts or errors (#13713)
# Description

Currently, there is some suspicious behavior going on with the logout
flow, adding some logs to potentially catch any unwanted logouts or
unintentional behaviors.


[How to Download Pull Requests Artifacts for
Testing](https://www.orcaslicer.com/wiki/how_to_download_pr_artifacts)
2026-05-18 16:39:59 +08:00