## libnyanpasu/clash-nyanpasu — v1.6.1…v2.0.0-beta.1

_4721+ commits._

### Features
- **feat: add app update functionality with hooks and tests (#5579)** (0cdf971)
- **feat(traffic): locate local sources through opt-in public IP probes (#5580)** (c7cd137)
- **feat(frontend): open filter chips that do not fit in a dialog (#5573)** (ee50a67)
- **feat(frontend): jump between rules, connections and traffic (#5565)** (434e189)
- **feat(connections): filter connections by traffic dimensions and range (#5564)** (fa52583)
- **feat(frontend): offer a way back after jumping between pages (#5563)** (a7e654e)
- **feat(traffic): list closed connections and live ids by usage filters (#5562)** (f2959a2)
- **feat(dashboard): add daily widgets and improve widget library (#5566)** (437c023)
- **feat(theme): pick the theme color in an HCT panel with live preview (#5561)** (d329806)
- **feat(traffic): weigh the whole traffic page by traffic or connections (#5557)** (cc21cbd)
- **feat(traffic): animate the ranking lists as their order changes (#5555)** (66f3ed6)
- **feat(traffic): preview the traffic page with generated usage in dev builds (#5553)** (93fa5b8)
- **feat(traffic): shade the map by traffic share and how regions were located (#5552)** (c9504eb)
- **feat(traffic): locate DIRECT destinations by their peer and record how (#5551)** (6a19f58)
- **feat(traffic): locate regions with the app's own country index (#5550)** (7cd0a8f)
- **feat(traffic): probe the public address DIRECT traffic leaves from (#5547)** (fec9bde)
- **feat(updater): add ghfast download source** (0343498)
- **feat(geodata): add lookups over the core's geo databases (#5537)** (904993c)
- **feat(dashboard): add per-widget configuration** (946a79a)
- **feat(ci): publish beta prereleases and fix the beta update path (#5532)** (4993959)
- **feat: back up the config before migrations and from settings (#5529)** (823d9df)
- **feat(traffic): rebuild the topology page as traffic analytics (#5519)** (22465a4)
- **feat(traffic): record usage per time bucket with retention (#5518)** (af3cc18)
- **feat(rules): show live connections and traffic per rule (#5487)** (7236b79)
- **feat(updater): allow ordered package download sources** (938aa96)
- **feat(connections): add closed connections tab and column settings (#5486)** (4da9d68)
- **feat(traffic): expose session traffic through the client facade (#5479)** (e9991e2)
- **feat(traffic): record session traffic in an application actor (#5478)** (4487dd5)
- **feat(traffic): add profile-scoped traffic accounting with a redb store (#5477)** (569ed43)
- **feat(profiles): show sync status and persisted run history (#5459)** (3b721c8)
- **feat(script): give Lua scripts a console that matches the JS one (#5455)** (039c505)
- **feat(ipc): send command errors as a structured payload with copyable details (#5431)** (c67b240)

### Fixes
- **fix: specify architecture for Windows and Linux builds** (4434603)
- **fix: reorder restart options on system menu (#5581)** (6a70a0e)
- **fix(l10n): overhaul english and chinese translations (#5583)** (2b7cb73)
- **fix(ci): increase archive upload chunks to 50 MiB** (9b1a13b)
- **fix(startup): remove fixed delays before CLI exit (#5570)** (a206fd0)
- **fix(logs): load core history on scroll and align footer selects (#5559)** (5ba1b2e)
- **fix(traffic): keep the stat cards one height (#5556)** (e120dd4)
- **fix(frontend): never print traffic amounts in exponent notation (#5554)** (4b89c2f)
- **fix(traffic): read the one country among a GeoIP record's tags (#5549)** (3e1d235)
- **fix(deps): update dependency mermaid to v12.1.0 (#5544)** (b274956)
- **fix(deps): update dependency motion to v14 (#5546)** (8ee4421)
- **fix(logs): capture Debug logs and persist the current session (#5490)** (2c0b6c1)
- **fix(upload): add diagnostics upload and verification for nightly builds** (7920efc)
- **fix(scripts): recognize the app package on Windows in boundary checks** (2308a4d)
- **fix(scripts): stop counting other crates' Config types as legacy calls** (4fee368)
- **fix(lifecycle): stop the core even when the workflow died (#5540)** (668f5f6)
- **fix(updater): shut the app down before the update installer runs (#5543)** (6184b96)
- **fix(server): stop the internal HTTP server on shutdown (#5541)** (17da393)
- **fix(panic): shut the app down when the main thread panics (#5542)** (ec97b3f)
- **fix(deps): update dependency motion to v13.5.0 (#5525)** (9ba6f50)
- **fix(profiles): accept IP hosts in subscription URLs** (fea99dd)
- **fix(logging): stop the silent app log level from crashing the app (#5533)** (7ae9883)
- **fix(l10n): refine en and zh-cn translations (#5531)** (f5a66fc)
- **fix(l10n): refine zh-tw translations (#5530)** (d7d38f0)
- **fix(core): run the core locally when service mode cannot use the service (#5528)** (80960e6)
- **fix(service): uninstall a stopped service without stopping it first (#5526)** (a0017b3)
- **fix(profiles): stop opening a profile file from crashing the app (#5524)** (e0d75c4)
- **fix(updater): use a fixed-length hash for nightly versions** (8079854)
- **fix(logs): bottom toolbar layout and copy button reset (#5523)** (30e50fa)
- **perf(ui): measure modal layout only when it opens or closes (#5502)** (d490a7d)
- **perf(theme): derive the theme from the color instead of on every render (#5506)** (34b3e83)
- **perf(dashboard): render the widgets once the grid is measured (#5507)** (c4d31a2)
- **fix(connections): start the table scrollbar below the sticky header (#5509)** (397f82f)
- **perf(inspect): show a large step diff a thousand lines at a time (#5505)** (03c292c)
- **perf(inspect): cache the highlighted step YAML and skip huge documents (#5511)** (06a7216)
- **perf(settings): mount the lower settings sections in a deferred render (#5508)** (2389022)
- **perf(ui): scroll the sparkline on the compositor (#5504)** (561cb03)
- **perf(ui): measure the tab indicator only when it moves (#5503)** (c672f0d)
- **perf(ui): run the logo's idle sway on the compositor (#5501)** (a37f36f)
- **perf(ui): run the text marquee on the compositor (#5500)** (93e5300)
- **perf(dashboard): stop samples and KV reads re-rendering whole widgets (#5499)** (4879458)
- **perf(rules): cut the render cost of the rules page (#5497)** (b49150c)
- **perf(settings): load shiki lazily and read core versions once (#5498)** (5c80976)
- **perf(connections): cut the render cost of connection samples (#5496)** (50b0167)
- **perf(hooks): stop setting, system and ws hooks re-rendering needlessly (#5495)** (a7004bc)
- **perf(profiles): animate the active card's gradient only on hover (#5512)** (f5404cf)
- **perf(profiles): keep profile and provider data stable on refetch (#5494)** (cb04886)
- **fix(editor): keep model path stable and Monaco out of main bundle (#5493)** (181fe82)
- **perf(ui): cut shell re-renders on scroll, resize and proxies updates (#5492)** (7c182e6)
- **perf(logs): make log rows cheap to mount and skip unchanged rows (#5513)** (04d899e)
- **perf(logs): cut the render cost of the logs pages (#5510)** (cd1534d)
- **fix(deps): update rust crate tokio-tungstenite to 0.30 (#5488)** (a8dff40)
- **fix(l10n): refine zh-tw translations (#5485)** (16fab86)
- **fix(l10n): refine tray menu text 2 (#5460)** (06557ec)
- **fix(l10n): unify word in tradchinese (#5461)** (e9095e9)
- **fix(core): preserve native state across desktop and service modes (#5425)** (afe9637)
- **fix(profiles): show transform diagnostics and profile names (#5466)** (9c16aba)
- **fix(jobs): keep maintenance timers with their actor owners (#5465)** (2dd0b93)
- **fix(updater): sign nightly updates with the release version (#5464)** (aba2b14)
- **fix(script): keep mapping key order through Lua scripts (#5454)** (ad35ab6)
- **fix(script): name Lua chunks after the script instead of Rust source (#5453)** (40abef4)
- **fix(script): export the right main function when wrapping JS scripts (#5452)** (b75b20f)
- **perf(styles): keep Tailwind's space and divide selectors off WebKit's slow path (#5448)** (09d9d16)
- **perf(proxies): stop dropping frames when switching proxy groups (#5445)** (63ff0a2)
- **fix(ui): keep navbar button highlighted across its section's subpages (#5441)** (ddd19e5)
- **fix(ui): stop proxy node hover from dimming its chips and delay button** (52bb6ae)
- **fix(ui): keep chain step headers in place under WebKit** (92eb52f)
- **perf(proxies): send each proxy node once and reference it by name (#5430)** (05d97a0)

### Tests
- **test(ui): wait for the marquee's first resize before counting reads (#5575)** (1a83004)
- **test(frontend): make two render-count browser tests wait for real events** (dabfa82)
- **test(ui): wait for the marquee's mount measurements before spying (#5535)** (d33f0dd)
- **test(ui): control time in scroll and tab animation assertions** (234ca90)
- **test(effects): inject a nightly build for rejected channel changes** (a9e7cff)
- **test(perf): add on-demand page benchmarks (#5491)** (8b33981)

### Docs
- **docs(traffic): design locating connections with the app's geo index (#5548)** (a59b9f9)
- **docs: publish shared development and language standards** (b2624d5)
- **docs: require unified RPC and clarify worktree selection** (88eaeb9)
- **docs(reviews): record WebKit style invalidation from positional selectors (#5447)** (e1289e8)

### Chore
- **chore: bump version to v2.0.0-beta.1** (6088e57)
- **chore(deps): update rust crate bon to v3.10.2 (#5567)** (d551aae)
- **ci: drop the stale UI build step from Linux and macOS packaging (#5574)** (186c40f)
- **chore(deps): update dependency @iconify/json to v2.2.538 (#5571)** (5d1b73e)
- **chore(deps): update rust crate uuid to v1.27.0 (#5568)** (c51721c)
- **chore(manifest): update manifest [skip ci]** (2453689)
- **chore(deps): update dependency @tanstack/react-query to v5.104.1 (#5539)** (f01722c)
- **refactor(frontend): split workspace packages and unify entrypoints** (95dcf5f)
- **chore(deps): update rust crate croner to v4.0.1 (#5536)** (505f0ba)
- **chore(deps): update dependency @types/node to v24.19.1 (#5534)** (e621bf7)
- **refactor(scripts): organize tooling behind Deno tasks** (bb79d30)
- **chore(ci): standardize workflow names and step spacing** (91f97dd)
- **chore(deps): update dependency shiki to v4.5.0 (#5516)** (c44eefc)
- **chore(deps): update dependency stylelint to v17.16.0 (#5522)** (f28cf8c)
- **chore(deps): remove unused frontend dependencies** (3c0a05c)
- **chore(deps): update dependency knip to v6.39.0 (#5468)** (a64724d)
- **refactor(rpc): unify connection detail subscription commands** (e416209)
- **refactor(frontend): replace Sass with Tailwind and plain CSS** (6f94a43)
- **refactor(frontend): replace Day.js with date-fns** (8139d05)
- **chore(deps): update dependency @iconify/json to v2.2.537 (#5489)** (f2c3387)
- **chore(deps): update dependency vite to v8.3.2 (#5521)** (1d1a482)
- **chore: up serena config** (dce64c9)
- **chore(manifest): update manifest [skip ci]** (c463af7)
- **chore(deps): update rust crate struct-patch to v0.14.4 (#5481)** (12bdf32)
- **chore(deps): update testing packages to v5.0.3 (#5467)** (75e08b9)
- **chore(deps): update tanstack-router monorepo (#5483)** (69aaf2e)
- **refactor: impl cross transport rpc (#5484)** (02db584)
- **chore(deps): update dependency @iconify/json to v2.2.536 (#5480)** (819835d)
- **refactor(jobs): move business timers into the shared job owner (#5458)** (b6b8cf5)
- **chore(deps): update rust crate rust-i18n to v4.2.4 (#5414)** (bc55b2f)
- **chore(deps): update dependency sass-embedded to v1.105.1 (#5462)** (45f48b9)
- **chore(manifest): update manifest [skip ci]** (83fbe50)
- **refactor(script): run JS transforms from memory and keep the JS stack in errors (#5450)** (ccd95f1)
- **refactor(script): use boa's console and pass the log sink into script runners (#5449)** (29e2b2e)
- **chore(deps): update pnpm to v12.8.1 (#5442)** (a707691)
- **refactor(effects): type system proxy, DNS, hotkey and widget failures (#5436)** (c372c6d)
- **refactor(config): return typed configuration and storage errors (#5435)** (d2902d4)
- **refactor(state): type subscriber acks and degradation reasons (#5434)** (019c8fd)
- **refactor(runtime): return typed runtime and core errors (#5433)** (e9de263)
- **refactor(profiles): return typed profile errors with context (#5432)** (176d6d2)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/libnyanpasu/clash-nyanpasu?utm_source=github-action)._