Changed display of working directory and ellipsis to beginning of path (#2414)
This commit is contained in:
@@ -19,10 +19,10 @@ const TOKEN_WARNING_THRESHOLD = 0.8; // warning shows at 80% of the token limit
|
|||||||
const TOOLS_MAX_SUGGESTED = 60; // max number of tools before we show a warning
|
const TOOLS_MAX_SUGGESTED = 60; // max number of tools before we show a warning
|
||||||
|
|
||||||
export default function BottomMenu({
|
export default function BottomMenu({
|
||||||
hasMessages,
|
hasMessages,
|
||||||
setView,
|
setView,
|
||||||
numTokens = 0,
|
numTokens = 0,
|
||||||
}: {
|
}: {
|
||||||
hasMessages: boolean;
|
hasMessages: boolean;
|
||||||
setView: (view: View, viewOptions?: ViewOptions) => void;
|
setView: (view: View, viewOptions?: ViewOptions) => void;
|
||||||
numTokens?: number;
|
numTokens?: number;
|
||||||
@@ -158,27 +158,27 @@ export default function BottomMenu({
|
|||||||
}, [isDirTruncated]);
|
}, [isDirTruncated]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex justify-between items-center text-textSubtle relative bg-bgSubtle border-t border-borderSubtle text-xs pl-4 h-[40px] pb-1 align-middle">
|
<div className="flex justify-between items-center text-textSubtle relative bg-bgSubtle border-t border-borderSubtle text-xs pl-4 h-[40px] pb-1 align-middle">
|
||||||
{/* Directory Chooser - Always visible */}
|
{/* Directory Chooser - Always visible */}
|
||||||
<span
|
<span
|
||||||
className="cursor-pointer flex items-center [&>svg]:size-4"
|
className="cursor-pointer flex items-center [&>svg]:size-4"
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
if (hasMessages) {
|
if (hasMessages) {
|
||||||
window.electron.directoryChooser();
|
window.electron.directoryChooser();
|
||||||
} else {
|
} else {
|
||||||
window.electron.directoryChooser(true);
|
window.electron.directoryChooser(true);
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Document className="mr-1" />
|
<Document className="mr-1" />
|
||||||
<TooltipProvider>
|
<TooltipProvider>
|
||||||
<Tooltip open={isTooltipOpen} onOpenChange={setIsTooltipOpen}>
|
<Tooltip open={isTooltipOpen} onOpenChange={setIsTooltipOpen}>
|
||||||
<TooltipTrigger asChild>
|
<TooltipTrigger asChild>
|
||||||
<span
|
<span
|
||||||
ref={dirRef}
|
ref={dirRef}
|
||||||
className="truncate max-w-[170px] md:max-w-[200px] lg:max-w-[380px] min-w-0 block"
|
className="max-w-[170px] md:max-w-[200px] lg:max-w-[380px] min-w-0 block overflow-hidden text-ellipsis whitespace-nowrap [direction:rtl] text-left"
|
||||||
>
|
>
|
||||||
Working in {window.appConfig.get('GOOSE_WORKING_DIR') as string}
|
{window.appConfig.get('GOOSE_WORKING_DIR') as string}
|
||||||
</span>
|
</span>
|
||||||
</TooltipTrigger>
|
</TooltipTrigger>
|
||||||
{isDirTruncated && (
|
{isDirTruncated && (
|
||||||
@@ -191,85 +191,85 @@ export default function BottomMenu({
|
|||||||
<ChevronUp className="ml-1" />
|
<ChevronUp className="ml-1" />
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
{/* Goose Mode Selector Dropdown */}
|
{/* Goose Mode Selector Dropdown */}
|
||||||
<BottomMenuModeSelection setView={setView} />
|
<BottomMenuModeSelection setView={setView} />
|
||||||
|
|
||||||
{/* Right-side section with ToolCount and Model Selector together */}
|
{/* Right-side section with ToolCount and Model Selector together */}
|
||||||
<div className="flex items-center mr-4 space-x-1">
|
<div className="flex items-center mr-4 space-x-1">
|
||||||
{/* Tool and Token count */}
|
{/* Tool and Token count */}
|
||||||
{<BottomMenuAlertPopover alerts={alerts} />}
|
{<BottomMenuAlertPopover alerts={alerts} />}
|
||||||
{/* Model Selector Dropdown */}
|
{/* Model Selector Dropdown */}
|
||||||
{settingsV2Enabled ? (
|
{settingsV2Enabled ? (
|
||||||
<ModelsBottomBar dropdownRef={dropdownRef} setView={setView} />
|
<ModelsBottomBar dropdownRef={dropdownRef} setView={setView} />
|
||||||
) : (
|
) : (
|
||||||
<div className="relative flex items-center ml-0 mr-4" ref={dropdownRef}>
|
<div className="relative flex items-center ml-0 mr-4" ref={dropdownRef}>
|
||||||
<div
|
<div
|
||||||
className="flex items-center cursor-pointer"
|
className="flex items-center cursor-pointer"
|
||||||
onClick={() => setIsModelMenuOpen(!isModelMenuOpen)}
|
onClick={() => setIsModelMenuOpen(!isModelMenuOpen)}
|
||||||
>
|
>
|
||||||
<span>{(currentModel?.alias ?? currentModel?.name) || 'Select Model'}</span>
|
<span>{(currentModel?.alias ?? currentModel?.name) || 'Select Model'}</span>
|
||||||
{isModelMenuOpen ? (
|
{isModelMenuOpen ? (
|
||||||
<ChevronDown className="w-4 h-4 ml-1" />
|
<ChevronDown className="w-4 h-4 ml-1" />
|
||||||
) : (
|
) : (
|
||||||
<ChevronUp className="w-4 h-4 ml-1" />
|
<ChevronUp className="w-4 h-4 ml-1" />
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Dropdown Menu */}
|
{/* Dropdown Menu */}
|
||||||
{isModelMenuOpen && (
|
{isModelMenuOpen && (
|
||||||
<div className="absolute bottom-[24px] right-0 w-[300px] bg-bgApp rounded-lg border border-borderSubtle">
|
<div className="absolute bottom-[24px] right-0 w-[300px] bg-bgApp rounded-lg border border-borderSubtle">
|
||||||
<div className="">
|
<div className="">
|
||||||
<ModelRadioList
|
<ModelRadioList
|
||||||
className="divide-y divide-borderSubtle"
|
className="divide-y divide-borderSubtle"
|
||||||
renderItem={({ model, isSelected, onSelect }) => (
|
renderItem={({ model, isSelected, onSelect }) => (
|
||||||
<label key={model.alias ?? model.name} className="block cursor-pointer">
|
<label key={model.alias ?? model.name} className="block cursor-pointer">
|
||||||
<div
|
<div
|
||||||
className="flex items-center justify-between p-2 text-textStandard hover:bg-bgSubtle transition-colors"
|
className="flex items-center justify-between p-2 text-textStandard hover:bg-bgSubtle transition-colors"
|
||||||
onClick={onSelect}
|
onClick={onSelect}
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
<p className="text-sm ">{model.alias ?? model.name}</p>
|
<p className="text-sm ">{model.alias ?? model.name}</p>
|
||||||
<p className="text-xs text-textSubtle">
|
<p className="text-xs text-textSubtle">
|
||||||
{model.subtext ?? model.provider}
|
{model.subtext ?? model.provider}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<input
|
<input
|
||||||
type="radio"
|
type="radio"
|
||||||
name="recentModels"
|
name="recentModels"
|
||||||
value={model.name}
|
value={model.name}
|
||||||
checked={isSelected}
|
checked={isSelected}
|
||||||
onChange={onSelect}
|
onChange={onSelect}
|
||||||
className="peer sr-only"
|
className="peer sr-only"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
className="h-4 w-4 rounded-full border border-gray-400 dark:border-gray-500
|
className="h-4 w-4 rounded-full border border-gray-400 dark:border-gray-500
|
||||||
peer-checked:border-[6px] peer-checked:border-black dark:peer-checked:border-white
|
peer-checked:border-[6px] peer-checked:border-black dark:peer-checked:border-white
|
||||||
peer-checked:bg-white dark:peer-checked:bg-black
|
peer-checked:bg-white dark:peer-checked:bg-black
|
||||||
transition-all duration-200 ease-in-out"
|
transition-all duration-200 ease-in-out"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</label>
|
|
||||||
)}
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
className="flex items-center justify-between text-textStandard p-2 cursor-pointer hover:bg-bgStandard
|
|
||||||
border-t border-borderSubtle mt-2"
|
|
||||||
onClick={() => {
|
|
||||||
setIsModelMenuOpen(false);
|
|
||||||
setView('settings');
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<span className="text-sm">Tools and Settings</span>
|
|
||||||
<Sliders className="w-5 h-5 ml-2 rotate-90" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</label>
|
||||||
</div>
|
)}
|
||||||
)}
|
/>
|
||||||
|
<div
|
||||||
|
className="flex items-center justify-between text-textStandard p-2 cursor-pointer hover:bg-bgStandard
|
||||||
|
border-t border-borderSubtle mt-2"
|
||||||
|
onClick={() => {
|
||||||
|
setIsModelMenuOpen(false);
|
||||||
|
setView('settings');
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span className="text-sm">Tools and Settings</span>
|
||||||
|
<Sliders className="w-5 h-5 ml-2 rotate-90" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user