Skip to content

History

Daniel Frantík edited this page Jul 20, 2026 · 17 revisions

Version history

4.0.0-alpha2 (2026-07)

⚠️ Packaging change

  • The O/R mapper is now part of the tik4net package. It used to be published separately — as tik4net.objects throughout 3.x, then as tik4net.entities for 4.0.0-alpha. The tik4net package now contains both tik4net.dll and tik4net.objects.dll.
  • No source changes needed. Namespaces (tik4net.Objects, …) and assembly names are unchanged; only the NuGet package layout changed.
  • If you are upgrading, remove any PackageReference to tik4net.objects or tik4net.entities — leaving them in place causes an assembly conflict. See Upgrading from 3.x to 4.0.
  • Packages published from now on: tik4net, tik4net.ssh, tik4net.testing, tik4net.mcp.

4.0.0-alpha (2026-06-17)

First public release of the 4.x line. All packages published on NuGet.org: tik4net, tik4net.entities, tik4net.ssh, tik4net.testing, tik4net.mcp.

New transports

All new transports implement the same ITikConnection / LoadAll<T>() / Save<T>() interface:

  • REST / REST-SSL (Rest, RestSsl) — HTTP REST API, requires RouterOS 7.1+
  • Telnet (Telnet) — plain-text CLI over TCP 23
  • MAC-Telnet (MacTelnet) — encrypted CLI over UDP 20561, no IP route needed (EC-SRP5 auth)
  • WinBox CLI (WinboxCli) — encrypted WinBox terminal over TCP 8291 (EC-SRP5 + AES)
  • WinBox CLI over MAC (WinboxCliMac) — same but over the MAC layer (UDP 20561)
  • WinBox Native (WinboxNative) — structured M2 CRUD over TCP 8291, no terminal (alpha ⚠️)
  • WinBox Native over MAC (WinboxNativeMac) — native M2 over the MAC layer (alpha ⚠️)
  • SSH (Ssh, in separate tik4net.ssh package) — encrypted CLI over TCP 22 via SSH PTY

New features

  • Change trackingSave<T>() diffs against the load-time snapshot; only changed fields sent
  • Safe ModeSafeModeTake() / SafeModeRelease() / SafeModeUnroll() with auto-rollback on disconnect
  • Streaming monitorsExecuteAsync / LoadListenAsync for live data (WinBox Native; listen poll+diff on CLI transports)
  • TikConnectionSetup — unified connection configuration builder
  • Connection capability modelconnection.Supports(TikConnectionCapability.Listen) etc.
  • Raw command pass-throughCreateRawCommand for commands outside the O/R mapper
  • WinBox GUI-name addressing — address entities by WinBox display name on WinboxNative
  • MCP server tool (tik4net.mcp) — run any command over any transport from an AI assistant

Breaking changes (from 3.6)

  • Exception hierarchy unifiedTikCommandException subtypes restructured; review catch blocks on specific subtypes
  • SSH is now a satellite package — add tik4net.ssh and call Tik4NetSsh.Register() at startup
  • TikConnectionType.Api_v2 / ApiSsl_v2 — still [Obsolete(error)] as in 3.6; no action needed unless you haven't migrated yet

4.0.0 (in development)

⚠️ Breaking changes

  • Save default mode changed to OnlyChangesSave now diffs against a local snapshot instead of performing a LoadById round-trip. Entities not loaded via Load* are sent in full. To restore 3.x behavior globally: TikDefaults.SaveMode = TikSaveMode.FullUpdate; See Change tracking.

New features

  • Change tracking — automatic snapshot on all Load* calls; Save sends only changed fields; no-op saves skip the API call. New types: TikChangeTracker, TikSnapshot, TikDefaults, TikSaveMode. New extension: connection.ChangeTracker().
  • New transports behind the same ITikConnection (all alpha preview — see Connection types & capabilities):
  • Safe ModeSafeModeTake() / SafeModeRelease() / SafeModeUnroll() with automatic rollback-on-disconnect, across API / CLI / WinBox transports.
  • Capability modelTikConnectionCapability flags + Supports / Require; unsupported features fail closed with TikConnectionCapabilityNotSupportedException.
  • Raw command pass-throughconnection.CreateRawCommand(raw) sends a payload in the transport's own dialect. See Command translation.
  • WinBox Native addressing by GUI names — opt-in connection.UseGuiNames = true, plus PathAlias(apiPath, winboxMenuPath) to map a whole path by the labels WinBox shows (upgrade-safe, unlike the numeric PathOverride). See Session mappings.
  • MCP server — drive any command over any transport from an AI assistant.

⚠️ The non-API transports are alpha previews and the whole 4.0.0 line is still in development — behaviour and API may change before release.


3.6.0 (2026)

⚠️ Breaking changes

  • Targets netstandard2.0 only. Dropped net35/net40/net452/netcoreapp1.x. Compatible with .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5–9, Xamarin, Unity.
  • LoadListen<T> renamed to LoadListenAsync<T> for naming consistency with LoadAsync.

