Utils

HOOK

A graphical HTTP/HTTPS API client built on the Nilorea C Library.
Local-first. No cloud. No account. Git-native.

Click here to download installer

Features

  • Documentation
  • HTTP/HTTPS request editor with method, URL, headers, params, body, auth
  • Body types: none, raw, JSON, form-urlencoded, GraphQL, multipart (file upload)
  • Auth types: none, bearer, basic, API key, OAuth2 client credentials, digest
  • All auth fields support {{template}} variable expansion from environments
  • Tabbed request editor: Params, Headers, Body, Auth, Scripts, Settings
  • Tree-based collection editing in both the sidebar and the Collection
  • popup: add / rename / delete folders at any depth, add / delete / replace
  • requests
  • Save in Collection popup: pick a folder destination (Save = append) or
  • an existing request leaf (Replace = overwrite the slot in place), with
  • in-memory folder management before commit
  • Every destructive action (delete, replace, overwrite) surfaces a confirm
  • dialog naming the specific target; rename collisions are refused
  • case-insensitively with a statusbar message
  • GraphQL editor: separate query, variables, and operation name fields
  • Response viewer: status, elapsed time, body size, headers, pretty-printed JSON
  • Response search: find text in body/headers/log with Next/Prev and wrap-around
  • Save response body to file
  • Response diff between two sequential responses
  • Collection management: nested folders, requests, save/save as/load/delete as JSON
  • All request settings serialized per-request in collections (auth, timeouts,
  • redirects, retries, compression, user-agent, scripts, TLS, proxy)
  • Environment variables with {{varname}} template expansion, delete with confirmation
  • Template precedence: environment overrides collection base_url
  • Collection runner with parallel execution (recursive through subfolders)
  • Import from Postman Collection v2.1, Bruno .bru format, and Bruno OpenCollection YAML
  • Bruno .bru and YAML directory import recurses into subdirectories
  • Bulk import: directory of collection or environment JSON files
  • curl command export and curl subprocess backend
  • Follow redirects with configurable max redirects
  • Connect timeout, request timeout, retry on failure/5xx
  • Gzip/deflate compression (request + auto-decompress response)
  • User-Agent presets: user-agents/ directory with JSON presets, toolbar selector
  • Cookie jar: domain-aware cookie storage with Set-Cookie parsing
  • WebSocket client popup: connect, send/receive messages, disconnect
  • Server-Sent Events (SSE) streaming viewer
  • Mock HTTP server with JSON route configuration
  • JavaScript scripting engine (QuickJS ES2023) with hk.* API
  • Pre-request, pre-auth, and post-request script hooks
  • hk.test() and hk.expect() assertion framework
  • Postman pm.* and Bruno bru.* script converter
  • Git integration: status, stage, commit, log, diff, restore, branches, push, pull
  • Git per-file: Stage, Unstage, Reset File, Reset Dir, Reset All with confirmation
  • Git auto-stage and auto-commit on collection/environment save
  • Git watches only: collections/, environments/, mock-routes/, scripts/, user-agents/
  • Git remote: push/pull with token, basic, or SSH key authentication
  • Git toolbar button color reflects status: green (clean), orange (dirty), blue (ahead), red (error)
  • Git periodic pull check with configurable interval (0-180 min slider)
  • Git behind-remote indicator in center statusbar
  • Proxy: HTTP, HTTPS, and SOCKS5 proxy, CONNECT tunneling, no_proxy list, per-request override
  • TLS: system CA auto-detection, custom CA files, skip-verify, client cert (mTLS)
  • Windows CryptoAPI certificate store integration
  • Activity log: in-app request/response/script event log with Log tab
  • Activity log: Clear, AutoScroll, Save log to file
  • Curl command and network errors (DNS, TLS) displayed in log
  • Adaptive resize: windows and widgets scale proportionally on display resize
  • Configuration persistence: hook.conf (JSON, auto-loaded/saved)
  • History saves full request snapshot (all settings restored on click)
  • CLI mode for headless automation and CI

Sketchr

A cross-platform sketching / painting application written in C (C11) using
Allegro 5 and the nilorea-library. Inspired by the core experience of
Autodesk SketchBook: layers, brushes, pan/zoom/rotate canvas navigation,
a hideable UI and a triggerable grid overlay.

Try is online : click here

