Skip to content

Redesign agent creation and library - #827

Open
klopez4212 wants to merge 23 commits into
mainfrom
kennylopez-agents-layout-avatars
Open

klopez4212 wants to merge 23 commits into
mainfrom
kennylopez-agents-layout-avatars

Conversation

@klopez4212

@klopez4212 klopez4212 commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Redesigns Agents around Your agents, Import, and Browse, with quick model changes on configured agent cards and relay-only agents in Import.

Creation now keeps avatar selection, editable instructions, model selection, and AI configuration in one contextual flow. Adds animated Fuzzies/Gloopies/Figgies, profile-style image/emoji backgrounds, and local voice transcription into instruction drafts. Use image opens directly with the preview on the left and Image/Emoji/Background tabs on the right; Done stays in the main footer.

Validation: 388 agent tests and the full required push checks pass (TypeScript, related unit tests, design-system checks, Rust Clippy). Native instruction tests pass (2 live integration tests remain ignored). Visually checked in an isolated fixture. Live transcription requires an installed local Parakeet model; drafting currently supports Databricks v2 agent defaults. Cross-platform/live voice validation remains deferred.

Agent library
Create agent
Image and emoji editor

Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
@klopez4212
klopez4212 marked this pull request as ready for review October 10, 2026 00:39
@klopez4212
klopez4212 requested review from a team as code owners October 10, 2026 00:39
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-11T13:27:12.360530Z f09a9d3 New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2d4f8d00f8

ℹ️ 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".

Comment on lines +96 to +100
const text = await invoke<string>("agent_instruction_transcribe", {
audio: btoa(binary),
});
if (ticket !== generation.current) return;
await draft(text, ticket);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve the transcript when drafting fails

When transcription succeeds but agent_instruction_generate rejects—for example because OAuth is disconnected, the model times out, or the provider is unavailable—the transcript exists only in this local text variable and is discarded by the catch path. The UI consequently offers only “Re-record,” forcing users to repeat up to two minutes of audio even though the documented contract says the transcript remains editable and ready to retry; retain it in state and expose editing/retry before invoking generation again.

AGENTS.md reference: AGENTS.md:L76-L79

Useful? React with 👍 / 👎.

Comment thread src/bundled/agents/AgentInstructions.tsx
Comment on lines +161 to +163
<p className="text-body-sm text-secondary break-all">
Shared by {selected.owner}
</p>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Format the owner with the shared public-key helper

Every Browse details dialog currently renders the publisher’s full 64-character hex key as ordinary identity text. This bypasses the adopted public-identity convention for feature consumers and produces an unreadable, ambiguous label; use formatPublicKey(selected.owner) here while retaining the full key only for an explicit copy or inspection action.

AGENTS.md reference: AGENTS.md:L22-L30

Useful? React with 👍 / 👎.

Comment on lines +80 to +84
autoPlay
muted
loop
playsInline
preload="auto"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid autoplaying every avatar in the picker

Opening a collection mounts PackedAgentAvatar for every choice, so the Gloopies view immediately preloads and loops 23 videos at once (about 20 MB of WebM or 88 MB of HEVC assets, plus concurrent decoding). This can make the picker expensive or exhaust hardware decoder capacity even before the user interacts; render posters initially and start an animation only for the selected or hovered/focused avatar.

Useful? React with 👍 / 👎.

Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes needed: keep AI configuration reachable across harnesses and handle Codex configuration updates in the quick controls (two P2 findings inline). I also independently confirmed the existing transcript-loss finding: failed drafting discards successful recognition instead of preserving it for retry; no duplicate inline comment added.

Star Lord automated source review via Wes's account. Head 2d4f8d00f86fe888a5c90185a1fb33e9f174fb4a; base 54bd06348b28aaaed1574214c6fc919581724a3d. Source-only, including the three attached screenshots; no tests, app execution, or live voice validation performed. Non-blocking COMMENT review, not approval.

Comment thread src/bundled/agents/AgentSettingsFields.tsx
Comment thread src/bundled/agents/AgentQuickModel.tsx
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7a67069433

ℹ️ 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".

className={tile ? styles.portrait : "shrink-0"}
data-animated={packed ? "" : undefined}
>
{packed ? (

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep live presence on packed avatars

When an agent uses any bundled avatar, this branch bypasses AgentAvatar and its statusBadge, so the always-animated artwork replaces the visible online/away/offline indicator for nearly every newly created agent. This violates the Identity shapes rule in src/shared/design-system/DESIGN.md:337-352 and removes the documented distinction between process state and relay presence; render the packed artwork through the shared Avatar owner or preserve its status-badge layer.

AGENTS.md reference: AGENTS.md:L38-L41

Useful? React with 👍 / 👎.

setError(
"Two-minute limit reached. Please record a shorter description.",
);
cancel();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Finish rather than cancel at the recording limit

When a user reaches the advertised two-minute limit, this calls cancel(), which marks the session cancelled and discards the entire recording instead of processing the allowed two minutes. The existing voice-note flow finishes and accepts its recording at the duration boundary; this path should likewise stop normally and continue transcription rather than forcing a complete re-record.

AGENTS.md reference: AGENTS.md:L126-L129

Useful? React with 👍 / 👎.

setElapsedSeconds(0);
}
}
session.resolveStop?.(recording);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Report unrequested recorder stops

If the capture stream ends without the UI calling stop()—for example when the microphone is disconnected—the recorder's stop event reaches this line with resolveStop unset. The hook then clears the session and returns to idle without delivering the decoded recording or showing an error, silently losing the user's speech; retain the unexpected-stop guard used by the existing voice-note recorder or otherwise surface recovery.

AGENTS.md reference: AGENTS.md:L126-L129

Useful? React with 👍 / 👎.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes still needed (existing threads, independently confirmed):

  • P2 — Preserve voice work on failure/boundaries. The transcript-loss finding remains unresolved. The two-minute limit cancels and discards the recording, and an unexpected recorder stop can return silently to idle. Retain the transcript for retry, finish/transcribe at the limit, and surface interrupted capture rather than silently losing it.
  • P2 — Restore visible live presence for packed avatars. I confirm the existing finding: that branch bypasses the shared avatar’s presence/activity presentation; its accessible label does not restore the visible indicator. Preserve that shared presentation around the packed artwork.

The prior Codex quick-control defect is addressed by routing through the full editor. I am not re-requesting the preset-configuration change explicitly declined in the author’s design-direction response.

Star Lord automated source review via Wes’s account. Head 7a6706943379b5ff9c7157bf3658c4c3bd66dc9a; base f8705a95ba8034c1a3c7ec5f09847db1c864d97b. Source and three attached screenshots inspected; no tests, app, live voice, or CI validation performed.

@klopez4212

Copy link
Copy Markdown
Contributor Author

🤖 Following up on Wes’s latest review, per Kenneth’s direction:

  • Preserve voice work on failure/boundaries: agreed as follow-up work. We will add transcript retention/retry and recording-boundary recovery in a separate PR; this PR will leave the current flow unchanged.
  • Restore live presence on packed avatars: we are intentionally leaving the UI unchanged. The backend is being changed to keep agents always on, so Kenneth does not want to add the live-presence indicator in this PR. This is a design/scope decision, not a claim that the backend change has already shipped.

Signed-off-by: klopez4212 <klopez4212@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The previous voice-loss findings remain unresolved; the author has deferred recovery to a separate PR, not fixed it here. No new findings in the test-only delta: the awaited assertion preserves roster visibility and explicit-refresh checks without replaying the write. Packed-avatar presence is intentionally unchanged per that design response; I am not re-requesting it.

Star Lord’s automated source review via Wes’s account. Head 0df5e243cd391e468f0503393c5a3d1820e21af7; base f8705a95ba8034c1a3c7ec5f09847db1c864d97b. Source-only follow-up and three attached screenshots inspected; no tests, app, live voice, or CI validation performed.

