@vibes.diy/base 14.3.114 → 14.3.116

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.
Files changed (51) hide show
  1. package/components/vibe-menu/VibeMenu.js +2 -9
  2. package/components/vibe-menu/VibeMenu.js.map +1 -1
  3. package/components/vibe-menu/cards/CodeCard.d.ts +1 -1
  4. package/components/vibe-menu/cards/CodeCard.js +13 -6
  5. package/components/vibe-menu/cards/CodeCard.js.map +1 -1
  6. package/components/vibe-menu/cards/CodeModeWorkspace.d.ts +2 -1
  7. package/components/vibe-menu/cards/CodeModeWorkspace.js +8 -6
  8. package/components/vibe-menu/cards/CodeModeWorkspace.js.map +1 -1
  9. package/components/vibe-menu/geometry.d.ts +2 -0
  10. package/components/vibe-menu/geometry.js +6 -0
  11. package/components/vibe-menu/geometry.js.map +1 -1
  12. package/components/vibe-menu/index.d.ts +3 -0
  13. package/components/vibe-menu/index.js +3 -0
  14. package/components/vibe-menu/index.js.map +1 -1
  15. package/components/vibe-menu/parts/Chip.d.ts +2 -1
  16. package/components/vibe-menu/parts/Chip.js +26 -2
  17. package/components/vibe-menu/parts/Chip.js.map +1 -1
  18. package/components/vibe-menu/parts/Composer.d.ts +11 -0
  19. package/components/vibe-menu/parts/Composer.js +44 -1
  20. package/components/vibe-menu/parts/Composer.js.map +1 -1
  21. package/components/vibe-menu/parts/LookRestyleSection.d.ts +51 -0
  22. package/components/vibe-menu/parts/LookRestyleSection.js +290 -0
  23. package/components/vibe-menu/parts/LookRestyleSection.js.map +1 -0
  24. package/components/vibe-menu/parts/MomentLine.d.ts +1 -0
  25. package/components/vibe-menu/parts/MomentLine.js +4 -2
  26. package/components/vibe-menu/parts/MomentLine.js.map +1 -1
  27. package/components/vibe-menu/parts/SendCap.d.ts +8 -0
  28. package/components/vibe-menu/parts/SendCap.js +10 -0
  29. package/components/vibe-menu/parts/SendCap.js.map +1 -0
  30. package/components/vibe-menu/parts/StatusChipRow.d.ts +8 -1
  31. package/components/vibe-menu/parts/StatusChipRow.js +20 -5
  32. package/components/vibe-menu/parts/StatusChipRow.js.map +1 -1
  33. package/components/vibe-menu/parts/SurveyStrip.d.ts +3 -1
  34. package/components/vibe-menu/parts/SurveyStrip.js +9 -1
  35. package/components/vibe-menu/parts/SurveyStrip.js.map +1 -1
  36. package/components/vibe-menu/parts/agent-log-frame.d.ts +9 -0
  37. package/components/vibe-menu/parts/agent-log-frame.js +10 -0
  38. package/components/vibe-menu/parts/agent-log-frame.js.map +1 -0
  39. package/components/vibe-menu/parts/use-composer-draft.js +30 -0
  40. package/components/vibe-menu/parts/use-composer-draft.js.map +1 -1
  41. package/components/vibe-menu/shell/shell.styles.js +79 -2
  42. package/components/vibe-menu/shell/shell.styles.js.map +1 -1
  43. package/components/vibe-menu/slices.d.ts +3 -4
  44. package/components/vibe-menu/slices.js.map +1 -1
  45. package/components/vibe-menu/vibe-menu.styles.d.ts +3 -3
  46. package/components/vibe-menu/vibe-menu.styles.js +131 -1
  47. package/components/vibe-menu/vibe-menu.styles.js.map +1 -1
  48. package/hooks/img-gen/use-img-gen.d.ts +1 -0
  49. package/hooks/img-gen/use-img-gen.js +374 -304
  50. package/hooks/img-gen/use-img-gen.js.map +1 -1
  51. package/package.json +5 -5
@@ -24,6 +24,8 @@ export const VIBE_MENU_LIGHT_VARS = `
24
24
  --on-share: var(--menu-ink);
25
25
  --badge: var(--section-account);
26
26
  --on-badge: var(--vibes-cream);
27
+ --cancel-cap: #f3d6d2;
28
+ --on-cancel-cap: #9c2318;
27
29
  --obsidian-fill: rgba(6, 9, 10, 0.94);
28
30
  --obsidian-edge: rgba(255, 255, 255, 0.17);
29
31
  --obsidian-highlight: rgba(255, 255, 255, 0.32);
@@ -99,6 +101,8 @@ export const VIBE_MENU_DARK_VARS = `
99
101
  --line-card: #e0e0e0;
100
102
  --line-hairline: #e0e0e02e;
101
103
  --suggest-border: #e0e0e073;
104
+ --cancel-cap: #4a2420;
105
+ --on-cancel-cap: #f1b5ad;
102
106
  --swatch-selected: 0 0 0 2px #1a1a1a, 0 0 0 4px #e0e0e0;`;
103
107
  export const VIBE_MENU_CSS = `
104
108
  /* ---------- tokens (tokens.json), light, then both dark arms ----------
@@ -599,10 +603,29 @@ export const VIBE_MENU_CSS = `
599
603
  cursor: pointer;
600
604
  }
601
605
  [data-vibe-menu] .vm-suggest:hover,
602
- [data-vibe-menu] .vm-suggest.is-hover {
606
+ [data-vibe-menu] .vm-suggest.is-hover,
607
+ [data-vibe-menu] .vm-suggest[aria-busy="true"] {
603
608
  border-color: var(--line-card);
604
609
  background: color-mix(in srgb, var(--accent) 35%, transparent);
605
610
  }
611
+ /* A pressed chip holds the row while its answer is on the way (a lookup, a
612
+ fork): it stays lit, and the row takes no second press. */
613
+ [data-vibe-menu] .vm-suggest:disabled {
614
+ cursor: default;
615
+ }
616
+ [data-vibe-menu] .vm-suggest:disabled:not([aria-busy="true"]) {
617
+ opacity: 0.5;
618
+ }
619
+ /* The pressed one is disabled too (the row takes no second press), so it
620
+ must outrank the app's global button:disabled dim (theme/global-styles.ts). */
621
+ [data-vibe-menu] .vm-suggest[aria-busy="true"] {
622
+ opacity: 1;
623
+ }
624
+ /* The same hold on the inline links at the end of the chat: the pressed link
625
+ keeps its lit underline, the others read as disabled (dimmed above). */
626
+ [data-vibe-menu] .vm-suggestions.is-inline .vm-suggest[aria-busy="true"] {
627
+ text-decoration-color: currentColor;
628
+ }
606
629
  /* The gold option (#6768): the one capability the agent offered, a chip in the
607
630
  same row and the same order as the others. It wears the lit state the others
608
631
  take on hover, a full-ink outline and a filled star before the label, so it
@@ -703,6 +726,45 @@ export const VIBE_MENU_CSS = `
703
726
  [data-vibe-menu] .vm-composer.is-building:has(textarea:not(:placeholder-shown)) .vm-cap[data-send] {
704
727
  display: flex;
705
728
  }
729
+ /* Rewrite mode (the settings tab's sharing rewrite): no attach button, so the
730
+ field takes the attach's inset; a dim red X cap sits left of the action cap. */
731
+ [data-vibe-menu] .vm-composer.is-rewrite {
732
+ position: relative;
733
+ }
734
+ [data-vibe-menu] .vm-composer.is-rewrite textarea {
735
+ margin-left: var(--space-24);
736
+ }
737
+ [data-vibe-menu] .vm-cap[data-cancel] {
738
+ padding: 0 var(--space-16);
739
+ background: var(--cancel-cap);
740
+ color: var(--on-cancel-cap);
741
+ }
742
+ [data-vibe-menu] .vm-cap[data-cancel]:hover {
743
+ background: color-mix(in oklch, var(--cancel-cap), var(--on-cancel-cap) 12%);
744
+ }
745
+ [data-vibe-menu] .vm-rewrite-shimmer {
746
+ position: absolute;
747
+ left: var(--space-24);
748
+ top: 50%;
749
+ width: 28%;
750
+ height: var(--space-12);
751
+ margin-top: calc(var(--space-12) / -2);
752
+ border-radius: var(--radius-full);
753
+ background: var(--placeholder);
754
+ opacity: 0.3;
755
+ pointer-events: none;
756
+ animation: vm-rewrite-shimmer 1.4s ease-in-out infinite;
757
+ }
758
+ @keyframes vm-rewrite-shimmer {
759
+ 50% {
760
+ opacity: 0.12;
761
+ }
762
+ }
763
+ @media (prefers-reduced-motion: reduce) {
764
+ [data-vibe-menu] .vm-rewrite-shimmer {
765
+ animation: none;
766
+ }
767
+ }
706
768
  [data-vibe-menu] .vm-queue-note {
707
769
  display: none;
708
770
  margin: -10px 0 12px 18px;
@@ -1010,6 +1072,74 @@ export const VIBE_MENU_CSS = `
1010
1072
  [data-vibe-menu] .vm-log-clip[data-open="true"]::-webkit-scrollbar {
1011
1073
  display: none;
1012
1074
  }
1075
+ /* The fold over the full chat (slots.agentLog): the history caps and scrolls
1076
+ itself (AgentLogHistory's compact box), so the clip drops the flat log's cap. */
1077
+ [data-vibe-menu] .vm-log-clip[data-open="true"][data-history] {
1078
+ max-height: none;
1079
+ overflow: hidden;
1080
+ }
1081
+ [data-vibe-menu] .vm-log-history {
1082
+ margin-top: var(--space-8);
1083
+ border-top: var(--stroke-hairline) solid var(--line-hairline);
1084
+ border-bottom: var(--stroke-hairline) solid var(--line-hairline);
1085
+ }
1086
+ /* One scroller: the tab-row card with the full chat open. The history's own
1087
+ cap (AgentLogHistory's compact box) knows nothing of what else the card
1088
+ holds, and the first build's request headline can take a third of it: the
1089
+ card then overflowed and scrolled too, the composer slid under the row, and
1090
+ the chat's end was out of reach. Here the card is a column whose fold gives
1091
+ up exactly what the card lacks, so the history scrolls and the card never
1092
+ does. Everything else in the card keeps its own height. */
1093
+ [data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open="true"][data-history]) {
1094
+ display: flex;
1095
+ flex-direction: column;
1096
+ }
1097
+ [data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open="true"][data-history])::before {
1098
+ flex: none;
1099
+ }
1100
+ [data-vibe-menu] .vm-card:has(.vm-ctab .vm-log-clip[data-open="true"][data-history]) .vm-card-body,
1101
+ [data-vibe-menu] .vm-ctab:has(.vm-log-clip[data-open="true"][data-history]),
1102
+ [data-vibe-menu] .vm-ctab .vm-moments:has(.vm-log-clip[data-open="true"][data-history]),
1103
+ [data-vibe-menu] .vm-ctab .vm-live:has(.vm-log-clip[data-open="true"][data-history]),
1104
+ [data-vibe-menu] .vm-ctab .vm-log-clip[data-open="true"][data-history],
1105
+ [data-vibe-menu] .vm-ctab .vm-log-clip[data-open="true"][data-history] .vm-log-history {
1106
+ display: flex;
1107
+ flex-direction: column;
1108
+ flex: 0 1 auto;
1109
+ min-height: 0;
1110
+ }
1111
+ [data-vibe-menu] .vm-ctab .vm-log-clip[data-open="true"][data-history] .vm-log-history > * {
1112
+ min-height: 0;
1113
+ }
1114
+ [data-vibe-menu] .vm-ctab:has(.vm-log-clip[data-open="true"][data-history]) > :not(.vm-moments),
1115
+ [data-vibe-menu] .vm-ctab .vm-live:has(.vm-log-clip[data-open="true"][data-history]) > :not(.vm-log-clip) {
1116
+ flex-shrink: 0;
1117
+ }
1118
+ [data-vibe-menu] .vm-agent-history-tail {
1119
+ padding: var(--space-10) 4px var(--space-14) var(--space-24);
1120
+ }
1121
+ /* Suggestions at the end of the chat: wrapped inline links, not chips. */
1122
+ [data-vibe-menu] .vm-suggestions.is-inline {
1123
+ gap: var(--space-6) var(--space-14);
1124
+ margin-bottom: 0;
1125
+ }
1126
+ [data-vibe-menu] .vm-suggestions.is-inline .vm-suggest {
1127
+ min-height: 0;
1128
+ padding: 0;
1129
+ border: none;
1130
+ border-radius: 0;
1131
+ background: none;
1132
+ text-decoration: underline;
1133
+ text-decoration-color: var(--suggest-border);
1134
+ text-decoration-thickness: 1px;
1135
+ text-underline-offset: 3px;
1136
+ }
1137
+ [data-vibe-menu] .vm-suggestions.is-inline .vm-suggest:hover,
1138
+ [data-vibe-menu] .vm-suggestions.is-inline .vm-suggest.is-hover,
1139
+ [data-vibe-menu] .vm-suggestions.is-inline .vm-suggest.is-gold {
1140
+ background: none;
1141
+ text-decoration-color: currentColor;
1142
+ }
1013
1143
  [data-vibe-menu] .vm-log {
1014
1144
  max-height: var(--size-log-max);
1015
1145
  overflow-y: auto;
@@ -1 +1 @@
1
- {"version":3,"file":"vibe-menu.styles.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/vibe-menu.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiC/B,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA2FJ,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;2DAQwB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;6BAKA,oBAAoB;;;;+BAIlB,mBAAmB;;;;mCAIf,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6yCrD,CAAC;AAGF,MAAM,UAAU,cAAc;IAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC"}
1
+ {"version":3,"file":"vibe-menu.styles.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/vibe-menu.styles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAiC/B,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA6FJ,CAAC;AAEjC,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;2DAUwB,CAAC;AAE5D,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;6BAKA,oBAAoB;;;;+BAIlB,mBAAmB;;;;mCAIf,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA26CrD,CAAC;AAGF,MAAM,UAAU,cAAc;IAC5B,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,uBAAuB,EAAE,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC"}
@@ -6,6 +6,7 @@ import { Result } from "@adviser/cement";
6
6
  import { type LocalFileUrl } from "./local-pictures.js";
7
7
  import type { PictureStore } from "./picture-bytes.js";
8
8
  export declare function __setImgGenProbeDeadlineMsForTests(ms: number | undefined): void;
9
+ export declare function __resetImgGenLeasesForTests(): void;
9
10
  export declare function __setImgGenCommitReprobeDelaysMsForTests(ms: readonly number[] | undefined): void;
10
11
  interface InjectedDeps {
11
12
  temporaryDraft?: boolean;