Skip to content

v0.4.1

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Jul 10:26

apic 0.4.1

A maintenance release on top of 0.4.0. There are no contract format changes and no new commands, so existing 0.4.0 projects keep working untouched and no migration step is needed.

The substance of this release is the eframe/egui 0.35 upgrade behind the desktop GUI, a dependency refresh across the whole workspace, and a higher minimum supported Rust version. If you only use the CLI/TUI (apic), this is a drop-in update with refreshed dependencies underneath.

Desktop GUI moves to eframe/egui 0.35

apic-gui now builds on eframe/egui 0.35, up from 0.33.3, including the Windows-only wgpu (DirectX) renderer feature that lets the GUI launch in driverless environments such as VMs, RDP sessions, and winget's validation sandbox. Getting there meant following three breaking changes in egui:

  • App::update became App::ui. eframe::App no longer exposes update(&mut self, ctx, frame). The GUI implements ui(&mut self, ui, frame) instead, so the root of the application is now a Ui with no margin and no background rather than a Context. Panels attach to that root Ui, while the native file dialogs and the modal dialogs keep operating on the Context, reached through ui.ctx().
  • Panels are unified. TopBottomPanel and SidePanel are replaced by a single egui::Panel type, so the nav bar, the status bar, and the contract sidebar are built with Panel::top, Panel::bottom, and Panel::left. The sidebar's default_width/min_width became default_size/min_size, and nested panels use show in place of show_inside.
  • TextEdit::frame takes a Frame. The old boolean form is gone, so every frameless inline input in the editor (endpoint name, description, URL, response code, response title, table cells, and the JSON editor) now passes egui::Frame::NONE explicitly.

The neon theme survives a light-mode host

egui 0.35 dropped the single global Context::set_style in favour of per-theme styles, which would have let the host OS light/dark preference bleed through and partially override the app's palette. apply_theme now installs the dark monospace neon palette into every theme variant via all_styles_mut, so the GUI looks the same regardless of what the desktop environment reports.

Minimum supported Rust version raised to 1.97

The previous floor was 1.88. The new floor is Rust 1.97, declared uniformly across all three crates (apic-cli, apic-core, and apic-gui), so any toolchain that can build one of them can build the whole workspace.

This only affects building from source. The prebuilt binaries and the packaged builds are unaffected. The README's build-from-source instructions were corrected to state 1.97, having still claimed 1.88.

Dependencies refreshed

Bumped, and pinned down to the patch level so a fresh cargo build resolves the same versions CI tested:

  • clap 4.6.1 to 4.6.4
  • serde 1.0.228 to 1.0.229
  • serde_json 1.0.150 to 1.0.151
  • eframe and egui_extras 0.33 to 0.35

Three dependencies that were previously loose minor requirements now carry explicit patch floors: libc 0.2.189, ratatui 0.30.2, and ratatui-textarea 0.9.2.

Fixed

  • The JSON syntax highlighter clones out of egui_extras' frame cache, matching the 0.35 API and keeping the cached layout job valid for the remainder of the frame.
  • The GUI frame-timing test drives the app through Context::run_ui rather than the removed Context::run, so it now exercises the same root-Ui code path that eframe hands the real application.

Documentation and tooling

  • The apic_core::fuzzy::fuzzy_find example is a real compiled doctest instead of an ignored block, so the documented usage is verified on every test run.
  • The Flatpak packaging guide in packaging/flatpak/README.md was rewritten to match the current update flow.
  • CI and the release workflow use actions/checkout@v5 in place of v4, and the runner images were refreshed.
  • The AUR apic-bin PKGBUILD plus .SRCINFO, and the Copr apic.spec, were synced to the 0.4.0 artifacts and checksums.

Verification

cargo fmt --all --check and cargo clippy --workspace --all-targets -- -D warnings are clean, and the full suite passes: 258 tests across the CLI unit tests, apic-core, the apic-gui render and timing tests, the end-to-end binary tests, and the doctest.

Install

Package managers:

yay -S apic-bin                                    # Arch / CachyOS (AUR), both binaries
sudo dnf copr enable rizukirr/apic && sudo dnf install apic-cli apic-gui
flatpak install io.github.rizukirr.apic            # GUI
winget install rizukirr.apic                       # Windows CLI
winget install rizukirr.apic-gui                   # Windows GUI (MSI)

crates.io:

cargo install apic-cli     # CLI / TUI
cargo install apic-gui     # desktop GUI

Prebuilt binaries are attached below as apic-v0.4.1-<target> and apic-gui-v0.4.1-<target> archives, each with a .sha256 checksum. Targets cover Linux (x86_64, aarch64), macOS (Intel, Apple Silicon), and Windows (x86_64), with the arm64 Linux GUI build being best-effort. Windows GUI users can also take the .msi, which adds a Start menu entry and an uninstaller.

Note that the package-manager recipes are synced to a release after its artifacts are published, so AUR, Copr, Flatpak, and winget may briefly still serve 0.4.0.

Full changelog: v0.4.0...v0.4.1