Aquí hi ha 5 versions d’apic-gui, des de 7 de juliol del 2026 fins a l’actual, 0.5.1. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 0.5.1Darrera versió | 27 d’agost del 2026 | — | 64 bits MSI |
| 0.5.0 | 25 d’agost del 2026 | — | 64 bits MSI Notes de la versióThe desktop GUI gains a git panel. The CLI, the TUI and the contract format are unchanged, so existing projects need no migration and nothing has to be updated to keep working.
## Git panel in the desktop GUI
A second sidebar tab, next to Explorer, that appears when the project sits inside a git repository. It shells out to your own `git`, so hooks, credential helpers and config behave exactly as they do in a terminal.
**Status and staging.** Changed files listed under `CONFLICTS`, `STAGED` and `UNSTAGED`, nested by folder like the Explorer tree, scoped to your contract working directory plus `.apic/`. Changes elsewhere in the repository are counted on a line you can expand rather than hidden. Stage, unstage and discard with `+`, `-` and `x` on any file or folder, then commit. Discard is offered for tracked files only and always names what it will revert.
**Diffs.** Selecting a file shows it whole with changed lines coloured. A toggle switches to a field-level summary that names each changed field and its old and new value, which is the better view for a schema change buried in a large contract.
**Branches.** A dropdown lists every local branch. Picking one checks it out, `+` creates one, `x` deletes one behind a confirmation. Deleting is never forced, so git's refusal to drop unmerged work is surfaced rather than overridden. A checkout is refused while a contract has unsaved edits, and after a successful switch the open contract is reloaded from the new branch or closed if it does not exist there.
**Conflict resolution.** A conflicted file opens a resolver:each conflict block in file order with both sides shown, and `Accept ours`, `Accept theirs` or `Accept both` per block. A live preview shows the resulting file as you choose. Nothing is written until Resolve, which stays disabled until every block is decided, then writes the file and stages it.
Not included:merge, pull, fetch, rebase, stash and remote branches.
## Under the hood
`apic-gui` was restructured into `app`, `features` and `ui` layers. `main.rs` was split into app modules, `ContractsState` and `ShellState` were extracted from `App`, panel frames moved into a shell, and the widget and theme modules were split into components, focus, colours, spacing and typography.
A suite of git wiring tests was added, driving a real `App` against a real temporary repository with no rendering. It caught several defects that unit tests on individual functions could not, including one that only appeared on macOS.
Dependencies are on their latest stable versions, including eframe and egui 0.36.
## Fixed
• Scope paths are resolved through symlinks before comparison, closing a case where a symlinked directory made the git panel treat in-scope files as out of scope.
• Unstaging an untracked file works correctly, instead of leaving it staged.
## Install
Prebuilt binaries for Linux, macOS and Windows are attached below, each with a `.sha256`. The desktop GUI ships as a Windows MSI and a macOS `.app` bundle. See the README for package manager options. |
| 0.4.1 | 30 de juliol del 2026 | — | 64 bits MSI Notes de la versió## 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 refr |
| 0.4.0 | 6 de juliol del 2026 | — | 64 bits MSI Notes de la versióA large release: a simplified, breaking contract format plus full redesigns of both the TUI and the desktop GUI editors around it.
Changed
- Contract format (breaking). The request URL is now a single free-form string ("url": "https://api.example.com/v1/users/{id}") with inline {name} path tokens, replacing the old structured URL object. Query parameters are { name, value, description, required }, both query parameters and headers gain a required flag, and each response can carry its own headers. A request body is the raw JSON payload written directly under request, and a response body is written under the response's schema key. The old type/schema field-level model and the { "example": ... } body wrapper are gone.
- User-facing messages use commas instead of semicolons and em-dashes.
- TUI editing, redesigned. The endpoint header is one inline-editable METHOD url line; the method is chosen from a picker popup instead of cycling. QUERY and HEADERS are NAME/VALUE(/DESCRIPTION) tables. RESPONSE is a code - title tab strip: a opens a Status / Short Description form and then the JSON editor, e edits a tab's status/title (or opens the editor on its body), and d removes a response. The JSON editor saves with Ctrl-S, cancels with Esc, and pretty-prints with Ctrl-P; saving an empty body removes its response.
- Desktop GUI, redesigned. A single tabbed editor (Overview, Headers, Query, Request, Response) with a line-numbered JSON editor, metadata tables carrying a Required/Optional chip, editable response-code tabs, frameless inline inputs, and a calmer green theme.
Added
- The HTTP method is selected from a dropdown in the GUI (and a picker popup in the TUI) listing all methods, rather than cycling one click at a time.
- A required flag on request headers and query parameters, surfaced across the CLI/TUI/GUI, the Postman converter, and the project template.
- Response-level headers, editable in both the TUI and the GUI.
- apic convert --postman gains a --force flag to overwrite contracts thatalready exist. The default still refuses (erroring on an existing file), and the error now points to --force.
- Refreshed bundled example/ project (authentication/ and profile/ sets).
Removed
- The structured body schema, type, field schema, typed fields, properties, file/accept parts, and object[] array bodies, along with the structured URL object. Request and response bodies are now raw JSON payloads (the request written directly under request, a response under schema).
- apic read --example (bodies are already example-only) and the TUI schema generate/infer keys, which no longer have a schema to operate on.
Fixed
- GUI: the sidebar method badge now refreshes when a contract is saved.
- GUI: warn when installing a per-user launcher entry would duplicate an existing system-wide apic entry.
- TUI: numerous editing-correctness fixes (method focus on the url line, modal key handling after close, selected response-tab text color, empty-row cleanup).
- Windows: statically link the MSVC CRT so binaries run without VCRedist, and install apic-gui.exe at the MSI root so winget resolves the executable. |
| 0.3.6 | 7 de juliol del 2026 | — | 64 bits MSI |