Skip to main content

March 2026

CLI v1.2.0 with merge/diff GUI, docs MDX pipeline overhaul, vim keyboard engine modules, and version release across all packages.

CLI v1.2.0 -- Merge and Diff GUI feat

Major overhaul of @gentleduck/cli with an interactive terminal UI for resolving merge conflicts and reviewing diffs.

  • Interactive merge GUI with three-way conflict resolution and syntax highlighting
  • Side-by-side diff viewer for comparing component versions
  • Color-coded conflict markers (green = ours, blue = theirs, yellow = base)
  • Figlet ASCII banner and dynamic terminal resize handling
  • New update, remove, and diff commands with monorepo workspace support
  • --verbose flag for detailed logging output

Architecture Refactor

  • Replaced axios with native fetch API across all HTTP operations
  • Split monolithic merge-screen into separate workflow and keyboard hook modules
  • Split monolithic diff-screen into separate workflow and keyboard hook modules
  • Extracted shared utilities (formatting helpers, ANSI constants, type definitions)
  • Consolidated scattered type definitions into centralized modules

Infrastructure

  • Fixed tsconfig module resolution (module: esnext, moduleResolution: bundler)
  • Synced local registry schema with canonical @gentleduck/registers source
  • Added comprehensive vitest test suite with 170 tests across unit, integration, and e2e
  • Added JSDoc documentation and inline comments throughout the codebase

See the CLI docs for usage examples.


Docs MDX Pipeline Overhaul feat

Refactored the @gentleduck/docs MDX rendering pipeline for better maintainability.

  • Split MDX styles into layered CSS files for modular theming
  • Decomposed MDX runtime and type plugin metadata into separate modules
  • Improved mermaid block rendering and callout icon support
  • Added bun-based MDX regression tests and docs architecture tests

Vim Keyboard Engine Modules feat

Added a full keyboard input processing pipeline to @gentleduck/vim.

  • Platform module for OS-aware modifier key handling
  • Parser module for normalizing raw keyboard events into structured key objects
  • Matcher module for comparing parsed keys against registered bindings
  • Format module for human-readable key combination display strings
  • Sequence module for multi-key chord and sequence matching
  • Recorder module for capturing and replaying key input sessions
  • useVim and useKeySequence React hooks for declarative keybinding
  • Enhanced KeyProvider with context-based registration and conflict detection

Motion Design Tokens Update feat

Expanded @gentleduck/motion with design tokens and accessibility support.

  • Added motion design tokens for consistent animation duration, easing, and spring values
  • Added reduced-motion helper utilities for prefers-reduced-motion media query support
  • Centralized reduced-motion styles via shared helpers
  • Removed unused AnimPopoverArrowVariants

Version Release chore

Published new versions across all packages:

PackageVersionType
@gentleduck/cli1.2.0minor
@gentleduck/registers0.3.0minor
@gentleduck/primitives0.2.1patch
@gentleduck/docs0.0.14patch
@gentleduck/registry-ui0.2.1patch
@gentleduck/vim0.1.13patch
@gentleduck/motion0.1.14patch
@gentleduck/hooks0.1.9patch
@gentleduck/libs0.1.12patch
@gentleduck/variants0.1.17patch
@gentleduck/shortcut0.0.3patch
@gentleduck/lazy1.2.10patch
@gentleduck/state0.2.1patch
@gentleduck/benchmark0.0.3patch

Dependency Updates chore

Updated all workspace dependencies and resolved peer dependency warnings.

  • Bumped @biomejs/biome to 2.4.4
  • Bumped vitest, @vitest/coverage-v8, @vitest/ui, @vitest/browser to 4.0.18
  • Bumped react and react-dom to ^19.2.4 across all packages
  • Bumped @types/react to 19.2.14
  • Bumped zod to 4.3.6
  • Removed unused react-cmdk dependency from benchmark
  • Added overrides for transitive dependencies lacking React 19 support

react-resizable-panels v4 Migration breaking

Migrated the Resizable component to react-resizable-panels v4.

  • PanelGroup renamed to Group internally
  • PanelResizeHandle renamed to Separator internally
  • The direction prop is now orientation on ResizablePanelGroup
  • ImperativePanelHandle type renamed to PanelImperativeHandle
  • Updated all examples, docs, and internal usages

Before

<ResizablePanelGroup direction="horizontal">
<ResizablePanelGroup direction="horizontal">

After

<ResizablePanelGroup orientation="horizontal">
<ResizablePanelGroup orientation="horizontal">

Fixes fix

  • Fixed missing tsdown devDependency in @gentleduck/shortcut causing CI build failures
  • Fixed internal registry source path and primitives build types
  • Fixed popover width and updated calendar/date-picker examples
  • Cleaned up dialog-guarded-async overlay styles in registry internals
  • Aligned biome and tsconfig build info exclusions across all packages
  • Rewrote all CHANGELOG.md files with comprehensive descriptions
  • Resolved all bun install peer dependency warnings for vitest, react, and react-dom