Skip to content

Releases: ucharmdev/ucharm

v0.5.0

21 Dec 03:50

Choose a tag to compare

μcharm 0.5.0

Beautiful tables, spinners, and a brand new home for your CLI toolkit.

✨ What's New

  • Add charm.table() for rendering beautiful Unicode tables with multiple border styles and header support
  • Add charm.spinner() with animated frames, custom messages, and color support
  • Add charm.progress_done() helper to elegantly complete progress bars and spinners
  • Enhance charm.progress() with elapsed time display
  • Launch documentation website with interactive Terminal component, getting-started guides, and full module reference
  • Add vision roadmap featuring planned features inspired by Rich, Inquirer, and BubbleTea

⚡ Improvements

  • Expand input module with test mode support for prompt() and password() functions via MCHARM_TEST_KEYS environment variable
  • All 28 end-to-end tests now pass with improved test infrastructure
  • Update embedded runtime binaries across all platforms with BearSSL (TLS), sqlite3, and new module support

📚 Documentation

  • New Fumadocs-powered website with landing page, module documentation, and guides
  • Add comprehensive AI templates for common CLI patterns
  • Update type stubs with new charm functions for better IDE support
  • Improve contribution guidelines with website deployment checklist

Installation

# Install
brew install ucharmdev/tap/ucharm

# Or upgrade
brew upgrade ucharm

What's next? Check out the roadmap for fuzzy select, task lists, and more interactive components coming soon.


Full Changelog: v0.4.0...v0.5.0

v0.4.0

21 Dec 02:16

Choose a tag to compare

μcharm 0.4.0

Network requests and templating just got a whole lot easier—plus 10 new stdlib modules to round out your toolkit.

✨ What's New

  • Add fetch module for HTTP/HTTPS requests with built-in TLS support via BearSSL
    • get(), post(), request() functions with intuitive APIs
    • Built-in CA certificate bundle; set verify=False for development
  • Add template module with Jinja-like syntax for dynamic content generation
    • Variables: {{name}}, dotted access {{user.email}}
    • Conditionals: {% if condition %}...{% end %}
    • Loops: {% for item in items %}...{% end %}
  • Expand stdlib with sqlite3, zipfile, tarfile, gzip, xml.etree.ElementTree, dataclasses, hmac, toml, tempfile improvements, and subprocess enhancements

⚡ Improvements

  • sqlite3 now supports full DB-API subset with cursor objects and fetchall()
  • zipfile and tarfile add read-only archive support for common workflows
  • xml.etree.ElementTree gains fromstring(), find(), and findall() for XML parsing
  • dataclasses module now includes field(), asdict(), and astuple() helpers
  • subprocess.run() improved with capture_output parameter for easier output handling
  • toml module supports nested table parsing with loads() and dumps()

📚 Documentation

  • Updated README with fetch and template examples
  • Expanded AI instruction templates with 50+ module reference
  • Full compatibility report: 1,663/1,663 tests passing

Installation

# Install
brew install ucharmdev/tap/ucharm

# Or upgrade
brew upgrade ucharm

Full Changelog: v0.3.0...v0.4.0

v0.3.0

20 Dec 20:13

Choose a tag to compare

μcharm 0.3.0

100% Python stdlib compatibility—now with cross-platform builds and 18 new modules.

✨ What's New

  • Add 18 new CPython-compatible stdlib modules: array, binascii, configparser, contextlib, copy, dataclasses, hmac, secrets, urllib.parse, uuid, and more
  • Add cross-compilation support with --target flag: build for Linux ARM64, x86_64, and macOS from any platform
  • Add multi-platform runtime builds: pre-built PocketPy binaries for macOS (aarch64, x86_64) and Linux (x86_64, aarch64)
  • Add SHA256 verification for downloaded runtime artifacts with automatic fallback to local builds
  • Enhance collections module with Counter, ChainMap, UserDict, and UserList
  • Enhance functools module with singledispatch, cmp_to_key, and wraps decorator
  • Enhance json module with JSONDecoder and JSONEncoder classes supporting custom hooks
  • Enhance struct module with calcsize() and improved format string parsing
  • Add patchset management for PocketPy vendor patches with CI verification

