🤖 feat: add heartbeat settings section with global defaults#3114
🤖 feat: add heartbeat settings section with global defaults#3114ibetitsmike merged 4 commits intomainfrom
Conversation
|
@codex review |
2580acb to
b6d00d3
Compare
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
b6d00d3 to
f3a2722
Compare
|
@codex review |
|
@codex review |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
930eb37 to
8b882e6
Compare
|
@codex review |
|
Codex Review: Didn't find any major issues. Swish! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fda70f837a
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Added an edited-since-load guard to the prompt blur handler so stale values are not persisted after config load failures. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 215128aeb4
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review The per-workspace modal now reads global config defaults ( |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5883caee68
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
5883cae to
f93dd67
Compare
|
@codex review Global prompt is now only injected for workspaces with no heartbeat config at all. Workspaces that already have settings but no message override will not inherit the global prompt into form state, preserving future inheritance. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f93dd670de
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review Clearing the threshold field now sends |
f93dd67 to
2384ae9
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2384ae9aa0
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
2384ae9 to
351899b
Compare
|
@codex review Global prompt is no longer seeded into the form state. The message field stays empty for unconfigured workspaces. Only the interval inherits the global default. Backend handles prompt fallback at execution time. |
|
Codex Review: Didn't find any major issues. More of your lovely PRs please. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
351899b to
8b5a6ff
Compare
|
@codex review The per-workspace modal now shows the global default prompt as placeholder text in the message textarea. The field value stays empty so saving without editing doesn't persist the global prompt as a workspace override. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8b5a6ff8e0
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
8b5a6ff to
b911477
Compare
|
@codex review Both the prompt and interval blur handlers now use the same guard pattern: skip only when the load failed AND the user hasn't edited. On successful load, blur-save proceeds because the loaded value is authoritative and re-persisting it is idempotent. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b9114770be
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Resolving this thread: the blur-save-on-loaded pattern is consistent with how every other setting in GeneralSection works (e.g., |
|
@codex review Resolved the remaining thread. The blur-save pattern is consistent with existing settings behavior in GeneralSection. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b9114770be
ℹ️ About Codex in GitHub
Your team has set up Codex to 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 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Use global heartbeat defaults in the workspace modal when no workspace override exists.
b911477 to
1e8af71
Compare
|
@codex review
|
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Adds global heartbeat defaults (prompt and threshold) behind a dedicated Heartbeat settings section, gated by the Workspace Heartbeats experiment. The per-workspace heartbeat modal inherits the global default interval and shows the global default prompt as placeholder text.
Background
Heartbeats currently use hardcoded defaults unless each workspace overrides them individually. Users want global defaults they can configure once, so new workspaces inherit them automatically.
Implementation
heartbeatDefaultPromptandheartbeatDefaultIntervalMsinAppConfigOnDiskSchema, persisted in~/.mux/config.json.config.updateHeartbeatDefaultPromptandconfig.updateHeartbeatDefaultIntervalMs.globalDefaultPromptis cleared on load start and error to prevent stale placeholders across workspace switchesheartbeatDefaultPrompt> hardcoded fallbackintervalMs> globalheartbeatDefaultIntervalMs> hardcoded fallbackValidation
Generated with
mux• Model:anthropic:claude-opus-4-6• Thinking:xhigh• Cost:$40.98