Releases: niklas-heer/quirl
Releases · niklas-heer/quirl
Release list
v0.1.0
Immutable
release. Only release title and notes can be modified.
Quirl 0.1.0
Added
- A native C1-core command graph on Linux and macOS with byte pipelines,
redirects, boolean lists, bounded expansions, background jobs, and job
control. - An explicit typed-data mode, shared semantic catalog, completion and picker
surfaces, durable history, generated documentation, and a stdio language
server. - One sandboxed Lua 5.4 SDK for configuration, scripts, prompt segments,
completions, tests, and trusted in-process plugins. - Permission-locked plugin packages, typed extension events, live views,
recovery records, bounded out-of-process adapter initialization, and typed
trusted-Lua plugin command dispatch. - Plain, Unicode, and opt-in Nerd Font prompt profiles with
NO_COLORand
TERM=dumbfallbacks. - A Ratatui inline surface selected by default on capable TTYs, with a
Quirl-owned editor, context and status rows, syntax highlighting, advisory
diagnostics, documented completion, typed overlays, autosuggestions, and
transient prompts that preserve normal scrollback and PTY handoff. - Reproducible performance gates, a text-only product tour, and a real-PTY demo
recipe for release review. - A repository-local Cargo
xtaskwith typed check, test, SDK, demo, and
release commands; no separate task-runner installation is required. - Bounded seeded native C1 generation with reproducible differential comparison
against available Bash and Zsh reference shells. getandwherecell paths accept a non-negative integer segment to index
into lists (get items.0.name) and may end with a trailing?to make the
path optional, returningNothing(forget) or a non-match (forwhere)
instead of failing when a field or index is absent.
Security
- Lua VMs enforce memory, instruction, deadline, and cancellation policies and
expose only a restricted standard library. - Plugin sources are integrity checked and receive only their locked grants;
isolated adapters have exact launch grants, deadlines, output bounds, and
process-tree containment. - Terminal-derived and extension-derived text is sanitized before rendering.
Changed
- The capable-TTY default is now the rich Ratatui inline frame. Reedline remains
the explicit and automatic simple-terminal fallback; its removal is not part
of this change. - Advanced the release-candidate config contract to v4. It retains v3's
validated shared semantic themes, changes the polished defaults to a compact
welcome banner, automatic completion after one character, and an active Rust
toolchain right-prompt segment, and deterministically migrates unversioned v0
plus explicit v1/v2/v3 configurations before validation. Future versions
fail closed. - Added a release-only website gate with non-mutating generated-mirror
freshness, semantic release-evidence attribution, lint, route type checking,
and a production build. It uses the exactwebsite/package-lock.json
dependency graph and is not part of narrow Rust-only checks. - Runtime assets now use an exact-version website channel with immutable,
content-addressed payloads and per-asset provenance. Completion knowledge can
be refreshed independently of binary releases while retaining the compatible
command model, required license notice, the previous valid local generation,
and strict binary-version, size, format, and SHA-256 admission checks. Recordis now an insertion-ordered mapping instead of an alphabetized one:
selectemits fields in the requested order and table rendering unions
columns across rows in first-seen order, instead of both always sorting
columns alphabetically.wherenow fails with a diagnostic when a row does not have a field named
in its predicate, instead of silently treating the row as a non-match; use
the new?optional-path marker to opt back into tolerant matching.quirl config webno longer requires an explicit<file>argument; omitting
it defaults to the discoveredconfig.lua(QUIRL_CONFIG_DIR,
XDG_CONFIG_HOME, or~/.config/quirl), matching the resolution the shell
already uses at startup.- Typing a
quirlCLI-only subcommand name (config,plugin,catalog,
sdk) or a barequirldirectly in the interactive shell now fails with a
specific hint instead of a generic "not found on PATH" message. - The rich surface now tails bounded stdout and stderr while a foreground
command runs. Its input row shows a dimmed animated spinner instead of the
prompt indicator, silent commands still repaint elapsed time on liveness
ticks, and carriage-return progress updates replace their live line rather
than filling the transcript.
Known limitations
- Interactive 0.1 support targets Linux and macOS. Windows remains a
best-effort portability target without native terminal validation. - Here-documents, process substitution, loops, functions, conditionals, and
dialect control forms require an explicit Bash or Zsh island. - Wasm components are validated but not executed, and publishing remains a
local dry-run workflow rather than a remote registry. - The rich and Reedline editor cores intentionally coexist. Rich-keymap parity
and a replacement minimal fallback are required before Reedline can be
removed. - Native JSON literals and
from jsonstill normalize field order to
serde_json's default (alphabetical) parse order; enabling its
preserve_orderfeature to carry source JSON field order all the way
through is a separate, wider-blast-radius change affecting every
serde_json::Valueconsumer in the workspace, not yet made.
Release evidence status — historical. Artifact evidence for measured candidate
23fd5d36907fc816bdafd9aa3c2dcb3afb69feb5and artifact9a893a5f1a0b49d62712f331c88966113d910d94efa9651dc4feffe9fd55b637is historical.
Evidence commit14e70939d039d96c195f57452a0e1ec3928194afdocuments that measurement. It is evidence only for that named artifact, not for a later candidate.
This historical record does not assert the release-readiness or human-review state of a later candidate.