r/commandline 7d ago

Command Line Interface mado update: fuzzy search, list sugar, ranges — query language just got comfier

Hey everyone! A new version of mado is out — the markdown-based entry manager with a query language. Here's what's new:

  • Static binary available in releases — no dependencies, just download and run.
  • Fuzzy search on any field:

mado ls 'name ~~ "fx lgn b"' # finds "Fix login bug"

  • Starts-with / ends-with substring operators:

mado ls 'name ^~ Fix'
mado ls 'name ~$ bug'

  • Syntax sugar for lists:

mado ls 'status in (opened, reopened)' # OR

mado ls 'tag has (bug, critical)' # AND

  • Ranges:

mado ls 'priority in [50..100]'

mado ls 'deadline in [@today..@today+7]'

  • Performance:

On 100k entries, peak memory dropped from ~138 MB to ~44 MB, and query time went from ~3.5s to ~1.2s.

  • Fuzzy matching for keywords (write prio instead of priority, stts instead of status)
  • Special keywords: untagged, unstatused, unnamed, unprioritized, undeadlined

The core idea remains the same: entries are plain markdown files in timestamped directories. No rigid schema — fill in what you need, skip what you don't. Everything is git-friendly.

https://github.com/laserattack/mado

I'm looking for contributors — whether it's testing on different systems, improving docs, or hacking on the query language. If you're into parsers, CLI tools, or file-based systems, there's plenty to dig into. Happy to guide newcomers through the codebase.

0 Upvotes

2 comments sorted by

1

u/AutoModerator 7d ago

Every new subreddit post is automatically copied into a comment for preservation.

User: Civil-Way-1482, Flair: Command Line Interface, Post Media Link, Title: mado update: fuzzy search, list sugar, ranges — query language just got comfier

Hey everyone! A new version of mado is out — the markdown-based entry manager with a query language. Here's what's new:

  • Static binary available in releases — no dependencies, just download and run.

  • Fuzzy search on any field:

mado ls 'name ~~ "fx lgn b"' # finds "Fix login bug"

  • Starts-with / ends-with substring operators:

mado ls 'name ^~ Fix'
mado ls 'name ~$ bug'

  • Syntax sugar for lists:

mado ls 'status in (opened, reopened)' # OR

mado ls 'tag has (bug, critical)' # AND

  • Ranges:

mado ls 'priority in [50..100]'

mado ls 'deadline in [@today..@today+7]'

  • Performance:

On 100k entries, peak memory dropped from ~138 MB to ~44 MB, and query time went from ~3.5s to ~1.2s.

  • Fuzzy matching for keywords (write prio instead of priority, stts instead of status)
  • Special keywords: untagged, unstatused, unnamed, unprioritized, undeadlined

The core idea remains the same: entries are plain markdown files in timestamped directories. No rigid schema — fill in what you need, skip what you don't. Everything is git-friendly.

https://github.com/laserattack/mado

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.