Skip to content

Improve task UI overflow handling and docker update rollback#237

Merged
jamiepine merged 4 commits into
spacedriveapp:mainfrom
fyzz-dev:chore/fix-todocard-overflow
Feb 26, 2026
Merged

Improve task UI overflow handling and docker update rollback#237
jamiepine merged 4 commits into
spacedriveapp:mainfrom
fyzz-dev:chore/fix-todocard-overflow

Conversation

@fyzz-dev

@fyzz-dev fyzz-dev commented Feb 26, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Make the agent tasks kanban responsive by allowing all five columns to flex and wrap on smaller screens instead of overflowing horizontally.
  • Fix task detail dialog layout so content scrolls inside the modal, with markdown rendering for task descriptions to improve readability of formatted text.

Validation

  • bun run build (interface)

@coderabbitai

coderabbitai Bot commented Feb 26, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 53ac2d3 and 08aa08c.

📒 Files selected for processing (1)
  • interface/src/routes/AgentTasks.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • interface/src/routes/AgentTasks.tsx

Walkthrough

Modified AgentTasks.tsx to reformat imports, introduce Markdown rendering for task descriptions in the Task Detail dialog, and adjust Kanban board layout from horizontal overflow to vertical scrolling with flex-wrapping. No public signatures altered.

Changes

Cohort / File(s) Summary
Import Reformatting & Markdown Integration
interface/src/routes/AgentTasks.tsx
Multi-line import groupings added; Markdown component introduced and integrated for rendering task descriptions in Task Detail dialog instead of plain text.
Layout & Styling Adjustments
interface/src/routes/AgentTasks.tsx
Kanban board container switched to vertical scrolling with flex-wrapping behavior; column min-width/basis properties adjusted; task card rendering updated to align with new column behavior.
Task Detail Dialog Updates
interface/src/routes/AgentTasks.tsx
Dialog content restructured to render descriptions via Markdown while maintaining existing interactive hooks for approve/execute/delete/status operations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title mentions 'docker update rollback' but the changeset only addresses Kanban UI overflow handling and Markdown rendering—no docker or rollback changes are present. Revise the title to focus on the actual changes: 'Make agent tasks Kanban responsive with Markdown-rendered descriptions' or similar, removing the unrelated 'docker update rollback' reference.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The description accurately reflects the main UI/UX improvements in the changeset—Kanban responsiveness and task detail dialog/Markdown rendering updates.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
interface/src/routes/AgentTasks.tsx (1)

553-553: Minor: Redundant overflow-auto on description wrapper.

The parent div at line 535 already handles scrolling with overflow-y-auto. The nested overflow-auto here is unnecessary and could cause confusing nested scrollbars if the description is very long.

