Skip to content

v0.6.0: Deprecate and remove syntax highlighting (mode 1 cleanup) #118

@docdyhr

Description

@docdyhr

Background

batless's unique value is structured AI output — symbol indexes, token-estimated context, semantic chunks, content hashes. These are the outputs AI assistants (Claude Code, Copilot, etc.) cannot produce with their native Read/Grep/Glob tools.

Syntax highlighting serves human terminal users, a use case where `bat` is the better tool. AI assistants don't benefit from ANSI colour codes. Removing mode 1 makes the codebase leaner and the project's purpose unambiguous.

See ROADMAP.md v0.6.0 section for full context.


Scope

Remove

  • `src/highlighter.rs` (~413 lines) — syntect integration, theme management
  • `ThemeManager` struct and theme-related functions from `src/language.rs`
  • Theme/highlight output paths in `src/formatter.rs`
  • `src/wizard.rs` (~799 lines) — interactive TUI config setup (anti-automation)
  • Dependencies: `syntect`, `is-terminal`, `termcolor`, `strip-ansi-escapes`

Deprecate with warning (v0.6.0), remove (v0.7.0)

  • `--mode=highlight` (current default bare invocation) → warn, fall back to `--mode=plain`
  • `--theme` → warn, ignored

New default

  • Bare `batless file.py` → plain text output (no colours, no syntect)

Also fix (existing v0.6.0 scope)

  • Delete `src/debt_prevention.rs`, `src/performance.rs` (never called)
  • Delete unused traits in `src/traits.rs`
  • Consolidate formatter system
  • `process_stdin` parity with `process_file`
  • `--mode=ast` raw tree-sitter output
  • Multi-file `--mode=index src/`

Expected impact

  • Binary size: ~1.5MB reduction (~2MB → ~0.5MB)
  • Compile time: significant reduction (syntect + regex-onig are heavy)
  • Codebase: ~1,200–1,800 lines removed
  • Breaking change: bare `batless file.py` loses colour output — document in CHANGELOG with migration note pointing to `bat`

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions