From b75aed652474b785c1e0d48e037d11763a84dd8c Mon Sep 17 00:00:00 2001
From: "tembo[bot]" <208362400+tembo[bot]@users.noreply.github.com>
Date: Thu, 23 Apr 2026 00:57:42 +0000
Subject: [PATCH 1/2] feat(dashboard): improve loading states and enhance repo
name display in rows
Co-authored-by: Alan <45767683+stylessh@users.noreply.github.com>
---
.../layouts/dashboard-content-loading.tsx | 24 +++++++++++++++++++
.../src/components/repo/repository-row.tsx | 17 +++++++++++--
apps/dashboard/src/routes/_protected.tsx | 2 ++
3 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/apps/dashboard/src/components/layouts/dashboard-content-loading.tsx b/apps/dashboard/src/components/layouts/dashboard-content-loading.tsx
index d72ccf8..ae84469 100644
--- a/apps/dashboard/src/components/layouts/dashboard-content-loading.tsx
+++ b/apps/dashboard/src/components/layouts/dashboard-content-loading.tsx
@@ -1,5 +1,15 @@
import { Spinner } from "@diffkit/ui/components/spinner";
+/**
+ * Pending component used for routes rendered inside the dashboard card
+ * (`DashboardLayout`). The `h-full` chain resolves against the card so the
+ * spinner stays visually centered within the content area.
+ *
+ * For top-level pending fallbacks where the parent is just `
` (e.g.
+ * when `_protected` itself is reloading), use `DashboardViewportLoading`
+ * instead — `h-full` there collapses to content height and pins the spinner
+ * to the top of the viewport.
+ */
export function DashboardContentLoading() {
return (
@@ -7,3 +17,17 @@ export function DashboardContentLoading() {
);
}
+
+/**
+ * Full-viewport pending component. Use for route pending states that render
+ * directly inside the document body (where no ancestor provides a resolved
+ * height). Keeps the spinner centered regardless of how little content the
+ * layout has yet rendered.
+ */
+export function DashboardViewportLoading() {
+ return (
+
- {repo.fullName}
+ {/*
+ * Split owner/name so a long owner login doesn't consume all the
+ * space and hide the repo name. The owner takes flexible space and
+ * truncates first; the repo name stays readable at its natural
+ * size. See diffkit#154.
+ */}
+
+
+ {repo.owner}
+
+ /
+ {repo.name}
diff --git a/apps/dashboard/src/routes/_protected.tsx b/apps/dashboard/src/routes/_protected.tsx
index 8da673d..0b2a8f8 100644
--- a/apps/dashboard/src/routes/_protected.tsx
+++ b/apps/dashboard/src/routes/_protected.tsx
@@ -1,4 +1,5 @@
import { createFileRoute, redirect } from "@tanstack/react-router";
+import { DashboardViewportLoading } from "#/components/layouts/dashboard-content-loading";
import { DashboardLayout } from "#/components/layouts/dashboard-layout";
import { ErrorScreen } from "#/components/layouts/error-screen";
import { getSession } from "#/lib/auth.functions";
@@ -67,5 +68,6 @@ export const Route = createFileRoute("/_protected")({
});
},
component: DashboardLayout,
+ pendingComponent: DashboardViewportLoading,
errorComponent: ErrorScreen,
});
From fa11e094b83cea8f7e9d260f40f0bca307052d2a Mon Sep 17 00:00:00 2001
From: "tembo[bot]" <208362400+tembo[bot]@users.noreply.github.com>
Date: Thu, 23 Apr 2026 01:05:12 +0000
Subject: [PATCH 2/2] refactor(review): autofocus textarea in inline comment
form for immediate input
Co-authored-by: Alan <45767683+stylessh@users.noreply.github.com>
---
.../layouts/dashboard-content-loading.tsx | 16 ----------------
.../pulls/review/review-file-diff-block.tsx | 8 ++++++++
.../src/components/repo/repository-row.tsx | 6 ------
3 files changed, 8 insertions(+), 22 deletions(-)
diff --git a/apps/dashboard/src/components/layouts/dashboard-content-loading.tsx b/apps/dashboard/src/components/layouts/dashboard-content-loading.tsx
index ae84469..dbd90d1 100644
--- a/apps/dashboard/src/components/layouts/dashboard-content-loading.tsx
+++ b/apps/dashboard/src/components/layouts/dashboard-content-loading.tsx
@@ -1,15 +1,5 @@
import { Spinner } from "@diffkit/ui/components/spinner";
-/**
- * Pending component used for routes rendered inside the dashboard card
- * (`DashboardLayout`). The `h-full` chain resolves against the card so the
- * spinner stays visually centered within the content area.
- *
- * For top-level pending fallbacks where the parent is just `` (e.g.
- * when `_protected` itself is reloading), use `DashboardViewportLoading`
- * instead — `h-full` there collapses to content height and pins the spinner
- * to the top of the viewport.
- */
export function DashboardContentLoading() {
return (
@@ -18,12 +8,6 @@ export function DashboardContentLoading() {
);
}
-/**
- * Full-viewport pending component. Use for route pending states that render
- * directly inside the document body (where no ancestor provides a resolved
- * height). Keeps the spinner centered regardless of how little content the
- * layout has yet rendered.
- */
export function DashboardViewportLoading() {
return (