Features

  • Workspace canvas: a large square canvas (default 4096×4096, presets
    16384..512 plus a custom size, clamped to the GPU limit) shown at 1:1 and
    centered, so the drawing area fills the window at any aspect. Window
    resizes keep the zoom/rotation and re-center.
  • Navigation: pan, zoom-about-cursor, and rotate (Ctrl+wheel on desktop,
    two-finger pinch / rotate / pan on touch). Optional software palm rejection keeps a resting palm (a second contact during a stroke) from
    hijacking the canvas.
  • Brushes: round, square, two chisels (left / right), flat, diamond and spray tips with size / hardness /
    flow / per-stroke opacity, an eraser, and presets that pick their natural
    tip (Pencil, Ink, Airbrush = particle spray, Marker = chisel), each with
    its own icon and a live tip preview. Premultiplied-alpha pipeline with a
    per-stroke accumulation buffer. Optional pressure-from-speed (slow strokes
    press hard, fast strokes ease off; scales flow only).
  • Shapes: a straight-line tool (press / drag / release with a live
    preview) plus rectangle, circle, triangle, star, pentagon, hexagon and
    arrow – outline or filled – rendered
    in the current color and placed as a movable / scalable / rotatable float,
    right in the Tools fold. With grid snap on, placed shapes size to whole
    grid cells and their center (and moves / resizes of any selection) pins to
    the grid.
  • Text: type a multiline annotation, pick a bundled font (Sans / Serif /
    Mono / Bold) and size, then place / scale / rotate it in the current color.
  • Templates: procedural drawing-helper guides drawn under the layers –
    ruled paper, grids, dots, isometric, hexagon, one-point perspective,
    day / weekly / monthly planners, to-do, calendar, storyboard, music sheet,
    sketching guide and more – selected per document and optionally included in
    the PNG export.
  • Symmetry: optional drawing symmetry that mirrors every brush dab live –
    across the vertical axis (X), the horizontal axis (Y), both (XY), or a
    radial fan – with an on-canvas guide overlay. Placed shapes and text bake
    their symmetry copies at commit too.
  • Fill tools: flood fill (tolerance) and a linear gradient fill.
  • Layers: add / delete / reorder / rename, per-layer opacity, visibility,
    lock, and blend modes (normal / multiply / screen / add); each list row
    carries a filled / open dot showing its visibility. Tile-based undo/redo. The
    right panel is its own accordion – Layers (list + operations + clear +
    rename), Template, and Canvas (grid / magnet-snap / diagonals / cell size) –
    with persisted fold states.
  • Color: custom color palettes (built-in presets + user-defined,
    persisted; rename / reset / remove behind one Manage popup) feeding an
    8-swatch palette with a single selection
    marker (a swatch or the custom-color chip); an R/G/B/A picker so a color
    carries its own transparency (combined with the brush opacity on the layer);
    the chip and picker preview show transparency over a checkerboard.
  • Grid + snapping: triggerable overlay with configurable spacing and a
    dimmer minor lattice; optional snap. Snapped strokes draw as decided
    straight segments (8-way, diagonals included) with a live preview line.
    Diagonal hatching works on its own, with the main grid off; selections,
    marquees and placed shapes snap too (half-step lattice for centers).
  • Persistence: native .skr documents (layers, blend modes, lock,
    template) with custom filenames – a system file chooser on desktop, an
    in-app name popup + saved-sketch list on Android, browser download / file
    picker on the web; Ctrl+S saves. Export to PNG with a Displayed-area or
    Full-drawing crop, a configurable border, and an optional template. Android
    writes to a public Documents/Sketchr folder that survives uninstall.
  • Touch-first toolbar: one uniform accordion – an Actions section of
    finger-sized (40 px) icon buttons (undo / redo, brush / eraser / select,
    cut / copy / paste) on top, then Tools (presets, tip, shapes, fill /
    gradient / lasso / text), Color, Brush, Symmetry, File and Settings. The
    collapse arrow and a crossed-eye Hide-UI button sit on the Actions header
    row. Everything is iconified where a pictogram is clearer than a word
    (procedurally drawn, theme-colored), with translated hover tooltips
    explaining every icon.
  • Session persistence: every option set in a session – active tool, brush
    settings and color, grid / snap / diagonals, symmetry, fold states, panel
    width, export and text preferences, language – is saved on exit (and on
    Android backgrounding) and restored at the next launch, plus the n_gui
    window layout as JSON on desktop / web.
  • DPI-aware UI: on Android the toolbar, text and touch targets scale to
    the screen density (read via JNI) so the interface stays readable on a
    high-density phone without ballooning on a tablet; an Interface size
    setting (Small / Normal / Large / Huge) nudges it per device. Desktop and
    web keep the reference 1.0.
  • Settings: a Settings fold (pressure-from-speed, palm rejection,
    language, interface size) that is auto-saved and reloaded on every
    platform.
  • Four languages: English, French, Spanish and German cover the whole UI,
    including the in-app help. A first-run popup asks for your language; the
    Settings fold switches it live. Translations live in plain UTF-8
    lang/*.txt files (regenerated into the binary by gen_lang.py), so adding
    or fixing a language needs no code change.
  • Hideable UI for a clean full-canvas view; Android runs fullscreen and
    landscape. Both the toolbar and the layer panel collapse to a thin edge tab
    (a < / > button) to free up canvas space. Help and Exit buttons at
    the bottom of the toolbar open a tabbed in-app reference (every tool, button,
    shortcut and gesture) and a quit confirmation (handy on touch / web).