v0.5.0
- A ground-up rewrite: new custom engine with event-driven rendering and far lower CPU usage
- Themes, cookies, and SQLite-backed storage
- Keyboard navigation, a shortcuts dialog, and interface translations
- JSON highlighting and inline validation, SSE responses, and Markdown documentation
A brand-new foundation: custom engine rewrite
Moonladder's interface was rewritten from scratch on a custom immediate-mode engine written in Odin, replacing the previous Qt/QML front end. Rendering is now event-driven so idle CPU usage drops dramatically, and text handling is much stronger with proper RTL/bidi selection plus a bundled Arabic font. Every existing feature was rebuilt on this foundation.
Keyboard navigation everywhere
Tab and Shift+Tab step through widgets in reading order and the arrow keys move focus spatially to the nearest widget, marked by a visible focus indicator. Landing on a text field makes it immediately typeable, so most of the app can be driven without touching the mouse.
Shortcuts reference dialog
Press Ctrl+/ to open a dialog listing every registered keyboard shortcut, each chord rendered as keycap chips with a description. Chords that behave differently per context list every context on its own line.
Inline JSON validation errors
The JSON body editor now underlines the first lexical or structural error with a red squiggle; hovering shows the message with line and column. Env-var placeholders like {{name}} in value positions are treated as valid since they are substituted before sending.
Server-Sent Events (SSE)
Responses with a text/event-stream content type are now recognized and streamed into the response viewer instead of being treated as ordinary payloads.
JSON syntax highlighting
Request bodies and response bodies now get full JSON syntax highlighting in the editors and the response viewer.
Clearer network error messages
Connection failures now surface detailed error messages from the underlying HTTP library, and all non-OK response codes are handled gracefully instead of failing silently.
Markdown documentation for collections and requests
Collections and requests gained description fields whose Markdown content renders inside the app, making it easy to document endpoints and usage notes right where you work.
Cookie support
Cookies received from responses persist in a per-workspace cookie jar and are sent back automatically. A cookie manager lets you inspect and remove stored cookies at any time.
Option to skip SSL/TLS verification
Requests can now disable certificate verification, useful when testing against self-signed certificates or local development proxies.
Session persistence with crash recovery
Open tabs are saved on exit and restored on launch. If the application crashes, the previous session is recovered on the next start so no work is lost.
Interface translations
The app is now localization-ready, shipping with a complete German translation to start.
New keyboard shortcuts system
Ctrl+Enter sends the current request from the URL field or body editor, Ctrl+L focuses and selects the URL field, Ctrl+Shift+I formats JSON and XML request bodies, and Ctrl+N creates a new collection or environment. All shortcuts now route through a central shortcut system.
Much more efficient response viewer
Very large responses load into a dedicated virtualized viewer that keeps scrolling smooth, CPU and memory usage low
Theme selector
Ten themes are available from a dropdown, moving beyond the single dark look. Editor settings for tab width and spaces-versus-tabs are configurable too.
SQLite-backed storage
Local data moved from JSON files to an SQLite database, with lazy loading of request contents so startup and sidebar browsing stay fast even with large collections.
Live environment variable highlighting hover
Hovering {{variable}} references shows its resolved value.
Authorization polish: override warnings and masked secrets
Headers and query parameters overridden by the authorization tab show a warning icon so conflicts are visible. Basic Auth passwords and Bearer token fields are masked while typing.
Copy requests as cURL
Generate a curl command for any request in a dialog with selectable text and a one-click copy button.
MRU tab switcher
Ctrl+Tab and Ctrl+Shift+Tab cycle recently used tabs in a centered overlay, with robust dismissal so the switcher never gets stuck.
About dialog
Clicking the logo opens an about dialog with license and third-party attribution information.