Skip to content

Releases: harehare/mq

v0.5.20

18 Mar 14:13
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's Changed

✨ Features

  • feat(playground): add type checking and inlay hints support by @harehare in #1398
  • feat(lsp): filter type errors to only those originating from the current source by @harehare in #1445
  • feat: add TOON module support and implement stringify/parse functions by @harehare in #1408
  • feat: improve type error reporting with full ranges and minimal CLI output by @harehare in #1450
  • feat(mq-check): add constraint origin and contextual help to type errors by @harehare in #1452
  • feat(mq-lang): add percentile builtin function by @harehare in #1453
  • feat(mq-repl): improve REPL tab completion with word-boundary awareness by @harehare in #1455
  • feat(mq-lang): add native _csv_parse builtin using csv crate by @harehare in #1456
  • feat(mq-lang): replace mq-lang JSON parser with native serde_json builtin by @harehare in #1462
  • feat(mq-lang): replace toon parser with native toon-format builtin by @harehare in #1463
  • feat(mq-lang): replace XML parser with native quick-xml builtin by @harehare in #1464
  • feat(playground): add resizable panels and editor enhancements by @harehare in #1468
  • feat(mq-lang): add destructuring assignment for let/var by @harehare in #1466

🐛 Fixes

  • fix(mq-check): skip Refs with Selector children in type narrowing by @harehare in #1434
  • fix(mq-check): propagate piped input to function calls inside let bindings by @harehare in #1461
  • fix(mq-crawler): improve HTML to Markdown conversion for pages with sidebars and JS by @harehare in #1469

📝 Documentation

  • docs: add installation section to landing page by @harehare in #1454
  • docs: simplify project documentation and remove obsolete command files by @harehare in #1465

Full Changelog: v0.5.19...v0.5.20

v0.5.19

12 Mar 13:40
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's Changed

  • ✨ feat(mq-web): add inlayHints API support by @harehare in #1432
  • 🐛 fix: bracket-based selector syntax (.[n], .[n][m]) by @harehare in #1430
  • 🐛 fix(markdown): filter empty values in Fragment render, join with newline by @harehare in #1431
  • 🐛 fix(scripts): add mq-check version bump in bump_version.mq by @harehare in #1433

Full Changelog: v0.5.18...v0.5.19

v0.5.18

11 Mar 13:45
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's Changed

Features & Improvements

  • feat(typechecker): support row polymorphism for dicts via Record type by @harehare in #1364
  • ✨ feat: add type predicate-based narrowing for union types in if/elif branches by @harehare in #1367
  • ✨ feat(strict-array): implement strict array mode to enforce homogeneous arrays and add related tests by @harehare in #1368
  • ✨ Implement tuple mode by @harehare in #1369
  • feat(mq-check): support piped builtin calls and self keyword type propagation by @harehare in #1370
  • ✨ feat(release): add mq-check artifact renaming and upload to release workflow by @harehare in #1372
  • ✨ feat: add frontmatter extraction examples and documentation by @harehare in #1384
  • Integrate mq-check crate and type checker options by @harehare in #1373
  • ✨ feat(mq-wasm): add mq-check dependency and implement inlayHints API with type checking support by @harehare in #1397
  • ✨ feat(mq-lang): add incremental CST parser by @harehare in #1400
  • ✨feat(lang): support def without params in parser by @harehare in #1413
  • ✨ chore(crawler): rename binary from mqcr to mq-crawl and update references by @harehare in #1394

Bug Fixes

  • Fix undefined field access tests to assert TypeError::UndefinedField specifically by @Copilot in #1366
  • 🐛 fix: report error for undefined field access on closed records by @harehare in #1365
  • fix(mq-lsp): remove useless .into() conversion causing clippy failure by @Copilot in #1383
  • 🐛 fix(mq-check): handle union overloads with consistent return types by @harehare in #1386
  • 🐛 fix(mq-check): correct deferred overload replacement and add regression test by @harehare in #1391
  • fix(mq-lang): unify TextEdit to character offsets, update incremental parser and tests by @harehare in #1405
  • 🐛 fix: enhance type inference for union and tuple types, improve error handling in type checker by @harehare in #1406
  • 🐛 fix: correct symbol handling, index_by test, and inlay hints logic by @harehare in #1421

