Skip to content

chore(deps): upgrade eframe/egui 0.33 to 0.35 - #69

Merged
rizukirr merged 1 commit into
mainfrom
chore/egui-0.35
Jul 24, 2026
Merged

chore(deps): upgrade eframe/egui 0.33 to 0.35#69
rizukirr merged 1 commit into
mainfrom
chore/egui-0.35

Conversation

@rizukirr

Copy link
Copy Markdown
Owner

What

Upgrades eframe and egui_extras from 0.33 to 0.35 and ports the GUI to the new egui API.

Because 0.35 requires Rust 1.92, the workspace MSRV moves from 1.88 to 1.92.

egui 0.35 API changes ported

  • eframe::App::update(ctx) becomes App::ui(ui). The root now hands a Ui instead of a Context, so the panel methods take a Ui and reach the Context via ui.ctx() for the modals and file dialogs.
  • TopBottomPanel and SidePanel are unified into Panel (Panel::top, Panel::bottom, Panel::left), show(ui, ..) replaces show(ctx, ..), and default_width/min_width become default_size/min_size.
  • TextEdit::frame now takes a Frame, so the frameless inputs use Frame::NONE. The Button::frame(bool) call is unchanged.
  • ctx.style() / set_style() are gone. theme.rs uses all_styles_mut so the dark palette holds across theme variants, and the modal window frames use style_of(ctx.theme()).
  • The memoized highlight cache get() now returns a reference, so the result is cloned.
  • The repaint-convergence test drives the panels through Context::run_ui, which yields a root Ui like the real frame (Context::run was removed).

Verification

  • cargo build --workspace: clean
  • cargo clippy --workspace --all-targets -- -D warnings: clean
  • cargo fmt --all --check: clean
  • cargo test --workspace: 119 passed, 0 failed

Not yet verified: the rendered UI (panel sizing, frameless inputs, forced-dark theme) needs a real window to eyeball.

Follow-up

The MSRV bump to 1.92 means the AUR, Flatpak, and CI build environments need Rust >= 1.92 before this ships.

Bumps eframe and egui_extras to 0.35, which requires Rust 1.92, so the
workspace MSRV moves from 1.88 to 1.92.

Ports the GUI to the egui 0.35 API:

- eframe::App::update(ctx) becomes App::ui(ui); the root now hands a Ui
  instead of a Context, so the panel methods take a Ui and reach the
  Context via ui.ctx() for the modals and file dialogs.
- TopBottomPanel and SidePanel are unified into Panel (Panel::top,
  Panel::bottom, Panel::left), show(ui, ..) replaces show(ctx, ..), and
  default_width/min_width become default_size/min_size.
- TextEdit::frame now takes a Frame, so the frameless inputs use
  Frame::NONE (the Button frame(bool) call is unchanged).
- ctx.style()/set_style() are gone: theme.rs uses all_styles_mut so the
  dark palette holds across theme variants, and the modal window frames
  use style_of(ctx.theme()).
- The memoized highlight cache get() now returns a reference, so the
  result is cloned.
- The repaint-convergence test drives the panels through Context::run_ui,
  which yields a root Ui like the real frame (Context::run was removed).

fmt, clippy -D warnings, and the full test suite pass.
@rizukirr
rizukirr merged commit 3b4f5bc into main Jul 24, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant