fix: dark mode, daily tips, filament grouping names, 3D view refresh, syslog wall broadcast#10821
Closed
BenJule wants to merge 15 commits into
Closed
fix: dark mode, daily tips, filament grouping names, 3D view refresh, syslog wall broadcast#10821BenJule wants to merge 15 commits into
BenJule wants to merge 15 commits into
Conversation
… locale files The fila_manager web page was hardcoded in Chinese (lang="zh") with no internationalization support. This commit adds a lightweight i18n system: - Add locales/en.json and locales/zh_CN.json with all UI strings - Add t(key) / tf(key, n) translation helpers loaded at startup - Apply translations via data-i18n / data-i18n-placeholder attributes in HTML - Replace all hardcoded Chinese strings in index.js with t() calls - Language is resolved from the ?lang= URL parameter passed by C++
… strings Two printer status strings shown during calibration used the misspelling "percision" instead of "precision". Also fix lang="zh-CN" in NozzleListTable.html (the table content is set by C++ at runtime). All .po and .pot msgid entries updated to match the corrected source strings.
- 'Problem occured' → 'Problem occurred' (MediaPlayCtrl.cpp) - 'When enable spiral vase mode' → 'When enabling ...' (SelectMachine.cpp, SyncAmsInfoDialog.cpp) - 'connectors is out of object' → 'connectors are out of object' (GLGizmoAdvancedCut.cpp) - 'Error:Detecting ...' → 'Error: Detecting ...' with spacing fixes (GLGizmoText.cpp) Update all corresponding msgid entries in BambuStudio.pot and all 18 .po locale files.
Fix missing spaces after 'Warning:', 'Error:', and 'Tip:' prefixes, missing spaces after sentence-ending periods and commas, and several grammar issues in strings that appear to originate from machine translation: - GLGizmoText.cpp: fix 9 Warning: strings (space + grammar) - 'Warning:create text fail.' → 'Warning: Text creation failed.' - 'Warning:text normal is error.' → 'Warning: Text normal has an error.' - 'Warning:Due to font upgrades,previous...' → proper spacing - 'reedit it will ok' → 'reedit it to fix the issue' - 'dragging text' → 'drag the text' (imperative form) - GLGizmoMeasure.cpp: fix 3 Warning: strings + 'two different mesh' → 'meshes' - GLGizmoSVG.cpp: fix 'Tip:If...' + missing comma + 'svg file' → 'SVG file' - PlaterWorker.hpp: 'error occured' → 'error occurred' - DeviceManager.cpp: missing spaces after period/comma + '(PLA...)' spacing - BindDialog.cpp: 'device.Before', 'termsand', 'Use(collectively)' spacing - ConfigManipulation.cpp: missing spaces after comma and period - AMSSetting.cpp: missing space after '1 minute.' - Preferences.cpp: 'tab.If change value' → 'tab. If you change this value' Update all msgid entries in BambuStudio.pot and all 18 .po locale files.
- AuxiliaryDialog.cpp: 'Auxiliaryies' → 'Auxiliaries' (dialog title) - FanControl.cpp: 'print qulity' → 'print quality' - GLGizmoFlatten.cpp: 'too small,The' → 'too small. The' (comma → period) - Monitor.cpp: 'Assistant(HMS)' → 'Assistant (HMS)' (space before parenthesis) - AMSSetting.cpp: 'during printing' → 'during printing' (double space) - AMSDryControl.cpp + uiAmsHumidityPopup.cpp: 'Left Time' → 'Remaining Time' - Plater.cpp: 'attrited' → 'worn' (non-standard word) Update all corresponding msgid entries in BambuStudio.pot and all 18 .po locale files.
On macOS, BambuStudio already auto-follows the system dark/light theme via EVT_SYS_COLOUR_CHANGED. On Windows this handler was guarded with #ifndef __WINDOWS__, so theme changes were silently ignored. Changes: - GUI_Utils.hpp: EVT_SYS_COLOUR_CHANGED now fires on Windows when 'dark_mode_follow_system' is enabled; calls update_dark_config() and on_sys_color_changed() to refresh the UI - GUI_App.cpp dark_mode(): if follow-system is enabled, query check_dark_mode() (system appearance) instead of the stored config; on startup, sync dark_color_mode config from system if follow-system is enabled - MainFrame.cpp on_sys_color_changed(): call force_colors_update() and update_ui_from_settings() on all platforms (previously skipped on Windows), so a system-triggered theme change gets a full UI refresh - Preferences.hpp/.cpp: add 'Follow system theme' checkbox below the manual 'Enable dark mode' toggle; when checked the manual toggle is disabled and the current system state is applied immediately Resolves feature request bambulab#10800.
- F1–F4 switch between the four main tabs (3D Editor, Preview, Monitor, Project); F5 triggers reslice when a model is loaded - ColorPickerPopup gains a hex input field (#RRGGBB) below the custom color swatch; typing a valid 6-digit hex and pressing Enter applies the color and fires EVT_SELECTED_COLOR; clicking any swatch updates the hex field to match the selected color
- update_title() now sets the topbar label to "Bambu Studio <version>" on Windows/Linux so the version is always visible without opening the About dialog (closes bambulab#10642) - Preferences > Online Models gains a "Open full MakerWorld site" checkbox (config key makerworld_use_full_site); when enabled the Online Models tab loads the unrestricted makerworld.com pages instead of the /studio/webview simplified view, restoring access to comments, account management, and other features (closes bambulab#10801)
- update_title() now shows the open project filename and a leading '*' when there are unsaved changes, keeping the topbar in sync via the existing wxEVT_IDLE handler; title reverts to the app name + version when no project is open (closes bambulab#9987, closes bambulab#9989) - Cloud connection failure dialog now uses RichMessageDialog with a "Don't show this warning again" checkbox; checking it sets config key suppress_cloud_warnings=1 so the dialog is permanently suppressed for offline/LAN-only workflows (closes bambulab#10589)
- Preferences > General Settings: "Auto-save project every 5 minutes" checkbox (config key autosave_enabled); a wxTimer in MainFrame fires every 5 min and calls save_project() silently when the project has a filename, is dirty, and the option is enabled (closes bambulab#10334) - Alt+Arrow moves selected objects by 0.1 mm; Alt+Shift+Arrow by 0.01 mm; existing Shift+Arrow (1 mm) and plain Arrow (10 mm) are unchanged; added to the keyboard shortcuts dialog (closes bambulab#10194) - LayerRangeEditor now explicitly sets background/foreground to the app's dark-mode palette colours after UpdateDarkUI(), fixing the unreadable contrast in the Height Range Modifier field on Linux dark mode (closes bambulab#10685)
Adds a "Pause in Xh Ym" label below the layer counter in the printing task panel whenever a scheduled PausePrint exists ahead of the current layer. The countdown is derived from the locally sliced gcode (layer Z-heights + custom gcode entries) and the printer's reported remaining time, updated on every status tick. Closes bambulab#10632 Closes bambulab#10562
FilamentGroupPopup (bambulab#10530): - Replace hardcoded #FFFFFF background with dark-mode-aware bg_color() helper so the popup renders correctly in dark mode (#2D2D31 bg) - Replace hardcoded LabelEnableColor with label_clr() that returns the appropriate text color for the current theme - Fix SmartFilament section border and background to use dark-mode colors Daily Tips preference (bambulab#3142): - Add "Show daily tips after slicing" checkbox to the Preferences → Home page section (config key: show_daily_tips) - Guard DailyTipsWindow::open() so it is a no-op when tips are disabled - Guard the separator line and daily tips child window in the slicing notification renderer; collapse the notification to progress-only height when tips are disabled Closes bambulab#10530 Closes bambulab#3142
…lds, dark mode in filament dialog GCode view type persistence (bambulab#7131): - Remove the enable_record_gcodeviewer_option_item guard so the last selected color scheme (Line Type, Filament, Feedrate…) is always saved to gcodeviewer_option_item and restored on next startup. Transparent/clear color in filament picker (bambulab#10574): - Prepend a fully-transparent entry (alpha=0) to the preset color list in ColorPickerPopup so users with clear/transparent filament can select it. ColorPicker::doRender already renders alpha=0 as the checkered transparent bitmap. set_def_colour already clears the hex field for alpha=0, so no additional handling is needed. Z key swallowed by canvas shortcut in text inputs (bambulab#10684): - Extend is_text_entry_focused() to also check direct children of the focused window. On Windows, clicking on a custom TextInput panel sometimes leaves focus on the outer StaticBox container rather than the inner wxTextCtrl, so the upward parent walk missed it. The child check catches that case and prevents the "zoom to fit" shortcut from consuming the 'z' keystroke while typing. Dark mode label color in CreateFilamentPresetDialog (bambulab#8949): - Replace all SetLabelColor(*wxBLACK) calls with SetLabelColor(wxGetApp().get_label_clr_default()), which returns the correct label color for the active theme. Previously, black labels were invisible against the dark background that UpdateDlgDarkUI applied to the dialog background but not to the custom StateColor label property. Closes bambulab#7131 Closes bambulab#10574 Closes bambulab#10684 Closes bambulab#8949
…dcasts The closed-source bambu_networking plugin calls syslog() at LOG_EMERG priority for non-critical errors such as "SO register failed". systemd-journald broadcasts all PRIORITY=0 messages as wall messages to every logged-in terminal, which is highly disruptive. Since the message origin is in a closed-source binary that cannot be patched, set the process-wide syslog mask via setlogmask() at startup to suppress LOG_EMERG (0) and LOG_ALERT (1). All other syslog priorities (LOG_CRIT and below) remain unaffected. Fixes bambulab#10820
2 tasks
…#10773), 3D view stale after project reload (bambulab#10787) Filament grouping (bambulab#10773): FilamentMapDialog was reading raw filament_type config values ("ABS") instead of the display name that get_filament_type() produces. Support filaments were therefore indistinguishable from their base material in the assignment UI. Replace the direct option access with a loop over get_filament_type() so "Support for ABS" renders as "Sup.ABS". Also fix get_filament_type() itself: the branch that handles a known filament_id handled PLA-S and PA-S but missed ABS-S, causing "Sup.ABS" to fall through to the raw "ABS" return value when a filament_id is present. Prepare view refresh (bambulab#10787): After loading a second .3mf file into an already-open session the Prepare 3D canvas could still show the old model. load_project() calls load_files() which internally calls update() -> reload_scene(), but the canvas may not repaint if it was not visible or was in a dirty state at that moment. Add an explicit set_as_dirty() + request_extra_frame() on view3D after select_tab() to guarantee a fresh render in all code paths. Closes bambulab#10773 Closes bambulab#10787
This was referenced May 20, 2026
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Dark mode fix for FilamentGroupPopup ([Sliced Preview] Filament Grouping box does not respect dark mode configuration #10530): Popup always rendered with hardcoded white background. Replaced with
bg_color()/label_clr()runtime helpers.Disable daily tips preference (Option to remove Daily Tips popups #3142): Added "Show daily tips after slicing" checkbox to Preferences. When unchecked, the tips panel and separator are skipped entirely.
GCode view type persistence (Color Scheme now defaults to FILAMENT (used to be LINE TYPE) -> PUT THIS IN SETTINGS?!?! #7131): Removed the
enable_record_gcodeviewer_option_itemguard so the last color scheme is always saved/restored.Transparent/clear color in filament picker (No "clear" option in filament color. #10574): Added a fully-transparent (alpha=0) entry as the first preset swatch in
ColorPickerPopup.Z key swallowed in text input fields ("Z"-Key not working #10684): Extended
is_text_entry_focused()to also check direct children of the focused window.Dark mode label color in CreateFilamentPresetDialog (Text is invisible on the new filament window in dark mode #8949): Replaced all
SetLabelColor(*wxBLACK)withSetLabelColor(wxGetApp().get_label_clr_default()).Linux: suppress LOG_EMERG syslog to stop journald wall broadcasts (Linux: syslog emerg message causes systemd-journald broadcast to all terminals #10820): Added
setlogmask()call at startup to preventPRIORITY=0syslog messages from the closed-source network plugin from triggeringsystemd-journaldwall broadcasts.Support filament shows as base type in grouping dialog (The name of Support for ABS in Filament Grouping is confusing #10773):
FilamentMapDialogwas reading rawfilament_typeconfig values ("ABS") instead of the display name fromget_filament_type(). Support filaments were indistinguishable from their base material. Also fixed theABS-Scase missing in thefilament_id-present branch ofget_filament_type().Prepare 3D view stale after opening second .3mf (Prepare view is not refreshing when opening a new 3mf with Bambu Studio already opened. #10787): After loading a second project the canvas could still show the old model. Added
set_as_dirty()+request_extra_frame()afterselect_tab()inload_project()to guarantee a fresh render in all code paths.Test plan
Closes #10530
Closes #3142
Closes #7131
Closes #10574
Closes #10684
Closes #8949
Closes #10820
Closes #10773
Closes #10787