@oxy.so/bloom 4.25.0 → 4.25.1
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/lib/commonjs/ai-chat/AiChatCodePanel.js +2 -2
- package/lib/commonjs/ai-chat/AiChatCodePanel.js.map +1 -1
- package/lib/commonjs/ai-chat/AiChatShell.js +3 -3
- package/lib/commonjs/ai-chat/AiChatShell.js.map +1 -1
- package/lib/commonjs/composer-panel/ComposerPanelStatusTab.js +2 -2
- package/lib/commonjs/composer-panel/ComposerPanelStatusTab.js.map +1 -1
- package/lib/commonjs/composer-panel/ComposerPillBase.js +3 -1
- package/lib/commonjs/composer-panel/ComposerPillBase.js.map +1 -1
- package/lib/commonjs/composer-panel/ComposerStatusBarBase.js +3 -3
- package/lib/commonjs/composer-panel/ComposerStatusBarBase.js.map +1 -1
- package/lib/commonjs/composer-panel/ModelPickerBase.js +3 -2
- package/lib/commonjs/composer-panel/ModelPickerBase.js.map +1 -1
- package/lib/commonjs/composer-panel/PermissionMenu.js +19 -3
- package/lib/commonjs/composer-panel/PermissionMenu.js.map +1 -1
- package/lib/module/ai-chat/AiChatCodePanel.js +2 -2
- package/lib/module/ai-chat/AiChatCodePanel.js.map +1 -1
- package/lib/module/ai-chat/AiChatShell.js +3 -3
- package/lib/module/ai-chat/AiChatShell.js.map +1 -1
- package/lib/module/composer-panel/ComposerPanelStatusTab.js +2 -2
- package/lib/module/composer-panel/ComposerPanelStatusTab.js.map +1 -1
- package/lib/module/composer-panel/ComposerPillBase.js +3 -1
- package/lib/module/composer-panel/ComposerPillBase.js.map +1 -1
- package/lib/module/composer-panel/ComposerStatusBarBase.js +3 -3
- package/lib/module/composer-panel/ComposerStatusBarBase.js.map +1 -1
- package/lib/module/composer-panel/ModelPickerBase.js +3 -2
- package/lib/module/composer-panel/ModelPickerBase.js.map +1 -1
- package/lib/module/composer-panel/PermissionMenu.js +19 -3
- package/lib/module/composer-panel/PermissionMenu.js.map +1 -1
- package/lib/typescript/commonjs/ai-chat/AiChatCodePanel.d.ts +1 -1
- package/lib/typescript/commonjs/ai-chat/AiChatShell.d.ts +1 -1
- package/lib/typescript/commonjs/composer-panel/ComposerPanelStatusTab.d.ts +1 -1
- package/lib/typescript/commonjs/composer-panel/ComposerPillBase.d.ts.map +1 -1
- package/lib/typescript/commonjs/composer-panel/ComposerStatusBarBase.d.ts +2 -2
- package/lib/typescript/commonjs/composer-panel/ModelPickerBase.d.ts +1 -1
- package/lib/typescript/commonjs/composer-panel/ModelPickerBase.d.ts.map +1 -1
- package/lib/typescript/commonjs/composer-panel/PermissionMenu.d.ts +3 -1
- package/lib/typescript/commonjs/composer-panel/PermissionMenu.d.ts.map +1 -1
- package/lib/typescript/module/ai-chat/AiChatCodePanel.d.ts +1 -1
- package/lib/typescript/module/ai-chat/AiChatShell.d.ts +1 -1
- package/lib/typescript/module/composer-panel/ComposerPanelStatusTab.d.ts +1 -1
- package/lib/typescript/module/composer-panel/ComposerPillBase.d.ts.map +1 -1
- package/lib/typescript/module/composer-panel/ComposerStatusBarBase.d.ts +2 -2
- package/lib/typescript/module/composer-panel/ModelPickerBase.d.ts +1 -1
- package/lib/typescript/module/composer-panel/ModelPickerBase.d.ts.map +1 -1
- package/lib/typescript/module/composer-panel/PermissionMenu.d.ts +3 -1
- package/lib/typescript/module/composer-panel/PermissionMenu.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/ai-chat/AiChatCodePanel.tsx +2 -2
- package/src/ai-chat/AiChatShell.tsx +3 -3
- package/src/composer-panel/ComposerPanelStatusTab.tsx +2 -2
- package/src/composer-panel/ComposerPillBase.tsx +3 -1
- package/src/composer-panel/ComposerStatusBarBase.tsx +3 -3
- package/src/composer-panel/ModelPickerBase.tsx +3 -2
- package/src/composer-panel/PermissionMenu.tsx +17 -4
|
@@ -8,7 +8,7 @@ export declare function ContextRing({ pct, palette }: {
|
|
|
8
8
|
}): import("react/jsx-runtime").JSX.Element;
|
|
9
9
|
/**
|
|
10
10
|
* The status tab: the grey tab hanging off the Composer Panel's
|
|
11
|
-
* top edge — 34 tall, inset 28 each side, radius 16 on the top corners only,
|
|
11
|
+
* top edge — at least 34 tall, inset 28 each side, radius 16 on the top corners only,
|
|
12
12
|
* px 8 / py 4. Branch (mirrored merge glyph) and project folder on the left, 12
|
|
13
13
|
* apart; the context meter on the right (py 4, pl 6 / pr 8, gap 4).
|
|
14
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComposerPillBase.d.ts","sourceRoot":"","sources":["../../../../src/composer-panel/ComposerPillBase.tsx"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAsB,iBAAiB,EAAoB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ComposerPillBase.d.ts","sourceRoot":"","sources":["../../../../src/composer-panel/ComposerPillBase.tsx"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAsB,iBAAiB,EAAoB,MAAM,SAAS,CAAC;AAoVvF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,YAAiB,EACjB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,IAAY,EACZ,QAAgB,EAChB,WAA+B,EAC/B,kBAA6B,EAC7B,OAAiC,EACjC,eAAe,EACf,MAAM,EACN,KAAK,EACL,YAAY,EACZ,aAAa,EACb,MAAM,EACN,aAA8B,EAC9B,cAAc,EACd,YAAyC,EACzC,SAAS,EACT,gBAAwB,EACxB,iBAAiB,EACjB,OAAc,EACd,KAAa,EACb,QAAQ,EACR,MAAM,EAAE,cAAc,EACtB,KAAK,EACL,QAAY,EACZ,WAAW,EACX,UAAU,EAAE,cAAc,EAC1B,MAAM,GACP,EAAE,iBAAiB,2CAwRnB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ComposerStatusBarProps } from './types';
|
|
2
2
|
/**
|
|
3
|
-
* The line under the AI chat's pill composer (the reference's `StatusBar`):
|
|
4
|
-
* tall, space-between.
|
|
3
|
+
* The line under the AI chat's pill composer (the reference's `StatusBar`): at
|
|
4
|
+
* least 26 tall (it grows with the system font), space-between.
|
|
5
5
|
*
|
|
6
6
|
* left gap 12: the branch (mirrored merge glyph) and the project folder —
|
|
7
7
|
* its caret turns over while the "Local Folders" panel is open
|
|
@@ -10,7 +10,7 @@ import type { ModelPickerProps } from './types';
|
|
|
10
10
|
* mark in view (instantly on open, smoothly after)
|
|
11
11
|
* column top 8 / right 8 / left 52: a 20px header ("Models" + a 50%-opacity
|
|
12
12
|
* "Quick Search" hint, or the search field), then the list 4 below
|
|
13
|
-
* rows 36 tall, radius 10, px 8: 16px mark, 6, name (+ provider while
|
|
13
|
+
* rows min 36 tall, radius 10, px 8: 16px mark, 6, name (+ provider while
|
|
14
14
|
* searching), the effort chip on the selected row, 12, 14px radio;
|
|
15
15
|
* 4 apart, pb 4, soft top edge once scrolled
|
|
16
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelPickerBase.d.ts","sourceRoot":"","sources":["../../../../src/composer-panel/ModelPickerBase.tsx"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAuC,gBAAgB,EAAuB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"ModelPickerBase.d.ts","sourceRoot":"","sources":["../../../../src/composer-panel/ModelPickerBase.tsx"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAuC,gBAAgB,EAAuB,MAAM,SAAS,CAAC;AA0X1G;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,KAAK,EACL,YAAY,EACZ,aAAa,EACb,MAAM,EACN,aAA8B,EAC9B,cAAc,EACd,YAAyC,EACzC,MAAM,EAAE,cAAc,EACtB,KAAK,EACL,MAAM,GACP,EAAE,gBAAgB,2CAiUlB"}
|
|
@@ -15,7 +15,9 @@ interface PermissionMenuProps {
|
|
|
15
15
|
* press or while its menu is open, and a 323px panel of radio rows that opens
|
|
16
16
|
* upward.
|
|
17
17
|
*
|
|
18
|
-
* trigger h 30
|
|
18
|
+
* trigger min-h 30 (grows with the system font), max-w 160 then the
|
|
19
|
+
* label ellipsizes, pl 8 / pr 10, gap 4, icon 16, body-medium
|
|
20
|
+
* secondary
|
|
19
21
|
* panel w 323, radius 20, border, p 6, shadow-dropdown
|
|
20
22
|
* body pt 4, header→rows 6; header px 8 gap 10, body-medium tertiary
|
|
21
23
|
* row p 8, radius 14, gap 8, icon 20, label body-medium secondary,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionMenu.d.ts","sourceRoot":"","sources":["../../../../src/composer-panel/PermissionMenu.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"PermissionMenu.d.ts","sourceRoot":"","sources":["../../../../src/composer-panel/PermissionMenu.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAOlF,UAAU,mBAAmB;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,aAAa,CAAC,6BAA6B,CAAC,CAAC;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,WAAW,EACX,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,MAAM,EACN,MAAM,GACP,EAAE,mBAAmB,kDAgHrB"}
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@ import type { AiChatCodePanelProps, AiChatPanelAction, AiChatPanelTab } from './
|
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* The header row both right-hand panels share: the `PillTabList` (blue
|
|
20
|
-
* pills, 20px glyphs) on the left and the panel actions on the right, 30 tall.
|
|
20
|
+
* pills, 20px glyphs) on the left and the panel actions on the right, at least 30 tall.
|
|
21
21
|
*/
|
|
22
22
|
export function PanelHeader({
|
|
23
23
|
tabs,
|
|
@@ -33,7 +33,7 @@ export function PanelHeader({
|
|
|
33
33
|
children: React.ReactNode;
|
|
34
34
|
}) {
|
|
35
35
|
return (
|
|
36
|
-
<View style={{ width: '100%',
|
|
36
|
+
<View style={{ width: '100%', minHeight: 30, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' }}>
|
|
37
37
|
<View accessibilityLabel={label} style={{ flexShrink: 1, minWidth: 0 }}>
|
|
38
38
|
<Tabs variant="pill" value={value} onValueChange={onValueChange}>
|
|
39
39
|
{tabs.map((tab) => (
|
|
@@ -236,7 +236,7 @@ export function AiChatResizeHandle({
|
|
|
236
236
|
// ---------------------------------------------------------------------------
|
|
237
237
|
|
|
238
238
|
/**
|
|
239
|
-
* The in-container header below `xl`: 48 tall, px 12 / pt 11. The menu
|
|
239
|
+
* The in-container header below `xl`: at least 48 tall, px 12 / pt 11. The menu
|
|
240
240
|
* button (below `lg`, where the sidebar is a drawer) and the chat's name in
|
|
241
241
|
* headline-medium on the left; the button opening the panel drawer on the right.
|
|
242
242
|
* Both are 36px secondary icon buttons. Renders nothing outside an
|
|
@@ -251,7 +251,7 @@ export function AiChatMobileHeader({ title, style, testID }: AiChatMobileHeaderP
|
|
|
251
251
|
testID={testID}
|
|
252
252
|
style={[
|
|
253
253
|
{
|
|
254
|
-
|
|
254
|
+
minHeight: 48,
|
|
255
255
|
flexShrink: 0,
|
|
256
256
|
flexDirection: 'row',
|
|
257
257
|
alignItems: 'center',
|
|
@@ -738,7 +738,7 @@ export function AiChatShell({
|
|
|
738
738
|
]}>
|
|
739
739
|
<View
|
|
740
740
|
style={{
|
|
741
|
-
|
|
741
|
+
minHeight: 40,
|
|
742
742
|
flexShrink: 0,
|
|
743
743
|
flexDirection: 'row',
|
|
744
744
|
alignItems: 'center',
|
|
@@ -44,7 +44,7 @@ function StatusItem({ icon, label, palette }: { icon: React.ReactNode; label: st
|
|
|
44
44
|
|
|
45
45
|
/**
|
|
46
46
|
* The status tab: the grey tab hanging off the Composer Panel's
|
|
47
|
-
* top edge — 34 tall, inset 28 each side, radius 16 on the top corners only,
|
|
47
|
+
* top edge — at least 34 tall, inset 28 each side, radius 16 on the top corners only,
|
|
48
48
|
* px 8 / py 4. Branch (mirrored merge glyph) and project folder on the left, 12
|
|
49
49
|
* apart; the context meter on the right (py 4, pl 6 / pr 8, gap 4).
|
|
50
50
|
*/
|
|
@@ -58,7 +58,7 @@ function ComposerPanelStatusTabComponent({ branch, project, context, style, test
|
|
|
58
58
|
{
|
|
59
59
|
marginLeft: TAB_INSET,
|
|
60
60
|
marginRight: TAB_INSET,
|
|
61
|
-
|
|
61
|
+
minHeight: TAB_HEIGHT,
|
|
62
62
|
flexDirection: 'row',
|
|
63
63
|
alignItems: 'center',
|
|
64
64
|
justifyContent: 'space-between',
|
|
@@ -251,7 +251,9 @@ function ModelMenu({
|
|
|
251
251
|
const modelName = models.find((entry) => entry.id === modelId)?.name ?? modelId;
|
|
252
252
|
const hasEffort = levels.length > 0;
|
|
253
253
|
const triggerStyle: WebCssStyle = {
|
|
254
|
-
|
|
254
|
+
// At least 32, never exactly: a fixed height clips the name at the largest
|
|
255
|
+
// system font.
|
|
256
|
+
minHeight: 32,
|
|
255
257
|
flexShrink: 0,
|
|
256
258
|
flexDirection: 'row',
|
|
257
259
|
alignItems: 'center',
|
|
@@ -142,8 +142,8 @@ function FolderRow({
|
|
|
142
142
|
}
|
|
143
143
|
|
|
144
144
|
/**
|
|
145
|
-
* The line under the AI chat's pill composer (the reference's `StatusBar`):
|
|
146
|
-
* tall, space-between.
|
|
145
|
+
* The line under the AI chat's pill composer (the reference's `StatusBar`): at
|
|
146
|
+
* least 26 tall (it grows with the system font), space-between.
|
|
147
147
|
*
|
|
148
148
|
* left gap 12: the branch (mirrored merge glyph) and the project folder —
|
|
149
149
|
* its caret turns over while the "Local Folders" panel is open
|
|
@@ -188,7 +188,7 @@ export function ComposerStatusBarBase({
|
|
|
188
188
|
return (
|
|
189
189
|
<View
|
|
190
190
|
testID={testID}
|
|
191
|
-
style={[{ width: '100%',
|
|
191
|
+
style={[{ width: '100%', minHeight: 26, flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between' }, style]}>
|
|
192
192
|
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 12 }}>
|
|
193
193
|
{branch !== undefined ? (
|
|
194
194
|
<StatusItem
|
|
@@ -369,7 +369,8 @@ function ModelRow({
|
|
|
369
369
|
<View
|
|
370
370
|
style={{
|
|
371
371
|
position: 'relative',
|
|
372
|
-
height:
|
|
372
|
+
// A floor, not a height: the name grows with the system font.
|
|
373
|
+
minHeight: ROW_HEIGHT,
|
|
373
374
|
width: '100%',
|
|
374
375
|
flexShrink: 0,
|
|
375
376
|
flexDirection: 'row',
|
|
@@ -424,7 +425,7 @@ function ModelRow({
|
|
|
424
425
|
* mark in view (instantly on open, smoothly after)
|
|
425
426
|
* column top 8 / right 8 / left 52: a 20px header ("Models" + a 50%-opacity
|
|
426
427
|
* "Quick Search" hint, or the search field), then the list 4 below
|
|
427
|
-
* rows 36 tall, radius 10, px 8: 16px mark, 6, name (+ provider while
|
|
428
|
+
* rows min 36 tall, radius 10, px 8: 16px mark, 6, name (+ provider while
|
|
428
429
|
* searching), the effort chip on the selected row, 12, 14px radio;
|
|
429
430
|
* 4 apart, pb 4, soft top edge once scrolled
|
|
430
431
|
*
|
|
@@ -10,6 +10,8 @@ import type { ComposerPanelLabels, ComposerPanelPermissionOption } from './types
|
|
|
10
10
|
import { dataHook } from './web-hooks';
|
|
11
11
|
|
|
12
12
|
const FLIP: ViewStyle = { transform: [{ scaleY: -1 }] };
|
|
13
|
+
/** The permission chip's widest: past this a mode's name truncates. */
|
|
14
|
+
const PERMISSION_TRIGGER_MAX_WIDTH = 160;
|
|
13
15
|
|
|
14
16
|
interface PermissionMenuProps {
|
|
15
17
|
palette: ComposerPalette;
|
|
@@ -27,7 +29,9 @@ interface PermissionMenuProps {
|
|
|
27
29
|
* press or while its menu is open, and a 323px panel of radio rows that opens
|
|
28
30
|
* upward.
|
|
29
31
|
*
|
|
30
|
-
* trigger h 30
|
|
32
|
+
* trigger min-h 30 (grows with the system font), max-w 160 then the
|
|
33
|
+
* label ellipsizes, pl 8 / pr 10, gap 4, icon 16, body-medium
|
|
34
|
+
* secondary
|
|
31
35
|
* panel w 323, radius 20, border, p 6, shadow-dropdown
|
|
32
36
|
* body pt 4, header→rows 6; header px 8 gap 10, body-medium tertiary
|
|
33
37
|
* row p 8, radius 14, gap 8, icon 20, label body-medium secondary,
|
|
@@ -82,7 +86,12 @@ export function PermissionMenu({
|
|
|
82
86
|
onHoverOut={() => setHovered(false)}
|
|
83
87
|
style={({ pressed }) => {
|
|
84
88
|
const trigger: WebCssStyle = {
|
|
85
|
-
|
|
89
|
+
// At least 30, never exactly: at the largest system font the label
|
|
90
|
+
// is taller than 30 and a fixed height clipped it top and bottom.
|
|
91
|
+
// A long mode name truncates at a width that still reads as a chip.
|
|
92
|
+
minHeight: 30,
|
|
93
|
+
minWidth: 0,
|
|
94
|
+
maxWidth: PERMISSION_TRIGGER_MAX_WIDTH,
|
|
86
95
|
flexShrink: 0,
|
|
87
96
|
flexDirection: 'row',
|
|
88
97
|
alignItems: 'center',
|
|
@@ -98,10 +107,14 @@ export function PermissionMenu({
|
|
|
98
107
|
};
|
|
99
108
|
return trigger;
|
|
100
109
|
}}>
|
|
101
|
-
<View style={current.flip ? FLIP :
|
|
110
|
+
<View style={current.flip ? [FLIP, { flexShrink: 0 }] : { flexShrink: 0 }}>
|
|
102
111
|
<CurrentIcon width={16} height={16} fill={palette.iconSecondary} />
|
|
103
112
|
</View>
|
|
104
|
-
<Text
|
|
113
|
+
<Text
|
|
114
|
+
variant="body-medium"
|
|
115
|
+
numberOfLines={1}
|
|
116
|
+
ellipsizeMode="tail"
|
|
117
|
+
style={{ flexShrink: 1, minWidth: 0, color: palette.textSecondary }}>
|
|
105
118
|
{current.label}
|
|
106
119
|
</Text>
|
|
107
120
|
</Pressable>
|