Skip to content

feat: Hot reload now applies edits on partial types and in global-using assemblies, and the response says whether an edit is live - #3198

Merged
hatayama merged 22 commits into
mainfrom
feature/hot-reload-large-project-feedback
Oct 7, 2026
Merged

hatayama merged 22 commits into
mainfrom
feature/hot-reload-large-project-feedback

Conversation

@hatayama

@hatayama hatayama commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Summary

Merge status

  • Do not merge yet. The maintainer confirms before this goes to main.
  • The reporting agent re-tested the final head and found no blocker. See "Verification" for what it confirmed and what it left for a later batch.
  • The repository squash-merges, so these 21 changes become one commit and one release-note line, in the changelog of all three components (Unity package, project runner, dispatcher). The title can be reworded at merge time.

User Impact

Edits that were skipped or failed are now applied

Before After PR
In an assembly that puts its imports in global using files, nearly every edited method was Skipped with unrelated reasons (unresolved types, "added generic method", a field "of a different type"), and untouched methods were reported as added The assembly's global usings take part in the analysis. A method whose signature type still cannot be resolved gets one reason that names the type #3179
Every method on a partial type was Skipped Method bodies on partial types are patched. When another part changed and was not passed, or could not be checked, the reason names the file or says to compile #3184
A partial type's body that used an internal member of another type was Skipped with a reason about a missing generated part Patched when the member is used in the method's own statements with its receiver. Other forms are Skipped with a reason that names the type the member is internal to #3194
A test assembly failed with "Failed to resolve assembly" for a plugin DLL that only a referenced assembly uses Resolved #3176
A static method that used nameof on an instance member failed the whole file Applied #3190

The response says what happened

Before After PR
Success: true even when nothing was applied. Whether the edit was live had to be pieced together from several fields and the message Outcome answers it in one field (Applied, PartiallyApplied, NothingApplied, NothingToApply, Failed, ReplacedByCompile). Per-kind totals (SkippedTotal, AddedTotal, ...) are fields. After a fallback compile succeeds, the message no longer mixes in the "Auto Refresh is held" sentence #3177
No way to tell where a slow run spent its time Timing reports each phase, the fallback compile, and the time outside the phases (OtherMs) #3183, #3188
Outcome: Applied next to SkippedTotal: 1 with no hint that the skipped row belonged to a sibling file. An added test method looked live although the test runner needs a compile to see it The message names how many skipped rows belong to sibling files. An added test method carries a LifecycleNote #3188
The warning about edits outside method bodies read as if a comment-only change had triggered it It says it counts edits since the last compile #3182
An added member that used a name generated at compile time was told to pass more files It is told to run uloop compile #3193
Applying to a Multiplayer Play Mode Virtual Player failed with "Compiled assembly not found" The reason says a Virtual Player cannot be patched and that a patch on the main Editor does not reach it #3191
The skills did not say how to tell whether an edit is live, or what happens to live patches when tests run They do #3181, #3186

Fewer edits reported as live that are not

Before After PR
On a non-partial type, a body that used an internal member of a type the reload was not given inside a lambda, local function, query, iterator or async method was Patched and then threw MethodAccessException or FieldAccessException on the first call. An inherited internal member named without this. failed the whole file Only that method is Skipped, with a reason #3197
A hot reload that ran right after a domain reload could find no source snapshot and patch every method of the file, unchanged ones included The snapshot is taken before the first reload reads it #3195

Speed

Before After PR
Each unchanged method of an edited file cost 4 to 6 ms, so a file with 307 unchanged methods spent a median of 1,671 ms outside the phases Median 305 ms outside the phases, and the total went from 2,192 ms to 748 ms (measured in this repository's test project) #3185
Every run searched the assembly's debug symbols for each file (135 to 169 ms per lookup in this repository's large test assembly) The lookup table is built once per compile (0.16 ms per lookup) #3187

CLI

Before After PR
A compile request that arrived just before a domain reload was accepted and never ran; the CLI waited 600 s and timed out. A compile rejected as "already compiling" made the command fail after the wait, and hot reload's fallback then told the user to fix compile errors that did not exist The CLI sends the compile again, up to 3 attempts. Measured: both cases end in Success: true after about 9 s #3192
After a busy answer, a retried command that reached Unity and then lost its connection or timed out reported the earlier busy error, although the command had run The command's own result or failure is reported #3196
uloop skills install with no target flag printed guidance and did nothing, although the help said existing installs are refreshed It refreshes the targets that are already installed. With none installed it prints the guidance as before #3189

