Skip to content

Releases: Pondworks-lib/frog

Release v0.0.9

26 Mar 22:40

Choose a tag to compare

Release v0.0.9 Pre-release
Pre-release

Focused pre-release aimed at hardening the Frog core ahead of v0.1.0.

Added

  • Structured runtime errors with stable codes FROG201..FROG208.
  • Extended validator coverage with new issue codes FROG011, FROG109, and FROG110.
  • frog.InspectModel(...) plus exported validation report/types for tooling and diagnostics.
  • KeyMap, KeyBinding, and frog.RenderKeyHelp(...) for lightweight in-app key help.
  • frog.NewThrottledRenderer(...) for FPS-capped rendering.
  • Core tests covering renderer behavior, runtime safety, and validator rules.

Changed

  • frog.Run and frog.RunContext now return structured runtime errors for nil models/renderers, panics in Init / View / Update / Cmd, and nil models returned from Update.
  • Renderer diffing now falls back to full repaint when wrapped lines make line-by-line updates unsafe.
  • Full-frame rendering now uses Windows-safe output, fixing multi-line layout drift and stale fragments in wrapped views.
  • Validator now blocks only on real errors; warning-only reports remain available through frog.InspectModel(...).
  • Validator now detects typed-nil models and validates Init() / Update() signatures more strictly.
  • Input and resize delivery are now context-aware, reducing blocked sends during shutdown.
  • Windows VT handling is more robust for both output and input modes.
  • Public docs and exported API comments were cleaned up ahead of release.

Notes

  • ValidateModel(...) is still the default gate in frog.Run(...), but warnings no longer stop app startup.
  • InspectModel(...) is the recommended entry point for tooling, examples, and validator-focused workflows.
  • View() should remain fast and side-effect free; the renderer is now more defensive around multi-line and wrapped content.
  • v0.0.9 is the stabilization pass before the planned v0.1.0 API freeze.

Release v0.0.6

04 Oct 14:46

Choose a tag to compare

Added

  • Runtime Model Validator with stable error codes (FROG001..FROG010, FROG101..FROG108).
  • Colored, structured error output; compact by default, detailed with FROG_VALIDATE_FULL=1.
  • Timeout diagnostics try to include source location (file:line).

Changed

  • frog.Run and frog.RunContext now validate models before starting.
    No need to import any validate package in apps.

Notes

  • View() and Init() are invoked once during validation (guarded & time-limited).
    Keep View() side-effect free and fast.
  • Env controls:
    • FROG_VALIDATE_FULL=1 → detailed sections (Errors/Warnings)
    • FROG_COLOR=on|off (overrides detection)
    • NO_COLOR honored
  • Advanced users can bypass validation via frog.NewApp(...).Run().

Release v0.0.5

03 Oct 19:36

Choose a tag to compare

Features

  • Added mouse support (SGR mode): click, drag, wheel, coordinates with modifiers
  • Added bracketed paste support: safe handling of multiline pasted input

Improvements

  • Improved shutdown process: renderer and terminal state are restored more reliably
  • Refined input parser: better escape sequence handling, UTF-8 decoding, and control byte filtering
  • Introduced new options WithMouse() and WithBracketedPaste() for explicit feature enabling

Breaking Changes

  • PasteMsg now exposes field Text (previously Data)
  • MouseMsg now uses Action and Button instead of Event
  • Examples must be updated accordingly

Upgrade Notes

  • Add frog.WithMouse() to enable mouse support
  • Add frog.WithBracketedPaste() to enable paste support
  • Update code using PasteMsg.Data or MouseMsg.Event to the new fields

Release v0.0.4

02 Oct 23:37

Choose a tag to compare

This release stabilizes the Frog core runtime for both interactive TUIs and non-interactive CLI/CI pipelines.

Highlights

Custom I/O

  • Added WithOut(io.Writer) and WithIn(io.Reader) to redirect output/input.
  • Works seamlessly with files, pipes, or test environments.

Non-interactive mode

  • WithNonInteractive() skips raw mode and input loops.
  • Automatically enabled when output is not a TTY.
  • View is rendered once with ANSI stripped for clean CLI/CI logs.

Context-aware sessions

  • NewAppWithContext and RunContext provide context-bound control and cancellation.

Improved robustness

  • Panic recovery with proper terminal restore.
  • Configurable resize polling interval with WithResizeInterval.
  • Pluggable Logger via WithLogger.

Command system

  • New Batch combinator for running multiple commands sequentially.

Input handling

  • Refactored to work with any io.Reader.
  • Added KeyQ for consistent quit handling.

Renderer

  • Honors NO_COLOR, detects TTY, strips ANSI when needed.

Notes

  • Breaking change: quitting via "q" is now consistently exposed as KeyQ instead of a generic KeyRune.

Release v0.0.3

02 Oct 16:44

Choose a tag to compare

This release introduces color and layout support, making Frog more expressive and professional for building TUIs.

Highlights

Color system

  • Support for ANSI 16, ANSI 256, and TrueColor.
  • Style struct with chaining methods (Fg, Bg, Bolded, Underlined, etc.).
  • Named colors (ColorRed, ColorBrightGreen, …).
  • Colorize helper for quick styled output.
  • StripANSI utility for safe width calculations and plain rendering.

Layout utilities

  • Horizontal and vertical alignment (left, center, right / top, middle, bottom).
  • Center and PlaceBlock helpers to position blocks inside a terminal area.
  • Proper width calculation ignoring ANSI codes.

Renderer improvements

  • Auto-detect color profile (NO_COLOR, COLORTERM, TERM, TTY check).
  • Option to force a specific profile with WithColorProfile.
  • Safe ANSI stripping when colors are disabled.

Input improvements

  • Added KeyQ for quit shortcut.
  • Unified handling of UTF-8, ESC sequences, and Alt-modified keys.

Re-exports in frog.go

  • Color constants and helpers (NewStyle, RGB, ANSI256).
  • Layout helpers (Center, PlaceBlock).
  • Renderer options (WithDiff, WithColorProfile).

Examples

  • example/counter: refined keyboard handling.
  • example/dashboard: mock CPU/RAM dashboard with aligned layout.
  • example/loading: color loading animation with styles.
  • example/progress-static: static gradient progress bar centered on screen.

Notes

This release sets the foundation for professional-grade TUIs with styled text, alignment, and color rendering. Future versions will expand components, widgets, and themes.

Frog v0.0.1 – Initial Pre-Release

02 Oct 12:34

Choose a tag to compare

Overview

This is the initial pre-release of Frog, the core TUI framework developed under the Pondworks organization.
Frog provides the foundation for building modern, reactive terminal user interfaces in Go, following the MUV pattern (Model, Update, View).

Highlights

  • Introduced the Session runtime to manage model lifecycle, rendering, input, and system signals.
  • Added message types (Msg, KeyMsg, TickMsg, QuitMsg, ResizeMsg) for structured event handling.
  • Implemented command utilities:
    • Cmd, Batch, Tick, Quit, Nil
  • Basic ANSI renderer with efficient diff rendering.
  • Input system with raw mode and key event handling.
  • Cross-platform support for enabling ANSI/VT sequences (Windows and Unix).
  • Clean API re-export at the root level (frog.go).

Next Steps

  • Add more widgets and abstractions in the upcoming libraries (lily, pad, splash, ripple).
  • Expand testing and provide official examples.
  • Improve developer documentation.