Skip to content

v0.11.3

Latest

Choose a tag to compare

@github-actions github-actions released this 05 Oct 08:24
· 3 commits to main since this release
a87a574

Changes in 0.11.3

Fixed

  • A release can no longer ship with a RouterOS version missing (#178). One transient GitHub Pages 503 could fail a single version's command extraction while the build carried on, leaving routeros_command_version_check and routeros_command_diff wrong for that version. restraml fetches now retry server errors, a failed version fails the build, and the release gate checks that every listed version has command data.
  • bunx @tikoci/rosetta runs under Bun in one process (#175). Every launch printed "Note: rosetta requires the Bun runtime. Attempting to run via bun..." and then started a second process, because bunx runs a file with a node shebang under Node. The entry point now has a bun shebang. npx without Bun now fails with env: bun: No such file or directory; it was never supported.
  • A slow npm registry no longer skips the install smoke (#176). The npm dist-tag read-back now runs as its own job with a 15-minute budget. The three-OS bunx install and upgrade smoke jobs no longer wait for it, and they can be dispatched on their own (release-smoke.yml) against an already-published version.
  • Dotted Wi-Fi settings get documentation (#58/#61 BL-3). channel.width, security.authentication-types, configuration.mode and configuration.manager on /interface/wifi returned unknown-arg. The manual's Wi-Fi page documents all four under their sub-menus, for example width under /interface/wifi/channel. The CLI Reference lists the first three there, without descriptions, and doesn't list configuration.manager. A dotted name with no answer at its own menu is now looked up as its last segment under the sub-menu the other segments name. Across the command tree, answered dotted settings rose from 140 to 271 of 539, 128 of them with manual descriptions. unknown-arg also no longer claims that MikroTik's documentation doesn't list a setting. It says rosetta matched nothing, which is a lookup gap and not proof that the argument is invalid.
  • Release notes report accurate stats. "RouterOS Versions" counted (version, architecture) rows plus metadata-only versions (103). It now counts versions with command data (67). "Commands" is labelled as command entries only. "Docs date" no longer shows the retired 2026-05-26 export date, because the manual is extracted live at each build.
  • Package database coexistence (#145). Each exact package version now uses its own default ~/.rosetta/ros-help-<version>.db, so versions in use never replace each other's files; idle copies are cleaned up automatically (#151). Same-tag asset recovery remains a manual refresh; normal corrected content should ship as a new patch (#80).
  • Automatic database cleanup (#151). Package-mode databases are now opened read-only in rollback-journal mode, and each client holds a SQLite read lock for its lifetime. On startup rosetta keeps the versions in use plus the most recently used idle one, and deletes older ~/.rosetta/ros-help-<version>.db copies. It never deletes a database a running client holds. The pre-0.11.3 shared ros-help.db is never deleted automatically: its file times don't change while an older client queries it, so they can't prove no older client is still running (#165). Once it has looked unused for 14 days, the startup log says to delete it by hand. A refresh that would replace a database a live client holds is refused with a clear message. DB_PATH / --db overrides naming a managed ros-help-<semver>.db inside ~/.rosetta/ are rejected. When a newer version's database is present, the MCP server instructions and routeros_stats (newer_local_versions) say so, to flag stale MCP configs.
  • First launch with an overridden DB path (#146). Missing parent directories are created before acquiring the download lock. Startup and browser recovery diagnostics preserve the running build and destination and no longer blame unrelated first-run failures on other clients.
  • Synthetic _lead sections return only the introduction, including their own code and word count, when selected by anchor or heading. Large pages such as WiFi CAPsMAN no longer expand a short lead into a whole-page table of contents (#144).
  • KNOT LR8 / LR9 kit lookups no longer return the base KNOT (#154). MikroTik's new /hardware/knot-lr8-kit and knot-lr9-kit pages link the base knot product as well as their own, and that cross-link alone matched the KNOT matrix row. These pages turned knot-lr8-kit / knot-lr9-kit into aliases of the current base board. The hardware assessment now drops a claim made only through a link when another page owns that device by its own slug or title. Both kits resolve as their own discontinued devices.
  • Hardware catalog: devices without a /hardware page now carry their www specs, and NetMetal ac² is no longer an alias of NetMetal ax (#155). Curated device-exceptions.toml www codes (KNOT Gateway HL9/LR8, LtAP LTE7 kit, Chateau LTE12 (2025), FTC21-ups, CubeSA 60Pro ac, R11e-LTE7) are now fetched and attached to their catalog rows. MikroTik's /hardware/netmetal-ac page links netmetal_ax as its product page, and that link alone used to fold the discontinued NetMetal ac² into NetMetal ax. It now resolves as its own discontinued device, and NetMetal ax cites its own /hardware/netmetal-ax page.
  • CLI-Reference crosswalk baseline matches the real build again. #159 added a routing/route/rule manual-only row that the CLI-Reference does not have (the manual's routing/route page has only a routing/route section; routing/rule is its own page and links exactly). That kept V-cliref-link-drift failing in every QA rehearsal. The baseline was regenerated from a live extract: 962 exact, 100 manual-only, 1,062 entries. When the gate fails now, it lists the added and removed baseline rows instead of only saying the file is stale.
  • "How do I set up …" searches find focused pages again. The particle "up" in "set up" was a required search term, so pages that never use the word were dropped. After MikroTik split the DHCP manual into separate pages, "how do I set up a DHCP server" stopped returning DHCP Server; it is now the top result. "up" still counts when it is not part of "set up" (e.g. "interface up event").
  • Property lookups and command explanations fall back to the CLI Reference (#169). MikroTik moved the property tables for DNS, DHCP, NAT, IP addresses, routes, users, the scheduler, NTP, /system/note and other menus out of the manual pages into its CLI Reference. On the fresh 0.11.3 corpus, routeros_explain_command warned unknown-arg for 54 of 70 arguments across 30 everyday commands, and routeros_lookup_property name=show-at-login found nothing. When the manual has nothing better than low for a menu, both tools now answer from the CLI-Reference overlay: high for the exact menu (or a command's own entry, such as /tool/fetch), medium without a command path. Every property row now has source (manual or cli-reference). CLI-Reference rows have a null page_id and link the CLI Reference page. Explanations don't treat a read-only CLI-Reference field as a settable argument. The same 30 commands now leave 1 of 70 unknown, and QA fails a release DB that leaves more than 7 (V-explain-grounding).
  • Tool descriptions report the command-data version range from the database. routeros_explain_command, routeros_command_tree, routeros_command_version_check, routeros_command_diff, routeros_stats and routeros_current_versions said "7.9–7.23beta2" and "aligned with long-term ~7.22". The database actually served 7.9–7.25rc1, and agents read the descriptions. The range now comes from command_versions at startup. It skips the metadata-only ros_versions rows (7.1.1, 7.8) that make routeros_stats' own ros_version_min read 7.1.1. The README coverage table is refreshed from the next.114 release DB, and no longer claims the CLI Reference isn't ingested.
  • A described CLI-Reference row now beats a manual row below high (B-0025). /ip/firewall/filter chain was described as "Bridge firewall chain", and its action list lacked reject and fasttrack-connection. Both came from the bridge-firewall section, which ranked medium for the IP firewall. The exact CLI-Reference definitions now lead, and the manual rows follow as candidates. 101 menu settings change. A CLI-Reference row with no description still never displaces a manual description: 54% of settable CLI-Reference fields are blank, mostly Wi-Fi, where the manual holds the only text. When routeros_explain_command can only offer a blank CLI-Reference row, it keeps the menu and type and adds a new no-description warning. The warning says the argument is listed for that menu, so it exists, and that only MikroTik's description is missing; it is not a sign the argument is invalid. unknown-arg now reads "not found", meaning neither the CLI Reference nor a menu-aligned manual page lists the argument. QA now also gates no-description and wrong-menu manual answers on the fixed command set, and reports a per-menu census of CLI-Reference description coverage on each release.
  • Command explanations omit unrelated, low-confidence property annotations and warn per argument when no menu-aligned documentation is available. High/medium annotations and property lookup candidates remain available (#147, part of #58).
  • Live extractor runs no longer mix in stale cached pages, and --from-cache reproduces the last live run (#160). make extract-cliref reused any page already in manual/cli-reference/, and fetched only the pages it hadn't cached. A July copy of routing__route.md kept a section MikroTik had since removed, so a local "live" build disagreed with CI's empty-cache build (#159). extract-dude did the same unless --force was passed. Both now re-fetch every page on a live run. Caches were also never pruned: a page MikroTik deleted stayed cached and --from-cache kept extracting it (#154). After a complete live run (no --limit, no fetch errors), extract-docusaurus, extract-cliref, assess-hardware, assess-www and extract-dude now delete the cached pages that run did not discover, keeping _sitemap.txt / _llms.txt. extract-dude --force now only re-downloads images already in dude/images/. assess-www no longer caches a 429/5xx answer as a confirmed 404, and extract-dude --from-cache no longer downloads images.
  • /interface/bridge/vlan links to "Bridge VLAN Table", not "VLANs on Wireless" (#131). The command linker now credits a hyphenated page slug that spells out two or more trailing command segments in order, so bridge-vlan-table beats the prefix match vlan ↔ vlans-on-wireless. The 14 linked /interface/bridge/vlan rows move to "Bridge VLAN Table", and the 12 /ip/packing rows, previously unlinked, now link to "IP Packing". No other command link changes on the 0.11.3-next.116 corpus. This affects which page routeros_command_tree, routeros_get_page and browse point at for these menus. Property lookups are unchanged: neither page has property rows.

Added

  • GitHub Release notes start with what changed (#22). A stable release's notes open with its CHANGELOG section. A -next release's notes open with the [Unreleased] section, headed "Changes since last release (unreleased)". The database stats and build info follow. A -next release fails if CHANGELOG.md has no [Unreleased] heading, rather than reporting that nothing changed.
  • YTDLP_ARGS for the video transcript extractor (#156). Extra yt-dlp arguments, such as --cookies-from-browser firefox, now pass through to every yt-dlp call when YouTube rate-limits an anonymous scrape. The transcript cache is refreshed to 746 videos (24 new).

Changed

  • Product matrix refreshed to the 2026-10-03 snapshot (#121). devices and the hardware overlay now read matrix/2026-10-03/matrix.csv (155 products). It adds KNOT Gateway HL9 / LR8 and drops Groove 52, LHG XL 5 ac, and SXTsq 5 ac, which MikroTik no longer lists. MikroTik has since published /hardware pages for LAMP 5G R16, LHGG LTE7 kit, SXTsq Embedded LTE4 Global, and SXTsq 5 ax, so these now resolve without curated exceptions. The KNOT and wAP LoRa kits now link their own /hardware and product pages instead of a shared base-board page.
  • Release content floors follow MikroTik's continued CLI-Reference migration. Since 0.11.2, 26 more manual pages (DNS, NTP, user, services, packet sniffer, Back To Home/cloud, scheduler, …) have replaced their inline property tables with links to /docs/cli-reference/. Today's corpus has 2,745 table-linked properties, compared with 3,357 in 0.11.2. The V-db-min-content floors are now ≥600 tables, ≥6,100 data rows, and ≥2,450 linked properties, which keeps the same roughly 10% headroom. The moved fields remain in the CLI-Reference overlay.
  • Two npm channels: latest and next (#152). Prereleases now publish as X.Y.Z-next.N to the next dist-tag only, and @next is never behind latest: a stable release also moves next (and the OCI :next tag) unless a newer prerelease is already there. The alpha / beta / rc dist-tags and OCI tags are retired; a config pinned to one should switch to @next. The release workflow rejects any other prerelease identifier and fails if next would end up behind latest.

Database Stats

  • Pages: 370
  • Commands: 5333 (command entries; routeros_stats also counts menus and arguments)
  • RouterOS versions with command data: 67
  • Devices: 155
  • Properties: 2699
  • Videos: 746 (2374 transcript segments)

Build Info