You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
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)