Skip to content

Integrate all open upstream PRs (73) into 2.8.0#608

Merged
BenJule merged 66 commits into
build/2.8.0-betafrom
integrate/upstream-prs-280
Jul 13, 2026
Merged

Integrate all open upstream PRs (73) into 2.8.0#608
BenJule merged 66 commits into
build/2.8.0-betafrom
integrate/upstream-prs-280

Conversation

@BenJule

@BenJule BenJule commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Brings the changes from all 73 currently open upstream PRs (bambulab/BambuStudio, author BenJule) onto the 2.8.0 line, as 66 cherry-picked commits.

How the 73 PRs break down:

Full pick-by-pick log lives in the integration workspace (report.md), happy to attach it if wanted.

Verified: Jenkins build #14 of the packages pipeline compiled the branch clean (0 errors) and produced a working .deb (02.08.00.12250).

@BenJule BenJule self-assigned this Jul 13, 2026
@github-actions github-actions Bot added area: ci GitHub Actions, CI/CD area: filament Filament profiles and settings area: ui User interface / wxWidgets platform: linux Linux-specific issue translations Translations and i18n changes area: networking Cloud, MQTT, printer connection area: slicing Slicing engine, toolpath generation javascript JavaScript / TypeScript labels Jul 13, 2026
@github-actions github-actions Bot added this to the v02.07.01-dev milestone Jul 13, 2026
BenJule added 20 commits July 13, 2026 08:00
… locale files

Move the hardcoded Chinese strings in the Filament Manager web UI into
en/zh_CN locale JSON files and load them at runtime, so the panel follows
the app language instead of always showing Chinese.

Closes bambulab#10806

(cherry picked from commit dd05cf4)
Fixes typos such as 'Auxiliaryies', 'qulity', double spaces and missing
punctuation in user-facing strings across several GUI source files.
Source-string changes only; translation catalogs are left to the upstream
gettext pipeline.

Closes bambulab#10852

(cherry picked from commit 2fb43fd)
- F1–F4 switch the main tabs (3D Editor / Preview / Monitor / Project) and
  F5 reslices, when no modifier is held.
- The AMS colour picker gains a hex input field (e.g. FF8800), kept in sync
  with the currently selected colour.

