fix: improve Windows UX and stabilize chat/session behavior across runtimes (#693)
* fix: preserve unsent prompt when adding editor context in VS Code * fix: append Add to chat selections as markdown blocks with stable spacing Convert selected assistant content to markdown before appending Wrap each Add to chat selection in an `md` fenced block Preserve multiline composer formatting across repeated appends * fix: normalize persisted Windows paths to prevent identity mismatches * fix: hide Windows subprocess console popups across server tasks Hide OpenCode startup and shell command child windows in the web server Apply windowsHide to cloudflared and skills-catalog git subprocesses Cover remaining git service exec paths that could surface console windows * fix: restore chat auto re-pin when reaching bottom Re-pin now triggers when scrolling back into the bottom zone, not only via the button. Upward user scroll intent still unpins immediately and is not overridden by re-pin. Unified bottom/re-pin threshold logic to reduce sensitivity mismatches. * fix: restore chat scroll release on mobile during streaming Restores pinned-scroll release on touch scroll up so mobile users can leave auto-follow while streaming. Improves re-pin behavior near bottom to avoid sticky or inconsistent pin states. Includes related chat UI and dependency updates in the same change set. * fix: hide daemon startup probe consoles on Windows * fix: prevent pinned scroll tug-of-war during streaming * fix: prefer git.exe to avoid Windows diff popup flashes * fix: prefer git.exe discovery in Windows git flows * fix: avoid where probes in Windows git resolution * fix: avoid update-check subprocess flashes on Windows * fix: normalize read file path labels * feat: add OpenChamber defaults and improve theme ports Add new OpenChamber light and dark themes Regenerate imported themes with stronger surface mapping Set OpenChamber themes as the default top options * fix: stabilize chat pin and unpin behavior during streaming Restores reliable unpin on upward wheel and touch gestures while auto-follow is active. Prevents immediate re-pin while the user is actively scrolling upward near the bottom. Keeps smooth follow-to-bottom behavior while reducing scroll tug-of-war. * fix: suppress Windows command popups in VSCode runtime processes Hide spawned git and server process windows in VS Code runtime Extend hidden-window handling to server port cleanup and reveal commands Keep behavior unchanged on non-Windows platforms
This commit is contained in:
committed by
GitHub
parent
a07c068b66
commit
3123de5f43
@@ -206,7 +206,7 @@ const normalizePathValue = (value: string): string => {
|
||||
if (!trimmed) {
|
||||
return '';
|
||||
}
|
||||
return trimmed.replace(/\\/g, '/');
|
||||
return trimmed.replace(/\\/g, '/').replace(/\/{2,}/g, '/');
|
||||
};
|
||||
|
||||
const trimTrailingSlashes = (value: string): string => {
|
||||
@@ -240,6 +240,45 @@ const getRelativePathFromDirectory = (filePath: string, currentDirectory: string
|
||||
return normalizedPath;
|
||||
};
|
||||
|
||||
const renderReadFilePath = (displayPath: string) => {
|
||||
const lastSlash = displayPath.lastIndexOf('/');
|
||||
|
||||
if (lastSlash === -1) {
|
||||
return (
|
||||
<span
|
||||
className="min-w-0 flex-1 truncate whitespace-nowrap typography-meta leading-5"
|
||||
style={{ color: 'var(--tools-title)' }}
|
||||
title={displayPath}
|
||||
>
|
||||
{displayPath}
|
||||
</span>
|
||||
);
|
||||
}
|
||||
|
||||
const dir = displayPath.slice(0, lastSlash);
|
||||
const name = displayPath.slice(lastSlash + 1);
|
||||
const hasAbsoluteRoot = dir.startsWith('/');
|
||||
const displayDir = hasAbsoluteRoot ? dir.slice(1) : dir;
|
||||
|
||||
return (
|
||||
<span className="min-w-0 inline-flex max-w-full flex-1 items-baseline overflow-hidden typography-meta leading-5" title={displayPath}>
|
||||
{hasAbsoluteRoot ? <span className="flex-shrink-0" style={{ color: 'var(--tools-description)' }}>/</span> : null}
|
||||
<span
|
||||
className="min-w-0 shrink truncate whitespace-nowrap"
|
||||
style={{
|
||||
color: 'var(--tools-description)',
|
||||
direction: 'rtl',
|
||||
textAlign: 'left',
|
||||
}}
|
||||
>
|
||||
{displayDir}
|
||||
</span>
|
||||
<span className="flex-shrink-0" style={{ color: 'var(--tools-description)' }}>/</span>
|
||||
<span className="flex-shrink-0" style={{ color: 'var(--tools-title)' }}>{name}</span>
|
||||
</span>
|
||||
);
|
||||
};
|
||||
|
||||
const resolveAbsolutePath = (currentDirectory: string, filePath: string): string => {
|
||||
const normalizedPath = normalizePathValue(filePath);
|
||||
if (!normalizedPath) {
|
||||
@@ -502,17 +541,7 @@ export const StaticToolRow: React.FC<{
|
||||
title={entry.offset ? `${entry.displayPath}:${entry.offset}` : entry.displayPath}
|
||||
>
|
||||
{showToolFileIcons ? <FileTypeIcon filePath={entry.path} className="h-3.5 w-3.5" /> : null}
|
||||
<span
|
||||
className="min-w-0 flex-1 truncate whitespace-nowrap typography-meta leading-5"
|
||||
style={{
|
||||
color: 'var(--tools-description)',
|
||||
direction: 'rtl',
|
||||
textAlign: 'left',
|
||||
}}
|
||||
title={entry.displayPath}
|
||||
>
|
||||
{entry.displayPath}
|
||||
</span>
|
||||
{renderReadFilePath(entry.displayPath)}
|
||||
</button>
|
||||
))
|
||||
: null}
|
||||
@@ -520,7 +549,7 @@ export const StaticToolRow: React.FC<{
|
||||
? descriptions.map((desc, index) => (
|
||||
<span key={`${desc}-${index}`} className="inline-flex min-w-0 flex-1">
|
||||
<Text
|
||||
variant={animateTailText ? 'generate-effect' : undefined}
|
||||
variant={animateTailText ? 'generate-effect' : 'static'}
|
||||
className="min-w-0 flex-1 truncate whitespace-nowrap typography-meta leading-5"
|
||||
style={{ color: 'var(--tools-description)' }}
|
||||
title={desc}
|
||||
@@ -550,7 +579,7 @@ export const StaticToolRow: React.FC<{
|
||||
: null}
|
||||
{!isReadGroup && !isSearchGroup && !isFetchGroup && descriptions.length > 0 ? (
|
||||
<Text
|
||||
variant={animateTailText ? 'generate-effect' : undefined}
|
||||
variant={animateTailText ? 'generate-effect' : 'static'}
|
||||
className="min-w-0 flex-1 truncate whitespace-nowrap typography-meta leading-5"
|
||||
style={{ color: 'var(--tools-description)' }}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user