Bambu Studio is a cutting-edge, feature-rich slicing software.
It contains project-based workflows, systematically optimized slicing algorithms, and an easy-to-use graphic interface, bringing users an incredibly smooth printing experience.
This fork's maintained delivery target is native Windows UI modernization informed by Material Design 3. The latest Windows installer is a per-user install and does not require administrator elevation. It is currently unsigned; verify the accompanying SHA-256 file before running it. This fork is Windows-only. macOS and Linux support has been removed from the tree: the platform sources, build scripts, packaging and CI jobs are gone, and CMake fails fast when configured on any other system. Cross-platform builds remain available upstream from Bambu Lab.
The Windows UI provides three canonical fork modes: English (en), playful Hong Kong Cantonese
preview (yue_HK), and compact English + Cantonese preview (bilingual_en_yue_HK). Existing Bambu Studio
locales remain available. Missing Cantonese copy falls back to English; native bilingual presentation
is opt-in on migrated surfaces, and the Cantonese catalog remains a curated preview pending broader
human review. See the
language-mode documentation for coverage and fallback
details.
The production wxWidgets application now consumes the vendored Material Design 3 design system
end-to-end. The canonical in-repo design source is ui-md3/design-system/;
its token values match src/slic3r/GUI/Widgets/MD3Tokens.hpp exactly, and the native code resolves
colors through semantic tokens instead of hardcoded hexes. A ground-up migration converted theme
colors and fonts across essentially the whole GUI tree (roughly 120 files over six waves), backed by
Roboto and Roboto Mono shipped as application resources. Contextual schemes are resolved per
workspace: brand green for Prepare and general UI, Preview purple for the G-code preview, and Device
teal for the printer surfaces. Functional data colors (ink swatches, G-code feature colors, 3D
paint palettes) are deliberately preserved.
Beyond the token layer, an element-by-element conformance register
(docs/features/design-system/md3-parity-register.md)
drove nine implementation waves of structural component anatomy. As of 2026-07-22 the register
stands at 120 rows done, 4 recorded deviations (each documented with concrete evidence in the
register), and 5 open rows — the deep Prepare-sidebar rebuilds (printer identity card, bed
field, ink info-rows, Process card, Objects card) — which are being finished in a concurrent
implementation wave. Landed anatomy includes the Material Symbols icon font and ImGui glyph atlas,
the rebuilt shared widget kit, the MD3Dialog shell with the MessageDialog family and the
raw-wxMessageBox sweep, the kit title bar, the Preferences NavRail with runtime density/accent
controls, the device camera HUD and card grid, the Preview timeline transport bar, and the
glyph-to-GL-texture bridge for the 3D toolbar and gizmo rail. The register itself is the live
tracker; counts above are as of this writing.
Two native features were added in the same effort:
- A native OpenGL model preview for the MakerWorld "Download and Open" flow shows an interactive orbit/zoom/fit view before import, with Open in Prepare and Close actions and a failure-safe fallback to the normal import. See MakerWorld OpenGL preview.
- A dockable Prepare sidebar can be docked left, right, top, or bottom (default left) and re-docks live from a Preferences control. See Dockable Prepare sidebar.
Full documentation of the token layer, migration, failure modes, and audit result is in Vendored Material Design 3 design system. The native split actions, option menus, segmented selectors, links, tabs, Ink Dispenser controls, Filament Manager, Project page, and setup guides now share a documented keyboard, assistive, zoom, and responsive-layout baseline; see Keyboard, assistive, and responsive GUI accessibility.
These are captures of the running native executable at the current tip, produced by launching the
built binary on an isolated off-screen desktop (via the headless computer-use harness) over a
software OpenGL renderer, and capturing individual windows with PrintWindow. That method renders
wxWidgets chrome and panels but not the OpenGL 3D viewport or the webview-backed panes (the Home
body and Ink library are web content), so those regions appear empty in whole-window shots; the
Prepare capture is a direct sidebar-panel grab to show real migrated content. The frame shot dates
from 2026-07-26 and the sidebar from 2026-07-28, both taken after the ink rename.
Fresh release capture set — 2026-08-11
The native binary was built by build-installer.bat /s from source commit
ca49ec7d9f6623a5474ec85d6b5b3c556ab2ab8a,
then launched on a named hidden desktop through the Cheap Lowlevel route. Each image below is a
real PrintWindow capture resolved from the live window list; the documentation-only descendant
fe52d9766d900f09d7611d1dc5e0bc24854ca1cf does not change these pixels.
| Fresh native main surface | Fresh Setup Wizard surface |
|---|---|
![]() |
![]() |
Home — with the browser-like project tab bar
The new project tab strip (one tab per open project, a close button, and a "+" new-tab button) sits between the Material title bar and the workspace tabs.
The Home tab and the Setup Wizard body are WebView2 surfaces, shown below as rendered from the app's own bundled page assets (a native-window capture cannot include WebView2 compositor content, which is why earlier captures of them were blank):
| Prepare sidebar (Material cards) | First-run Setup Wizard (welcome page) |
|---|---|
![]() |
![]() |
The Prepare sidebar shows the migrated Printer, Ink, Process, and Object-manipulation cards — including the Process card's Quality / Strength / Support / Others segmented control and the head of the axis-colored X/Y/Z manipulation grid; that grid's rows sit below the fold at this panel height and the panel scrolls to them. The Setup Wizard is now hosted on the Material dialog shell (rounded surface, header icon tile) in place of the legacy native caption.
The full screenshot matrix lives under docs/screenshots/: one capture per
page and one per button for every feature, taken headlessly from the real running app (Mesa
llvmpipe + PrintWindow for the native surfaces, rendered page HTML for the webview surfaces).
Non-blocking notifications — informational messages are corner toasts, not modal dialogs. The proof shot: loading a model raises the dark inverse-surface snackbar over the live scene while the UI stays fully interactive.
| Version history (local Git snapshots) | Regex builder (on every search bar) |
|---|---|
![]() |
![]() |
| Appearance settings (theme / density / accent / font) | Project tabs (one tab per project) |
|---|---|
![]() |
![]() |
| Preferences · General | Preferences · Other |
|---|---|
![]() |
![]() |
| File menu (Version history · Open in External Editor) | Setup Wizard · Ink Selection |
|---|---|
![]() |
![]() |
| Config profiles & backup (slide-to-confirm export) | Settings search on the full process tree |
|---|---|
![]() |
![]() |
Prepare sidebar · process settings — the full process tree is the settings-tab layout hosted in
the sidebar, so Advanced mode widens the dock (weakly: capped at 55% of the frame, grow-only, and
the sash stays draggable) and the body gained a real horizontal scrollbar as a backstop. The header
row had been over-subscribed badly enough that the Process title and the Compare button were
allocated zero width and vanished. Details and measurements:
docs/features/prepare/process-settings-sidebar.md.
| Before — values cut off, title and Compare button gone | After — values, units, tabs and title all present |
|---|---|
![]() |
![]() |
| Header before (starved) | Header after |
|---|---|
![]() |
![]() |
Per-feature folders with every button close-up: notifications · version-history · regex-builder · appearance · preferences · project-tabs · main-window · home · wizard · config-profiles · smart-home · sidebar-process
Reviewed on 2026-07-20; these predate the full token sweep and are kept for continuity. They also predate the ink rename, so their captions and their on-screen labels are the pre-rename wording — the shipped page is "Ink Manager" now. See Ink terminology.
| Home | Filament Manager (pre-rename capture) |
|---|---|
![]() |
![]() |
| Device boundary | Project Version History |
|---|---|
![]() |
![]() |
The images below are deterministic captures of the separate ui-md3 interactive design
reference, not screenshots of the native application. Select an image to open the same reference
screen, theme, density, accent, and language state. The installed-app captures are the separate
gallery above.
The Pages site is a browser-style tabbed application, not a scrolling landing page: eight tabs with a strip you can pin, drag, group and search; English and Hong Kong Cantonese copy at five funny levels per language on two independent sliders; a full ECMAScript regex builder behind every search bar; a changelog viewer covering every published release; and a one-in-ten dim sum surprise. Code, fonts and interface artwork are served from this repository with no CDN, analytics or trackers. On an eligible repeat visit, the surprise loads one published photo from the public dim-sum catalog without sending a referrer. Deployment is gated on 447 measured layout cases in a real headless browser. Open the site, read the site documentation, or see the visual showcase documentation.
Prepare · light theme · English
| Preview · dark theme · Hong Kong Cantonese | Device · compact dark theme · English + Cantonese |
|---|---|
![]() |
![]() |
The native Smart home dialog implements two explicit ways to add currently accessible printers to
the companion
Ding-Ding-Projects/ha-bambulab integration:
a confirmed service call through the user's Home Assistant long-lived token, or a temporary local
discovery window that needs no Home Assistant token. Both paths disclose that printer LAN access
codes are credentials before transfer. Discovery sharing is off by default, uses a fresh
high-entropy pairing capability, and stops when the toggle is disabled or the dialog closes.
Home Assistant work uses owned bounded queues, coalesces Connect and volume-slider bursts, caps
printer/speaker/light fan-out at 32, imports printers in four-wide waves, paces mDNS replies, and
cancels and joins its workers during app shutdown. If shutdown lands after an alert-light scene is
created but before any flash, the unused scene is deleted instead of leaking. The resizable Smart
home dialog keeps its footer fixed around a scrolling body and is implemented to wrap long English,
Cantonese, and bilingual content instead of clipping it.
The focused Windows Release targets build successfully: home_assistant_tests passes 30 test cases
and 267 assertions, all five focused CTest entries pass, the Cantonese catalog contains 718 checked
translations, the static Pages/i18n/clipping suite passes 50/50, and the browser Pages matrix passes all 447
cases — 156 on the landing page, 288 that activate every tab, and 3 compact corner-surface cases. Ubuntu's CJK font metrics then exposed the translated
Screens / 畫面 header target shrinking to 31.984×44 pixels at two desktop widths; commit
32a5cc6d7
adds a 44-pixel width floor, and hosted Pages
run 30359493216
passes the full matrix. The production sharing probe also completed cross-host
PTR/SRV/TXT/A discovery, one authenticated bounded fetch, and the zero-TTL goodbye. The full
BambuStudio_app_gui Release build exited successfully after 3,387 seconds, followed by an
8.3-second no-change build. Native headless review at 720×760 and the declared 520×480 minimum found
text actions incorrectly squeezed to 44 DIP; after the responsive-action fix, a 141-second focused
rebuild and link plus an 8.0-second no-change build passed. The later nonvisual import-scheduling
and cancellation-cleanup fixes compiled and linked in 214.808 seconds; the final no-change build took
8.544 seconds. The final 151,299,584-byte DLL is timestamped 2026-07-28 08:15:46 -04:00, with
SHA-256 41BB1BFC754E3184C5908E2145A93E3640D3866E59380F32EEFF7A76F418E972.
The primary corrected English captures were recaptured from that exact final DLL and are in
docs/screenshots/smart-home/. The media-action close-up remains
from the preceding EBF646… DLL; the later source fixes changed only nonvisual printer scheduling
and alert-light cleanup, not SmartHomeDialog or MsgDialog layout. Native bilingual capture, live Home
Assistant confirmation and service paths, physical-printer success, and the still-running Windows
release verdict are tracked separately in
issue #16. The implementation and
44-pixel correction are pushed and remotely proven; this summary still does not substitute for
the remaining live-runtime evidence. See
Smart home for behavior, security, failure modes, and the
honest verification boundary, and
Home Assistant printer-discovery API for
the temporary HTTP/mDNS contract and Postman collections.
The supported Windows installer is Squirrel.Windows. It produces the standard unsigned
Setup.exe, RELEASES feed index, full .nupkg, and any delta packages Squirrel can generate,
alongside a SHA-256 sidecar and CycloneDX SBOM. The package records the exact source commit in its
NuGet metadata, and the release workflow verifies the package layout and unsigned Authenticode
status before publication. The old NSIS UI-page path is retired; local source builds remain
available through the documented one-click build scripts. See Windows native installer,
Windows one-click build, and
Build from source.
The native app includes app-local, Git-backed version history for .3mf projects. Each retained
revision is a complete project snapshot in an isolated bare repository below Bambu Studio's data
directory, never a .git directory beside the user's project. Automatic edits and completed manual
saves are queued in order; identical snapshots are suppressed. File → Version history lists and
restores revisions without directly overwriting the saved project, and Save As forks the existing
history to the new project identity when it is safe to do so.
History is local to this device: it is not pushed to the source-code repository, synced to another computer, or a replacement for backups. There is not yet a retention or pruning policy, so storage can grow with project size and edit count. A restore changes the open session; the project file is only replaced when the user explicitly saves it.
The Windows pipeline builds the native application, produces a per-file CycloneDX 1.6 SBOM, packages
the payload with Squirrel.Windows, and creates GitHub provenance and SBOM attestations for Setup.exe.
It validates the Squirrel feed, full package, checksum, empty PE security directory (unsigned
Setup.exe), and SBOM in a
draft before publication and refuses to publish unless repository immutable releases are enabled.
The last historical publish pipeline proof is hosted run
29877040307
completed with both Build BambuStudio and Publish Windows release succeeding and published the
non-draft NSIS-era release
md3-windows-v02.08.01.55-r37
(installer, SHA-256 checksum, CycloneDX SBOM). New releases ship Setup.exe, RELEASES, the full
Squirrel package, any delta packages, the sidecar, and SBOM. When an org-side restriction began returning HTTP 403 on release
creation with the workflow token, the publish step was switched to authenticate with the
TOKEN_GITHUB owner PAT (commit fc7257366, falling back to the workflow token where the secret
is absent); release r56 was published manually from run artifacts during that incident. GitHub
attestations and checksums are not Authenticode signatures; configuring a trusted Windows signing
identity remains external work. Local release checks are the evidence boundary for the current
Squirrel migration; a cancelled or pending hosted run is not treated as green. See
HANDOFF.md for the authoritative, current CI state.
Bambu Studio is based on PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community.
See this fork's wiki,
feature documentation, roadmap, and handoff for the
MD3 rewrite, verification status, and Windows release details. The original documentation remains in
doc/.
Key features are:
- Basic slicing features & GCode viewer
- Multiple plates management
- Remote control & monitoring
- Explicit Home Assistant printer handover and short-lived local discovery
- Auto-arrange objects
- Auto-orient objects
- Hybrid/Tree/Normal support types, Customized support
- multi-material printing and rich painting tools
- Upstream multi-platform source support; this fork accepts native Windows releases only
- Global/Object/Part level slicing parameters
Other major features are:
- Advanced cooling logic controlling fan speed and dynamic print speed
- Auto brim according to mechanical analysis
- Support arc path(G2/G3)
- Support STEP format
- Assembly & explosion view
- Flushing transition-filament into infill/object during filament change
For a local Release installer, double-click OneClickBuildInstaller.cmd.
Automation and fresh checkouts can use the root build.bat and
build-installer.bat entry points; /s, --silent, or SILENT=1 keeps either
path non-interactive. build.bat leaves a runnable Release payload, while build-installer.bat
produces the unsigned Squirrel.Windows Setup.exe, RELEASES feed, full package, any generated
delta packages, SHA-256 sidecar, and CycloneDX SBOM through the same supported toolchain. Neither
script launches the app or publishes a release.
It detects and installs missing ordinary prerequisites, builds dependencies and Bambu Studio,
stages the payload, and writes Squirrel artifacts under artifacts/windows/squirrel/ plus the
CycloneDX SBOM, SHA-256 checksum, and detailed log under artifacts/windows/. See the
one-click Windows build guide for clean,
bootstrap-only, plan, and explicit post-build install modes.
Use the upstream
Windows compile guide for a
developer build. Non-developers who want a locally compiled build can instead use the installer's
interactive Build from source mode, which
bootstraps the toolchain and runs the same documented build path. The fork's release configuration
is encoded in
.github/workflows/build_bambu.yml and is orchestrated by
.github/workflows/build_all.yml. The release workflow enables
native C++ tests and packages the installed payload with Squirrel.Windows; see the
Windows CI and supply-chain documentation
before treating a local build as equivalent to a published artifact.
You can add an issue to the github tracker if it isn't already present.
Bambu Studio is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
PrusaSlicer is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
Slic3r is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
The bambu networking plugin is based on non-free libraries. It is optional to the Bambu Studio and provides extended networking functionalities for users. By default, after installing Bambu Studio without the networking plugin, you can initiate printing through the SD card after slicing is completed.





























