Skip to content

Releases: migueldeicaza/tecolot

0.0.22

Choose a tag to compare

@migueldeicaza migueldeicaza released this 03 Sep 20:51

What's Changed

New Features

  • window chrome matches current theme by @freepicheep in #33
  • Bracketed paste implemented
  • Add support for reporting iTerm2 settings (there were already in place, we just did not report them).
  • blinking cursors pause as you type

Improvements

  • More performance optimizations to SwiftTerm, we are very close to Ghostty 1.3.1 in performance terms, a bit better in some, but still slower than Ghostty/dev which has improved even more.

New Contributors

v0.0.20

Choose a tag to compare

@migueldeicaza migueldeicaza released this 30 Aug 21:01
  • This brings a new 3D selector, extending the existing 2D selector.

  • Startup now waits until activation and scene restoration before
    opening a window, and only opens when no documents or terminal windows
    already exist. Document launch is suppressed by default to avoid
    duplicate untitled instances.

  • Do not spawn Tecolot into a different desktop.

  • Terminal paste handling now prefers the active process control bytes
    for filtered paste. Like Xterm does.

  • Settings Escape closes via an explicit key-down monitor, so it works
    all the time.

From SwiftTerm

  • LocalProcess: fix for race on shutdown.

  • Implementation of new DEC Private modes:

  • ?2004 — Bracketed paste
  • ?2031 — Color scheme update reporting
  • ?2033 — Visibility reporting
  • ?2048 — In-band size reporting
  • ?5522 — Kitty clipboard/paste event mode
  • ?2027 — Grapheme clustering mode (implemented as permanent, no-op support in terminal behavior)
  • ?117 — Treated as “permanently reset” in mode query responses

v0.0.19

Choose a tag to compare

@migueldeicaza migueldeicaza released this 30 Aug 00:20
  • Tecolot now offers more ways of picking a theme and 2D visualizations to help you pick the right palette for your lifestyle.
  • Fixes an annoying focus stealing bug

v0.0.18

Choose a tag to compare

@migueldeicaza migueldeicaza released this 29 Aug 21:53

Tecolot

Theme system improvements

  • Added theme lineage tracking (baseThemeName) to TerminalTheme, so derived themes know which built-in theme they were forked from.
  • Added first-class theme forking/duplication helpers in ThemeStore:
    • Smart de-duplicated naming (<theme> (Custom), <theme> copy, with numeric suffixes)
    • Built-in themes are no longer edited directly; edits create a non-built-in fork.
    • Custom themes duplicate with copy semantics while preserving lineage.
  • Added robust theme operations in profile settings:
    • In-place theme editing section with name editing, duplicate/revert/delete actions, and color pickers for background/foreground/selection/cursor + all 16 ANSI colors.
    • Built-in/custom differentiation in previews and cards.
    • “Revert to base theme” action for custom themes created from built-ins.

Theme browser + picker refinements

  • Refactored theme browser into reusable sectioned view model:
    • Favorites are separated from others and sorted alphabetically.
    • Supports paged mode (popular/more) and full list mode for chooser sheets.
    • Added optional “Done” action for modal usage.
  • Updated theme cards:
    • Added hover/focus-friendly favorite toggle on card.
    • Added “CUSTOM” badge on non-built-in themes.
  • Duplicate action for built-in themes now uses centralized forking logic.

Profile/settings reliability updates

  • Updated profile update flow to return success/failure (Bool) so multi-step operations can roll back on storage failures.
  • Theme edits in settings now use safer result-handling and rollback when persistence fails.
  • Added delayed/batched save behavior for theme edits to reduce churn and preserve responsiveness.

App behavior and maintenance

  • Fixed app reopen behavior: reopening with no visible windows now opens a new window.
  • Release workflow now explicitly requests contents and actions permissions for release/appcast dispatch needs.
  • Updated SwiftTerm dependency revision in Package.resolved.