⚡ Improvements

  • Runtime caching in ~/.ucharm/runtimes/ with automatic version tracking
  • Smarter build system: falls back to local PocketPy compilation when in source checkout
  • Better error messages and user prompts for missing dependencies
  • CI now verifies PocketPy patches aren't accidentally corrupted or removed

🐛 Bug Fixes

  • Fix progress() function signature to include label parameter
  • Fix float formatting for small values in PocketPy runtime
  • Correct release artifact hashing from repository root

📚 Documentation

  • Update compatibility stats: 100% of targeted modules now pass all tests (1,606/1,600 tests)
  • Add cross-compilation examples and WIP modules section
  • Expand PocketPy patch documentation with management instructions
  • Convert FAQ to collapsible sections for easier navigation

Installation

# Install
brew install ucharmdev/tap/ucharm

# Or upgrade
brew upgrade ucharm

What's next? We're working on TLS support for http.client, full sqlite3 bindings, and streaming compression. Check the roadmap for details.


Full Changelog: v0.2.0...v0.3.0

v0.2.0

19 Dec 03:13

Choose a tag to compare

μcharm 0.2.0

Interactive input just got rock solid—arrow keys, vim bindings, and task runners all work seamlessly now.

✨ What's New

  • Add shared TUI library with ANSI constants, Unicode symbols, and reusable UI components
  • Introduce test mode for automated testing of interactive prompts via environment variables or file descriptors
  • New ucharm init command initializes projects with type stubs and AI assistant instructions
  • Add ucharm new --stubs and --ai flags for scaffolding with IDE support and coding assistant templates

⚡ Improvements

  • Interactive input now works with task runners like just and make by reading directly from /dev/tty
  • Escape sequences for arrow keys and vim bindings (j, k) handled properly without false quits
  • Cross-compilation support with --target flag for macOS (aarch64/x86_64) and Linux (x86_64/aarch64)
  • Auto-download platform-specific runtimes with version awareness and user prompts
  • 24 native modules with full type stubs for IDE autocomplete and type checking
  • Position-independent code enabled on Linux for PIE compatibility
  • Unified ANSI styling across CLI and native modules eliminates duplication

🐛 Bug Fixes

  • Fix box width calculation with unsigned integer underflow when no title provided
  • Correct ANSI escape codes in all help text and subcommands with proper \x1b prefix
  • Add _XOPEN_SOURCE for strptime() Linux compatibility
  • Add _POSIX_C_SOURCE and sys/types.h for signal/terminal functions on Linux
  • Fix terminal inheritance in ucharm run using execv for proper interactive input
  • Code-sign MicroPython binary on macOS for terminal interaction
  • Prevent continuous redraws in select/multiselect when no key pressed
  • Update CI to use macos-15-intel runners (macos-13 retired)

Installation

# Install
brew install ucharmdev/tap/ucharm

# Or upgrade
brew upgrade ucharm

Full Changelog: v0.1.0...v0.2.0

v0.1.0

18 Dec 09:44

Choose a tag to compare

Features

  • Add os module with environ, path utilities, and system info
  • Add sys module with recursion limits, sizeof, and flags
  • Add argparse subparsers and mutually_exclusive_group support
  • Upgrade to Zig 0.15.2 for improved performance

Improvements

  • Improve CPython compatibility to 88.2% (1,288/1,461 tests passing)
  • Achieve 100% compatibility for 28 modules including os, collections, argparse
  • Add OrderedDict.move_to_end(), deque.clear(), deque.rotate() methods
  • Add namedtuple._replace() and namedtuple._fields support
  • Fix argparse choices, required, and nargs='?' const handling
  • Patch MicroPython module delegation chaining

Documentation

  • Add comprehensive CPython compatibility documentation and implementation plan
  • Update architecture guide with Zig-only policy for native modules
  • Document all 28 native modules with examples and performance benchmarks

Maintenance

  • Remove obsolete Python compatibility layer and legacy tests
  • Clean up build configuration and module organization