Packages

  • Three separate NuGet packagestik4net, tik4net.entities, tik4net.testing. Installing tik4net.entities automatically pulls in tik4net. (Note: the assembly file is still named tik4net.objects.dll; only the NuGet package ID changed.) — superseded in 4.0.0-alpha2, which merges the mapper back into tik4net.
  • New tik4net.testing package — TikFakeConnection for unit tests without a live router. (#54)

Core

  • LoadListenAsync<T> — real-time entity monitoring via /listen (#88)
  • ExecuteListUntilDone — streams sentences until !done; fixes false-abort in ExecuteListWithDuration (#48)
  • [Flags] enum support for comma-separated MikroTik fields (#79, #94)
  • RouterOS 7.18+ empty sentence responses handled correctly (#105)

Entities

  • WireGuard — InterfaceWireguard, InterfaceWireguardPeer (#92)
  • PPPoE — InterfacePppoeClient, InterfacePppoeClientMonitor (#81)
  • BGP — BgpConnection

Fixed

  • Fix reboot/shutdown causing IOException (#100)
  • Fix regex rejecting empty property values (#97)
  • Ignore .section progress sentences in EnsureSingleResponse (#96)

3.5.0.0 (2020/01/01)

Core

  • Support .proplist parameter
  • ApiCommand - allow to set parameter type via name prefix e.q. =name or ?name
  • ApiCommand.ExecuteSingleRowOrDefault #58
  • ApiCommand.ExecuteScalar(target), ExecuteScalarOrDefault(...), ExecuteList(proplist)
  • ApiCommand.WithParameter builder pattern support
  • ApiConnection.DebugEnabled=true when Debugger.IsAttached
  • Exception tree redesign
    • TikConnectionNotOpenException, TikConnectionLoginException
    • TikCommandTrapException
      • TikNoSuchCommandException
      • TikNoSuchItemException
      • TikAlreadyHaveSuchItemException
      • TikCommandAmbiguousResultException
    • TikCommandFatalException
    • TikCommandAbortException
    • TikCommandUnexpectedResponseException
  • .NET core 2.2

Entities

  • HotspotIpBinding
  • EthernetMonitor
  • Added FirewallFilter.Bytes, FirewallFilter.Packets
  • Interface.LastLinkDownTime, LastLinkUpTime. Credits: nescafe2002
  • IpRoute (dj3mu)
  • BGP: BgpAdvertisements, BgpInstance, BgpNetwork, BgpPeer (dj3mu)
  • SystemIdentity (dj3mu)
  • SystemRouterboard (dj3mu)
  • Users: User, UserGroup (dj3mu)
  • FirewalServicePort
  • Obsolete classes cleanup

Fixed

  • Duplicit response fields workaround. #51
  • FirewallFilter.Protocol default value removed - fix #52
  • FirewallNat.DstPort/SrcPort is string now (mortengjesing)
  • Unification of login process: Api_v2, ApiSsl_v2 is now obsolete. Api and ApiSsl will work for both new and old tik version

3.4.0.0 (2018/09/26)

Entities

  • tool/traceroute entity + helpers
  • tool/ping helpers

Fixed

  • Command.ExecuteWithDuration fix
  • InterfaceMonitorTraffic fix

3.3.0.0 (2018/09/03)

Core

  • Support for own tag sent to sync commands in commandText
  • Native support for entities loaded in different way than /print
  • Connection.LoadByName extension
  • Connection extension methods for entity static methods
  • Connection .ExecuteNonQuery, .ExecuteScalar extensions
  • ApiCommand onDoneCallback for LoadAsync
  • Connection.SendTagWithSyncCommand option

Entities

  • InterfaceMonitorTraffic
  • WirelessChannels, WirelessSniffer ( (c) AsafMag)
  • PPP objects

Fixed

  • Exception from conncetion.Close
  • Typo in InterfaceWireless
  • Correct behavior when connection was forced to close
  • Parallel async commands cancel fix

3.2.0.0 (2018/07/06)

Core

  • Connection.Open fixed (mentioned by az1984, hardwarematik)
  • New 6.43 login process supported (credits:DaveSchmid)

3.1.0.0 (2018/05/01)

Core

  • XML documentation embeded also in *.zip
  • Connection open timeout support
  • small improvements

Entities

  • WOL support

3.0.0.0 (2017/12/30)

Core

  • BETA: Support for NetCoreApp and NetStandard (functional with Xamarin on Android devices etc.)
  • Some bug fixies and updates

2.2.0.0 (2017/05/01)

Core

  • multiline response (script) fix. Credits: pmishka

Entities

  • Adding CapsManRegistrationTable entity and support TimeSpan conversion. Credits: sebastienwarin

2.1.0.0 (2016/06/08)

Core

  • .NET 4.6

2.0.0.0 (2016/05/28)

Core

  • Encoding support

Entities

  • Refactoring - nested classes removed (breaking change!)
  • DNS objects added
  • Ping object

1.8.0.0 (2016/02/18)

Core

  • API-SSL support (alpha)
  • nuget support

Entities

  • Additional hotspot classes (credits: D-Bullock)
  • Mikrotik time helper class (credits: D-Bullock)

1.6.0.0 (2016/02/02)

Core

  • Added support for formated commands

Entities

  • Bridge entities (InterfaceBridge, BridgeNat, BridgeFilter)

1.5.0.0 (2015/10/16)

Core

Entities

  • FirewallConnection.ConnectionTracking

1.4.0.0 (2015/10/28)

Core

  • Fixed word length calculation (credits: h44z)
  • Hotspot user management fixed
  • Async API refactoring (cleaning)

1.3.0.0 (2015/10/16)

Entities

  • Hotspot users
  • Interface (eth/wlan)

1.2.2.0

Entities

  • hotspot user entities

1.2.0.0

  • Enum support (as field values)
  • C# entity code generators

1.1.0.0

  • .NET 3.5, .NET 4.0, .NET 4.5.2

1.0.0.0

  • Initial release

0.9.7.0

  • Deprecated (incompatible) version

Clone this wiki locally