Repository navigation
Sync upstream 1.9.0 and preserve fork Home Assistant advice - #13
Merged
Merged
Conversation
Also records the Locations list and recoverable delete in the changelog and the Locations spec.
Paste wrapped raw clipboard text in ESC[200~ and ESC[201~, so text containing ESC[201~ could end the frame early. Pastes now drop control characters except tab and line breaks before framing.
…osts App.xaml now uses the input: prefix for KillerFamily.Controls. The test hosts parse App.xaml themselves and only mapped the Controls and Layout namespaces to the app assembly, so every WPF-hosted suite failed to load.
…esults Each added device rebuilt the whole visible diagram. Changes now schedule at most one rebuild per 300 ms, measured from the end of the last rebuild, and a pending rebuild always runs. A 500-device burst rebuilds once instead of 500 times.
--release-ui called LoadSnapshot by reflection without its optional scan time, --profiles-ui set a store field the instance refactor removed, and --menu-icons-ui parsed FileDialog's glyph namespace without the app assembly.
…readers Device boxes take focus, appear as selectable list items named after their device, move focus with the arrow keys, select with Space and Ctrl+Space, and move with Shift+arrows. A rebuild gives focus back to the same device.
… in CI tests/suites.json lists each runner flag as run in CI or excluded with a reason, and Run-FocusedSuites.ps1 fails when a runner gains a flag that is not listed. Each console job now runs its focused suites with time limits, and the application job checks the inventory and the PowerShell module on 5.1 and 7.
/scan and /probe take /skip with the Scan settings check names, unknown names are a usage error, and the skipped checks are recorded in Location history. The terminal's Scan button passes the workspace's Scan settings.
The MAC column's minimum was 110 px, narrower than a full address in the cell font, so a drag or a saved width could cut addresses off. The minimum now comes from a full address in the grid's current font and follows font changes.
Reverse and forward DNS had no deadline, so a silent resolver held a host slot until the user stopped the scan. Each lookup now gets three seconds, and at most 64 unfinished lookups hold threads at once.
Measured: a 4 MB paste to a pseudoconsole whose child is not reading took about eight seconds, written synchronously on the UI thread. Input now goes through an ordered background writer with a queue cap, and closing the terminal stops it.
Grid column headers kept the language they were created in, and reports always declared lang='en' with an English title. Headers are restated on each language change, and reports use the active language tag and a translated title. Based on the fixes in #5 by @MrCodeLabs.
NetworkScanner.Binding sends pings, TCP and UDP probes, HTTP and TLS fingerprints, ARP and mDNS/SSDP from the chosen adapter's address, and refuses any target outside that adapter's network before sending anything. Routed and VPN targets are left for a later decision.
…ed scans Scan settings lists Automatic and each connected adapter. A choice binds the tab's scanner, including rescans, travels with saved scans, refuses targets off that adapter's network with a clear status, and asks before falling back to Windows' route when the adapter is gone.
…module /scan and /probe bind every probe to the named adapter, refuse unknown adapters and off-link targets as usage errors, and record the adapter in Location history. The terminal's Scan button passes the tab's adapter choice.
…pter A scan bound to an adapter now also accepts routed targets, such as hosts behind a VPN adapter, when Windows' best route to them goes through that adapter. Anything Windows would send out another adapter, or has no route to, is still refused before traffic, and the message names the adapter Windows would use. Adapter names for route lookups are cached by interface index.
On 98SE the theme-menu checkbox draws a sunken bevel over its 1 px ring, so the centering check found no ring ink and failed. The bevel brushes are now colored like the ring, so the check measures the box outline in every theme.
Each scanned device now records the signals behind its type, their source, close alternatives, conflicts and a Low, Medium, High or Set manually grade. The type cell's tooltip summarizes it, Why This Type? (Ctrl+I) lists it in full without contacting the device, CSV adds Confidence and Evidence columns, HTML reports show the summary on hover and CLI JSON carries the full object. Weak fallback guesses keep their type at Low. A hostname keyword is now heavy evidence that protocol answers can outvote. A labeled corpus of fabricated devices checks the grades on both runtimes.
Right-click a device and choose Access for every endpoint: each web port with the status it answered, whether it asked for a login or showed a sign-in page, the SSH banner and every other open port. Entries open with the existing browser, SSH or Remote Desktop action on that port, Copy Address copies any of them, and opening the menu sends nothing. No credentials are sent, and nothing is claimed beyond what was seen. Deep scans check every web port, Open in Browser uses the endpoint that answered, CSV adds an Access column and HTML lists endpoints on the ports cell.
Under code page 65001 the parent's .NET Framework stdin writer sends a UTF-8 byte order mark as soon as it is created, so the capped child read the mark plus START and refused to run. The child now reads its handshake as bytes and skips a leading mark, and its error names what it read and whether it is in the job.
…shing, and migrate once A catalog from a newer version or holding null threw InvalidDataException past the store's error handling and stopped the app at startup; it is now reported like a corrupt file. Imports refuse stores that are not JSON objects or lists, and open the staged copy before adding the Location. Migration holds a named lock so two windows migrate once, and sets a leftover unassigned folder aside instead of deleting it. Once the catalog exists, an unreadable one gives Temporary scans rather than writing to the stale pre-Locations files.
Bound pings ran the blocking IcmpSendEcho2Ex inside Task.Run, so each silent host held a worker thread for its whole timeout and a bound sweep starved the pool. They now use the API's event mode with a registered wait. 200 silent bound pings were all in flight at once with no worker threads busy.
…dule ConvertTo-KsDevice dropped Recognition and Access. Both are now on each device, with Access always an array, and the module contract checks them on PowerShell 5.1 and 7.
Results left on screen after a Location switch had their names and approvals written into the new Location. Changing Location now clears them, leaving unsaved Temporary results asks first, and picking the current Location changes nothing. Save and the sidebar Save now record the adapter chosen at the time instead of keeping the old one.
…afely, window placement holds, and update relaunches get time to start
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Sync upstream
bb1a384(v1.9.0, 330 commits since our previous sync) into the fork while retaining our Home Assistant integration advice.Shared scanning, Locations, recognition, access, UI and deployment code use the upstream implementation. Preserve the HA toolbar/per-device/Services/history actions, 20-language translations, old fork evidence/access/history JSON, selected Location and explicit adapter choices, isolated development roots, and guards preventing this fork from publishing upstream packages. Keep both Git histories. The separately developed, uncommitted survey is backed up and untouched; it is outside this PR.
Validation: application and both Engine targets build without compiler warnings; 38 Engine suite invocations across net48/net10.0, 17 targeted application suites, offscreen UI 45 theme/accent states / 20 locales / 120 topology combinations, and old-fork two-Location compatibility fixtures. Actual HA matching is also checked through an isolated loopback HTTP server. Strict workflow mapping/guard checks and suite-inventory checks pass. Includes an invariant number-format correction exposed by non-English subnet-limit tests.
No production network, installed user data, HA connection or installed upgrade was used. Existing data must first be backed up in full and tested through an isolated copy. See
docs/fork-upstream-1.9.mdfor compatibility and rollback notes.