The dark-mode changes that previously rode along on this branch (shared base)
are dropped here; they live in their own PR (bambulab#11241).

(cherry picked from commit 7040f0b)
Per review: F1-F4 switch to the corresponding main tab, so binding F5 to
reslice instead of a fifth tab was inconsistent. Drop the F5 binding.

(cherry picked from commit a17b512)
Adds a 5-minute timer that silently saves the current project when it is
dirty and already has a file path, gated behind the `autosave_enabled`
config key. Reduced from the original multi-feature PR to this single
feature, as requested in review.

(cherry picked from commit c3baa62)
Adds a "Pause in <time>" line to the printing task panel. When the sliced
result contains a scheduled PausePrint above the current layer, the time is
estimated from mc_left_time scaled by the remaining layers up to that pause,
and hidden otherwise.

(cherry picked from commit e54d2c5)
…#10574)

Users with clear or transparent filament had no way to select that
color in the filament color picker.  Add a fully-transparent entry
(alpha=0) as the first preset swatch in ColorPickerPopup.  The
existing checkered bitmap rendering and alpha=0 handling in
ColorPicker::doRender and set_def_colour already support this case.

Closes bambulab#10574

(cherry picked from commit ac3fada)
…t dialog (bambulab#8949)

Labels were set with SetLabelColor(*wxBLACK), which uses a custom
StateColor path that bypasses the SetForegroundColour mechanism
UpdateDlgDarkUI relies on for color remapping.  Replace all ten
occurrences with SetLabelColor(wxGetApp().get_label_clr_default())
which returns the correct foreground color for the active theme.

Closes bambulab#8949

(cherry picked from commit 43a1e7c)
…dcasts (bambulab#10820)

The closed-source bambu_networking plugin calls syslog() with LOG_EMERG
for non-critical errors such as 'SO register failed'.  systemd-journald
broadcasts every PRIORITY=0 message as a wall to all logged-in
terminals.  Set the process-wide syslog mask via setlogmask() at
startup to suppress LOG_EMERG and LOG_ALERT; all other priorities
(LOG_CRIT and below) are unaffected.

Closes bambulab#10820

(cherry picked from commit df3db17)
…ambulab#10773)

Two root causes:

1. FilamentMapDialog read raw filament_type config values directly.
   Support filaments store their base type ("ABS") there, making them
   indistinguishable from regular ABS.  Replace with a loop over
   get_filament_type() so the display name ("Sup.ABS") is used.

2. get_filament_type() handled PLA-S and PA-S in the filament_id-
   present branch but was missing the ABS-S case, causing it to fall
   through to the raw "ABS" return value.

Closes bambulab#10773

(cherry picked from commit 03743ad)
…alog

When a project uses both a regular filament (e.g. ABS) and its support
variant (e.g. Support for ABS), both presets share the same filament_type
value ('ABS'). The FilamentMapDialog therefore displayed two identical
'ABS' labels, making it impossible to distinguish the two slots.

Use the filament_is_support config flag (same convention already used by
Preset::get_filament_type()) to prepend 'Sup.' to the type string before
passing it to the grouping dialog, so the labels read 'ABS' and 'Sup.ABS'.

(cherry picked from commit 049f233)
…bulab#10787)

After loading a second project the canvas could still display the
previous model.  load_project() calls load_files() which internally
calls update() -> reload_scene(), but the canvas may not produce a
visible repaint if it was not visible or was in a dirty/deferred state.

Add set_as_dirty() + request_extra_frame() on view3D after select_tab()
to guarantee a fresh render in all code paths.

Closes bambulab#10787

(cherry picked from commit 9544f60)
…ager

When "push local to cloud" succeeded for a net-weight update, the
on_push_done callback immediately enqueued a cloud pull.  Due to
read-after-write lag in the cloud backend the pull could return the
stale netWeight (before the push) and overwrite the user's manually-
edited weight back to the old value (typically 1000 g for a full spool).

Only trigger the follow-up pull for CREATE operations, where we genuinely
need the server-assigned spool id.  For UPDATE and DELETE the local store
is already consistent with what was pushed, so a pull introduces a race
without any benefit.

Fixes bambulab#10766

(cherry picked from commit 8580e3b)
… dialog

- Replace MessageDialog with RichMessageDialog and add a checkbox so
  users can permanently suppress the MQTT cloud connection failure popup.
- Config key: suppress_cloud_device_server_warning (set to "1" when
  user opts out; specific to this dialog to avoid collisions).
- Add a Preferences toggle ("Don't show cloud device server connection
  warnings") so users can re-enable the warning at any time without
  editing the config file manually.
- The existing is_showing re-entrancy guard is preserved.

Closes bambulab#10589

(cherry picked from commit b155ede)
In the grid placement path (used when grid_cap > 50), itemid was never
updated from its initial value of -1, causing all copies to be named
"<object> -1". Assign itemid sequentially from 0 to match the arrange
path behavior.

Fixes bambulab#10492

(cherry picked from commit 437b594)
When a spool has a note, display it as a third sub-line in the Filament
column, below the colour/diameter info. The note is truncated with an
ellipsis and the full text is available on hover. Rows without a note
are unchanged.

Closes bambulab#10834

(cherry picked from commit ebce49e)
…_filament_gcode templates

{retract_length_toolchange[filament_map[next_extruder]-1]} (and the
next_filament_id variant) directly indexes retract_length_toolchange as a
vector in the PlaceholderParser. When the vector is empty (e.g. config
compatibility issues with older 3MF project files), the parser throws
"Indexing an empty vector variable" and slicing fails.

Replace with [new_retract_length_toolchange], the pre-computed scalar set in
GCode.cpp via full_config.retract_length_toolchange.get_at(), which handles
empty/short arrays safely. The default is 2.0 mm across the extruder
variants, so the generated G-code is unchanged.

Affected templates: H2D Pro, H2S, P2S, X2D (0.4 nozzle).

Fixes bambulab#10437

(cherry picked from commit ff26897)
…ected

In the Add Filament / Read from AMS dialog, slotLabels was hardcoded as
['A1','A2','A3','A4'] regardless of which AMS unit was selected. With
multi-AMS setups, slots on the second unit showed B1-B4 everywhere else
in the UI but the slot picker in the dialog always showed A1-A4.

Derive the unit letter from currentUnit.ams_id ('0' for AMS A, '1' for B,
etc.) so slotLabels matches the selected unit.

Fixes bambulab#10512

(cherry picked from commit 71b4b59)
AMSMaterialsSetting::Popup used `if (ext_id > 0)` to guard the PA
history request. MAIN_EXTRUDER_ID is 0, so any AMS unit bound to the
first extruder failed this check and never sent the `extrusion_cali_get`
command. The dropdown then showed only the hard-coded "Default" entry.

Fix: change `> 0` to `>= 0` so extruder 0 triggers the request while
the existing `return -1` sentinel (not found) is still excluded.

Fixes bambulab#10845.

(cherry picked from commit 5237588)
After saving in the editor, clear_model_info() empties m_last_payload.
If index.html loads and sends request_3mf_info before the background
on_reload() thread completes — or if on_reload()'s RunScript call is
dropped during webview navigation — the page receives no data and
continues to display the pre-save profile name.

Fall back to update_model_data() when request_3mf_info arrives with an
empty m_last_payload.  This triggers a fresh on_reload() which dispatches
the up-to-date model data directly to the now-loaded page.

(cherry picked from commit 1a0f653)
BenJule added 26 commits July 13, 2026 08:01
(cherry picked from commit 0804a01)
(cherry picked from commit 13e9e3f)
(cherry picked from commit 0f349f4)
(cherry picked from commit 5ef059d)
(cherry picked from commit fac5d49)
(cherry picked from commit a7ed98f)
(cherry picked from commit 55b727e)
(cherry picked from commit 1303a53)
(cherry picked from commit d8a8592)
@BenJule
BenJule force-pushed the integrate/upstream-prs-280 branch from ebd30b5 to ea5d2bf Compare July 13, 2026 06:01
@BenJule

BenJule commented Jul 13, 2026

Copy link
Copy Markdown
Owner Author

Force-pushed the branch once more: same 66 commits, now all GPG-signed. The tree is bit-identical to the state Jenkins build #14 verified (checked via rev-parse ^{tree}), so the verification still holds — only commit signatures changed.

@BenJule
BenJule merged commit ea5d2bf into build/2.8.0-beta Jul 13, 2026
1 check passed
@BenJule
BenJule deleted the integrate/upstream-prs-280 branch July 13, 2026 06:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci GitHub Actions, CI/CD area: filament Filament profiles and settings area: networking Cloud, MQTT, printer connection area: slicing Slicing engine, toolpath generation area: ui User interface / wxWidgets javascript JavaScript / TypeScript platform: linux Linux-specific issue translations Translations and i18n changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant