Skip to content

Releases: Blackshield-Company/openshield

OpenShield v1.2.1

Choose a tag to compare

@synthalorian synthalorian released this 18 Oct 01:22
bcaf73f

OpenShield v1.2.1: reduced motion for the knight. The terminal knight can now hold a still frame (the first frame of its current state) instead of animating. Turn it on with reduced_motion = true in config.toml, by setting NO_MOTION or REDUCE_MOTION, or at runtime with /motion off (/motion on brings the animation back, /motion toggle flips it, /motion shows the setting; the choice is saved). With this, every OpenShield app respects reduced motion: the desktop app and the browser extension already show a still knight under prefers-reduced-motion.

OpenShield v1.2.0

Choose a tag to compare

@synthalorian synthalorian released this 17 Oct 01:35
5da6a42

OpenShield 1.2.0 brings the Black Steel look to the terminal: a new brand system, a cleaner launch screen, and a redrawn knight with animation states.

Highlights

Black Steel look

The TUI theme and launch screen use the new Black Steel palette: dark steel surfaces, warm off-white text and a crimson accent. The brand system (shield, wordmark and design tokens) lives in docs/brand and is shared with OpenShield Desktop and the browser extension.

Shield launch screen

OpenShield now opens on the Black Steel shield beside the wordmark. There is no "Press any key to start" step anymore: the first character you type goes straight into the prompt.

The knight, on demand

The knight is still there when you want it:

  • Run /sprite to list available sprites, and /sprite blackshield-mercenary to switch to the knight.
  • Or set sprite = "blackshield-mercenary" in config.toml.

Configs that already set sprite keep their choice.

Knight animations

The blackshield-mercenary knight is redrawn in truecolor half-blocks (great helm, crimson cloak, longsword and a heater shield) and now has animation states: idle, thinking, working, success and error. The launch screen picks the state from what the agent is doing. Custom sprite files can define the same states with ---state:<name>--- markers; files without markers still load as a single idle animation.

In OpenShield Desktop and the browser extension, the knight animations respect your system's reduced-motion setting and show a still image instead.

Web terminal demo

openshield demo serves the full TUI in a browser terminal against a built-in mock model, with an isolated config and no API keys. openshield mock-provider runs only the mock OpenAI-compatible API. The demo terminal has no authentication; keep it on loopback unless the host is sandboxed.

Security

  • Updated vulnerable crates in Cargo.lock, including rustls 0.23.46.

Install

curl -fsSL https://raw.githubusercontent.com/Blackshield-Company/openshield/main/install.sh | bash

Or download the archive for your platform below and verify it against SHA256SUMS. Prebuilt binaries are provided for Linux (x86_64, aarch64), macOS (x86_64, arm64) and Windows (x86_64).

Full changelog: v1.1.1...v1.2.0

OpenShield v1.1.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 04:05
e47fb86

Security

  • Serve auth — Bearer token is now required on every openshield serve request, including loopback binds. CORS is an allowlist (Tauri and localhost origins, plus [desktop] allowed_origins). Host is validated against loopback names, the bind address, the LAN address on wildcard binds, and [desktop] allowed_hosts (DNS rebinding). Token comparison is constant-time. POST /api/v1/pair requires the master token, is limited to 5 requests per 60s, and stores at most 32 pairing tokens.

Changed

  • Clients must send the token — Desktop reads ~/.config/openshield/desktop.token. HTTP requests use Authorization: Bearer. WebSocket upgrades may pass ?token= because browsers cannot set headers on the handshake.

OpenShield v1.1.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 03:25

Release engineering

  • Prebuilt binaries — Release workflow builds Linux x86_64/aarch64, macOS x86_64/arm64 and Windows x86_64 archives on every v* tag, with per-asset .sha256 files and an aggregate SHA256SUMS.
  • Installer — install.sh now installs from Blackshield-Company/openshield: downloads the release binary for your OS/arch, verifies the checksum, and falls back to cargo install --git. Supports OPENSHIELD_VERSION, BIN_DIR, OPENSHIELD_FROM_SOURCE and DRY_RUN.
  • CI — rustfmt, clippy (-D warnings), shellcheck and tests on Ubuntu, macOS and Windows.
  • Tests — Integration tests for the agent plan/execute/verify loop against a mocked OpenAI-compatible provider, the tool approval gate, and the SQLite memory store and search.
  • SECURITY.md — Vulnerability reporting policy.

Fixed

  • License metadata — README badge and Cargo.toml now say Apache-2.0, matching LICENSE (previously mislabelled MIT).
  • Repository links — README, Cargo.toml and the installer point at Blackshield-Company/openshield.

Added

  • Command Palette — Fuzzy-searchable command overlay triggered by Ctrl+P or typing / in input. 16 commands with keyboard navigation (↑/↓, Enter to execute, Esc to close, Backspace to filter).
  • Session Bookmarks / Checkpoints — Save and restore named session checkpoints. Ctrl+Shift+B toggles the bookmark manager. Ctrl+N to create, Enter to load, Esc to close. Persistent per-session JSON storage.
  • Inline Image Display — Rich metadata indicators for pasted/attached images: format (PNG/JPEG/GIF/WebP/BMP), dimensions, file size. ASCII art placeholder boxes rendered in chat area.
  • Streaming Markdown Renderer — Inline markdown parsing for assistant messages: bold, italic, code, links, strikethrough. Applied to all non-code-block content in real-time.
  • Connection Pooling — reqwest client with pool_max_idle_per_host(10), TCP keepalive, 15s connect timeout, HTTP/2 support. Reduces connection overhead for repeated API calls.
  • Async Cache Persistence — Cache set() now spawns disk write via tokio::spawn, eliminating synchronous fs blocking on the hot path.
  • Cache Key Optimization — Eliminated double JSON serialization in chat_stream by reusing build_chat_body() output for cache keys.

Changed

  • Compiler warnings — 40 → 0. Systematic cleanup across all modules.
  • Test count — 337 → 363 tests (added image_display dimension detection, format indicator, ASCII placeholder, human_size tests).

Fixed

  • Test compilation — Added missing keybindings field to all test Config struct initializers (config, router, self_improve modules).