Refactoring & Performance

  • ♻️ refactor(mq-check): extract union_members_consistent_return into standalone helper by @Copilot in #1387
  • perf(mq-check): replace Vec with FxHashMap for deferred_overloads by @Copilot in #1393
  • 🔧 refactor(config): update type check configuration keys by @harehare in #1392
  • ♻️ refactor(mq-check): extract get_non_keyword_children, add error helpers, improve type formatting by @harehare in #1399
  • Remove module includes by @harehare in #1414

Tests & Documentation

  • Add tests for Union(Array(T), None) index access in type checker by @Copilot in #1407
  • Increase test coverage for mq-check unification logic by @harehare in #1419
  • Add comprehensive tests to mq-check by @harehare in #1420
  • 📝 Update README.md by @harehare in #1422

Build & Dependencies

  • 👷 ci: remove paths-filter and simplify workflow dependencies by @harehare in #1385
  • build(deps-dev): bump @types/node from 25.3.2 to 25.3.3 in /editors/vscode by @dependabot[bot] in #1374
  • build(deps-dev): bump oxlint from 1.50.0 to 1.51.0 in /editors/vscode by @dependabot[bot] in #1375
  • build(deps): bump tokio-macros from 2.6.0 to 2.6.1 by @dependabot[bot] in #1376
  • build(deps): bump fantoccini from 0.22.0 to 0.22.1 by @dependabot[bot] in #1377
  • build(deps-dev): bump oxlint from 1.50.0 to 1.51.0 in /packages/mq-web by @dependabot[bot] in #1378
  • build(deps-dev): bump oxlint from 1.50.0 to 1.51.0 in /packages/mq-playground by @dependabot[bot] in #1379
  • build(deps): bump tokio from 1.49.0 to 1.50.0 by @dependabot[bot] in #1381
  • build(deps): bump react-icons from 5.5.0 to 5.6.0 in /packages/mq-playground by @dependabot[bot] in #1382
  • build(deps): bump smol_str from 0.3.5 to 0.3.6 by @dependabot[bot] in #1388
  • build(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #1389
  • build(deps): bump docker/metadata-action from 5 to 6 by @dependabot[bot] in #1395
  • build(deps): bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #1396
  • build(deps): bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #1403
  • build(deps): bump which from 8.0.0 to 8.0.1 by @dependabot[bot] in #1402
  • build(deps-dev): bump @types/node from 25.3.3 to 25.3.5 in /editors/vscode by @dependabot[bot] in #1401
  • build(deps): bump libc from 0.2.182 to 0.2.183 by @dependabot[bot] in #1411
  • build(deps): bump which from 8.0.1 to 8.0.2 by @dependabot[bot] in #1410
  • build(deps-dev): bump @types/node from 25.3.5 to 25.4.0 in /editors/vscode by @dependabot[bot] in #1409
  • build(deps-dev): bump oxlint from 1.51.0 to 1.52.0 in /packages/mq-playground by @dependabot[bot] in #1418
  • build(deps-dev): bump oxlint from 1.51.0 to 1.52.0 in /packages/mq-web by @dependabot[bot] in #1417
  • build(deps-dev): bump oxlint from 1.51.0 to 1.52.0 in /editors/vscode by @dependabot[bot] in #1415
  • build(deps-dev): bump @types/vscode from 1.108.1 to 1.110.0 in /editors/vscode by @dependabot[bot] in #1416

Full Changelog: v0.5.17...v0.5.18

v0.5.17

28 Feb 13:44
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's Changed

  • ✨ feat: add slugify function by @harehare in #1357
  • ✨ feat: add typechecker crate by @harehare in #850
  • ✨ feat(mq-lang): add =~ regex match operator and is_regex_match builtin by @harehare in #1305
  • ✨ feat(lang): add left shift and right shift token kinds and operations by @harehare in #1315
  • ✨ feat(lang): support array operands for shift operators (<<, >>) by @harehare in #1319
  • ✨ feat: add conversion operators by @harehare in #1320
  • ✨ feat(cli): add __FILE_NAME__ and __FILE_STEM__ env vars for file context by @harehare in #1343
  • ✨ feat(csv): add PSV (Pipe-Separated Values) support and tests by @harehare in #1355
  • ✨ feat(mq-lang): Add bsearch function and tests by @harehare in #1353
  • 🐛 fix(mq-lang): fix incorrect #[cfg(unix)] to #[cfg(not(windows))] inconvert.rs by @harehare in #1336
  • 🐛 Fix: handle empty result values in mq_eval function by @harehare in #1348
  • 📝 docs(skills): add HTML input selector guidance to processing-markdown skill by @harehare in #1356
  • 👷 ci: add cargo publish workflow by @harehare in #1335
  • 🔥 chore: remove mq-python crate from workspace by @harehare in #1349

Full Changelog: v0.5.16...v0.5.17

v0.5.16

19 Feb 13:31
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's Changed

  • ✨ feat(mq-lang): add ltrim and rtrim builtins for string/markdown whitespace trimming by @harehare in #1281
  • ✨ feat(section): Add section operations and examples by @harehare in #1283
  • ✨ feat(playground): show execution time in footer by @harehare in #1284
  • ✨ feat(table): add set_align and test for table alignment by @harehare in #1290
  • ✨ feat(table): add to_csv function and update docs by @harehare in #1296
  • ✨ feat(mq-lang): add base64url/base64urld builtins and tests by @harehare in #1297
  • ✨ feat(lsp): add range formatting support and tests by @harehare in #1298
  • 🐛 fix(mq-lang): improve NotDefined error token handling in eval.rs by @harehare in #1289
  • 🐛 fix(mq-markdown): correct newline rendering before tables by @harehare in #1277
  • 🐛 fix(markdown): normalize excessive blank lines in Markdown rendering by @harehare in #1300
  • 📦 build: update dependencies and documentations by @harehare in #1288

Full Changelog: v0.5.15...v0.5.16

v0.5.15

14 Feb 10:15
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's Changed

Features

  • ✨ feat: extract mq-check and mq-docs into standalone crates by @harehare in #1262
  • ✨ feat(cli): Add executable file check for mq-* subcommands by @harehare in #1265
  • ✨ feat(mq-lang): add capture builtin function for regex named group extraction by @harehare in #1272

Refactoring

  • ♻️ refactor(vscode): migrate linter from ESLint to oxlint by @harehare in #1263
  • ♻️ chore: remove mq-check and mq-docs crates by @harehare in #1271

Documentation

  • 📝 docs(processing-markdown): add skills by @harehare in #1273
  • 📝 docs: document external subcommands and update CLI docs by @harehare in #1275

Full Changelog: v0.5.14...v0.5.15

v0.5.14

10 Feb 14:28
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Features

  • feat(lsp): add file-io feature to mq-lang dependency by @harehare in #1205
  • feat: support variadic function arguments and enhance error handling by @harehare in #1214
  • feat: add Zed editor extension by @harehare in #1217
  • feat(lsp): improve goto definition to navigate to correct source files by @harehare in #1221
  • feat(lang): add table module for extracting table structures by @harehare in #1222
  • feat(table): add map_rows, filter_rows, and sort_rows functions by @harehare in #1230
  • feat(parser): support index assignment for arrays and dicts by @harehare in #1235
  • feat(selector): add recursive descent selector (..) by @harehare in #1234
  • feat(table): add filter_tables function for filtering tables by predicate by @harehare in #1238
  • feat(color): add color output support and configuration options by @harehare in #1242
  • feat(run): support PATH lookup for external subcommands by @harehare in #1253

Bug Fixes

  • fix(formatter): handle selector attributes in assignment expressions by @harehare in #1228
  • fix(eval): propagate actual module error instead of always returning NotFound by @harehare in #1232

Refactoring

  • Move debug function to builtin.mq by @harehare in #1218
  • refactor(cst): deduplicate parser with shared helpers and improve Trivia::comment API by @harehare in #1231
  • refactor(lang): organize constants into submodules and improve builtin variable scoping by @harehare in #1236
  • refactor(playground): replace ESLint with oxlint by @harehare in #1254

Full Changelog: v0.5.13...v0.5.14

v0.5.13

02 Feb 13:09
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's Changed

✨Features

  • ✨ feat(editors): add compound assignment operators to syntax highlighting by @harehare in #1199
  • Add DEPRECATED semantic token modifier for strikethrough support by @Copilot in #1152
  • ✨ feat(mq-lang): add lpad and rpad string padding functions by @harehare in #1153
  • ✨ feat(playground): add include keyword to syntax highlighting by @harehare in #1171
  • ✨ feat: add mq-crawler installation script by @harehare in #1176
  • ✨ feat(formatter): improve fmt subcommand file handling by @harehare in #1178
  • ✨ feat: add map_sections function and update documantation by @harehare in #1186
  • ✨ feat(formatter): add sorting options for imports, functions, and fields by @harehare in #1195
  • ✨ feat(lang): add .table_align selector for matching table alignment nodes by @harehare in #1201
  • ✨ feat(lang): add table module with row/column manipulation functions by @harehare in #1202
  • ✨ feat(lang): add load_markdown function for reading markdown files by @harehare in #1203

♻️ Refactoring

  • ♻️ refactor(mq-lang): reimplement debug as native builtin function by @harehare in #1164
  • ♻️ refactor(mq-markdown): Extract AttrValue into separate module by @harehare in #1168
  • ♻️ refactor(markdown): control table cell separators by row position by @harehare in #1198

💄 Style

  • 💄 style: update mdbook theme to match website design by @harehare in #1170

📝 Documentation

  • 📝 docs: fix builtin selectors documentation by @harehare in #1172
  • 📝 docs: add mq syntax highlighting to mdbook documentation by @harehare in #1196
  • 📝 docs: add playground links to mq code blocks in documentation by @harehare in #1197
  • 📝 fix: nested code block by @harehare in #1200

📦 Build / Dependencies

  • build(deps): bump react from 19.2.3 to 19.2.4 in /packages/mq-playground by @dependabot[bot] in #1163
  • build(deps-dev): bump baseline-browser-mapping from 2.9.17 to 2.9.18 in /packages/mq-playground by @dependabot[bot] in #1161
  • build(deps-dev): bump typescript-eslint from 8.53.1 to 8.54.0 in /packages/mq-playground by @dependabot[bot] in #1160
  • build(deps-dev): bump oxlint from 1.41.0 to 1.42.0 in /packages/mq-playground by @dependabot[bot] in #1159
  • build(deps-dev): bump oxlint from 1.41.0 to 1.42.0 in /packages/mq-web by @dependabot[bot] in #1158
  • build(deps-dev): bump @typescript-eslint/parser from 8.53.1 to 8.54.0 in /editors/vscode by @dependabot[bot] in #1155
  • build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.53.1 to 8.54.0 in /editors/vscode by @dependabot[bot] in #1156
  • build(deps): bump react-dom from 19.2.3 to 19.2.4 in /packages/mq-playground by @dependabot[bot] in #1162
  • build(deps-dev): bump globals from 17.1.0 to 17.2.0 in /packages/mq-playground by @dependabot[bot] in #1166
  • build(deps-dev): bump @types/react from 19.2.9 to 19.2.10 in /packages/mq-playground by @dependabot[bot] in #1165
  • build(deps-dev): bump @types/node from 25.0.10 to 25.1.0 in /editors/vscode by @dependabot[bot] in #1173
  • build(deps): bump clap from 4.5.54 to 4.5.55 by @dependabot[bot] in #1174
  • build(deps): bump clap from 4.5.55 to 4.5.56 by @dependabot[bot] in #1179
  • build(deps-dev): bump baseline-browser-mapping from 2.9.18 to 2.9.19 in /packages/mq-playground by @dependabot[bot] in #1175

Full Changelog: v0.5.12...v0.5.13

v0.5.12

25 Jan 14:00
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

What's Changed

✨ Features

  • Add value support to break statement (#1104)
  • Implement sections function to split markdown nodes into sections (#1109)
  • Add compound assignment operators (#1122)
  • Add update operator for Markdown node (#1127)
  • Add assignment operators section to documentation (#1129)
  • Add each function (#1132)

♻️ Refactoring

  • Separate control flow from error handling in eval (#1103)
  • Use Arc<String> for text_map and improve formatter handling in mq-lsp (#1117)
  • Refactor playground: extract examples to separate file (#1130)
  • Refactor module syntax in mq-lang (#1145)
  • Cleanup and refactor builtin functions in mq-lang (#1150)

🐛 Bug Fixes

  • Handle double not operator and add related test (#1118)

📝 Documentation

  • Move mq-lsp installation instructions to documentation (#1100)
  • Add usage instructions to README (#1101)

✅ Tests

  • Add test coverage for !!false operator (#1119)

⬆️ Chores & Build

  • Update Rust version to 1.93.0 (#1126)
  • Bump version to 0.5.12 and update bump scripts (#1131)

📦 Dependency Updates

  • build(deps): bump colored from 3.0.0 to 3.1.1 (#1098)
  • build(deps): bump thiserror from 2.0.17 to 2.0.18 (#1112)
  • build(deps-dev): bump baseline-browser-mapping from 2.9.14 to 2.9.15 in /packages/mq-playground (#1099)
  • build(deps-dev): bump baseline-browser-mapping from 2.9.15 to 2.9.16 in /packages/mq-playground (#1121)
  • build(deps-dev): bump baseline-browser-mapping from 2.9.16 to 2.9.17 in /packages/mq-playground (#1124)
  • build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.53.0 to 8.53.1 in /editors/vscode (#1110)
  • build(deps-dev): bump oxlint from 1.39.0 to 1.41.0 in /packages/mq-playground (#1113)
  • build(deps-dev): bump oxlint from 1.39.0 to 1.41.0 in /packages/mq-web (#1114)
  • build(deps-dev): bump typescript-eslint from 8.53.0 to 8.53.1 in /packages/mq-playground (#1115)
  • build(deps-dev): bump @types/react from 19.2.8 to 19.2.9 in /packages/mq-playground (#1120)
  • build(deps-dev): bump @types/node from 25.0.9 to 25.0.10 in /editors/vscode (#1125)
  • build(deps-dev): bump globals from 17.0.0 to 17.1.0 in /packages/mq-playground (#1128)

Full Changelog: v0.5.11...v0.5.12

v0.5.11

16 Jan 14:03
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

✨ Features

  • feat(macro): add AST argument extraction for macro improvements #1047
  • feat: add inspect function for value inspection and string representation #1075

🐛 Bug Fixes

  • 🐛 fix(mq-lang): fix is_mutable check for scoped variables #1074
  • 💚 Fix the workflow for release #1097

♻️ Refactoring

  • refactor(parser): simplify token pattern matching #1086
  • refactor: reduce initial capacity of tokens vector for optimized memory usage #1089
  • refactor(cli): separate LSP server into standalone mq-lsp binary #1091

✅ Tests

  • test(mq-lang): add property-based tests for AST operations #1076

👷 CI

  • ci(release): add deb/rpm package builds and musl targets #1092

📦 Build & Dependencies

  • build(deps-dev): bump baseline-browser-mapping from 2.9.13 to 2.9.14 in /packages/mq-playground #1073
  • build(deps): bump smol_str from 0.3.4 to 0.3.5 #1071
  • build(deps): bump assert_cmd from 2.1.1 to 2.1.2 #1072
  • build(deps-dev): bump @types/vscode from 1.107.0 to 1.108.0 in /editors/vscode #1070
  • build(deps-dev): bump @types/node from 25.0.3 to 25.0.6 in /editors/vscode #1077
  • build(deps-dev): bump @typescript-eslint/eslint-plugin from 8.52.0 to 8.53.0 in /editors/vscode #1078
  • build(deps-dev): bump oxlint from 1.38.0 to 1.39.0 in /packages/mq-web #1082
  • build(deps-dev): bump @types/react from 19.2.7 to 19.2.8 in /packages/mq-playground #1085
  • build(deps-dev): bump typescript-eslint from 8.52.0 to 8.53.0 in /packages/mq-playground #1084
  • build(deps): bump tower from 0.5.2 to 0.5.3 #1081
  • build(deps-dev): bump oxlint from 1.38.0 to 1.39.0 in /packages/mq-playground #1083
  • build(deps-dev): bump @types/vscode from 1.108.0 to 1.108.1 in /editors/vscode #1080
  • build(deps-dev): bump @types/node from 25.0.6 to 25.0.8 in /editors/vscode #1088
  • build(deps): bump chrono from 0.4.42 to 0.4.43 #1095
  • build(deps): bump wasm-bindgen-test from 0.3.56 to 0.3.58 #1094
  • build(deps-dev): bump @types/node from 25.0.8 to 25.0.9 in /editors/vscode #1093

Full Changelog: v0.5.10...v0.5.11