Livt packages

Eccelerators.Cli

Version 1.4.1

Transport-independent, bounded command-line input, parsing, editing, and output for Livt FPGA applications.

CHANGELOG.md

Changelog

All notable changes to this package are documented here.

1.4.1

Changed

  • Prepare package discovery metadata and publish the README, changelog and license alongside the existing transport-independent CLI components.
  • Update the Livt.IO dependency to 1.8.1.

1.4.0

Added

  • Configurable line and output storage through Cli<LINE_STORAGE, OUTPUT_STORAGE>. Each backend implements IRam<byte>, has a parameterless constructor and provides at least 64 bytes. Consumers can select inferred RAM or a custom logic-array backend.
  • Storage parameters on CliParser, CliOutput and CommandDispatcher, with independent line/output stores and matching dispatcher configuration.
  • Storage-backend regressions covering initialized data, capacity, wraparound and clear behavior, plus argument-index and offset boundary cases.

Changed

  • Default scheduled CLI buffers to Ram<byte, 64, MemoryStyle.Block>. Logical lengths guard reads, so initialization and clear do not require zeroed memory cells. Storage style remains a synthesis hint.
  • Document storage selection and ownership alongside transport integration.

Fixed

  • Validate argument indices before adding the command-token offset, preventing signed overflow for large indices. Retain a bounded token index for hardware addressing. Invalid argument lengths and bytes return zero.

Compatibility and dependencies

  • Ordinary Cli construction continues to use default generic parameters. Consumers choosing custom storage must use matching types in their dispatcher and any command handlers that borrow the CLI.
  • Read public constants through the configured instance, such as output.BUFFER_SIZE, when adapting type-qualified access to generic components.
  • CompactCli retains its asynchronous line storage and streaming output behavior. Command capacities, parsing rules and output backpressure are unchanged.
  • Continue to depend on Livt.IO 1.2.0; no new package dependency is required.

1.3.0

  • Add optional ICommand, ICommandRegistry, CommandRegistration and CommandDispatcher for constructor-registered command handlers.
  • Preserve first-match priority under output backpressure and centralize command completion after successful response acceptance.
  • Let applications supply their own fallback, including an empty registry.
  • Document command implementation, ownership and registration with an example.
  • Test ordered dispatch, retries, idle dispatch, prompts and custom fallback independently of UART timing.
  • Keep the existing Cli and CompactCli APIs and the Livt.IO 1.2.0 dependency unchanged; the command pattern is optional.

1.2.0

  • Depend on Livt.IO 1.2.0.
  • Migrate parser and output buffers to DistributedRam<byte, 64> and compact terminal storage to AsynchronousDistributedRam8x64 with explicit port wiring.
  • Preserve write-before-read semantics without requiring zero-filled memory.
  • Verify buffered UART byte handoff, transmit backpressure and loopback input through the current Try-operation API.
  • Register the compact echo regression and update transport integration examples.

1.1.0 - 2026-08-30

  • Add CompactCli, a free-text terminal with a distributed 64-byte line buffer, optional echo and backpressured streaming output for constrained FPGA applications.
  • Add opt-in free-text lines and complete raw-line byte access while preserving strict excessive-argument rejection by default.

1.0.0 - 2026-08-26

  • Add a transport-independent, bounded FPGA command-line interface.
  • Support CR, LF, CRLF, backspace, delete, optional echo, and prompts.
  • Parse one command and up to eight whitespace-separated arguments.
  • Provide atomic output writes and explicit transport backpressure.
  • Use a 64-byte output FIFO suitable for resource-constrained FPGAs.
  • Store the command line only once and use byte-wide bounded counters and token spans to reduce synthesized state and arithmetic width.
  • Store the parser line and output FIFO in separate Livt.IO.Ram components to reduce LUT and flip-flop usage.
  • Cover disabled echo, input backpressure, failed atomic line writes, and full FIFO wraparound ordering in the test suite.