setOverflowAnnotationOpen(true)}
- onMouseLeave={() => setOverflowAnnotationOpen(false)}
- onBlurCapture={(event) => {
- if (!event.currentTarget.contains(event.relatedTarget)) {
- setOverflowAnnotationOpen(false);
- }
- }}
style={{
top: "50%",
transform: `translateY(calc(-50% - ${resolveTimelineMinimapHeightStyle(items.length)} / 2))`,
}}
>
-
) : null}
diff --git a/apps/web/src/components/settings/LastCodeSettings.tsx b/apps/web/src/components/settings/LastCodeSettings.tsx
index cb8e80beb58c..22e54adc03cb 100644
--- a/apps/web/src/components/settings/LastCodeSettings.tsx
+++ b/apps/web/src/components/settings/LastCodeSettings.tsx
@@ -1,6 +1,7 @@
-import type {
+import {
DesktopLastCodeSettingsState,
LastCodeSettingsImportPreview,
+ ThreadId,
} from "@t3tools/contracts";
import {
DEFAULT_LEGACY_SIDEBAR_SCALE,
@@ -21,6 +22,7 @@ import { usePrimaryEnvironmentId } from "../../state/environments";
import { Button } from "../ui/button";
import { Switch } from "../ui/switch";
import { stackedThreadToast, toastManager } from "../ui/toast";
+import { ThreadStatusLabel, ThreadWorktreeIndicator } from "../ThreadStatusIndicators";
import { searchableSetting } from "./settingsSearch";
import { ProviderAccentColorPicker } from "./ProviderAccentColorPicker";
import { deriveLastCodeEnvironmentSettingEntries } from "./LastCodeSettings.logic";
@@ -31,6 +33,19 @@ import {
SettingsSection,
} from "./settingsLayout";
+const STATUS_INDICATOR_PREVIEW = {
+ colorClass: "text-sky-600 dark:text-sky-300/80",
+ dotClass: "bg-sky-500 dark:bg-sky-300/80",
+ label: "Working",
+ pulse: false,
+} as const;
+
+const WORKTREE_INDICATOR_PREVIEW_THREAD = {
+ id: ThreadId.make("settings-worktree-preview"),
+ branch: "feature/example",
+ worktreePath: "/example/worktrees/example",
+};
+
export function LastCodeSettingsPanel() {
const updateState = useDesktopUpdateState();
const clientSettings = usePrimarySettings();
@@ -237,6 +252,15 @@ export function LastCodeSettingsPanel() {