Proposed fix
          {task.description && (
-           <div className="overflow-auto">
+           <div>
              <label className="mb-1 block text-xs text-ink-dull">
                Description
              </label>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@interface/src/routes/AgentTasks.tsx` at line 553, Remove the redundant
scrolling class from the nested description wrapper: in AgentTasks.tsx locate
the inner div that currently has className="overflow-auto" (the one inside the
parent that already uses "overflow-y-auto") and remove the "overflow-auto" class
so only the parent controls scrolling and avoid nested scrollbars; leave any
other classes or content intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/update.rs`:
- Around line 512-534: The rollback block currently discards Results with `let _
=` for calls to `docker.rename_container` and `docker.remove_container`; change
these to handle and log any errors instead of ignoring them by matching or using
`if let Err(e) = ...` and call the project logger (e.g.,
`error!`/`log::error!`/`tracing::error!`) including contextual identifiers
(`new_container.id`, `container_id`, `temp_name`, `container_name`) and a short
message for each operation (`rename_container` and `remove_container`) so
failures during the best-effort rollback are recorded for debugging.

---

Nitpick comments:
In `@interface/src/routes/AgentTasks.tsx`:
- Line 553: Remove the redundant scrolling class from the nested description
wrapper: in AgentTasks.tsx locate the inner div that currently has
className="overflow-auto" (the one inside the parent that already uses
"overflow-y-auto") and remove the "overflow-auto" class so only the parent
controls scrolling and avoid nested scrollbars; leave any other classes or
content intact.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d0d58b7 and 53ac2d3.

📒 Files selected for processing (2)
  • interface/src/routes/AgentTasks.tsx
  • src/update.rs

Comment thread src/update.rs Outdated
Comment on lines +512 to +534
let _ = docker
.rename_container(
&new_container.id,
bollard::container::RenameContainerOptions { name: &temp_name },
)
.await;
let _ = docker
.rename_container(
&container_id,
bollard::container::RenameContainerOptions {
name: &container_name,
},
)
.await;
let _ = docker
.remove_container(
&new_container.id,
Some(bollard::container::RemoveContainerOptions {
force: true,
..Default::default()
}),
)
.await;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion | 🟠 Major

Log rollback failures instead of silently discarding Results.

The rollback operations use let _ = to discard Results, which violates the coding guideline: "Don't silently discard errors; no let _ = on Results. Handle, log, or propagate errors."

Even in best-effort rollback scenarios, logging failures helps with debugging when updates go wrong.

Proposed fix
-        let _ = docker
+        if let Err(e) = docker
             .rename_container(
                 &new_container.id,
                 bollard::container::RenameContainerOptions { name: &temp_name },
             )
-            .await;
-        let _ = docker
+            .await
+        {
+            tracing::warn!(%e, "rollback: failed to rename new container back to temp name");
+        }
+        if let Err(e) = docker
             .rename_container(
                 &container_id,
                 bollard::container::RenameContainerOptions {
                     name: &container_name,
                 },
             )
-            .await;
-        let _ = docker
+            .await
+        {
+            tracing::warn!(%e, "rollback: failed to rename old container back to original name");
+        }
+        if let Err(e) = docker
             .remove_container(
                 &new_container.id,
                 Some(bollard::container::RemoveContainerOptions {
                     force: true,
                     ..Default::default()
                 }),
             )
-            .await;
+            .await
+        {
+            tracing::warn!(%e, "rollback: failed to remove new container");
+        }

As per coding guidelines: "Don't silently discard errors; no let _ = on Results. Handle, log, or propagate errors."

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
let _ = docker
.rename_container(
&new_container.id,
bollard::container::RenameContainerOptions { name: &temp_name },
)
.await;
let _ = docker
.rename_container(
&container_id,
bollard::container::RenameContainerOptions {
name: &container_name,
},
)
.await;
let _ = docker
.remove_container(
&new_container.id,
Some(bollard::container::RemoveContainerOptions {
force: true,
..Default::default()
}),
)
.await;
if let Err(e) = docker
.rename_container(
&new_container.id,
bollard::container::RenameContainerOptions { name: &temp_name },
)
.await
{
tracing::warn!(%e, "rollback: failed to rename new container back to temp name");
}
if let Err(e) = docker
.rename_container(
&container_id,
bollard::container::RenameContainerOptions {
name: &container_name,
},
)
.await
{
tracing::warn!(%e, "rollback: failed to rename old container back to original name");
}
if let Err(e) = docker
.remove_container(
&new_container.id,
Some(bollard::container::RemoveContainerOptions {
force: true,
..Default::default()
}),
)
.await
{
tracing::warn!(%e, "rollback: failed to remove new container");
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/update.rs` around lines 512 - 534, The rollback block currently discards
Results with `let _ =` for calls to `docker.rename_container` and
`docker.remove_container`; change these to handle and log any errors instead of
ignoring them by matching or using `if let Err(e) = ...` and call the project
logger (e.g., `error!`/`log::error!`/`tracing::error!`) including contextual
identifiers (`new_container.id`, `container_id`, `temp_name`, `container_name`)
and a short message for each operation (`rename_container` and
`remove_container`) so failures during the best-effort rollback are recorded for
debugging.

@jamiepine jamiepine enabled auto-merge February 26, 2026 23:21
@jamiepine jamiepine merged commit aa237f1 into spacedriveapp:main Feb 26, 2026
4 checks passed
rktmeister pushed a commit to rktmeister/spacebot that referenced this pull request Mar 11, 2026
…-overflow

Improve task UI overflow handling and docker update rollback
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