fix(agent-gui): close vinyl carousel fade gaps#1080
Conversation
Signed-off-by: Copper <copper6666@users.noreply.github.com>
Signed-off-by: Copper <copper6666@users.noreply.github.com>
Signed-off-by: Copper <copper6666@users.noreply.github.com>
There was a problem hiding this comment.
1 issue found across 3 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/agent/gui/app/renderer/agentactivity.css">
<violation number="1" location="packages/agent/gui/app/renderer/agentactivity.css:9101">
P2: At narrower widths, the carousel can still land on a fractional rendered edge: rounding the layout width to 1px and then applying `scale(0.9)` turns values such as 311px into 279.9px. Since this change is intended to eliminate subpixel fade seams, consider rounding the pre-scaled width to a 10px interval (or rounding the scaled result) so the final transformed width remains pixel-aligned.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
| width: min(400px, calc(100% - 64px)); | ||
| transform: translateX(-50%); | ||
| width: round(nearest, min(400px, calc(100% - 64px)), 1px); | ||
| transform: translateX(-50%) scale(0.9); |
There was a problem hiding this comment.
P2: At narrower widths, the carousel can still land on a fractional rendered edge: rounding the layout width to 1px and then applying scale(0.9) turns values such as 311px into 279.9px. Since this change is intended to eliminate subpixel fade seams, consider rounding the pre-scaled width to a 10px interval (or rounding the scaled result) so the final transformed width remains pixel-aligned.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/agent/gui/app/renderer/agentactivity.css, line 9101:
<comment>At narrower widths, the carousel can still land on a fractional rendered edge: rounding the layout width to 1px and then applying `scale(0.9)` turns values such as 311px into 279.9px. Since this change is intended to eliminate subpixel fade seams, consider rounding the pre-scaled width to a 10px interval (or rounding the scaled result) so the final transformed width remains pixel-aligned.</comment>
<file context>
@@ -9094,8 +9097,9 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
- width: min(400px, calc(100% - 64px));
- transform: translateX(-50%);
+ width: round(nearest, min(400px, calc(100% - 64px)), 1px);
+ transform: translateX(-50%) scale(0.9);
+ transform-origin: center center;
}
</file context>
The seams flanking the vinyl carousel came from three stacked issues: the WebGL buffer was sized from the scale-transformed bounding rect (fractional px misaligning buffer and CSS box), the fade mask left a dead band before each canvas edge, and records past the immediate neighbours kept a 22% opacity floor that showed as half-faded slivers the mask could not hide. Size the canvas from integer layout px, run the fade edge to edge, and melt records to fully transparent past the ±1 neighbours. Also scale the hero ring down to 0.8. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Copper <copper6666@users.noreply.github.com>
The floating carousel layer sat at a hard-coded offset from the stage center, which only matches the placeholder slot for the default hero height. Narrow panes wrap the title and grow the composer, re-centering the body and sliding the slot upward while the carousel stayed put, overlapping the hero title. Measure the slot's real offset from the stage and pin the layer to it, re-syncing on stage/body resizes and on ready/gate branch swaps; the old calc() remains as the pre-measure fallback. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Copper <copper6666@users.noreply.github.com>
There was a problem hiding this comment.
1 issue found across 4 files (changes from recent commits).
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="packages/agent/gui/agent-gui/agentGuiNode/AgentGUIHeroAgentCarousel.tsx">
<violation number="1" location="packages/agent/gui/agent-gui/agentGuiNode/AgentGUIHeroAgentCarousel.tsx:299">
P3: The resize explanation now points maintainers to a nonexistent `scale(0.9)` transform, while this change sets the carousel layer to `scale(0.8)`. Updating the comment keeps the seam diagnosis consistent with the actual CSS.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
| const rect = stage.getBoundingClientRect(); | ||
| scene.setSize(rect.width, rect.height); | ||
| // Use layout (client) dimensions, not getBoundingClientRect: the stage | ||
| // sits inside a `scale(0.9)` layer, so the bounding rect is the |
There was a problem hiding this comment.
P3: The resize explanation now points maintainers to a nonexistent scale(0.9) transform, while this change sets the carousel layer to scale(0.8). Updating the comment keeps the seam diagnosis consistent with the actual CSS.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/agent/gui/agent-gui/agentGuiNode/AgentGUIHeroAgentCarousel.tsx, line 299:
<comment>The resize explanation now points maintainers to a nonexistent `scale(0.9)` transform, while this change sets the carousel layer to `scale(0.8)`. Updating the comment keeps the seam diagnosis consistent with the actual CSS.</comment>
<file context>
@@ -295,8 +295,13 @@ export const AgentGUIHeroAgentCarousel = memo(
- const rect = stage.getBoundingClientRect();
- scene.setSize(rect.width, rect.height);
+ // Use layout (client) dimensions, not getBoundingClientRect: the stage
+ // sits inside a `scale(0.9)` layer, so the bounding rect is the
+ // transformed size (integer * 0.9 = fractional). Feeding that fraction
+ // to renderer.setSize() floors the WebGL buffer to a size that no
</file context>
| // sits inside a `scale(0.9)` layer, so the bounding rect is the | |
| // sits inside a `scale(0.8)` layer, so the bounding rect is the |
Summary
Validation
The local full pre-push check was skipped because the pinned
golangci-lintbinary is not installed locally; CI should run the complete repository checks.Summary by cubic
Fixes visible gaps around the AgentGUI vinyl carousel and pins the hero layer to its placeholder so it no longer overlaps the title on narrow panes. Sizes the canvas from integer layout pixels, extends the fade to the edges, and fully dissolves far-edge records.
clientWidth/clientHeight(not transformedgetBoundingClientRect) and round layer width to whole px; scale the ring to 0.8.agent-gui-node__composer-hero-prompt-input-area; reduce hero input and project row padding to 8px and adjust width to avoid clipping.Written for commit 0f0fd26. Summary will update on new commits.