Behaviour changes to weigh before merging

  1. A request that reached Unity after a busy answer but was never registered now waits for its timeout (fix: A command that reached Unity after a busy retry no longer reports the earlier busy answer when its connection drops or times out #3196). Before, the earlier busy answer ended the command at once. The waits are: the pause-point recovery compile, up to its limit (10 minutes by default); control-play-mode, TimeoutSeconds (180 s by default); PlayMode run-tests, TimeoutSeconds plus 60 s (660 s by default). This is what already happens when the first attempt is lost the same way. uloop compile is not affected, because it sends the request again (fix: Send the compile again when Unity lost the request or rejected it as already compiling #3192). Giving the other commands the same resend is a follow-up.

  2. Four kinds of body that work today are Skipped after fix: Hot reload no longer patches method bodies that would throw on an internal member of a type it was not given #3197, on non-partial types. The analysis cannot tell them from the bodies that throw. All four were measured as patched and working before the change.

    1. A lambda, local function or query that works with a value whose type the analysis could not resolve, even when it touches only public members. Example: var seed = new Host().InternalField; Func<int> read = () => seed + 100;. Declaring the local with its type (int seed = ...) keeps the body patched.
    2. An internal member in the first from source expression of a query.
    3. nameof(Type.InternalMember) or an internal const inside a lambda, iterator, async method or a body that runs through a delegating shim.
    4. An inherited internal member named without this. in a file that also imports the inherited type with using static.

    An alternative was considered and not taken: skip only when the internal member itself is written inside the lambda, iterator or async body. That would keep the four forms patched, but a lambda that reaches an internal member through such a value would still be reported as patched and then throw. A stated skip was judged less harmful than a patch that throws. Switching is a one-condition change.

  3. partial and non-partial types skip different forms (fix: Hot reload now patches partial-type bodies that use an internal member of a type the reload was not given #3194, fix: Hot reload no longer patches method bodies that would throw on an internal member of a type it was not given #3197). A method passed as a delegate, an event, and a member named in an object initializer or a property pattern are patched on a non-partial type and Skipped on a partial type. A partial type opens only the forms a run has shown to work.

  4. The response after a fallback compile (feat: Report the hot-reload outcome and per-kind totals as fields and settle the message after a fallback compile #3177). When the fallback compile succeeds, Outcome is ReplacedByCompile, AutoRefreshHeld is now false, and the message drops the hold sentence. The top-level Success is the compile's, as it was before. All new fields are additive.

  5. Two small differences in what stops a run (fix: Hot reload no longer slows down with the number of unchanged methods in the edited files #3185, fix: Hot reload reads each edited assembly's debug symbols once per compile instead of on every run #3187). A row with no patch to remove no longer reads the DLL, so an unreadable DLL does not stop it. Once the debug-symbol table exists, a locked PDB does not stop a run; the first run scans the whole table, so a PDB corrupted part-way raises an error there.

Not covered

  • Virtual Player: hot reload still cannot patch a Multiplayer Play Mode Virtual Player. fix: Explain that hot reload cannot patch a Multiplayer Play Mode Virtual Player #3191 only explains it.
  • Internal members a body cannot reach, forms still open after fix: Hot reload no longer patches method bodies that would throw on an internal member of a type it was not given #3197: an internal member of another assembly reached through InternalsVisibleTo and an internal extension method inside a lambda; internal constructors and indexers; an internal overload hidden behind a public overload of the same name (measured: patched, then MethodAccessException inside a lambda); a nullable struct reached with ?. (inferred). These behave as they did before this pull request. The lasting fix is to analyse bodies with internal members visible, which is a follow-up.
  • partial types: an internal member of another assembly (through InternalsVisibleTo) used from a partial type's body is Skipped.
  • Time outside the phases on a very large assembly: still 2.1–3.6 s with one live patch on the reporting project (unchanged from the previous round; fix: Hot reload reads each edited assembly's debug symbols once per compile instead of on every run #3187 did not move it). With 37 live patches in one file, OtherMs grew to 84–87 s per apply, about 2.3 s per live patch, because every live patch is re-applied until the next compile. The code that runs per patched method outside the three phases is the lifecycle-note caller scan (HotReloadOrchestrator → ApplyOneShotCallerNotes), which this branch does not touch — the same cost exists on main. It is the first item of the next batch.
  • A background Editor on macOS: while fixing this batch we measured, on the development machine, that macOS throttles an Editor that stays in the background, starting 25 to 53 s after a compile, and that everything inside the Editor then runs 2 to 13 times slower, with or without hot reload. Not addressed here. The cause is confirmed (holding a user-initiated activity inside the Editor lifts the throttle within 2 ms, measured), and the fix that holds one while a command runs is open as fix: Commands no longer run several times slower while the Unity Editor stays in the background on macOS #3200 (draft, to main), kept separate because it affects every uloop command and touches no hot-reload code.
  • Patch stage cost that grows with the live patches in a file: measured with the throttle lifted, editing one method in a file that already holds 199 live patches re-applies all 200 and takes about 1 s in the patch stage, most of it re-reading the compiled assembly once per method. A change that reads it once per run is open as perf: Hot reload no longer re-reads the compiled assembly for every method it patches #3199 on top of this branch (patch stage 954 → 228 ms in that scenario); it was merged into this branch as 7950674d and is part of this pull request.
  • Pause points can still read the source snapshot before it is taken after a domain reload (fix: Hot reload no longer patches unchanged methods when it runs right after a domain reload #3195 covers hot reload only).

Included pull requests

PR Title
#3176 Hot reload no longer fails to resolve plugin DLLs that only a referenced assembly uses
#3177 Report the hot-reload outcome and per-kind totals as fields and settle the message after a fallback compile
#3179 Hot reload applies edits to methods using types from another file's global using, and names unresolved signature types
#3180 Align two hot-reload test pins with the unresolved signature type skip reason
#3181 Hot reload and run-tests skills now say whether live patches survive a test run
#3182 The hot-reload warning about edits outside method bodies now says it counts edits since the last compile
#3183 Hot reload responses now show how long each phase of a run took
#3184 Hot reload now applies method edits on partial types
#3185 Hot reload no longer slows down with the number of unchanged methods in the edited files
#3186 Hot reload skill now says to read Outcome to tell whether an edit is live
#3187 Hot reload reads each edited assembly's debug symbols once per compile instead of on every run
#3188 Hot reload responses now report time outside the phases, name sibling rows in the Skipped count, and note added test methods
#3189 uloop skills install without a target flag now refreshes existing skill installs instead of doing nothing
#3190 Hot reload now applies static methods that use nameof on an instance member
#3191 Explain that hot reload cannot patch a Multiplayer Play Mode Virtual Player
#3192 Send the compile again when Unity lost the request or rejected it as already compiling
#3193 Hot reload now says to run uloop compile when an added member uses a name generated at compile time
#3194 Hot reload now patches partial-type bodies that use an internal member of a type the reload was not given
#3195 Hot reload no longer patches unchanged methods when it runs right after a domain reload
#3196 A command that reached Unity after a busy retry no longer reports the earlier busy answer when its connection drops or times out
#3197 Hot reload no longer patches method bodies that would throw on an internal member of a type it was not given

Each pull request's description holds its own behaviour changes, input-space table, mutation checks and "Not covered" list.

Four of these did not come from the report or its re-tests. They were found while fixing the reported items: the two speed changes (#3185, #3187), the busy-answer masking (#3196), and the non-partial internal-member skip (#3197).

Changes

  • Unity package: hot-reload analysis worker, patching, response fields, reason texts, and the hot-reload, run-tests and control-play-mode skill references.
  • Project runner (Go): compile resend, the compile fallback of hot reload, and the busy-retry result handling.
  • Dispatcher (Go): skills install with no target flag.
  • No change to the protocol version, the project runner pin, the shared release inputs or the coverage baseline.

Verification

… settle the message after a fallback compile (#3177)
…e's global using, and names unresolved signature types (#3179)
…ompile instead of on every run (#3187)

Hot reload no longer reads the edited assembly's dll and PDB and walks its
sequence points on every run to find an edited file's compile-time
checksum.

- Add HotReloadPdbDocumentIndex: per dll, the distinct documents that
  sequence points refer to (url, hash algorithm, hash), in walk order,
  so the first match is the document the old walk returned. It is built
  from sequence points, not from the PDB's document table, so a file
  without a method body still reports NoDocumentInPdb.
- Reuse each list while the dll's length, write time and MVID and the
  PDB's length and write time match the files it was read from, and
  read again otherwise. HotReloadSourceBaseline looks documents up
  through the shared index; only the At entry points that tests call
  take an index.
- Tests D1-D9 and B1-B2 count reads through LoadCount instead of timing
  anything; the reuse ones failed before the reuse was wired in.
- D10 pins the failure contract: when the files cannot be read, the
  lookup throws, nothing is stored, and the list kept for the earlier
  files is not used.

One lookup on a 295-file test assembly went from 135-169 ms to about
0.16 ms. The first lookup after a compile walks the whole PDB.
…ibling rows in the Skipped count, and note added test methods (#3188)

Hot reload responses now state three things a reader used to have to
work out from elsewhere in the response.

- Timing reports OtherMs, the time outside the three phases (file
  resolution, planning, the unchanged-method checks). The timing
  breakdown refuses a total shorter than its phases; a group processor
  test helper that passed a total of 0 now times its call instead.
- When some Skipped rows belong to sibling files the run re-applied on
  its own, Message says how many: "Skipped: n (m in sibling files the
  run re-applied on its own; Outcome does not count those)." The clause
  is built once and used by both the ordinary applied message and the
  type-only message. SkippedTotal and Outcome keep their rules.
- The transform worker gives the entry of an added method with a test
  attribute a LifecycleNote saying the Unity Test Runner will not
  discover it until 'uloop compile', under the same condition as the
  existing warning. A one-shot lifecycle note still takes precedence.
- The output reference documents all three, and comments these changes
  made inaccurate are updated.
…tual Player (#3191)

Hot reload sent to a Multiplayer Play Mode Virtual Player no longer
answers a missing compiled assembly with "Compile the project first",
which never helps there: a player loads the main project's script
assemblies and has none under its own root.

- The (file) reason now says the Editor is a Virtual Player, hot
  reload cannot patch it yet, the edit reaches it through a compile,
  and a patch applied to the main Editor does not reach it. The player
  is recognized from the project root path alone
  (<main project>/Library/VP/<player>), and every other project keeps
  the existing text.
- The Multiplayer Play Mode and hot-reload references say the same,
  including that the compile fallback follows --compile-on-skip (auto
  holds it while that player is in Play Mode).
…s the earlier busy answer when its connection drops or times out (#3196)
…n internal member of a type it was not given (#3197)
@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 157 files, which is 7 over the limit of 150.

To get a review, reduce the PR to 150 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: Repository: hatayama/unity-cli-loop/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e34d1afb-698c-4dec-ac1c-6e1badac0e54
📥 Commits

Reviewing files that changed from the base of the PR and between ffc9cf8 and 7950674.

⛔ Files ignored due to path filters (35)
  • Assets/Tests/Editor/HotReload/HotReloadApplyOutcomeTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadGlobalUsingBaseHost.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadGlobalUsingBehaviourBase.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadGlobalUsingMode.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadInternalMemberCaller.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadInternalMemberHost.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadInternalSignatureProbe.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPartialDerivedFixture.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPartialInternalGuardedPeer.Extra.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPartialInternalPeer.Extra.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPartialInternalPeer.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPartialTypeE2ETests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPartialTypeFixture.Other.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPartialTypeFixture.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPdbDocumentIndexTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPeelSameNameFixture.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadPlainDerivedFixture.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadResolverSearchDirectoriesTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadRunTimingTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadSourcePathMatchingTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadSourceSnapshotCaptureTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadUnpassedInternalMemberE2ETests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/HotReloadVirtualPlayerProjectTests.cs.meta is excluded by none and included by none
  • Assets/Tests/Editor/HotReload/TransformWorkerPartialTypeTests.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadApplyOutcome.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadGroupWorkerInputBuilder.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadRunTiming.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadTimingBreakdown.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadTimingResponse.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadUnchangedPeelFilter.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Patching/HotReloadResolverSearchDirectories.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadPdbDocumentIndex.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourcePathMatching.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceSnapshotCapture.cs.meta is excluded by none and included by none
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadVirtualPlayerProject.cs.meta is excluded by none and included by none
📒 Files selected for processing (157)
  • .agents/skills/uloop-compile/SKILL.md
  • .agents/skills/uloop-control-play-mode/references/multiplayer-play-mode.md
  • .agents/skills/uloop-hot-reload/SKILL.md
  • .agents/skills/uloop-hot-reload/references/mechanism-and-lifecycle.md
  • .agents/skills/uloop-hot-reload/references/output.md
  • .agents/skills/uloop-hot-reload/references/scope-and-limits.md
  • .agents/skills/uloop-run-tests/SKILL.md
  • .claude/skills/uloop-compile/SKILL.md
  • .claude/skills/uloop-control-play-mode/references/multiplayer-play-mode.md
  • .claude/skills/uloop-hot-reload/SKILL.md
  • .claude/skills/uloop-hot-reload/references/mechanism-and-lifecycle.md
  • .claude/skills/uloop-hot-reload/references/output.md
  • .claude/skills/uloop-hot-reload/references/scope-and-limits.md
  • .claude/skills/uloop-run-tests/SKILL.md
  • Assets/Tests/Editor/HotReload/HotReloadAddedMemberAccessE2ETests.cs
  • Assets/Tests/Editor/HotReload/HotReloadApplyOutcomeTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadChangedSiblingSourceDetectorTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadCompositionRootTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadDefaultFilesTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadEntryResolutionTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadEnumMemberOnlyLeaveOutTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadGlobalUsingBaseHost.cs
  • Assets/Tests/Editor/HotReload/HotReloadGlobalUsingBehaviourBase.cs
  • Assets/Tests/Editor/HotReload/HotReloadGlobalUsingMode.cs
  • Assets/Tests/Editor/HotReload/HotReloadGlobalUsings.cs
  • Assets/Tests/Editor/HotReload/HotReloadGroupProcessorLeaveOutTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadGroupProcessorTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadInternalMemberCaller.cs
  • Assets/Tests/Editor/HotReload/HotReloadInternalMemberHost.cs
  • Assets/Tests/Editor/HotReload/HotReloadInternalSignatureProbe.cs
  • Assets/Tests/Editor/HotReload/HotReloadIntroducedTypeArtifactReferenceBuilderTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadIntroducedTypeResponseTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadIntroducedTypeRetainedInternalReferrerE2ETests.cs
  • Assets/Tests/Editor/HotReload/HotReloadMethodMatcherTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadOrchestratorTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPartialDerivedFixture.cs
  • Assets/Tests/Editor/HotReload/HotReloadPartialInternalGuardedPeer.Extra.cs
  • Assets/Tests/Editor/HotReload/HotReloadPartialInternalPeer.Extra.cs
  • Assets/Tests/Editor/HotReload/HotReloadPartialInternalPeer.cs
  • Assets/Tests/Editor/HotReload/HotReloadPartialTypeE2ETests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPartialTypeFixture.Other.cs
  • Assets/Tests/Editor/HotReload/HotReloadPartialTypeFixture.cs
  • Assets/Tests/Editor/HotReload/HotReloadPatcherContractTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPatcherTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPdbDocumentIndexTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadPeelSameNameFixture.cs
  • Assets/Tests/Editor/HotReload/HotReloadPlainDerivedFixture.cs
  • Assets/Tests/Editor/HotReload/HotReloadResolverSearchDirectoriesTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadRunTimingTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadServicesTestScope.cs
  • Assets/Tests/Editor/HotReload/HotReloadShapeFixtures.cs
  • Assets/Tests/Editor/HotReload/HotReloadSiblingConstDefinitions.cs
  • Assets/Tests/Editor/HotReload/HotReloadSourcePathMatchingTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSourceSnapshotCaptureTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSourceSnapshotTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadSpikeS4ArtifactPatchTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadToolTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadUnchangedPatchPeelTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadUnpassedInternalMemberE2ETests.cs
  • Assets/Tests/Editor/HotReload/HotReloadVirtualPlayerProjectTests.cs
  • Assets/Tests/Editor/HotReload/HotReloadWorkerReasonTextTests.cs
  • Assets/Tests/Editor/HotReload/InternalsExposureTestImage.cs
  • Assets/Tests/Editor/HotReload/PublicizerTestSearchDirectories.cs
  • Assets/Tests/Editor/HotReload/TransformWorkerAddedFieldTests.cs
  • Assets/Tests/Editor/HotReload/TransformWorkerAddedMemberTests.cs
  • Assets/Tests/Editor/HotReload/TransformWorkerClientTests.cs
  • Assets/Tests/Editor/HotReload/TransformWorkerIntroducedTypeTestInputs.cs
  • Assets/Tests/Editor/HotReload/TransformWorkerIntroducedTypeTests.cs
  • Assets/Tests/Editor/HotReload/TransformWorkerPartialTypeTests.cs
  • Packages/src/Editor/FirstPartyTools/Compile/Skill/SKILL.md
  • Packages/src/Editor/FirstPartyTools/ControlPlayMode/Skill/references/multiplayer-play-mode.md
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadApplyOutcome.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadApplyResponseBuilder.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadChangedSiblingScanResult.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadChangedSiblingSourceDetector.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadCompositionRoot.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadEditorStartup.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadEntryApplier.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadEntryResolution.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadEnumMemberOnlyLeaveOut.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadGroupEntryPreparation.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadGroupProcessor.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadGroupWorkerInputBuilder.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadIntroducedTypePreparation.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadIntroducedTypeResponseSection.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadOrchestrator.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadOrchestratorResult.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadPatchTargetSupport.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadRequestedFileOutcomeSummary.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadRunAccumulator.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadRunTiming.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadServices.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadShimIsolation.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadTimingBreakdown.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadTimingResponse.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadTools.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/HotReloadUnchangedPeelFilter.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Patching/HotReloadIntroducedTypeArtifactReferenceBuilder.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Patching/HotReloadMethodMatcher.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Patching/HotReloadResolverSearchDirectories.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Patching/HotReloadShimReferenceBuilder.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadConstants.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadPdbDocumentIndex.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceBaseline.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourcePathMatching.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadSourceSnapshotCapture.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadVirtualPlayerProject.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadWorkerReasonCode.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadWorkerReasonText.AddedMemberTemplates.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/HotReloadWorkerReasonText.MethodTransformTemplates.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Shared/TransformWorkerDtos.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/Skill/SKILL.md
  • Packages/src/Editor/FirstPartyTools/HotReload/Skill/references/mechanism-and-lifecycle.md
  • Packages/src/Editor/FirstPartyTools/HotReload/Skill/references/output.md
  • Packages/src/Editor/FirstPartyTools/HotReload/Skill/references/scope-and-limits.md
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/AddedPropertyAccessorGuard.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/CompiledSignatureSplitCollector.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/ConstDriftCollector.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/HarmonyAccessorShimRewrite.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/IntroducedTypePreparation.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/MethodTransformDecider.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/NameofRules.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/OrdinaryMethodQueue.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/OutsideMethodBodyDriftChecker.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/PartialTypePartLoader.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/PartialTypeParts.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/PropertyGetterClassifier.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/PropertyGetterEmitter.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/ReappliedSiblingBodyGuard.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/RetainedDeclarationStage.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/ShimBodyRewriter.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/ShimMethodEmitter.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/SiblingConstDriftCollector.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/TestAttributeNames.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/UnpassedInternalMemberUse.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/UnresolvedBodyNameGuard.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/UnresolvedSignatureTypes.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/WorkerEntry.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/WorkerGlobalUsingBindingTree.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/WorkerGroupPipeline.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/WorkerInput.cs
  • Packages/src/Editor/FirstPartyTools/HotReload/TransformWorker~/WorkerSourceUnit.cs
  • Packages/src/Editor/FirstPartyTools/RunTests/Skill/SKILL.md
  • cli/dispatcher/internal/dispatcher/skills_dispatch.go
  • cli/dispatcher/internal/dispatcher/skills_dispatch_test.go
  • cli/project-runner/internal/projectrunner/compile_fresh_recovery.go
  • cli/project-runner/internal/projectrunner/compile_fresh_recovery_test.go
  • cli/project-runner/internal/projectrunner/compile_wait.go
  • cli/project-runner/internal/projectrunner/compile_wait_deps.go
  • cli/project-runner/internal/projectrunner/connection_retry_flow.go
  • cli/project-runner/internal/projectrunner/connection_retry_flow_test.go
  • cli/project-runner/internal/projectrunner/connection_retry_test.go
  • cli/project-runner/internal/projectrunner/hot_reload_compile_fallback.go
  • cli/project-runner/internal/projectrunner/hot_reload_compile_fallback_test.go
  • cli/project-runner/internal/projectrunner/pause_point_release_recovery.go
  • cli/project-runner/internal/projectrunner/run.go
  • docs/hot-reload.md

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@hatayama
hatayama marked this pull request as ready for review October 7, 2026 01:12
@hatayama
hatayama merged commit fed634a into main Oct 7, 2026
17 checks passed
@hatayama
hatayama deleted the feature/hot-reload-large-project-feedback branch October 7, 2026 01:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant