Repository navigation
chore: require Necto 0.2.2 and drop the registration order warning - #11
Merged
Merged
Conversation
Necto 0.2.2 moved URLSession capture into its own product, NectoURLSessionCapturePlugin, so the README's `import NectoURLSessionCapture` no longer compiles for an app that resolves the newest 0.2.x. It also stopped resending requests on an ephemeral session: capture now hooks URLSession and its tasks and watches the app's own transfer. Measured on an iOS 18.4 simulator with the Necto app and SDK 0.2.2: in either registration order, mocked requests reach Necto's records with the mocked status, X-Map-Local header and body, and each request is logged once. Our event follows Necto's record by 0.1-13 ms, inside the existing one-sided 0-50 ms pairing window. - Package.swift and the examples require 0.2.2. - README, usage and design (with their Korean copies) name the new product and import, say the order no longer matters, and describe the capture's real cost (private Foundation hooks) instead of the ephemeral resend. - The panel's registration order warning is removed. Its two causes cannot happen on 0.2.2, and its advice would be wrong if it fired. The missing-plugin hint drops "after Map Local". - verify-controls no longer names Necto_NectoDefaultPlugins.bundle, which 0.2.2 does not build. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This was referenced Oct 26, 2026
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.
Summary
Necto 0.2.2 (2026-10-15) splits its products and rewrites URLSession capture (toss/necto#20, #29). Two things follow for this plugin:
NectoURLSessionCaptureis gone;URLSessionNetworkPluginnow lives in the separate productNectoURLSessionCapturePlugin. Because the README asks for.upToNextMinor(from: "0.2.0"), a new app resolves 0.2.2 and fails atimport NectoURLSessionCapture. The package itself builds (the weekly "Necto latest" job passes); only the user-facing setup is wrong.URLSessionand its tasks and watches the app's own transfer (Sources/NectoURLSessionCapturePlugin/NectoURLSessionHooks.swift).Changes:
Package.swiftrequires.upToNextMinor(from: "0.2.2"). Both examples pin 0.2.2.docs/usage.mdanddocs/design.md(and their-kocopies):NectoURLSessionCapturePluginproduct and its import.Panel/src/traffic/order.tsand its tests). It fired on two causes, mocks missing from Necto's records and passthroughs logged twice. Neither happens on 0.2.2, and if the warning fired anyway, its advice ("register Map Local first") would be wrong. The missing-plugin hint drops "after Map Local".script/verify-controls③ no longer namesNecto_NectoDefaultPlugins.bundle, which 0.2.2 does not build.NectoSDKcarries no resource bundle now, so the Necto trace is the executable. The synthetic bundle inscript/test-verify-releaseis renamed to one 0.2.2 does build.Unchanged on purpose: interception stays a
URLProtocol. Necto's move fits an observer that must not change behaviour. Map Local replaces responses, and passthroughs already load natively (canInitreturns false for them).import NectoModelwith only theNectoSDKproduct is what Necto's owndocs/tutorial-device.mddoes.Changelog
The
## 0.2.0lines go in with #8, which owns that section:NectoURLSessionCapturePluginandimport NectoURLSessionCapturePlugin; the registration order no longer matters.Agent interface
No change. No operation, binding, input, output, error code or
maplocal.statefield changes (Panel/public/manifest.jsonis untouched).network.list,network.detailandnetwork.observestill resolve to Necto'snecto.device.network-records.*on 0.2.2. This was measured throughnecto-cli plugin send io.github.ryan-son.maplocal network.listandnetwork.detail.Test Plan
Measured in Necto 0.2.2 (Mac app and SDK, iPhone SE 3rd gen simulator on iOS 18.4):
NectoURLSessionCapturePlugin, with a rule mockingGET httpbin.org/jsonto 418 and/uuidpassing through. It ran five rounds per registration order.necto-cli./json418 ×5,/uuid200 ×5/json418 ×5,/uuid200 ×5X-Map-Local: json/mockand the mocked body.dateminus Necto'sstartedAtMillisecondswas 0.11–12.71 ms, inside the one-sided 0–50 ms pairing window.import NectoURLSessionCapturePlugin, which the README now uses.Local checks:
cd Panel && npx tsc --noEmit: OK.npx vitest run: 1100, down from 1143.order.test.ts, withtest.eachexpanded, and 3 inorder.perf.test.ts. The other 8 came out ofconnect,traffic/viewandviewtests.script/build-panelregeneratedEmbeddedPanel.swift.script/check-doc-pairs,script/check-doc-linksandscript/lint-guard: OK.script/test-verify-release: all ok.script/verify-controls: ① to ⑥ ok, with the examples resolving Necto 0.2.2.swift test:MapLocalCoreTests: 131 passed.NectoMapLocalPluginTests: 91 tests, one failed in the fullscript/cirun with a 60 s time limit ("a delayed response arrives only after the clock has moved…",URLProtocolTests.swift:226). The machine's load average was 850–920 at the time. The test uses aTestClockand touches nothing from Necto. Rerun alone, its 17-test URLProtocol group passed twice, in 21.7 s and 171.6 s. This PR's GitHub CI is the clean full run.Not verified: