Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| fb3796f064 | |||
| c3f8dec104 |
@@ -475,22 +475,31 @@ export function AddLaneModal({
|
|||||||
] as const
|
] as const
|
||||||
).map((option) => {
|
).map((option) => {
|
||||||
const active = option.value === "native" ? router === "native" : router !== "native";
|
const active = option.value === "native" ? router === "native" : router !== "native";
|
||||||
|
// Clicking "AI Router" before the list lands would resolve back to
|
||||||
|
// Native and read as a dead control.
|
||||||
|
const disabled = option.value === "router" && !routersLoaded;
|
||||||
return (
|
return (
|
||||||
<label
|
<label
|
||||||
key={option.value}
|
key={option.value}
|
||||||
className={`flex flex-1 cursor-pointer items-center gap-2 rounded-lg border p-2.5 text-xs shadow-sm transition-colors ${
|
// No radio dot: the card itself lights up when selected. That
|
||||||
active
|
// leaves the DISABLED state with nothing to show it, since the
|
||||||
? "border-accent bg-accent/10 text-accent"
|
// greyed-out dot was carrying it — hence the explicit branch.
|
||||||
: "border-border bg-surface-2 text-fg-secondary hover:border-border-light hover:bg-surface-3"
|
// The input only goes visually hidden, so keyboard and screen
|
||||||
|
// readers still get a real radio group, and the card carries
|
||||||
|
// its focus ring.
|
||||||
|
className={`block flex-1 rounded-lg border p-2.5 text-center text-xs shadow-sm transition-colors focus-within:ring-2 focus-within:ring-accent/50 ${
|
||||||
|
disabled
|
||||||
|
? "cursor-not-allowed border-border bg-surface-2 text-fg-muted opacity-60"
|
||||||
|
: active
|
||||||
|
? "cursor-pointer border-accent bg-accent/10 text-accent"
|
||||||
|
: "cursor-pointer border-border bg-surface-2 text-fg-secondary hover:border-border-light hover:bg-surface-3"
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
type="radio"
|
type="radio"
|
||||||
name="add-lane-router"
|
name="add-lane-router"
|
||||||
className="h-3.5 w-3.5 accent-accent"
|
className="sr-only"
|
||||||
// Clicking "AI Router" before the list lands would resolve
|
disabled={disabled}
|
||||||
// back to Native and read as a dead control.
|
|
||||||
disabled={option.value === "router" && !routersLoaded}
|
|
||||||
checked={active}
|
checked={active}
|
||||||
onChange={() =>
|
onChange={() =>
|
||||||
// Switching to "AI Router" lands on the first saved
|
// Switching to "AI Router" lands on the first saved
|
||||||
@@ -536,9 +545,12 @@ export function AddLaneModal({
|
|||||||
|
|
||||||
{tool === "claude" && (
|
{tool === "claude" && (
|
||||||
<label
|
<label
|
||||||
// Card that lights up when ticked, matching LaneStripCard's
|
// No tick box: the card itself lights up when selected, the same
|
||||||
// selected/unselected treatment.
|
// treatment LaneStripCard uses, which makes a second indicator of
|
||||||
className={`flex cursor-pointer items-start gap-2.5 rounded-lg border p-3 shadow-sm transition-colors ${
|
// the same state redundant. The input stays and only goes visually
|
||||||
|
// hidden — it is still what a keyboard toggles and what a screen
|
||||||
|
// reader announces — so the card carries the focus ring for it.
|
||||||
|
className={`block cursor-pointer rounded-lg border p-3 shadow-sm transition-colors focus-within:ring-2 focus-within:ring-accent/50 ${
|
||||||
writeDocs
|
writeDocs
|
||||||
? "border-accent bg-accent/10"
|
? "border-accent bg-accent/10"
|
||||||
: "border-border bg-surface-2 hover:border-border-light hover:bg-surface-3"
|
: "border-border bg-surface-2 hover:border-border-light hover:bg-surface-3"
|
||||||
@@ -551,9 +563,8 @@ export function AddLaneModal({
|
|||||||
aria-label={t("addLaneWriteDocsLabel")}
|
aria-label={t("addLaneWriteDocsLabel")}
|
||||||
checked={writeDocs}
|
checked={writeDocs}
|
||||||
onChange={(e) => setWriteDocs(e.target.checked)}
|
onChange={(e) => setWriteDocs(e.target.checked)}
|
||||||
className="mt-0.5 h-3.5 w-3.5 shrink-0 accent-accent"
|
className="sr-only"
|
||||||
/>
|
/>
|
||||||
<span>
|
|
||||||
<span
|
<span
|
||||||
className={`block text-xs font-medium ${writeDocs ? "text-accent" : "text-fg-secondary"}`}
|
className={`block text-xs font-medium ${writeDocs ? "text-accent" : "text-fg-secondary"}`}
|
||||||
>
|
>
|
||||||
@@ -562,7 +573,6 @@ export function AddLaneModal({
|
|||||||
<span className="mt-1 block text-[10px] text-fg-muted">
|
<span className="mt-1 block text-[10px] text-fg-muted">
|
||||||
{t("addLaneWriteDocsHint")}
|
{t("addLaneWriteDocsHint")}
|
||||||
</span>
|
</span>
|
||||||
</span>
|
|
||||||
</label>
|
</label>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
|||||||
@@ -9537,7 +9537,7 @@ exports[`screen snapshots > Settings 1`] = `
|
|||||||
<p
|
<p
|
||||||
class="text-[10px] text-status-warning/90 mt-1"
|
class="text-[10px] text-status-warning/90 mt-1"
|
||||||
>
|
>
|
||||||
UI build v1.6.2 (rebuild client to match)
|
UI build v1.6.3 (rebuild client to match)
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
openapi: 3.0.3
|
openapi: 3.0.3
|
||||||
info:
|
info:
|
||||||
title: Agent Dashboard for Claude Code API
|
title: Agent Dashboard for Claude Code API
|
||||||
version: 1.6.2
|
version: 1.6.3
|
||||||
description: HTTP API for real-time Claude Code session monitoring, agent lifecycle tracking, analytics, pricing, hooks ingestion, and workflow intelligence.
|
description: HTTP API for real-time Claude Code session monitoring, agent lifecycle tracking, analytics, pricing, hooks ingestion, and workflow intelligence.
|
||||||
contact:
|
contact:
|
||||||
name: Nguyễn Ngọc Trí Vĩ
|
name: Nguyễn Ngọc Trí Vĩ
|
||||||
|
|||||||
Generated
+3
-3
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "agenthub",
|
"name": "agenthub",
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "agenthub",
|
"name": "agenthub",
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1943,7 +1943,7 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/path-expression-matcher": {
|
"node_modules/path-expression-matcher": {
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.6.1.tgz",
|
||||||
"integrity": "sha512-h7bxdzhHk8Knyc4Tj+jMaa7fEEoUJy7p1qtbVgkYg1Uhpe5Np5VuGXCRZnkZvU+Q42M1vStt0ifa3ueykRJPmQ==",
|
"integrity": "sha512-h7bxdzhHk8Knyc4Tj+jMaa7fEEoUJy7p1qtbVgkYg1Uhpe5Np5VuGXCRZnkZvU+Q42M1vStt0ifa3ueykRJPmQ==",
|
||||||
"funding": [
|
"funding": [
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "agenthub",
|
"name": "agenthub",
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"bin": {
|
"bin": {
|
||||||
"agenthub": "bin/agenthub.js"
|
"agenthub": "bin/agenthub.js"
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user