Skip to content

Releases: YusDyr/luci-app-trafficctl

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 21 Jun 19:54

What's Changed

Features

  • discover devices across all LAN bridges and VLANs (53ccf1b)
    Closes #13. The backend assumed a single LAN: tctl_get_lan_device()
    returned one device and summary.sh/bytes.sh filtered conntrack to that
    one /24, so any device on a second bridge (br-lan2, guest) or a tagged
    VLAN was silently dropped — the reporter literally "can't see IP from
    this interface".

Full Changelog: v1.7.1...v1.8.0


Download

File OpenWrt version Install command
luci-app-trafficctl.ipk 21.02 — 24.10 opkg install <file>
luci-app-trafficctl.apk 25.12+ apk add --allow-untrusted <file>

Stable URL (always points to the latest release):

wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.ipk
wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.apk

Other filenames (_all.ipk, _noarch.apk, versioned) are the same file.

v1.7.1

Choose a tag to compare

@github-actions github-actions released this 21 Jun 19:26

What's Changed

Bug Fixes

  • clean up temp files on signal via EXIT traps (351ec4c)
    trafficctl-device.sh (rdns map) and trafficctl-shape-stats.sh (mktemp
    qdisc scratch) removed their /tmp scratch files only on the normal exit
    path. rpcd kills a backend script that exceeds its timeout, which on a
    loaded router is exactly when these run slowly — leaving the temp file
    behind and slowly filling tmpfs (RAM). Add EXIT/INT/TERM traps so the
    files are removed even when the script is killed mid-run. summary.sh

Performance

  • stop re-scanning firewall/conntrack state per device (bab7528)
    trafficctl-summary.sh rebuilt its entire view by, for every active LAN
    device inside the loop, re-reading all of /proc/net/nf_conntrack and
    re-dumping nft chains/tables and tc classes — work that is identical
    regardless of which IP is being processed. On a router with many
    devices and a large conntrack table this is dozens of heavy forks every
    refresh (and the dashboard refreshes every few seconds), which users

Full Changelog: v1.7.0...v1.7.1


Download

File OpenWrt version Install command
luci-app-trafficctl.ipk 21.02 — 24.10 opkg install <file>
luci-app-trafficctl.apk 25.12+ apk add --allow-untrusted <file>

Stable URL (always points to the latest release):

wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.ipk
wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.apk

Other filenames (_all.ipk, _noarch.apk, versioned) are the same file.

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 04 Jun 22:44

What's Changed

Features

  • add SW/HW flow offload toggles to settings UI (54debcd)
    Adds a "Flow Offload" collapsible section in the settings panel with software and hardware offload toggles. HW is disabled when SW is off. Changes take effect immediately via fw4 reload (backend via offload_get/offload_set rpcd methods).
  • batch rDNS, device speed graph, fix offload toggles (783ec0c)
    • Replace per-IP rdns queue with single network.rrdns.lookup batch call: all uncached IPs resolved in one round-trip instead of 4-at-a-time sequential requests; removes resolving… stuck state.
  • improve flow offload UI — show mode badge and per-toggle descriptions (a3f3271)
    Replace bare "Software"/"Hardware" toggles with:
    • current mode badge (⊘ No offload / ◑ Software / ● Hardware) in colour
    • per-toggle description explaining what each option does and its trade-offs
    • ⚠️ warning about broken speed monitoring for hw offload placed directly below the hardware toggle instead of in a generic footnote
    • save status now says "Applied — firewall reloading" for clarity
  • LuCI native UI, offload fixes, batch rDNS, per-device graph (f71aff9)
    feat: LuCI native UI, offload fixes, batch rDNS, per-device graph

Bug Fixes

  • use --format ustar in build-ipk.sh to prevent PaxHeader entries (7b0e717) bsdtar on macOS defaults to PAX format which embeds PaxHeader/ entries in archives. BusyBox tar on OpenWrt extracts them as literal directories/files, corrupting the install (real files missing from /usr/libexec/rpcd and /www). --format ustar forces old POSIX format with no PaxHeader support; all our paths fit within the 100-char limit.
  • remove bind-dig dependency, update stale docs (cb18ab3)
    Replace dig with ubus network.rrdns lookup (same rpcd-mod-rrdns the LuCI frontend uses) + BusyBox nslookup fallback in trafficctl-rdns.sh and trafficctl-device.sh. The device script also gains a batch ubus call instead of N sequential dig invocations.