Signed-off-by: klopez4212 <klopez4212@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The explicit-apply defect is addressed: Done editing now closes without replacing existing instructions; Use instructions remains the voice-apply action. No new findings in the three-file delta. The previous voice-loss findings remain outstanding and deferred to a separate PR; that scope decision is unchanged.

Star Lord’s automated source review via Wes’s account. Head adbadb02df8910fc7193ab90bcde87f89d0bfd26; base f8705a95ba8034c1a3c7ec5f09847db1c864d97b. Source-only follow-up and three attached screenshots inspected; no tests, app, live voice, or CI validation performed.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: adbadb02df

ℹ️ 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".

Comment thread src/bundled/agents/AgentCreateDialog.tsx
Comment thread src/bundled/agents/AgentBrowse.tsx Outdated
Comment thread src/bundled/agents/AgentControls.css Outdated
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aa9b5c869c

ℹ️ 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".

Comment thread src/bundled/agents/AgentInstructions.tsx

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes needed: blocking Close removes the usable recovery path during creation/profile credential waits and failed status recovery (one P2 inline). Keep recovery reachable without discarding the draft or operation result. Catalog validation reuse and shared artwork-button ownership address their prior findings; the voice-loss work remains deferred, not fixed here.

Star Lord’s automated source review via Wes’s account. Head aa9b5c869c7d76a2240f87c1f4cf625715a15a83; base f8705a95ba8034c1a3c7ec5f09847db1c864d97b. Reviewed the new delta, relevant callers/native waits, PR description and all three screenshots. No tests, app, live voice, or CI validation performed. Non-blocking COMMENT, not approval.

Comment thread src/bundled/agents/AgentCreateDialog.tsx Outdated
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d6929229d7

ℹ️ 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".

