dsh-git-worktree 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/README.en.md +7 -5
- package/README.md +7 -5
- package/lib/adapters/git.js +86 -13
- package/lib/adapters/git.js.map +1 -1
- package/lib/adapters/initial-commit.d.ts +16 -0
- package/lib/adapters/initial-commit.js +112 -0
- package/lib/adapters/initial-commit.js.map +1 -0
- package/lib/adapters/lookup.js +21 -0
- package/lib/adapters/lookup.js.map +1 -1
- package/lib/client/WorktreeCreateRow.js +2 -1
- package/lib/client/WorktreeCreateRow.js.map +1 -1
- package/lib/client/WorktreeReviewRow.d.ts +1 -1
- package/lib/client/WorktreeReviewRow.js +2 -2
- package/lib/client/WorktreeReviewRow.js.map +1 -1
- package/lib/client/actions.d.ts +1 -5
- package/lib/client/actions.js.map +1 -1
- package/lib/client/console-remote/adapter.js +2 -0
- package/lib/client/console-remote/adapter.js.map +1 -1
- package/lib/client/pre-session/PreSessionWorktreeToggle.d.ts +2 -2
- package/lib/client/pre-session/PreSessionWorktreeToggle.js +92 -79
- package/lib/client/pre-session/PreSessionWorktreeToggle.js.map +1 -1
- package/lib/client/pre-session/controller.d.ts +3 -0
- package/lib/client/pre-session/controller.js +16 -4
- package/lib/client/pre-session/controller.js.map +1 -1
- package/lib/client/pre-session/harness-input.d.ts +13 -0
- package/lib/client/pre-session/harness-input.js +18 -0
- package/lib/client/pre-session/harness-input.js.map +1 -0
- package/lib/client/pre-session/index.d.ts +3 -3
- package/lib/client/pre-session/index.js +4 -3
- package/lib/client/pre-session/index.js.map +1 -1
- package/lib/client/review-console/PreflightStatus.js +3 -2
- package/lib/client/review-console/PreflightStatus.js.map +1 -1
- package/lib/client/review-console/ReviewActions.d.ts +4 -1
- package/lib/client/review-console/ReviewActions.js +73 -53
- package/lib/client/review-console/ReviewActions.js.map +1 -1
- package/lib/client/review-console/ReviewDetailsModal.d.ts +12 -0
- package/lib/client/review-console/ReviewDetailsModal.js +56 -0
- package/lib/client/review-console/ReviewDetailsModal.js.map +1 -0
- package/lib/client/review-console/ReviewIcon.d.ts +35 -0
- package/lib/client/review-console/ReviewIcon.js +14 -0
- package/lib/client/review-console/ReviewIcon.js.map +1 -0
- package/lib/client/review-console/WorktreeReviewPanel.d.ts +3 -7
- package/lib/client/review-console/WorktreeReviewPanel.js +8 -73
- package/lib/client/review-console/WorktreeReviewPanel.js.map +1 -1
- package/lib/client/review-console/review-console.styles.js +101 -23
- package/lib/client/review-console/review-console.styles.js.map +1 -1
- package/lib/client/styles.js +13 -10
- package/lib/client/styles.js.map +1 -1
- package/lib/client/target-console/TargetStatusAction.js +65 -46
- package/lib/client/target-console/TargetStatusAction.js.map +1 -1
- package/lib/client/target-console/WorktreeConsoleView.d.ts +2 -1
- package/lib/client/target-console/WorktreeConsoleView.js +5 -4
- package/lib/client/target-console/WorktreeConsoleView.js.map +1 -1
- package/lib/client/target-console/WorktreeManagerModal.js +1 -1
- package/lib/client/target-console/WorktreeManagerModal.js.map +1 -1
- package/lib/client/target-console/WorktreeReviewStatus.js +36 -81
- package/lib/client/target-console/WorktreeReviewStatus.js.map +1 -1
- package/lib/client/target-console/current-polling.d.ts +11 -0
- package/lib/client/target-console/current-polling.js +104 -0
- package/lib/client/target-console/current-polling.js.map +1 -0
- package/lib/client/target-console/target-console.styles.js +8 -0
- package/lib/client/target-console/target-console.styles.js.map +1 -1
- package/lib/client/workspace-sidebar/index.js +5 -2
- package/lib/client/workspace-sidebar/index.js.map +1 -1
- package/lib/client/workspace-sidebar/model.d.ts +3 -0
- package/lib/client/workspace-sidebar/model.js +83 -10
- package/lib/client/workspace-sidebar/model.js.map +1 -1
- package/lib/client.js +5608 -4004
- package/lib/console-contract.d.ts +20 -0
- package/lib/console-contract.js.map +1 -1
- package/lib/console-host/control-plane.d.ts +3 -1
- package/lib/console-host/control-plane.js +105 -15
- package/lib/console-host/control-plane.js.map +1 -1
- package/lib/console-host/service.d.ts +3 -1
- package/lib/console-host/service.js +12 -0
- package/lib/console-host/service.js.map +1 -1
- package/lib/console-remote/descriptors.js +3 -1
- package/lib/console-remote/descriptors.js.map +1 -1
- package/lib/console-remote/remote.d.ts +3 -1
- package/lib/console-remote/remote.js.map +1 -1
- package/lib/console-remote/schemas.d.ts +10 -2
- package/lib/console-remote/schemas.js +7 -0
- package/lib/console-remote/schemas.js.map +1 -1
- package/lib/i18n/client-messages.d.ts +168 -20
- package/lib/i18n/client-messages.js +71 -34
- package/lib/i18n/client-messages.js.map +1 -1
- package/lib/i18n/host-messages.d.ts +32 -0
- package/lib/i18n/host-messages.js +11 -0
- package/lib/i18n/host-messages.js.map +1 -1
- package/lib/ports.d.ts +15 -0
- package/lib/session-checkout-module.js +2 -0
- package/lib/session-checkout-module.js.map +1 -1
- package/package.json +2 -1
- package/scripts/check-publish.mjs +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from 'react';
|
|
3
|
+
import { Modal } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
|
+
import { useClientTranslator } from '../i18n.js';
|
|
5
|
+
import { ReviewIcon } from './ReviewIcon.js';
|
|
6
|
+
export function validationText(status, t) {
|
|
7
|
+
return t(status === 'passed' ? 'detail.passed' : status === 'failed' ? 'detail.failed' : status === 'partial' ? 'detail.partial' : 'detail.notRun');
|
|
8
|
+
}
|
|
9
|
+
export function validationIcon(status) {
|
|
10
|
+
return status === 'passed' ? 'check' : status === 'failed' || status === 'partial' ? 'warning' : 'minus';
|
|
11
|
+
}
|
|
12
|
+
export function ReviewDetailsModal({ open, onClose, target, preflight }) {
|
|
13
|
+
const t = useClientTranslator();
|
|
14
|
+
const content = useRef(null);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (!open)
|
|
17
|
+
return;
|
|
18
|
+
const previous = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
19
|
+
const dialog = content.current?.closest('[role="dialog"]');
|
|
20
|
+
if (!dialog)
|
|
21
|
+
return;
|
|
22
|
+
const focusable = () => Array.from(dialog.querySelectorAll('button:not(:disabled), summary, [tabindex="0"]'));
|
|
23
|
+
focusable()[0]?.focus();
|
|
24
|
+
const trap = (event) => {
|
|
25
|
+
if (event.key !== 'Tab')
|
|
26
|
+
return;
|
|
27
|
+
const items = focusable();
|
|
28
|
+
const first = items[0], last = items[items.length - 1];
|
|
29
|
+
if (!first || !last)
|
|
30
|
+
return;
|
|
31
|
+
if (event.shiftKey && (document.activeElement === first || !dialog.contains(document.activeElement))) {
|
|
32
|
+
event.preventDefault();
|
|
33
|
+
last.focus();
|
|
34
|
+
}
|
|
35
|
+
else if (!event.shiftKey && (document.activeElement === last || !dialog.contains(document.activeElement))) {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
first.focus();
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
document.addEventListener('keydown', trap);
|
|
41
|
+
return () => {
|
|
42
|
+
document.removeEventListener('keydown', trap);
|
|
43
|
+
if (previous?.isConnected)
|
|
44
|
+
previous.focus();
|
|
45
|
+
};
|
|
46
|
+
}, [open]);
|
|
47
|
+
const review = target.review;
|
|
48
|
+
if (!review)
|
|
49
|
+
return null;
|
|
50
|
+
const conflict = preflight?.status === 'conflict';
|
|
51
|
+
const recovery = target.state === 'preview_detached' || target.state === 'recovery_required';
|
|
52
|
+
const state = recovery ? 'detail.recovery' : conflict || preflight?.status === 'blocked' ? 'detail.blocked' : target.state === 'preview_active' ? 'detail.preview' : target.state === 'retained' || target.state === 'delivered' || target.state === 'cleanup_pending' ? 'detail.saved' : 'detail.ready';
|
|
53
|
+
const note = recovery ? t('detail.recoveryNote') : conflict ? t('detail.conflictNote') : target.state === 'preview_active' ? t('detail.previewNote') : preflight?.status === 'blocked' ? preflight.message : target.cleanupMessage;
|
|
54
|
+
return _jsxs(Modal, { open: open, onClose: onClose, title: t('detail.title'), headless: true, className: "dsh-wt-details-modal", contentClassName: "dsh-wt-details-body", children: [_jsxs("header", { className: "dsh-wt-details-header", children: [_jsx("h1", { children: t('detail.title') }), _jsx("button", { type: "button", "aria-label": t('detail.close'), onClick: onClose, children: _jsx(ReviewIcon, { name: "close" }) })] }), _jsxs("div", { ref: content, className: "dsh-wt-details-body", children: [_jsxs("div", { className: "dsh-wt-details-heading", children: [_jsx("h2", { children: review.summary }), _jsx("span", { className: "dsh-wt-details-badge", "data-tone": recovery || conflict ? 'warning' : 'neutral', children: t(state) })] }), _jsx("p", { className: "dsh-wt-details-muted", children: t('detail.iteration', { count: review.iteration }) }), _jsxs("div", { className: "dsh-wt-details-meta", children: [_jsxs("span", { children: [_jsx(ReviewIcon, { name: "file" }), t('count.files', { count: review.changedFiles.length })] }), _jsxs("span", { "data-validation": review.validationStatus, children: [_jsx(ReviewIcon, { name: validationIcon(review.validationStatus) }), validationText(review.validationStatus, t)] })] }), note ? _jsxs("p", { className: "dsh-wt-details-notice", "data-tone": recovery || conflict || preflight?.status === 'blocked' ? 'warning' : 'neutral', children: [_jsx(ReviewIcon, { name: recovery || conflict ? 'warning' : 'list' }), note] }) : null, _jsxs("section", { className: "dsh-wt-details-section", children: [_jsx("h3", { children: t('detail.files') }), _jsx("ul", { className: "dsh-wt-details-files", children: review.changedFiles.map(file => _jsxs("li", { children: [_jsx(ReviewIcon, { name: "file" }), _jsx("span", { children: file }), conflict && preflight.conflictingFiles.includes(file) ? _jsx("span", { className: "dsh-wt-details-badge", "data-tone": "warning", children: t('detail.conflict') }) : null] }, file)) })] }), _jsxs("section", { className: "dsh-wt-details-section", children: [_jsx("h3", { children: t('detail.validation') }), review.validationSummary ? _jsx("p", { className: "dsh-wt-details-muted", children: review.validationSummary }) : null, review.tests.length ? _jsx("ul", { className: "dsh-wt-details-tests", children: review.tests.map((test, index) => _jsxs("li", { children: [_jsx(ReviewIcon, { name: validationIcon(test.status) }), _jsxs("div", { children: [_jsxs("div", { className: "dsh-wt-details-test-title", children: [_jsx("span", { children: test.command }), _jsx("span", { "data-validation": test.status, children: validationText(test.status, t) })] }), test.summary ? _jsx("p", { children: test.summary }) : null] })] }, index)) }) : _jsx("p", { className: "dsh-wt-details-muted", children: t('detail.noTests') })] }), _jsxs("details", { className: "dsh-wt-details-version", children: [_jsxs("summary", { children: [_jsx(ReviewIcon, { name: "chevron" }), _jsx(ReviewIcon, { name: "branch" }), t('detail.version')] }), _jsxs("dl", { children: [_jsx("dt", { children: t('detail.reviewId') }), _jsx("dd", { children: review.reviewId }), _jsx("dt", { children: t('detail.revision') }), _jsx("dd", { children: target.revision }), _jsx("dt", { children: t('detail.commit') }), _jsx("dd", { children: target.currentOid })] })] })] })] });
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=ReviewDetailsModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReviewDetailsModal.js","sourceRoot":"","sources":["../../../src/client/review-console/ReviewDetailsModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
declare const icons: {
|
|
2
|
+
file: import("lucide-react").LucideIcon;
|
|
3
|
+
branch: import("lucide-react").LucideIcon;
|
|
4
|
+
check: import("lucide-react").LucideIcon;
|
|
5
|
+
warning: import("lucide-react").LucideIcon;
|
|
6
|
+
minus: import("lucide-react").LucideIcon;
|
|
7
|
+
close: import("lucide-react").LucideIcon;
|
|
8
|
+
list: import("lucide-react").LucideIcon;
|
|
9
|
+
more: import("lucide-react").LucideIcon;
|
|
10
|
+
preview: import("lucide-react").LucideIcon;
|
|
11
|
+
confirm: import("lucide-react").LucideIcon;
|
|
12
|
+
rollback: import("lucide-react").LucideIcon;
|
|
13
|
+
edit: import("lucide-react").LucideIcon;
|
|
14
|
+
save: import("lucide-react").LucideIcon;
|
|
15
|
+
discard: import("lucide-react").LucideIcon;
|
|
16
|
+
local: import("lucide-react").LucideIcon;
|
|
17
|
+
down: import("lucide-react").LucideIcon;
|
|
18
|
+
create: import("lucide-react").LucideIcon;
|
|
19
|
+
search: import("lucide-react").LucideIcon;
|
|
20
|
+
manager: import("lucide-react").LucideIcon;
|
|
21
|
+
retain: import("lucide-react").LucideIcon;
|
|
22
|
+
send: import("lucide-react").LucideIcon;
|
|
23
|
+
shield: import("lucide-react").LucideIcon;
|
|
24
|
+
help: import("lucide-react").LucideIcon;
|
|
25
|
+
folder: import("lucide-react").LucideIcon;
|
|
26
|
+
external: import("lucide-react").LucideIcon;
|
|
27
|
+
refresh: import("lucide-react").LucideIcon;
|
|
28
|
+
chevron: import("lucide-react").LucideIcon;
|
|
29
|
+
};
|
|
30
|
+
export type ReviewIconName = keyof typeof icons;
|
|
31
|
+
export declare function ReviewIcon({ name, className }: {
|
|
32
|
+
name: ReviewIconName;
|
|
33
|
+
className?: string;
|
|
34
|
+
}): import("react").JSX.Element;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { FileText, GitBranch, CircleCheck, TriangleAlert, CircleMinus, X, ListChecks, CircleEllipsis, TvMinimalPlay, Check, Undo2, Pencil, Save, Trash2, FolderOpen, ExternalLink, RefreshCw, ChevronRight, ChevronDown, Monitor, Plus, Search, FolderGit2, Archive, Send, ShieldCheck, CircleHelp, } from 'lucide-react';
|
|
3
|
+
const icons = {
|
|
4
|
+
file: FileText, branch: GitBranch, check: CircleCheck, warning: TriangleAlert,
|
|
5
|
+
minus: CircleMinus, close: X, list: ListChecks, more: CircleEllipsis, preview: TvMinimalPlay,
|
|
6
|
+
confirm: Check, rollback: Undo2, edit: Pencil, save: Save, discard: Trash2,
|
|
7
|
+
local: Monitor, down: ChevronDown, create: Plus, search: Search, manager: FolderGit2, retain: Archive, send: Send, shield: ShieldCheck, help: CircleHelp,
|
|
8
|
+
folder: FolderOpen, external: ExternalLink, refresh: RefreshCw, chevron: ChevronRight,
|
|
9
|
+
};
|
|
10
|
+
export function ReviewIcon({ name, className = '' }) {
|
|
11
|
+
const Icon = icons[name];
|
|
12
|
+
return _jsx(Icon, { className: `dsh-wt-icon ${className}`, size: 18, strokeWidth: 1.75, "aria-hidden": "true", focusable: "false" });
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ReviewIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReviewIcon.js","sourceRoot":"","sources":["../../../src/client/review-console/ReviewIcon.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAC3E,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAC3F,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,GAChH,MAAM,cAAc,CAAA;AAErB,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa;IAC7E,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa;IAC5F,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM;IAC1E,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU;IACxJ,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY;CACtF,CAAA;AAGD,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,EAAE,EAAgD;IAC/F,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,OAAO,KAAC,IAAI,IAAC,SAAS,EAAE,eAAe,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,iBAAc,MAAM,EAAC,SAAS,EAAC,OAAO,GAAG,CAAA;AAC1H,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { WorktreeClientServices } from '../actions.js';
|
|
1
|
+
import type { WorktreeConsoleReviewSummary, WorktreeConsoleTargetSummary } from '../../console-contract.js';
|
|
3
2
|
export interface WorktreeReviewEvidence extends WorktreeConsoleReviewSummary {
|
|
4
3
|
detailsMarkdown?: string;
|
|
5
4
|
}
|
|
@@ -12,11 +11,8 @@ export interface WorktreeReviewIdentity {
|
|
|
12
11
|
export interface WorktreeReviewPanelProps {
|
|
13
12
|
review: WorktreeReviewEvidence;
|
|
14
13
|
identity?: WorktreeReviewIdentity;
|
|
15
|
-
adapter?: WorktreeConsoleAdapter | null;
|
|
16
|
-
services?: WorktreeClientServices;
|
|
17
14
|
target?: WorktreeConsoleTargetSummary;
|
|
18
|
-
onRefresh?: () => void | Promise<void>;
|
|
19
|
-
onTargetChange?: (target: WorktreeConsoleTargetSummary) => void;
|
|
20
15
|
unavailableMessage?: string;
|
|
21
16
|
}
|
|
22
|
-
export declare function
|
|
17
|
+
export declare function reviewIsStale(target: WorktreeConsoleTargetSummary | undefined, identity: WorktreeReviewIdentity | undefined, review: WorktreeReviewEvidence): boolean;
|
|
18
|
+
export declare function WorktreeReviewPanel({ review, target, identity, unavailableMessage }: WorktreeReviewPanelProps): import("react").JSX.Element;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ReviewIcon } from './ReviewIcon.js';
|
|
2
3
|
import { useClientTranslator, defaultClientTranslator } from '../i18n.js';
|
|
3
|
-
import {
|
|
4
|
-
import { ReviewActions } from './ReviewActions.js';
|
|
4
|
+
import { useEffect, useId, useState } from 'react';
|
|
5
5
|
function validationLabel(status, t = defaultClientTranslator) {
|
|
6
6
|
if (status === 'passed')
|
|
7
7
|
return t("automated.validation.passed");
|
|
@@ -18,7 +18,7 @@ function testStatusLabel(status, t = defaultClientTranslator) {
|
|
|
18
18
|
return t("failed");
|
|
19
19
|
return t("not.run");
|
|
20
20
|
}
|
|
21
|
-
function reviewIsStale(target, identity, review) {
|
|
21
|
+
export function reviewIsStale(target, identity, review) {
|
|
22
22
|
if (!target)
|
|
23
23
|
return false;
|
|
24
24
|
if (target.state === 'working')
|
|
@@ -30,79 +30,14 @@ function reviewIsStale(target, identity, review) {
|
|
|
30
30
|
|| target.revision !== expectedRevision
|
|
31
31
|
|| target.review.reviewId !== review.reviewId;
|
|
32
32
|
}
|
|
33
|
-
export function WorktreeReviewPanel({ review,
|
|
33
|
+
export function WorktreeReviewPanel({ review, target, identity, unavailableMessage }) {
|
|
34
34
|
const t = useClientTranslator();
|
|
35
|
-
const unavailableMessage = unavailableMessageOverride ?? t("live.worktree.console.is.disconnected.review.actions.will");
|
|
36
35
|
const panelId = useId();
|
|
37
|
-
const mounted = useRef(true);
|
|
38
|
-
const actionScope = identity
|
|
39
|
-
? [identity.sessionId, identity.checkoutId, identity.expectedRevision, identity.expectedReviewId].join('\u0000')
|
|
40
|
-
: '';
|
|
41
|
-
const activeActionScope = useRef(actionScope);
|
|
42
|
-
activeActionScope.current = actionScope;
|
|
43
|
-
const targetKey = target ? [
|
|
44
|
-
target.checkoutId,
|
|
45
|
-
target.revision,
|
|
46
|
-
target.state,
|
|
47
|
-
target.review?.reviewId,
|
|
48
|
-
target.commitOid,
|
|
49
|
-
target.retention,
|
|
50
|
-
target.cleanupMessage,
|
|
51
|
-
target.deliveryProof?.localHeadAfter,
|
|
52
|
-
target.deliveryProof?.commitInLocalHistory,
|
|
53
|
-
target.deliveryProof?.validationStatus,
|
|
54
|
-
target.deliveryProof?.validationSummary,
|
|
55
|
-
target.checkpoints?.length,
|
|
56
|
-
target.checkpoints?.at(-1)?.checkpointId,
|
|
57
|
-
target.checkpointGeneration,
|
|
58
|
-
target.reviewSlot,
|
|
59
|
-
target.reviewSlotHolder?.checkoutId,
|
|
60
|
-
target.reviewSlotHolder?.ownerSessionId,
|
|
61
|
-
target.reviewSlotHolder?.revision,
|
|
62
|
-
target.reviewSlotHolder?.state,
|
|
63
|
-
target.previewRecovery?.previewId,
|
|
64
|
-
target.previewRecovery?.detachedAt,
|
|
65
|
-
target.previewRecovery?.reason,
|
|
66
|
-
target.previewRecovery?.attemptedAction,
|
|
67
|
-
target.capabilities.preflight,
|
|
68
|
-
target.capabilities.preview,
|
|
69
|
-
target.capabilities.finalize,
|
|
70
|
-
target.capabilities.finalizePreview,
|
|
71
|
-
target.capabilities.rollbackPreview,
|
|
72
|
-
target.capabilities.discard,
|
|
73
|
-
].join('\u0000') : '';
|
|
74
|
-
const [currentTarget, setCurrentTarget] = useState(target);
|
|
75
36
|
const [detailsExpanded, setDetailsExpanded] = useState(false);
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
mounted.current = true;
|
|
80
|
-
return () => { mounted.current = false; };
|
|
81
|
-
}, []);
|
|
82
|
-
useLayoutEffect(() => {
|
|
83
|
-
setCurrentTarget(target);
|
|
84
|
-
refreshRequested.current = false;
|
|
85
|
-
setInvalidReason(reviewIsStale(target, identity, review) ? t("review.is.stale.please.refresh") : null);
|
|
86
|
-
}, [identity?.expectedReviewId, identity?.expectedRevision, review.reviewId, review.revision, targetKey]);
|
|
87
|
-
const handleStale = useCallback((_error) => {
|
|
88
|
-
setInvalidReason(t("review.is.stale.please.refresh"));
|
|
89
|
-
if (!refreshRequested.current) {
|
|
90
|
-
refreshRequested.current = true;
|
|
91
|
-
void onRefresh?.();
|
|
92
|
-
}
|
|
93
|
-
}, [onRefresh]);
|
|
94
|
-
const handleTargetChange = useCallback((nextTarget) => {
|
|
95
|
-
setCurrentTarget(nextTarget);
|
|
96
|
-
onTargetChange?.(nextTarget);
|
|
97
|
-
}, [onTargetChange]);
|
|
98
|
-
const liveReady = Boolean(adapter
|
|
99
|
-
&& identity
|
|
100
|
-
&& currentTarget
|
|
101
|
-
&& ['ready_for_review', 'preview_active', 'preview_detached', 'cleanup_pending', 'recovery_required', 'retained', 'delivered'].includes(currentTarget.state)
|
|
102
|
-
&& !invalidReason);
|
|
103
|
-
const hasValidationDetails = Boolean(review.validationSummary || review.tests.length > 0);
|
|
104
|
-
return (_jsxs("section", { className: "dsh-wt-review-panel", "aria-label": t("worktree.review"), "data-worktree-review-id": review.reviewId, children: [_jsxs("header", { className: "dsh-wt-review-compact-head", children: [_jsx("span", { className: "dsh-wt-review-status-icon", "data-validation": review.validationStatus, "aria-hidden": true, children: t("symbol.4") }), _jsxs("div", { className: "dsh-wt-review-compact-copy", children: [_jsx("h2", { className: "dsh-wt-review-title", children: t("review.iteration.ready", { iteration: review.iteration }) }), _jsx("p", { className: "dsh-wt-review-summary", children: review.summary })] }), _jsxs("span", { className: "dsh-wt-review-identity dsh-wt-code", title: t("review.identity", { reviewId: review.reviewId, revision: review.revision }), children: [review.reviewId.slice(0, 8), " \u00B7 r", review.revision] })] }), _jsxs("div", { className: "dsh-wt-review-meta", children: [_jsx("span", { "data-validation": review.validationStatus, children: validationLabel(review.validationStatus, t) }), _jsx("span", { children: t("count.files", { count: review.changedFiles.length }) }), (currentTarget?.checkpoints?.length ?? 0) > 0 ? (_jsx("span", { className: "dsh-wt-checkpoint-summary", children: t("count.saved.stages", { count: currentTarget.checkpoints.length }) })) : null, hasValidationDetails ? (_jsx("button", { type: "button", className: "dsh-wt-review-details-toggle", "aria-expanded": detailsExpanded, "aria-controls": `${panelId}-validation`, onClick: () => setDetailsExpanded(value => !value), children: detailsExpanded
|
|
37
|
+
useEffect(() => setDetailsExpanded(false), [review.reviewId, review.revision]);
|
|
38
|
+
const invalidReason = reviewIsStale(target, identity, review) ? t("review.is.stale.please.refresh") : null;
|
|
39
|
+
return (_jsxs("section", { className: "dsh-wt-review-panel", "aria-label": t("worktree.review"), "data-worktree-review-id": review.reviewId, children: [_jsxs("header", { className: "dsh-wt-review-compact-head", children: [_jsx("span", { className: "dsh-wt-review-status-icon", "data-validation": review.validationStatus, "aria-hidden": true, children: _jsx(ReviewIcon, { name: "check" }) }), _jsxs("div", { className: "dsh-wt-review-compact-copy", children: [_jsx("h2", { className: "dsh-wt-review-title", children: t("review.iteration.ready", { iteration: review.iteration }) }), _jsx("p", { className: "dsh-wt-review-summary", children: review.summary })] })] }), _jsxs("div", { className: "dsh-wt-review-meta", children: [_jsx("span", { "data-validation": review.validationStatus, children: validationLabel(review.validationStatus, t) }), _jsx("span", { children: t("count.files", { count: review.changedFiles.length }) }), (target?.checkpoints?.length ?? 0) > 0 ? (_jsx("span", { className: "dsh-wt-checkpoint-summary", children: t("count.saved.stages", { count: target.checkpoints.length }) })) : null, _jsx("button", { type: "button", className: "dsh-wt-review-details-toggle", "aria-expanded": detailsExpanded, "aria-controls": `${panelId}-validation`, onClick: () => setDetailsExpanded(value => !value), children: detailsExpanded
|
|
105
40
|
? t("hide.validation.details")
|
|
106
|
-
: t("view.validation.details", { p0: review.tests.length > 0 ? t("tests", { p0: review.tests.length }) : '' }) })
|
|
41
|
+
: t("view.validation.details", { p0: review.tests.length > 0 ? t("tests", { p0: review.tests.length }) : '' }) })] }), detailsExpanded ? (_jsxs("div", { id: `${panelId}-validation`, className: "dsh-wt-review-validation-details", children: [_jsxs("span", { className: "dsh-wt-review-identity dsh-wt-code", title: t("review.identity", { reviewId: review.reviewId, revision: review.revision }), children: [review.reviewId.slice(0, 8), " \u00B7 r", review.revision] }), review.validationSummary ? _jsx("p", { children: review.validationSummary }) : null, review.tests.length > 0 ? (_jsx("ul", { className: "dsh-wt-test-list", "aria-label": t("validation.commands"), children: review.tests.map((item, index) => (_jsxs("li", { className: "dsh-wt-test", children: [_jsx("span", { className: "dsh-wt-test-state", "data-test-status": item.status, children: testStatusLabel(item.status, t) }), _jsxs("span", { className: "dsh-wt-test-command", children: [_jsx("code", { className: "dsh-wt-code", children: item.command }), item.summary ? _jsx("span", { className: "dsh-wt-test-summary", children: item.summary }) : null] })] }, `${item.command}-${index}`))) })) : null] })) : null, invalidReason || unavailableMessage ? _jsx("p", { className: "dsh-wt-review-evidence-status", children: invalidReason ?? unavailableMessage }) : null] }));
|
|
107
42
|
}
|
|
108
43
|
//# sourceMappingURL=WorktreeReviewPanel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorktreeReviewPanel.js","sourceRoot":"","sources":["../../../src/client/review-console/WorktreeReviewPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAyB,MAAM,YAAY,CAAA;AAChG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"WorktreeReviewPanel.js","sourceRoot":"","sources":["../../../src/client/review-console/WorktreeReviewPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export const REVIEW_CONSOLE_STYLES = String.raw `
|
|
2
2
|
.dsh-wt-review-panel,
|
|
3
|
+
.dsh-wt-details-modal,
|
|
3
4
|
.dsh-wt-review-dock {
|
|
4
5
|
--wt-ink: color-mix(in srgb, currentColor 92%, transparent);
|
|
5
|
-
--wt-muted: color-mix(in srgb, currentColor
|
|
6
|
+
--wt-muted: color-mix(in srgb, currentColor 68%, transparent);
|
|
6
7
|
--wt-line: color-mix(in srgb, currentColor 14%, transparent);
|
|
7
8
|
--wt-panel: color-mix(in srgb, currentColor 4%, transparent);
|
|
8
9
|
--wt-green: #2f8f64;
|
|
@@ -18,20 +19,21 @@ export const REVIEW_CONSOLE_STYLES = String.raw `
|
|
|
18
19
|
.dsh-wt-review-compact-copy { min-width:0; flex:1; }
|
|
19
20
|
.dsh-wt-review-title { margin:0; min-width:0; font-size:14px; line-height:1.35; overflow-wrap:anywhere; }
|
|
20
21
|
.dsh-wt-review-summary { margin:3px 0 0; color:var(--wt-muted); line-height:1.45; overflow-wrap:anywhere; }
|
|
21
|
-
.dsh-wt-review-identity { flex:0 1 auto; max-width:
|
|
22
|
-
.dsh-wt-review-meta { display:flex; align-items:center; flex-wrap:wrap; gap:6px 12px; padding:0 14px 10px 42px; color:var(--wt-muted); font-size:
|
|
22
|
+
.dsh-wt-review-identity { display:block; flex:0 1 auto; max-width:100%; color:var(--wt-muted); font-size:12px; text-align:left; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
23
|
+
.dsh-wt-review-meta { display:flex; align-items:center; flex-wrap:wrap; gap:6px 12px; padding:0 14px 10px 42px; color:var(--wt-muted); font-size:12px; }
|
|
23
24
|
.dsh-wt-review-meta [data-validation="passed"] { color:var(--wt-green); }
|
|
24
25
|
.dsh-wt-review-meta [data-validation="failed"],
|
|
25
26
|
.dsh-wt-review-meta [data-validation="partial"] { color:var(--wt-amber); }
|
|
26
27
|
.dsh-wt-review-details-toggle { border:0; padding:0; background:transparent; color:inherit; font:inherit; cursor:pointer; }
|
|
27
28
|
.dsh-wt-review-details-toggle:hover { color:var(--wt-ink); }
|
|
28
29
|
.dsh-wt-review-details-toggle:focus-visible,
|
|
29
|
-
.dsh-wt-more-trigger:focus-visible
|
|
30
|
-
.dsh-wt-review-
|
|
30
|
+
.dsh-wt-more-trigger:focus-visible,
|
|
31
|
+
.dsh-wt-review-dock button:focus-visible { outline:2px solid #5a8dee; outline-offset:2px; }
|
|
32
|
+
.dsh-wt-review-validation-details { margin:0 14px 10px 42px; padding:9px 10px; border-radius:8px; background:var(--wt-panel); font-size:12px; }
|
|
31
33
|
.dsh-wt-review-validation-details > p { margin:0 0 7px; }
|
|
32
34
|
.dsh-wt-test-list { list-style:none; padding:0; margin:0; display:grid; gap:6px; }
|
|
33
35
|
.dsh-wt-test { display:grid; grid-template-columns:auto minmax(0, 1fr); gap:7px; align-items:start; }
|
|
34
|
-
.dsh-wt-test-state { color:var(--wt-muted); font-size:
|
|
36
|
+
.dsh-wt-test-state { color:var(--wt-muted); font-size:12px; padding-top:2px; }
|
|
35
37
|
.dsh-wt-test-state[data-test-status="passed"] { color:var(--wt-green); }
|
|
36
38
|
.dsh-wt-test-state[data-test-status="failed"] { color:var(--wt-amber); }
|
|
37
39
|
.dsh-wt-test-command { display:grid; gap:2px; min-width:0; overflow-wrap:anywhere; }
|
|
@@ -51,14 +53,14 @@ export const REVIEW_CONSOLE_STYLES = String.raw `
|
|
|
51
53
|
.dsh-wt-commit-dialog { display:grid; gap:8px; }
|
|
52
54
|
.dsh-wt-commit-dialog > label:first-child { font-size:12px; font-weight:700; }
|
|
53
55
|
.dsh-wt-commit-dialog textarea { min-height:132px; max-height:240px; resize:vertical; border:1px solid var(--wt-line); border-radius:8px; padding:9px 10px; background:transparent; color:inherit; font:12px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
54
|
-
.dsh-wt-character-count { color:var(--wt-muted); font-size:
|
|
55
|
-
.dsh-wt-checkpoint-note { display:grid; gap:3px; padding:9px 10px; border:1px solid color-mix(in srgb, #3275db 24%, transparent); border-radius:8px; background:color-mix(in srgb, #3275db 6%, transparent); font-size:
|
|
56
|
+
.dsh-wt-character-count { color:var(--wt-muted); font-size:12px; text-align:left; }
|
|
57
|
+
.dsh-wt-checkpoint-note { display:grid; gap:3px; padding:9px 10px; border:1px solid color-mix(in srgb, #3275db 24%, transparent); border-radius:8px; background:color-mix(in srgb, #3275db 6%, transparent); font-size:12px; }
|
|
56
58
|
.dsh-wt-checkpoint-note span,
|
|
57
59
|
.dsh-wt-checkpoint-summary { color:var(--wt-muted); }
|
|
58
60
|
.dsh-wt-retention-check { display:flex; align-items:center; gap:8px; border:1px solid var(--wt-line); border-radius:8px; padding:8px 9px; font-size:12px; }
|
|
59
|
-
.dsh-wt-retention-select { display:grid; gap:5px; padding:9px; border-radius:8px; background:var(--wt-panel); font-size:
|
|
61
|
+
.dsh-wt-retention-select { display:grid; gap:5px; padding:9px; border-radius:8px; background:var(--wt-panel); font-size:12px; }
|
|
60
62
|
.dsh-wt-retention-select select { min-height:32px; border:1px solid var(--wt-line); border-radius:7px; padding:0 8px; background:Canvas; color:inherit; }
|
|
61
|
-
.dsh-wt-preflight { display:grid; gap:7px; margin-top:7px; padding:8px 9px; border-radius:8px; background:var(--wt-panel); color:var(--wt-muted); font-size:
|
|
63
|
+
.dsh-wt-preflight { display:grid; gap:7px; margin-top:7px; padding:8px 9px; border-radius:8px; background:var(--wt-panel); color:var(--wt-muted); font-size:12px; }
|
|
62
64
|
.dsh-wt-preflight[data-preflight="conflict"],
|
|
63
65
|
.dsh-wt-preflight[data-preflight="blocked"],
|
|
64
66
|
.dsh-wt-preflight[data-preflight="error"] { color:var(--wt-amber); }
|
|
@@ -76,28 +78,30 @@ export const REVIEW_CONSOLE_STYLES = String.raw `
|
|
|
76
78
|
.dsh-wt-recovery-actions { display:flex; flex-wrap:wrap; gap:6px; }
|
|
77
79
|
.dsh-wt-inline-action { border:0; padding:0; background:transparent; color:inherit; font:inherit; text-decoration:underline; cursor:pointer; }
|
|
78
80
|
.dsh-wt-inline-action:disabled { opacity:.5; cursor:not-allowed; }
|
|
79
|
-
.dsh-wt-delivery-proof { display:grid; gap:7px; margin-top:8px; padding:8px 9px; border:1px solid color-mix(in srgb, var(--wt-green) 26%, transparent); border-radius:8px; background:color-mix(in srgb, var(--wt-green) 6%, transparent); font-size:
|
|
81
|
+
.dsh-wt-delivery-proof { display:grid; gap:7px; margin-top:8px; padding:8px 9px; border:1px solid color-mix(in srgb, var(--wt-green) 26%, transparent); border-radius:8px; background:color-mix(in srgb, var(--wt-green) 6%, transparent); font-size:12px; }
|
|
80
82
|
.dsh-wt-delivery-proof header { display:flex; align-items:center; justify-content:space-between; gap:8px; }
|
|
81
83
|
.dsh-wt-delivery-proof header span { color:var(--wt-muted); }
|
|
82
84
|
.dsh-wt-delivery-proof-compact { display:block; margin:1px 0 0; padding:0; border:0; background:transparent; color:var(--wt-muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
83
|
-
.dsh-wt-action-status { min-height:1.35em; margin-top:7px; color:var(--wt-muted); font-size:
|
|
85
|
+
.dsh-wt-action-status { min-height:1.35em; margin-top:7px; color:var(--wt-muted); font-size:12px; }
|
|
84
86
|
.dsh-wt-review-dock { box-sizing:border-box; display:flex; flex:none; align-items:center; gap:9px; width:calc(100% - 2 * var(--dsh-composer-side-clearance, 16px) - 2 * var(--dsh-composer-dock-inset, 0px)); max-width:calc(var(--dsh-composer-card-max-width, 780px) - 2 * var(--dsh-composer-dock-inset, 0px)); margin:0 auto 8px; padding:7px 9px; border:1px solid color-mix(in srgb, #3275db 22%, transparent); border-radius:9px; background:color-mix(in srgb, #3275db 6%, transparent); color:var(--wt-ink); font-size:12px; }
|
|
85
|
-
.dsh-wt-review-dock
|
|
86
|
-
.dsh-wt-review-dock-copy
|
|
87
|
-
.dsh-wt-review-dock-copy
|
|
88
|
-
.dsh-wt-review-dock
|
|
87
|
+
.dsh-wt-review-dock > .dsh-wt-icon { order:-2; }
|
|
88
|
+
.dsh-wt-review-dock-copy { order:-1; order:-1; display:grid; min-width:0; flex:1; gap:1px; }
|
|
89
|
+
.dsh-wt-review-dock-copy strong { font-weight:500; overflow-wrap:anywhere; }
|
|
90
|
+
.dsh-wt-review-dock-copy span { color:var(--wt-muted); font-size:12px; }
|
|
91
|
+
.dsh-wt-review-dock .dsh-wt-review-actions { min-width:0; max-width:100%; padding:0; }
|
|
92
|
+
.dsh-wt-action-status:empty { min-height:0; margin-top:0; }
|
|
93
|
+
.dsh-wt-action-status:empty { min-height:0; margin-top:0; }
|
|
94
|
+
.dsh-wt-review-dock .dsh-wt-action-status:empty { display:none; }
|
|
95
|
+
.dsh-wt-review-evidence-status { margin:0 14px 10px 42px; color:var(--wt-muted); font-size:12px; }
|
|
89
96
|
.dsh-wt-review-dock .dsh-wt-actions { justify-content:flex-end; }
|
|
90
|
-
.dsh-wt-review-dock .dsh-wt-
|
|
91
|
-
.dsh-wt-review-dock .dsh-wt-preflight-facts,
|
|
92
|
-
.dsh-wt-review-dock .dsh-wt-conflict-list,
|
|
93
|
-
.dsh-wt-review-dock .dsh-wt-delivery-proof:not(.dsh-wt-delivery-proof-compact) { display:none; }
|
|
97
|
+
.dsh-wt-review-dock .dsh-wt-preflight-facts { display:none; }
|
|
94
98
|
.dsh-wt-review-dock .dsh-wt-preflight { margin:0; padding:4px 6px; }
|
|
95
99
|
.dsh-wt-review-dock .dsh-wt-preflight[data-preflight="loading"],
|
|
96
100
|
.dsh-wt-review-dock .dsh-wt-preflight[data-preflight="ready"],
|
|
97
101
|
.dsh-wt-review-dock .dsh-wt-preflight[data-preflight="local_advanced"],
|
|
98
102
|
.dsh-wt-review-dock .dsh-wt-preflight[data-preflight="already_in_local"] { display:none; }
|
|
99
103
|
.dsh-wt-review-dock .dsh-wt-preflight-head > span { display:none; }
|
|
100
|
-
.dsh-wt-review-dock .dsh-wt-button { padding:5px 9px; font-size:
|
|
104
|
+
.dsh-wt-review-dock .dsh-wt-button { padding:5px 9px; font-size:12px; }
|
|
101
105
|
.dsh-wt-review-dock .dsh-wt-more-trigger { width:29px; height:27px; }
|
|
102
106
|
@media (max-width: 620px) {
|
|
103
107
|
.dsh-wt-review-compact-head { flex-wrap:wrap; }
|
|
@@ -106,9 +110,83 @@ export const REVIEW_CONSOLE_STYLES = String.raw `
|
|
|
106
110
|
.dsh-wt-review-validation-details,
|
|
107
111
|
.dsh-wt-review-actions { margin-left:0; padding-left:14px; }
|
|
108
112
|
.dsh-wt-review-dock { flex-wrap:wrap; width:calc(100% - 2 * var(--dsh-composer-side-clearance, 12px) - 2 * var(--dsh-composer-dock-inset, 0px)); }
|
|
109
|
-
.dsh-wt-review-dock
|
|
110
|
-
|
|
113
|
+
.dsh-wt-review-dock > .dsh-wt-icon { order:-2; }
|
|
114
|
+
.dsh-wt-review-dock-copy { order:-1; order:-1; flex-basis:calc(100% - 28px); }
|
|
115
|
+
|
|
111
116
|
.dsh-wt-review-dock .dsh-wt-review-actions { margin-left:auto; }
|
|
112
117
|
}
|
|
118
|
+
|
|
119
|
+
.dsh-wt-icon { display:inline-flex; width:18px; height:18px; flex:0 0 18px; vertical-align:middle; }
|
|
120
|
+
.dsh-wt-review-dock { background:var(--dsw-alias-bg-layer-2, #fff); border-color:var(--wt-line); padding:10px 12px; gap:10px; }
|
|
121
|
+
.dsh-wt-review-dock-copy strong { font-size:13px; font-weight:550; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
122
|
+
.dsh-wt-review-dock-copy .dsh-wt-dock-evidence { display:flex; align-items:center; gap:5px; }
|
|
123
|
+
.dsh-wt-dock-evidence .dsh-wt-icon { width:14px; height:14px; flex-basis:14px; }
|
|
124
|
+
.dsh-wt-details-trigger { display:inline-flex; align-items:center; gap:5px; flex-shrink:0; padding:6px; border:0; background:transparent; color:inherit; font:inherit; cursor:pointer; border-radius:6px; }
|
|
125
|
+
.dsh-wt-details-trigger:hover { background:var(--wt-panel); }
|
|
126
|
+
.dsh-wt-details-modal { width:min(720px, calc(100vw - 32px)); max-width:calc(100vw - 32px); max-height:calc(100dvh - 40px); border:1px solid var(--wt-line); border-radius:14px; }
|
|
127
|
+
.dsh-wt-details-body { padding:8px 24px 24px; overflow:auto; min-height:0; color:var(--wt-ink); font-size:13px; line-height:1.6; }
|
|
128
|
+
.dsh-wt-details-heading { display:flex; align-items:flex-start; gap:12px; flex-wrap:wrap; }
|
|
129
|
+
.dsh-wt-details-heading h2 { font-size:20px; font-weight:600; line-height:1.4; margin:0; overflow-wrap:anywhere; flex:1; min-width:0; }
|
|
130
|
+
.dsh-wt-details-muted { color:var(--wt-muted); margin:6px 0 12px; white-space:pre-wrap; overflow-wrap:anywhere; }
|
|
131
|
+
.dsh-wt-details-badge { display:inline-flex; align-items:center; flex-shrink:0; border-radius:6px; padding:2px 8px; font-size:12px; background:var(--wt-panel); color:var(--wt-ink); }
|
|
132
|
+
.dsh-wt-details-badge[data-tone="warning"] { color:var(--wt-amber); background:color-mix(in srgb, var(--wt-amber) 9%, transparent); }
|
|
133
|
+
.dsh-wt-details-meta { display:flex; gap:20px; flex-wrap:wrap; margin:18px 0; color:var(--wt-muted); }
|
|
134
|
+
.dsh-wt-details-meta > span { display:inline-flex; align-items:center; gap:7px; }
|
|
135
|
+
.dsh-wt-details-notice { display:flex; align-items:flex-start; gap:9px; padding:12px; border-radius:8px; background:var(--wt-panel); }
|
|
136
|
+
.dsh-wt-details-notice[data-tone="warning"] { background:color-mix(in srgb, var(--wt-amber) 8%, transparent); }
|
|
137
|
+
.dsh-wt-details-section { border-top:1px solid var(--wt-line); padding:16px 0; }
|
|
138
|
+
.dsh-wt-details-section h3 { font-size:14px; font-weight:600; margin:0 0 12px; }
|
|
139
|
+
.dsh-wt-details-files, .dsh-wt-details-tests { padding:0; margin:0; list-style:none; }
|
|
140
|
+
.dsh-wt-details-files li { display:flex; align-items:flex-start; gap:10px; padding:8px 0; }
|
|
141
|
+
.dsh-wt-details-files li > span:nth-child(2) { flex:1; min-width:0; overflow-wrap:anywhere; font-family:ui-monospace, monospace; }
|
|
142
|
+
.dsh-wt-details-tests li { display:flex; gap:10px; padding:10px 0; }
|
|
143
|
+
.dsh-wt-details-tests li + li { border-top:1px solid var(--wt-line); }
|
|
144
|
+
.dsh-wt-details-tests li > div { flex:1; min-width:0; }
|
|
145
|
+
.dsh-wt-details-test-title { display:flex; justify-content:space-between; gap:12px; overflow-wrap:anywhere; }
|
|
146
|
+
.dsh-wt-details-test-title > span:last-child { flex-shrink:0; font-size:12px; }
|
|
147
|
+
.dsh-wt-details-tests p { color:var(--wt-muted); margin:4px 0 0; white-space:pre-wrap; overflow-wrap:anywhere; }
|
|
148
|
+
.dsh-wt-details-modal [data-validation="passed"] { color:var(--wt-green); }
|
|
149
|
+
.dsh-wt-details-modal [data-validation="failed"] { color:var(--wt-red); }
|
|
150
|
+
.dsh-wt-details-modal [data-validation="partial"] { color:var(--wt-amber); }
|
|
151
|
+
.dsh-wt-details-version { border-top:1px solid var(--wt-line); padding-top:16px; color:var(--wt-muted); }
|
|
152
|
+
.dsh-wt-details-version summary { cursor:pointer; }
|
|
153
|
+
.dsh-wt-details-version summary:focus-visible { outline:2px solid #5a8dee; outline-offset:3px; }
|
|
154
|
+
.dsh-wt-details-version .dsh-wt-icon { margin:0 7px; }
|
|
155
|
+
.dsh-wt-details-version dl { display:grid; grid-template-columns:auto minmax(0,1fr); gap:6px 14px; }
|
|
156
|
+
.dsh-wt-details-version dd { margin:0; overflow-wrap:anywhere; font-family:ui-monospace, monospace; }
|
|
157
|
+
@media (max-width:620px) {
|
|
158
|
+
.dsh-wt-review-dock-copy strong { white-space:normal; }
|
|
159
|
+
.dsh-wt-details-body { padding:8px 16px 16px; }
|
|
160
|
+
.dsh-wt-details-test-title { flex-wrap:wrap; }
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
/* The host uses width:100% content columns; include padding in our owned layout. */
|
|
165
|
+
.dsh-wt-details-modal, .dsh-wt-details-modal *, .dsh-wt-details-modal *::before, .dsh-wt-details-modal *::after { box-sizing:border-box; }
|
|
166
|
+
.dsh-wt-details-modal { padding:0; gap:0; min-width:0; }
|
|
167
|
+
.dsh-wt-details-header { display:flex; align-items:center; justify-content:space-between; gap:16px; flex:none; padding:22px 24px 16px; min-width:0; }
|
|
168
|
+
.dsh-wt-details-header h1 { font-size:15px; font-weight:600; margin:0; min-width:0; overflow-wrap:anywhere; }
|
|
169
|
+
.dsh-wt-details-header button { display:inline-flex; align-items:center; justify-content:center; width:32px; height:32px; flex:0 0 32px; border:0; border-radius:6px; background:transparent; color:inherit; cursor:pointer; }
|
|
170
|
+
.dsh-wt-details-header button:hover { background:var(--wt-panel); }
|
|
171
|
+
.dsh-wt-details-header button:focus-visible { outline:2px solid #5a8dee; outline-offset:2px; }
|
|
172
|
+
.dsh-wt-details-body { flex:1 1 auto; width:100%; min-width:0; scrollbar-gutter:stable; }
|
|
173
|
+
.dsh-wt-details-body > *, .dsh-wt-details-test-title > span:first-child { min-width:0; max-width:100%; overflow-wrap:anywhere; }
|
|
174
|
+
.dsh-wt-details-test-title > span:first-child { flex:1 1 auto; }
|
|
175
|
+
.dsh-wt-details-test-title > span:last-child { max-width:45%; white-space:normal; overflow-wrap:anywhere; }
|
|
176
|
+
.dsh-wt-details-version summary { display:flex; align-items:center; gap:6px; list-style:none; }
|
|
177
|
+
.dsh-wt-details-version summary::-webkit-details-marker { display:none; }
|
|
178
|
+
.dsh-wt-details-version[open] summary > .dsh-wt-icon:first-child { transform:rotate(90deg); }
|
|
179
|
+
.dsh-wt-review-actions .dsh-wt-button, .dsh-wt-review-actions .dsh-wt-more-item { display:inline-flex; align-items:center; gap:6px; }
|
|
180
|
+
.dsh-wt-review-actions .dsh-wt-icon { width:16px; height:16px; flex:0 0 16px; }
|
|
181
|
+
.dsh-wt-review-actions .dsh-wt-more-trigger { display:inline-flex; align-items:center; justify-content:center; }
|
|
182
|
+
@media(max-width:620px) { .dsh-wt-details-header { padding:16px; } }
|
|
183
|
+
|
|
184
|
+
/* CircleEllipsis provides its own outline; preserve a full button-sized hit target. */
|
|
185
|
+
.dsh-wt-review-dock .dsh-wt-more-trigger,
|
|
186
|
+
.dsh-wt-more-trigger { border-color:transparent; background:transparent; }
|
|
187
|
+
.dsh-wt-more-trigger:hover { background:var(--wt-panel); }
|
|
188
|
+
.dsh-wt-more-trigger:focus-visible { outline:2px solid #5a8dee; outline-offset:2px; }
|
|
189
|
+
.dsh-wt-more-item .dsh-wt-icon { flex:0 0 16px; }
|
|
190
|
+
.dsh-wt-review-actions .dsh-wt-inline-action { display:inline-flex; align-items:center; gap:6px; }
|
|
113
191
|
`;
|
|
114
192
|
//# sourceMappingURL=review-console.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"review-console.styles.js","sourceRoot":"","sources":["../../../src/client/review-console/review-console.styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"review-console.styles.js","sourceRoot":"","sources":["../../../src/client/review-console/review-console.styles.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8L9C,CAAA"}
|
package/lib/client/styles.js
CHANGED
|
@@ -122,19 +122,22 @@ export const WORKTREE_STYLES = String.raw `
|
|
|
122
122
|
.dsh-wt-retain-actions { display:flex; gap:6px; flex-wrap:wrap; }
|
|
123
123
|
.dsh-wt-visually-hidden { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
|
|
124
124
|
.dsh-wt-pre-session { position:relative; display:inline-flex; align-items:center; min-width:0; }
|
|
125
|
-
|
|
126
|
-
.dsh-wt-pre-session-
|
|
127
|
-
.dsh-wt-pre-session-
|
|
128
|
-
.dsh-wt-pre-session-
|
|
129
|
-
.dsh-wt-pre-session-
|
|
130
|
-
.dsh-wt-pre-session-
|
|
131
|
-
.dsh-wt-pre-session-
|
|
132
|
-
.dsh-wt-pre-session[data-state="preparing"] .dsh-wt-pre-session-state { color:#b46a13; }
|
|
133
|
-
.dsh-wt-pre-session[data-state="error"] .dsh-wt-pre-session-state { color:#bd3b3b; }
|
|
125
|
+
/* Match the Harness PermissionSelect toolbar trigger while retaining switch semantics. */
|
|
126
|
+
.dsh-wt-pre-session-toggle { display:inline-flex; align-items:center; gap:4px; min-width:0; height:28px; padding:0 8px; border:none; border-radius:24px; outline:none; background:transparent; color:var(--dsw-alias-label-secondary, inherit); font:inherit; font-size:13px; line-height:20px; font-weight:500; cursor:pointer; white-space:nowrap; }
|
|
127
|
+
.dsh-wt-pre-session-toggle:hover:not(:disabled) { background:var(--dsw-alias-interactive-bg-hover, color-mix(in srgb, currentColor 7%, transparent)); }
|
|
128
|
+
.dsh-wt-pre-session-toggle:focus-visible { box-shadow:0 0 0 2px var(--dsw-alias-border-l3, currentColor); }
|
|
129
|
+
.dsh-wt-pre-session-toggle:disabled { color:var(--dsw-alias-label-dimmed, inherit); cursor:default; }
|
|
130
|
+
.dsh-wt-pre-session-toggle[aria-checked="true"] { color:var(--dsw-alias-label-primary, inherit); }
|
|
131
|
+
.dsh-wt-pre-session-check { display:inline-flex; flex:0 0 auto; align-items:center; justify-content:center; box-sizing:border-box; width:14px; height:14px; border:1px solid currentColor; border-radius:3px; font-size:11px; line-height:1; }
|
|
134
132
|
.dsh-wt-pre-session-error { position:absolute; left:0; bottom:calc(100% + 7px); z-index:20; width:max-content; max-width:min(360px, 75vw); padding:7px 9px; border:1px solid color-mix(in srgb, #bd3b3b 35%, transparent); border-radius:8px; background:color-mix(in srgb, Canvas 96%, #bd3b3b 4%); color:#bd3b3b; font-size:11px; font-weight:500; line-height:1.4; white-space:normal; box-shadow:0 8px 24px color-mix(in srgb, black 14%, transparent); }
|
|
135
133
|
|
|
136
134
|
.dsh-wt-pre-session-note { margin:0; color:color-mix(in srgb, currentColor 62%, transparent); font-size:12px; line-height:1.5; }
|
|
137
|
-
@media (max-width: 560px) { .dsh-wt-grid { grid-template-columns:1fr; gap:3px; } .dsh-wt-label { margin-top:4px; }
|
|
135
|
+
@media (max-width: 560px) { .dsh-wt-grid { grid-template-columns:1fr; gap:3px; } .dsh-wt-label { margin-top:4px; } }
|
|
138
136
|
${REVIEW_CONSOLE_STYLES}
|
|
137
|
+
|
|
138
|
+
.dsh-wt-pre-session .dsh-wt-button,
|
|
139
|
+
.dsh-wt-create-dialog .dsh-wt-button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:34px; line-height:20px; box-sizing:border-box; }
|
|
140
|
+
.dsh-wt-create-dialog .dsh-wt-button .dsh-wt-icon { width:16px; height:16px; flex:0 0 16px; vertical-align:middle; }
|
|
141
|
+
.dsh-wt-pre-session-check .dsh-wt-icon { width:12px; height:12px; flex-basis:12px; }
|
|
139
142
|
`;
|
|
140
143
|
//# sourceMappingURL=styles.js.map
|
package/lib/client/styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AAEjF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/client/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AAEjF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsIvC,qBAAqB;;;;;;CAMtB,CAAA"}
|