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::updatebecameApp::ui.eframe::Appno longer exposesupdate(&mut self, ctx, frame). The GUI implementsui(&mut self, ui, frame)instead, so the root of the application is now aUiwith no margin and no background rather than aContext. Panels attach to that rootUi, while the native file dialogs and the modal dialogs keep operating on theContext, reached throughui.ctx().- Panels are unified.
TopBottomPanelandSidePanelare replaced by a singleegui::Paneltype, so the nav bar, the status bar, and the contract sidebar are built withPanel::top,Panel::bottom, andPanel::left. The sidebar'sdefault_width/min_widthbecamedefault_size/min_size, and nested panels useshowin place ofshow_inside. TextEdit::frametakes aFrame. 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 passesegui::Frame::NONEexplicitly.
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:
clap4.6.1 to 4.6.4serde1.0.228 to 1.0.229serde_json1.0.150 to 1.0.151eframeandegui_extras0.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_uirather than the removedContext::run, so it now exercises the same root-Uicode path that eframe hands the real application.
Documentation and tooling
- The
apic_core::fuzzy::fuzzy_findexample 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.mdwas rewritten to match the current update flow. - CI and the release workflow use
actions/checkout@v5in place ofv4, and the runner images were refreshed. - The AUR
apic-binPKGBUILD plus.SRCINFO, and the Coprapic.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 GUIPrebuilt 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