- shouldAutoOpenAuthPanel: re-introduce isEditableCustomProvider exemption
(was dropped when requiresProviderAuth was replaced). Custom providers are
editable directly in the form and must not be force-opened into the auth
panel on a stale sources snapshot.
- handleSaveCustomProvider + handleDisconnectProvider: route through
applyConfigReloadOrRecordDeferred so an externally managed OpenCode that
throws requiresManualRestart records deferred-restart guidance instead of
toasting a misleading 'mutation failed' for a write that already persisted.
- handleOAuthConnected: call markAuthWriteSucceeded so the page does not stick
on a stale 'Credentials missing' summary while the providers refresh lands
(OAuth previously only updated the deferred-restart payload).
- Sources effect deps: add settingsDirectory back so a directory switch while
the provider id is unchanged refetches the source snapshot (was swapped for
providerSourcesRevision in the prior rebase).
- Cleanup: drop dead oauthCodes state and copyTextToClipboard import; restore
the requiresOpenCodeRestartAfterOAuth import alignment.
13/13 ProvidersPage.test.ts still green.