SwiftTerm Highlights

  • Added formal fuzzer infrastructure and coverage for parser/stream/OSC behavior, plus documentation for live and corpus-driven fuzzing.
  • Implemented XTGETTCAP support (DCS +q) using generated terminfo-based reply data.
  • Added substantial hardening fixes around wide-cell seams, OSC bounds, and local process lifecycle safety.
  • Expanded benchmarking and profiling tooling with dedicated hardening workloads and an executable profiler.
  • Added extensive new regression test coverage (including Ghostty corpus and seam/OSC/XTGETTCAP tests).

New Features

  • Terminal protocol support

    • Added XTGETTCAP DCS handler with multiple key support, malformed-key handling, terminal name (TN) responses, and limits.
    • Added generated SwiftTermTerminfo table from checked-in swifterm-terminfo.
    • Added docs for new Kitty graphics types and integration (KittyGraphicsIntegration, configuration/policy/snapshot docs).
  • New hardening and performance knobs

    • TerminalOptions.maximumOscBytes added (default 65 MB).
    • BenchmarkOptions-adjacent improvements for profiling:
      • Added hardening benchmark set in VTEBenchWorkload.
      • Added SwiftTermProfile tool for headless profiling.
    • Added profiling support for seam check counters (SWIFTTERM_SEAM_COUNTER).
  • Fuzzing/testing assets

    • Added Docs/fuzzing.md and Makefile targets for corpus replay and live fuzzing.
    • Added Tools/import-ghostty-fuzz-corpus.swift to import Ghostty fuzz corpora.
    • Added new fixture archives and provenance docs under Tests/SwiftTermTests/Fixtures/GhosttyFuzzCorpus.

Fixed / Reliability Improvements

  • Wide-cell correctness & seam integrity

    • Added destination-keyed seam repair in buffer writes.
    • Added bulk scalar insertion path for valid homogeneous scalar runs.
    • Fixed wide-character seam corruption risks in many editing/movement paths and margin-restricted operations.
    • Added integrity regression tests asserting wide-cell invariants.
  • ESC/OSC parser hardening

    • Reworked OSC buffering with explicit size caps and capped retained capacity.
    • Added parser-level limit for oversized OSC payloads and memory release path after reset/completion.
    • Replaced separator parsing representation (_parsTxt -> bitmask) for safer, cheaper CSI separator handling.
  • Local process lifecycle safety

    • Reworked LocalProcess lifecycle to avoid stale callbacks and PID reuse races.
    • Added bounded output-drain + reaping behavior to preserve queued output before termination notifications.
    • Added explicit termination escalation (SIGTERM then SIGKILL) and configurable delays.
    • Added state phases and generation-based guards for restart safety.
  • Pipeline robustness

    • Added TerminalIOPipeline.drainAvailableAndShutdown(timeout:) for bounded shutdown draining.
    • Introduced explicit run phases (streaming/draining/quitting) and control wakepipe for deterministic stop behavior.

Sparkle updater

Choose a tag to compare

@migueldeicaza migueldeicaza released this 29 Aug 01:12
v0.0.17

Sign Sparkle

Upgraded Kitty graphics.

Choose a tag to compare

@migueldeicaza migueldeicaza released this 27 Aug 19:29
v0.0.13

Bring updated Kitty fixes

Shortcut improvement.

Choose a tag to compare

@migueldeicaza migueldeicaza released this 24 Aug 04:20

Command-T vanished, so bring it back.

Status reporting improvements.

Choose a tag to compare

@migueldeicaza migueldeicaza released this 21 Aug 01:16

Brings @stuartcarnie wider range of fixes to SwiftTerm to show status updates on the terminal

v0.0.10

Choose a tag to compare

@migueldeicaza migueldeicaza released this 19 Aug 23:21
  • Export iTerm2-compatible TERM_FEATURES
  • Avoid resizing a window when first showing it up
  • Fixes transparency on the terminal
  • Fixes selection in the CoreGraphics backend
  • Fixes resizing bugs
  • Bring MacOS scrollbar

v0.0.7

Choose a tag to compare

@migueldeicaza migueldeicaza released this 19 Aug 01:15
Bump