Compare commits

..

1 Commits

Author SHA1 Message Date
Shantur Rathore
ab3f228d85 fix(ui): handle Windows paths in tab titles 2026-02-12 14:57:40 +00:00
2 changed files with 8 additions and 30 deletions

View File

@@ -11,20 +11,11 @@ interface InstanceTabProps {
onClose: () => void onClose: () => void
} }
function formatFolderName(path: string, instances: Instance[], currentInstance: Instance): string { function getPathBasename(path: string): string {
const name = path.split("/").pop() || path // Instance folders can be POSIX-like (/Users/...) on macOS/Linux or Windows-like (C:\Users\...).
// Normalize by trimming trailing separators and then splitting on both '/' and '\\'.
const duplicates = instances.filter((i) => { const normalized = path.replace(/[\\/]+$/, "")
const iName = i.folder.split("/").pop() || i.folder return normalized.split(/[\\/]/).pop() || path
return iName === name
})
if (duplicates.length > 1) {
const index = duplicates.findIndex((i) => i.id === currentInstance.id)
return `~/${name} (${index + 1})`
}
return `~/${name}`
} }
const InstanceTab: Component<InstanceTabProps> = (props) => { const InstanceTab: Component<InstanceTabProps> = (props) => {
@@ -58,7 +49,7 @@ const InstanceTab: Component<InstanceTabProps> = (props) => {
> >
<FolderOpen class="w-4 h-4 flex-shrink-0" /> <FolderOpen class="w-4 h-4 flex-shrink-0" />
<span class="tab-label"> <span class="tab-label">
{props.instance.folder.split("/").pop() || props.instance.folder} {getPathBasename(props.instance.folder)}
</span> </span>
<span <span
class={`status-indicator session-status ml-auto ${statusClassName()}`} class={`status-indicator session-status ml-auto ${statusClassName()}`}

View File

@@ -1,4 +1,4 @@
@import "github-markdown-css/github-markdown-light.css" layer(github-markdown-base); @import "github-markdown-css/github-markdown-dark.css";
@layer components { @layer components {
.markdown-body { .markdown-body {
@@ -96,7 +96,6 @@
.markdown-body code { .markdown-body code {
font-family: var(--font-family-mono); font-family: var(--font-family-mono);
font-size: var(--font-size-sm); font-size: var(--font-size-sm);
color: var(--text-primary);
background-color: var(--surface-muted); background-color: var(--surface-muted);
border: 1px solid var(--border-base); border: 1px solid var(--border-base);
border-radius: 4px; border-radius: 4px;
@@ -109,23 +108,17 @@
background: transparent; background: transparent;
} }
.markdown-body pre:not(.shiki) { .markdown-body pre {
font-family: var(--font-family-mono); font-family: var(--font-family-mono);
font-size: var(--font-size-sm); font-size: var(--font-size-sm);
line-height: var(--line-height-normal); line-height: var(--line-height-normal);
background-color: var(--surface-code); background-color: var(--surface-code);
color: var(--text-primary);
border: 1px solid var(--border-base); border: 1px solid var(--border-base);
border-radius: 8px; border-radius: 8px;
padding: 0.75rem; padding: 0.75rem;
margin: 1rem 0; margin: 1rem 0;
} }
.markdown-body pre:not(.shiki) code,
.markdown-code-block pre:not(.shiki) code {
color: var(--text-primary);
}
.markdown-body blockquote { .markdown-body blockquote {
border-left: 3px solid var(--border-base); border-left: 3px solid var(--border-base);
color: var(--text-secondary); color: var(--text-secondary);
@@ -175,18 +168,12 @@
border: 1px solid var(--border-base); border: 1px solid var(--border-base);
padding: 0.5rem 0.75rem; padding: 0.5rem 0.75rem;
text-align: left; text-align: left;
color: var(--text-primary);
background-color: transparent;
} }
.markdown-body th { .markdown-body th {
background-color: var(--surface-secondary); background-color: var(--surface-secondary);
} }
.markdown-body tbody tr:nth-child(2n) {
background-color: var(--surface-muted);
}
.markdown-code-block { .markdown-code-block {
position: relative; position: relative;
margin: 10px 0; margin: 10px 0;