Other

  • add feature-build workflow for shareable dev IPKs (972915b)
    Triggers on push to feature/** branches. Builds the IPK, smoke-tests it, then creates/updates a floating pre-release tagged build- so the download URL stays stable across pushes:
    …/releases/download/build-feature-luci-native-ui/luci-app-trafficctl.ipk
  • add APK build to feature-build workflow (00ada2f)
    Split into three parallel jobs: build-ipk, build-apk (via openwrt/gh-action-sdk), and publish. APK is unsigned (no PRIVATE_KEY) since feature builds install with --allow-untrusted anyway. Both artifacts get stable download URLs under the same floating pre-release tag.

Full Changelog: v1.6.6...v1.7.0


Download

File OpenWrt version Install command
luci-app-trafficctl.ipk 21.02 — 24.10 opkg install <file>
luci-app-trafficctl.apk 25.12+ apk add --allow-untrusted <file>

Stable URL (always points to the latest release):

wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.ipk
wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.apk

Other filenames (_all.ipk, _noarch.apk, versioned) are the same file.

v1.6.6

Choose a tag to compare

@github-actions github-actions released this 29 May 21:42

What's Changed

Bug Fixes

  • Fix feed-based install (#7) — ./scripts/feeds install -p trafficctl luci-app-trafficctl was failing with target pattern contains no '%' because OpenWrt's find -L … -mindepth 1 skips the repository-root Makefile. The package source is now in a luci-app-trafficctl/ subdirectory — the standard layout used by openwrt/packages and other community feeds.
  • Fix /etc/config/trafficctl clobbering on opkg --force-reinstall — runtime state files (shapes.json, telegram_known.json) were listed as conffiles, which made opkg refuse to install on a fresh device. Conffiles now contain only /etc/config/trafficctl.
  • Stop renaming /etc/trafficmon/ to /etc/trafficctl/ in postinst — the migration code could collide with other trafficmon-named packages on the same router. Postinst no longer touches the old directory; existing installations should migrate manually if needed.

CI hardening

  • New OpenWrt SDK feed-install regression test (×3 SDK versions) reproduces the user-facing path that issue #7 was about.
  • New upgrade test (×2 SDK versions) installs the previous release, marks the config, installs the new build, and asserts the marker survives.
  • New dependency test (×3 versions) verifies that missing deps fail cleanly and that opkg update / apk update resolves them.
  • APK signing migrated from RSA to NIST P-256 (EC) keys — matches what apk-tools v3 actually requires.
  • snapshot/x86-64 compat job now tolerates upstream rpcd-mod-luci / rpcd-mod-ucode post-install hook noise that doesn't affect our package.
  • Full compatibility matrix is 61/61 green across OpenWrt 21.02 → snapshot × 8 architectures.

Installation

File OpenWrt Install command
luci-app-trafficctl.ipk 21.02 – 24.10 opkg install <file>
luci-app-trafficctl.apk 25.12+ apk add --allow-untrusted <file>

Stable URLs (always point to the latest release):

wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.ipk
wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.apk

Upgrading from v1.5.0 / v1.6.5

opkg upgrade luci-app-trafficctl (or apk upgrade) works in place — your /etc/config/trafficctl is preserved. No feature additions vs v1.5.0; this release exists to make the feed-install path documented in the README actually work.

Full Changelog: v1.6.5...v1.6.6

v1.6.5

Choose a tag to compare

@github-actions github-actions released this 28 May 14:34

What's Changed

v1.6.5 is the first working build in the v1.6 line — earlier v1.6.1 – v1.6.4 attempts were broken (invalid APK format, missing assets, signing-key mismatch) and have been deleted. No new user-facing features vs v1.5.0 — this release exists to make the release-pipeline output installable again.

Bug Fixes

  • APK signing key migrated from RSA to NIST P-256 (EC)apk-tools v3 (OpenWrt 25.12) requires an EC key; the RSA key we shipped in v1.4.0 silently produced unsigned APKs that no router could install. Both the embedded keys/apk-signing.pub and the GitHub APK_PRIVATE_KEY secret are now EC.
  • Preserve IPK across the SDK Docker step — the SDK action was wiping dist/ between IPK and APK build stages. The IPK is now staged outside the wiped tree and re-attached after.
  • Generic-named assets via hardlinksreleases/latest/download/luci-app-trafficctl.{ipk,apk} reliably return the right file even when the SDK action renames the build output.
  • status.css is now in the package — was missing from v1.4.0 / v1.5.0 due to a copy step that only listed status.js.

Installation

Identical to v1.5.0 — see that release for details.

opkg install https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.ipk
# or, on OpenWrt 25.12+:
apk add --allow-untrusted https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.apk

Full Changelog: v1.5.0...v1.6.5

v1.6.4

Choose a tag to compare

@github-actions github-actions released this 28 May 14:24

⚠️ BROKEN PACKAGE INSTALLATION — this release has install issues
(missing status.css, invalid APK format, or other broken artifacts).
Use v1.6.5+ instead. Artifacts have been deleted; release entry
preserved for historical context.


What's Changed

Bug Fixes

  • preserve IPK files across SDK Docker step

Full Changelog: v1.6.3...v1.6.4

v1.6.3

Choose a tag to compare

@github-actions github-actions released this 28 May 14:23

⚠️ BROKEN PACKAGE INSTALLATION — this release has install issues
(missing status.css, invalid APK format, or other broken artifacts).
Use v1.6.5+ instead. Artifacts have been deleted; release entry
preserved for historical context.


What's Changed

Bug Fixes

  • mkdir dist before collecting APK in manual-release

Full Changelog: v1.6.2...v1.6.3

v1.6.2

Choose a tag to compare

@github-actions github-actions released this 28 May 14:06

⚠️ BROKEN PACKAGE INSTALLATION — this release has install issues
(missing status.css, invalid APK format, or other broken artifacts).
Use v1.6.5+ instead. Artifacts have been deleted; release entry
preserved for historical context.


What's Changed

Bug Fixes

  • remove duplicate luci EXTRA_FEEDS from manual-release

Full Changelog: v1.6.1...v1.6.2

v1.6.1

Choose a tag to compare

@github-actions github-actions released this 28 May 13:56

⚠️ BROKEN PACKAGE INSTALLATION — this release has install issues
(missing status.css, invalid APK format, or other broken artifacts).
Use v1.6.5+ instead. Artifacts have been deleted; release entry
preserved for historical context.


What's Changed

Bug Fixes

  • remove NO_DEFAULT_FEEDS from manual-release on main

Other

  • V=sc verbose for SDK in manual-release + asset hardlinks

Full Changelog: v1.6.0...v1.6.1

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 27 May 17:03
e567f6c

What's Changed

Features

  • Auto-detect software flow offload (#5) — the realtime monitor now detects whether the router is running OpenWrt's software flow offload and switches its speed-measurement strategy accordingly:
    • No offload — conntrack byte counters remain accurate; we read them as before.
    • Offload active — conntrack stops accounting for fast-path packets once a flow is offloaded. We instead read an nftables counter map attached at forward priority -200 (before the offload hook), which captures every packet.
    • The choice is re-evaluated on each refresh, so toggling flow offload in OpenWrt doesn't break the speed graph mid-session.

Installation

File OpenWrt Install command
luci-app-trafficctl.ipk 21.02 – 24.10 opkg install <file>
luci-app-trafficctl.apk 25.12+ apk add --allow-untrusted <file>

Stable URLs (always point to the latest release):

wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.ipk
wget https://github.com/YusDyr/luci-app-trafficctl/releases/latest/download/luci-app-trafficctl.apk

If you're already on v1.4.0+, opkg upgrade / apk upgrade works in place.

Full Changelog: v1.4.0...v1.5.0