Comment thread src/bundled/agents/AgentQuickModel.tsx
Comment thread src/bundled/agents/AgentQuickModel.tsx
Comment on lines +272 to +275
.dottedTrigger:focus-visible {
outline: 2px solid var(--border-focus);
outline-offset: 4px;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use the shared focus owner for the dotted avatar trigger

The prior SurfaceButton repair does not cover this new AvatarEditor trigger: it remains a raw button with a feature-owned :focus-visible ring. That bypasses the shared keyboard-modality/focus recipe required by DESIGN.md’s Focus appearance contract and will diverge from shared focus behavior; render the dotted artwork action through the shared control owner rather than defining its interaction state in this module.

AGENTS.md reference: AGENTS.md:L38-L41

Useful? React with 👍 / 👎.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes needed: the recovery controls address the previous reachability issue, but two P2 regressions remain: errors now bypass dirty-draft dismissal protection, and recovery Stop failures disappear when setup settles (inline details). Keep explicit Close available after settled errors without losing either draft protection or Stop feedback. The voice-loss work remains deferred, not fixed here.

Star Lord’s automated source review via Wes’s account. Head d6929229d7b5fea8ca76a9bbd1118343a0ba4031; base f8705a95ba8034c1a3c7ec5f09847db1c864d97b. Five-file follow-up, relevant callers/controller, PR description and all three screenshots inspected. No tests, app, live voice, or CI validation performed. Non-blocking COMMENT, not approval.

Comment thread src/bundled/agents/AgentCreateDialog.tsx Outdated
Comment thread src/bundled/agents/AgentCreateDialog.tsx Outdated

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes requested. Four new P2 findings are inline; five focused mounted probes also confirm the existing model/setup regressions and the new Browse budget failure.

Head d6929229d7b5fea8ca76a9bbd1118343a0ba4031; base f8705a95ba8034c1a3c7ec5f09847db1c864d97b.

Carl, an automated reviewer, commenting via Wes’s GitHub account.

Comment thread src-tauri/Cargo.toml
Comment on lines +38 to +40
sherpa-onnx = "=1.13.4"
# Keep the C bindings matched to the safe wrapper.
sherpa-onnx-sys = "=1.13.4"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Verify the native speech archive before linking it

These default features enable sherpa-onnx-sys's static build. In the pinned 1.13.4 build script, download_prebuilt_libs downloads a platform tarball from GitHub Releases, unpacks it without checking a digest, and links its Sherpa/ONNX libraries. Cargo.lock authenticates the Rust crate, not those separately downloaded binaries. I found no verified SHERPA_ONNX_ARCHIVE_DIR/SHERPA_ONNX_LIB_DIR provisioning in this repository's .github, scripts, bin, or .cargo build paths.

A replaced release asset can therefore change executable code in the signed app without any lockfile/source change. Pin the approved per-target archive digests and fail closed on mismatch before supplying the verified libraries to Cargo (including cache reuse), or build from pinned source. The version string alone does not pin these native bytes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Fixed in 5d545e6 (hosted head f09a9d3). The workspace patches the pinned sys crate so direct and transitive Cargo builds verify approved SHA-256 pins for all five supported static archives before extraction/linking. Cached/local archives use the same verification; extracted libraries are rebuilt from verified bytes, and unverified LIB_DIR overrides fail closed. Two archive regression tests, direct build-script corruption/override probes, and mandatory type/unit, design-system, and workspace Clippy gates passed. Independent source review found no blockers. Hosted DCO passed; CI is running. Windows/native live speech acceptance remains unverified.

Comment thread src/bundled/agents/AgentBrowse.tsx Outdated
Comment thread src/bundled/agents/AgentCreateHeader.tsx
Comment thread src/bundled/agents/AgentControls.css Outdated
Comment thread src/bundled/agents/AgentControlPanel.tsx
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ce6cbda487

ℹ️ 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".

Comment on lines +257 to +259
return new Promise((resolve) => {
session.resolveStop = resolve;
recorder.stop();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Release microphone tracks immediately after Stop

When the user presses Stop, this stops only the MediaRecorder; the capture stream remains live until blob.arrayBuffer(), decodeAudioData(), and WAV resampling finish because releaseSessionAudio() runs afterward in the stop-event handler. For a long recording, the OS microphone indicator and hardware capture can therefore remain active throughout processing even though the UI says recording has stopped. Stop the stream tracks here, as the existing bundled voice-note recorder does, while retaining the audio context until decoding completes.

Useful? React with 👍 / 👎.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two earlier P2s still need changes in AgentCreateDialog.tsx: dirty-draft dismissal and hidden recovery-Stop failures. I rechecked both at this head; the previous repair guidance stands.

The Browse byte-budget finding is addressed in source: bounded page-size backoff preserves the cursor and uses the successful limit for pagination. No new actionable defect found in the two-file follow-up since d6929229d7b5fea8ca76a9bbd1118343a0ba4031.

Star Lord’s automated source follow-up via Wes’s account. Head: ce6cbda487eb75b93387b9e55f0a761478a27526; base: f8705a95ba8034c1a3c7ec5f09847db1c864d97b. Source-only; tests, app/native workflows and CI were not run or verified.

Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b2b536d542

ℹ️ 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".

Comment on lines +15 to +19
const animations = import.meta.glob<string>(
["./avatar-packs/*.webm", "./avatar-packs/*.mp4"],
{
eager: true,
query: "?url",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Avoid eagerly bundling every avatar animation codec

This eager glob forces all 49 WebM and all 49 MP4 animations into every frontend build and therefore every desktop installation/update, even though a runtime uses only one preferred codec. These newly added animation files total about 216 MiB compressed already (approximately 38 MiB WebM plus 177 MiB MP4), before the posters and other application assets, creating a major download and installed-size regression for a cosmetic picker; package only the target platform’s format or load animations from an on-demand asset source instead of importing both complete collections.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Fixed in 40a68bc, hosted head 09694d6. Tauri native builds now emit only HEVC on macOS and WebM on Windows/Linux; posters remain local and missing-codec sources are omitted with poster fallback preserved. Actual Vite asset builds verify all three platforms; a full macOS frontend build emitted 49 MP4s and zero WebMs (about 38 MiB removed). Windows/Linux omit about 177 MiB of HEVC. Browser builds retain both codecs for mixed engines. Codec/playback tests and mandatory hooks pass; native install/playback was not rerun.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes still needed: one new P2 is inline for the recovery dialog’s successful-completion state.

Star Lord’s automated source follow-up via Wes’s account. Head: b2b536d5427f663385b9021a90344b2295e4b678; base: f8705a95ba8034c1a3c7ec5f09847db1c864d97b. No tests or app/native workflows executed. One CI snapshot still had checks running and Windows native validation skipped; runtime correctness remains unverified.

if (mounted.current) {
if (startFailure) setError(startFailure);
else onClose();
else if (!recoveryUsed.current) onClose();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Give the retained recovery dialog a completed state

After a user uses recovery Stop for another agent while Create/profile setup is pending, successful setup now leaves this dialog open, but nextStep remains "profile". The settled UI therefore still announces “Finish its profile setup” and enables Finish profile even when the created agent is running and profilePending is false. Pressing that primary action skips both Start and publication and keeps the dialog open again, so successful setup appears unfinished with a retry that cannot progress. Keep recovery feedback visible, but record completion and show an accurate success status with a Done/Close action instead of the retry. Cover this successful recovery-used branch in the integration test.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Fixed in 40a68bc, hosted head 09694d6. After recovery is used, successful setup now records completion, retains recovery feedback, and uses the existing Close control instead of offering Finish profile again. Kenneth approved this limited state/copy correction. The real create/profile integration and dialog regressions pass (102 tests); mandatory push hooks pass.

Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes still needed in the existing findings; no new defects found in this ten-file follow-up.

Star Lord’s automated source follow-up via Wes’s account. Head: 09694d64fb1882fc3008cb33e6e401fa5c7de32f; base: f8705a95ba8034c1a3c7ec5f09847db1c864d97b. No tests, builds, or app/native workflows executed. One CI snapshot still showed checks running and Windows native validation skipped; native packaging/playback remains unverified.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 09694d64fb

ℹ️ 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".

Comment on lines +280 to +284
<Tabs
variant="navigation"
label="Agents header"
value="agents"
onValueChange={() => {}}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Render the static header with PanelHeaderLabel

This creates a one-item tablist for the static Agents destination even though it neither switches views nor controls a tab panel, so assistive technology announces a tab interaction that does not exist. The adopted header rule in src/shared/design-system/DESIGN.md:793-797 explicitly requires PanelHeaderLabel for static destinations and forbids inventing tab semantics merely to match navigation styling; use that shared label with the robot icon instead.

AGENTS.md reference: AGENTS.md:L22-L33

Useful? React with 👍 / 👎.

Comment thread src/bundled/agents/AgentInstructions.test.tsx Outdated
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5f3f82aebf

ℹ️ 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".

Comment on lines +234 to +238
Ok(RuntimeConnection::new(
workspace.to_owned(),
&self.cache(workspace)?,
Arc::new(Headless),
)?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Gate voice drafting on Windows

On Windows, every generated voice draft reaches this new authentication path, but RuntimeConnection::new unconditionally returns DATABRICKS_WINDOWS because the pinned OAuth engine cannot reuse sign-in there (src-tauri/src/agent_models.rs:589-592 and crates/agent-controller/src/connection.rs:26-29). Since AgentInstructions currently enables recording on every Tauri host, Windows users can record and transcribe audio but can never generate instructions; expose this host capability to the UI and disable Voice on Windows, or provide a supported authentication path.

AGENTS.md reference: AGENTS.md:L81-L84

Useful? React with 👍 / 👎.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The native speech archive verification finding remains unresolved; this follow-up does not change that build path. The environment-override routing, lazy Pi-card discovery, and instruction-subview focus fixes address the three UI findings on source inspection; no new findings in the six-file delta.

Star Lord automated source review via Wes’s account. Head: 5f3f82aebf6cecd9375c352a72872877265864f2; base: f8705a95ba8034c1a3c7ec5f09847db1c864d97b.

Source-only: no tests or app execution. The CI snapshot still had JavaScript, Rust and browser jobs running; native/live-voice behavior and human acceptance remain unverified. Description and all three attached screenshots inspected; no new publication-privacy finding.

Signed-off-by: klopez4212 <klopez4212@gmail.com>
Signed-off-by: klopez4212 <klopez4212@gmail.com>

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No changes requested in this follow-up: the native archive verification finding is addressed in source, and I found no new actionable defects in the vendored build path or real-hook recording tests.

Star Lord automated source review via Wes’s account — head f09a9d3863af327183b837fd0f6a8bc3a522cb21; base f8705a95ba8034c1a3c7ec5f09847db1c864d97b.

Source-only: no builds, tests, or app execution; CI still had JavaScript, Rust, and browser jobs running at the snapshot, and cross-platform/live-voice acceptance remains unverified. The description and all three attached screenshots were inspected, with no new publication-privacy finding.

@wesbillman wesbillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not ready for approval at this head. One new P2 is inline: the archive repair invalidates every warm Cargo build. Two existing P2 findings also remain independently confirmed: Windows voice drafting is offered despite an always-failing authentication path, and Stop leaves microphone capture active through audio decoding. A mounted real-hook reproduction confirms the latter; no duplicate finding threads added.

The prior model override/Pi lookup, creation recovery, Browse byte-budget, focus, codec packaging, and native archive-integrity repairs are addressed in the inspected source, but the latter introduces the inline rebuild regression. Required CI is now green. Merge criteria: gate the unsupported Windows voice flow before recording (or provide a working path), stop microphone tracks immediately on Stop with a pending-decode regression, and keep unchanged warm native builds Fresh without weakening archive verification.

Validation: source follow-up, one mounted real-hook reproduction, and an independent offline Cargo invalidation/control probe; existing Chromium/WebKit editor-grid journeys pass. Hosted CI run 38142718359 used merge ceeb97c45f401904cd76bd7434014c3e7dabf0af (head into d55d70a071bdaa2b499673dcd40ffa37a7a5d793), not pure head. Windows native validation was skipped; no fresh native/live-voice acceptance or broad local suite. Previously agreed voice-recovery, packed-presence, preset-configuration and catalog-adoption scope decisions remain respected.

Reviewed head f09a9d3863af327183b837fd0f6a8bc3a522cb21; API base f8705a95ba8034c1a3c7ec5f09847db1c864d97b.

Carl, an automated reviewer, commenting via Wes’s GitHub account.

println!("cargo:rerun-if-changed={}", archive_path.display());
// Rebuild from the authenticated archive, never trust an extracted cache.
let lib_dir = verified_archive::unpack(&archive_path, expected, &out_dir)?;
println!("cargo:rerun-if-changed={}", lib_dir.display());

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Avoid watching the output directory recreated by this build script

verified_archive::unpack removes and renames OUT_DIR/verified-native on every invocation (verified_archive.rs:46–50). Watching its lib directory makes that generated directory newer than Cargo's build-script invocation timestamp. The next unchanged build therefore reruns copy/hash/extraction and compilation again; the cycle repeats for every build/test/Clippy invocation.

Two independent offline Cargo probes reproduced the mechanism. With the generated-directory watch, all three builds compile and verbose output reports that exact watched directory as Dirty; removing that watch makes builds two and three Fresh. This defeats incremental native builds for the speech dependency and its consumers.

Use invalidation that does not self-trigger on the directory recreated by the same script, while retaining archive verification and invalidation for modified linked inputs. Add an unchanged second-build regression; the existing integrity tests do not exercise Cargo's rerun behavior.

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.

2 participants