+
{t('pr.close')}
+
+ {/* Status checks */}
+ {pr.status === 'open' && checks.length > 0 && (
+
+ {t('pr.checks.title')}
+ {checks.map((c) => {
+ const ok = c.status === 'success';
+ const failed = c.status === 'failed' || c.status === 'cancelled';
+ return (
+
+ {ok ?
+ : failed ?
+ : }
+ {c.name}
+ · {c.status}
+
+ );
+ })}
+
+ )}
+
{/* Merge commit info */}
{pr.mergeCommit && (
@@ -248,10 +392,7 @@ export function PullRequestDetail() {
{t('pr.noDiff')}
) : diffs.map((f) => (
-
))}
+ ) : tab === 'review' ? (
+
+ {reviews.length === 0 &&
{t('pr.review.none')}
}
+ {reviews.map((rv) => {
+ const cfg = {
+ approved: { icon:
, label: t('pr.review.approved') },
+ changes_requested: { icon:
, label: t('pr.review.changesRequested') },
+ commented: { icon:
, label: t('pr.review.commented') },
+ }[rv.state];
+ return (
+
+
+ {rv.reviewer?.avatarUrl &&

}
+ {cfg.icon}
+
{rv.reviewer?.username}
+
{cfg.label}
+
· {new Date(rv.createdAt).toLocaleDateString()}
+
+ {rv.body && {rv.body}
}
+
+ );
+ })}
+
+ {pr.status === 'open' && (
+
+ {t('pr.tabReview')}
+
+ )}
+
) : (
/* Comments tab */
@@ -298,7 +549,7 @@ export function PullRequestDetail() {
)}
-
{c.body}
+
{c.body}
))}
diff --git a/luxview-dashboard/src/pages/Repositories.tsx b/luxview-dashboard/src/pages/Repositories.tsx
index 1916541..59496a8 100644
--- a/luxview-dashboard/src/pages/Repositories.tsx
+++ b/luxview-dashboard/src/pages/Repositories.tsx
@@ -79,6 +79,11 @@ export function Repositories() {
{repo.name}
+ {repo.description && (
+
+ {repo.description}
+
+ )}
{repo.slug} · {repo.defaultBranch}
diff --git a/luxview-dashboard/src/pages/RepositoryCode.tsx b/luxview-dashboard/src/pages/RepositoryCode.tsx
index 743037d..bdc40f7 100644
--- a/luxview-dashboard/src/pages/RepositoryCode.tsx
+++ b/luxview-dashboard/src/pages/RepositoryCode.tsx
@@ -4,6 +4,8 @@ import { useTranslation } from 'react-i18next';
import { ArrowLeft, Folder, FileCode, Loader2, ChevronRight, Copy, Check } from 'lucide-react';
import { GlassCard } from '../components/common/GlassCard';
import { PillButton } from '../components/common/PillButton';
+import { CodeView } from '../components/common/CodeView';
+import { Markdown } from '../components/common/Markdown';
import { useThemeStore } from '../stores/theme.store';
import { useNotificationsStore } from '../stores/notifications.store';
import { gitApi, type TreeEntry } from '../api/git';
@@ -176,15 +178,12 @@ export function RepositoryCode() {
{isBinary(blobContent) ? (