Skip to content

feat(web): regenerate thread titles from sidebar - #4810

Merged
t3dotgg merged 13 commits into
mainfrom
t3code/regenerate-thread-title
Jul 30, 2026
Merged

feat(web): regenerate thread titles from sidebar#4810
t3dotgg merged 13 commits into
mainfrom
t3code/regenerate-thread-title

fix(client): clear title regeneration on archive

74d120a
Select commit
Loading
Failed to load commit list.
MacroscopeApp / Macroscope - Effect Service Conventions succeeded Jul 30, 2026 in 1m 12s

All clear

All clear

Details

Note

Your check run agent prompt is: .macroscope/check-run-agents/effect-service-conventions.md
More information about how Check Run Agents work can be found in our Help Center.


🔍 Agent activity — reasoning, no tool calls

💭 I'm checking the modified files for convention violations, starting with the imports and structure in ProviderCommandReactor.ts and related files like decider.ts and ProjectionSnapshotQuery.ts. Looking at the imports and checking that they follow the expected patterns — namespace imports from effect subpaths and named imports from the contracts library look standard. The ProviderCommandReactorShape is existing code, not something new I'm introducing. Moving through the ProviderCommandReactor implementation, the error handling with Effect.catchCause and Cause.hasInterruptsOnly follows the right conventions, and no new error classes are being added. Now I need to verify the same patterns hold across ProjectionSnapshotQuery and the other related files. The mock layer in tests correctly uses Layer.effect with the ["Service"] accessor pattern, which is good. Looking at the Sidebar bulk regenerate loop, there's an early return on failure that stops processing — it's arguably intentional behavior rather than a bug, and it's not an Effect convention issue anyway. The contracts usage with Schema.makeFilter is fine, no new Schema.Defect or error types are being introduced. I should examine the reactor's full context to make sure there aren't any hidden runtime dependency injection issues or unconventional Effect patterns lurking in the implementation. Checking the logic for clearInterruptedThreadTitleRegenerations — the undefined check on requestId handles the case where titleRegeneration is null since accessing ?.requestId would also return undefined. The effect conventions look consistent with the existing patterns in the file. Looking at the catchCause usage across the diff — it's being applied to entire channels with logging, which aligns with the convention of handling the full error channel intentionally. The test file uses Layer.effect to wrap service instances as test seams, and the runEffect helper leverages the runtime appropriately for the test harness. Now I need to verify that the Deferred and waitFor imports actually exist in the test file. The test file follows the existing style, and I've confirmed the conventions are met: Effect library modules are imported as namespaces from their subpaths, the new tests validate actual behavior changes rather than just mechanical refactoring, and the decider test correctly imports from the contracts package. I'm checking whether any Layer.succeed calls were added and how service instances are being passed as parameters. Now I'm verifying the production code changes — formatThreadTitleContext works with pure data, and dispatchThreadTitleRegenerationCompletion properly closes over the orchestrationEngine through yield*. The TextGeneration interface additions and ProjectionThreads schema updates look fine. I'm double-checking whether the new code in ProviderCommandReactor uses process.cwd() as a fallback, which could violate the convention against hiding runtime-backed imperative APIs in closures or Layer.succeed implementations — need to see if there's existing precedent in the file for this pattern. I see that process.cwd() is already used elsewhere in the file, so that's consistent. Now I should check whether SidebarV2 and the contracts are importing from "effect" correctly by searching through the diff. The legacy files look fine since they weren't modified by this PR, and the touched files are using subpath namespace imports correctly. The orchestration.ts file added a new internal command which is acceptable, and the migration file follows the standard convention with a default Effect.gen export. I'm mostly satisfied with what I'm seeing, though I want to double-check the scope of what violations should actually be reported—specifically whether there are any issues with ProjectionSnapshotQuery that fall within the changed scope. Looking at the imports and utility functions across the modified files, everything checks out: CommandId is properly imported into existing lists, and the Effect.forEach operations are structured correctly. No concrete violations introduced or retained in this PR's changes, so I'll mark this as passing with a clean summary.


Agent Credits: 74 credits