summaryrefslogtreecommitdiff
path: root/makima/frontend/src/components/NavStrip.tsx
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-02-20 00:46:21 +0000
committerGitHub <noreply@github.com>2026-02-20 00:46:21 +0000
commitaa974c4888851f10c782e07b9d9bff7a6f1aef15 (patch)
treeb1cd40dedeaff64fe447fdd9c6c1000870b6a536 /makima/frontend/src/components/NavStrip.tsx
parented84d7ec5ece272a2cb8dabd36cbd6074df0887e (diff)
downloadsoryu-aa974c4888851f10c782e07b9d9bff7a6f1aef15.tar.gz
soryu-aa974c4888851f10c782e07b9d9bff7a6f1aef15.zip
fix: reconcile:on blocking, pending question notifications, and infra improvements (#73)
* feat: soryu-co/soryu - makima: Fix contracts page overflow - constrain layout to viewport height * feat: soryu-co/soryu - makima: Add git fetch to create_worktree and improve completion prompt merge conflict handling * WIP: heartbeat checkpoint * feat: soryu-co/soryu - makima: Add pending question notification badge to directive sidebar and nav * feat: soryu-co/soryu - makima: Fix reconcile:on blocking - make phaseguard poll indefinitely instead of returning immediately
Diffstat (limited to 'makima/frontend/src/components/NavStrip.tsx')
-rw-r--r--makima/frontend/src/components/NavStrip.tsx23
1 files changed, 15 insertions, 8 deletions
diff --git a/makima/frontend/src/components/NavStrip.tsx b/makima/frontend/src/components/NavStrip.tsx
index 117f4e1..4932427 100644
--- a/makima/frontend/src/components/NavStrip.tsx
+++ b/makima/frontend/src/components/NavStrip.tsx
@@ -1,4 +1,5 @@
import { useAuth } from "../contexts/AuthContext";
+import { useSupervisorQuestions } from "../contexts/SupervisorQuestionsContext";
import { RewriteLink } from "./RewriteLink";
interface NavLink {
@@ -19,6 +20,8 @@ const NAV_LINKS: NavLink[] = [
export function NavStrip() {
const { isAuthenticated, isAuthConfigured, signOut, user } = useAuth();
+ const { pendingQuestions } = useSupervisorQuestions();
+ const directiveQuestionCount = pendingQuestions.filter(q => q.directiveId).length;
const handleSignOut = async () => {
await signOut();
@@ -38,14 +41,18 @@ export function NavStrip() {
</span>
<div className="flex flex-wrap gap-2 items-center flex-1">
{NAV_LINKS.map((link) => (
- <RewriteLink
- key={link.label}
- to={link.href}
- disabled={link.requiresAuth && !hasAccess}
- external={link.external}
- >
- {link.label}
- </RewriteLink>
+ <span key={link.label} className="relative inline-flex items-center">
+ <RewriteLink
+ to={link.href}
+ disabled={link.requiresAuth && !hasAccess}
+ external={link.external}
+ >
+ {link.label}
+ </RewriteLink>
+ {link.label === "Directives" && directiveQuestionCount > 0 && (
+ <span className="ml-0.5 inline-block w-2 h-2 rounded-full bg-amber-400 animate-pulse" title={`${directiveQuestionCount} pending question(s)`} />
+ )}
+ </span>
))}
</div>
<div className="flex items-center gap-2 pl-2.5 border-l border-[rgba(117,170,252,0.35)]">