github 2GT-Media-Group-LLC/mikrotik-manager v0.24.16-beta

pre-release4 hours ago

Fix the port sort, the Speed column, Sites discovery and firmware timeouts

Four reports from @Orhideous.

Port sort (#146)

"ports aren't sorted by default-name: 1, 8, 2, 7, 3, 4, 5, 6"

Correct. The group ordering was moved to the factory name; the numeric
ordering beside it was not, and still read p.name:

const aNum = parseInt(a.name.replace(/\D/g, '') || '0', 10);

portSortKey already existed for exactly this, was exported, and carried a
test asserting "sorts a renamed port by its hardware position, not its new
name". It was never wired into the component. The test passed throughout
because it tested the function rather than the thing that runs.

ESLint did report it -- 'portSortKey' is defined but never used -- as a
warning, among 111 standing warnings, against a gate that only fails on
errors. So the tooling caught it and nobody could see it. The rule is now
an error and the 16 existing violations are cleared, which also removed a
dead component, a dead mutation and an unused query client.

Speed column (#146)

Empty for all 59 ethernet interfaces fleet-wide, not just his. The
collector read enrichedIface['speed'] from /interface/print, which has no
speed field on any version tested -- nor does /interface/ethernet/print. It
had never worked.

Copper versus fibre (#146)

I said there was nothing collectable that distinguished them. Wrong:
/interface/ethernet/monitor carries it, and he sent the proof. I had
checked two commands and generalised to "nothing exists".

It also answers the Speed column, so one call closes both. My worry about
per-port cost was unfounded -- monitor takes every interface at once: 17
ports in 386ms on a CRS510.

Now collected on the slow poll, giving negotiated rate plus module type,
connector and vendor part number. sfp_present is deliberately tri-state:
NULL for copper, where RouterOS omits the field entirely; false for an
empty cage; true for a seated module. That distinction is physical fact and
outranks the factory name when classifying, though QSFP naming still
decides lane grouping since monitor cannot describe it.

Verified on hardware: ether1 reports 1Gbps, qsfp28-1-1 reports 100Gbps with
XQ+DA0003, eight empty CRS309 cages report false. Fleet-wide, 46 of 59
ethernet ports are now identified as cages, 16 with modules seated.

Also shows default-name under the port name when the port has been renamed,
and hides it when it has not, as he suggested.

Sites page unreachable (#148)

Correct, and worse than "hard to find". The only route was the "All sites"
entry in the selector, itself behind sites.length > 1, so a single-site
install could not reach the page at all. That gate was my deliberate choice
for #130 -- don't show a single-network install a concept it never asked
for -- with a consequence I did not think through. Now a sidebar entry,
unconditionally: one row does not impose the concept the way an unreachable
page frustrates the people who want it.

Firmware timeouts (#141)

Both were hardcoded and are now settings, clamped to 1-120 minutes and read
per rollout.

One correction to the report: the reboot timeout was already 12 minutes,
not 10 -- the 10-minute figure is the download timeout. The point stands
either way, since a CRS taking "a full 12 minutes" was failing at exactly
the ceiling.

Full preflight green.


Container image: ghcr.io/2gt-media-group-llc/mikrotik-manager:0.24.16-beta

Documentation: https://2gt-media-group-llc.github.io/mikrotik-manager/

Don't miss a new mikrotik-manager release

NewReleases is sending notifications on new releases.