Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f756deb4f5
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
ui/desktop/src/distro.ts
Outdated
| distroDir = findDistroDir(); | ||
| if (distroDir) { | ||
| const configPath = path.join(distroDir, 'distro.json'); | ||
| distroConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8')); |
There was a problem hiding this comment.
Guard distro.json parsing failures
Handle read/parse failures for distro.json here instead of letting them bubble out of module initialization. Because this code runs at import time, a malformed or unreadable ~/.../Goose/distro/distro.json will throw before the app finishes booting, and the desktop client cannot start at all. This is especially risky because the feature is meant for external, user-editable distro customization.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ebbb89d955
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| if (distroExtensions) { | ||
| bundledExtensionsOverride = distroExtensions; | ||
| return distroExtensions; |
There was a problem hiding this comment.
Validate distro extensions payload before overriding defaults
loadBundledExtensions treats any truthy IPC response as a BundledExtension[], so a user-edited bundled-extensions.json that is valid JSON but not an array (for example, an object) will still be accepted here and later crash syncBundledExtensions when it iterates the value. In ConfigContext, that exception aborts extension sync/load for the session instead of falling back to the bundled defaults, which makes extension initialization brittle for the new external distro customization path.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 25ad6db3f0
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| window.appConfig?.get('DISTRO_CONFIGURATION_ENABLED') ?? true; | ||
| export const TELEMETRY_UI_ENABLED = window.appConfig?.get('DISTRO_TELEMETRY_UI_ENABLED') ?? true; | ||
| export const DICTATION_ALLOWED_PROVIDERS: string[] | null = | ||
| (window.appConfig?.get('DISTRO_DICTATION_ALLOWED_PROVIDERS') as string[] | null) ?? null; |
There was a problem hiding this comment.
Validate dictation provider overrides before exposing them
DISTRO_DICTATION_ALLOWED_PROVIDERS is blindly cast to string[] | null here, so a valid-but-mistyped distro value (for example a string or object in distro.json) will flow through as truthy and later hit .includes(...) in DictationSettings, throwing at runtime. Because distro files are explicitly user-editable customization points, this should be type-checked with Array.isArray and fall back to null when invalid.
Useful? React with 👍 / 👎.
|
so one thing that this kind of misses is how it interacts with goose CLI. Once a config is written, the CLI has it, but bundling distro information in the electron app should ideally only apply to customizations to that UI |
Allows customizing a goose distribution without re-building. Can be done either within the electron package (resources dir) or externally in user data (e.g.
~/Library/Application\ Support/Goose/distro)