fix: tunnel URLs, session naming, git control bar placement
- Exclude api.trycloudflare.com from tunnel URL regex (both tunnel.py and docker/tunnel.py). Real tunnel subdomains are 10+ random chars. - Fix missing get_backend_network_name import in services/tunnel.py by using hardcoded BACKEND_NETWORK constant. - Add auto-numbering to session display names: project/repo/tool #N when duplicates exist for the same project/repo/tool type. - Move GitToolbar from full-width workspace header into WorkspaceSidebar above the FileBrowser, so git controls appear in the file browser area. - Remove stale ToolConfig import from instance_lifecycle.py (model was removed in earlier dev work); _fetch_tool_configs returns empty defaults. Quality gates: tsc pass (0 errors), build pass, Python syntax pass Tests: 127/131 passed (4 pre-existing failures)
This commit is contained in:
@@ -4,6 +4,7 @@ import type { ToolType } from "../../../types/tool-type";
|
||||
import { FileBrowser } from "./FileBrowser";
|
||||
import { CommitPanel } from "../git/CommitPanel";
|
||||
import { InstanceList } from "../session/InstanceList";
|
||||
import { GitToolbar } from "./GitToolbar";
|
||||
|
||||
interface WorkspaceSidebarProps {
|
||||
projectId: string;
|
||||
@@ -11,7 +12,12 @@ interface WorkspaceSidebarProps {
|
||||
repositories: GitRepository[];
|
||||
gitStatus: GitStatus | null;
|
||||
toolTypes: ToolType[];
|
||||
currentBranch: string;
|
||||
branches: string[];
|
||||
hasRemote: boolean;
|
||||
onRepoChange: (repoId: string) => void;
|
||||
onBranchChange: (branch: string) => void;
|
||||
onRefresh: () => void;
|
||||
onCommit: () => void;
|
||||
}
|
||||
|
||||
@@ -21,11 +27,25 @@ export const WorkspaceSidebar = ({
|
||||
repositories,
|
||||
gitStatus,
|
||||
toolTypes,
|
||||
currentBranch,
|
||||
branches,
|
||||
hasRemote,
|
||||
onRepoChange,
|
||||
onBranchChange,
|
||||
onRefresh,
|
||||
onCommit,
|
||||
}: WorkspaceSidebarProps) => {
|
||||
return (
|
||||
<aside className="workspace-sidebar">
|
||||
<GitToolbar
|
||||
projectId={projectId}
|
||||
repoId={repoId}
|
||||
currentBranch={currentBranch}
|
||||
branches={branches}
|
||||
hasRemote={hasRemote}
|
||||
onBranchChange={onBranchChange}
|
||||
onRefresh={onRefresh}
|
||||
/>
|
||||
<div className="sidebar-section">
|
||||
<label className="form-field">
|
||||
Repository
|
||||
|
||||
@@ -12,7 +12,6 @@ import {
|
||||
import { WorkspaceSidebar } from "../components/features/git";
|
||||
import { FileEditor } from "../components/features/git/FileEditor";
|
||||
import { WorkspaceHeader } from "../components/features/workspace/WorkspaceHeader";
|
||||
import { GitToolbar } from "../components/features/git/GitToolbar";
|
||||
import { LoadingState, ErrorState } from "../components/ui";
|
||||
import { listToolTypes } from "../api/tool-types";
|
||||
|
||||
@@ -161,26 +160,6 @@ export const RepoWorkspace = () => {
|
||||
|
||||
{status === "ready" && repositories.length > 0 && (
|
||||
<>
|
||||
{selectedRepoId && (
|
||||
<GitToolbar
|
||||
projectId={projectId!}
|
||||
repoId={selectedRepoId}
|
||||
currentBranch={currentBranch}
|
||||
branches={branches}
|
||||
hasRemote={Boolean(selectedRepo?.remote_url)}
|
||||
onBranchChange={(branch) => {
|
||||
setCurrentBranch(branch);
|
||||
const newParams = new URLSearchParams(searchParams);
|
||||
newParams.set("branch", branch);
|
||||
setSearchParams(newParams);
|
||||
}}
|
||||
onRefresh={() => {
|
||||
void loadBranches();
|
||||
void loadGitStatus();
|
||||
window.dispatchEvent(new CustomEvent("refresh-file-tree"));
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
<div className="workspace-layout">
|
||||
{selectedRepoId && (
|
||||
<WorkspaceSidebar
|
||||
@@ -189,7 +168,21 @@ export const RepoWorkspace = () => {
|
||||
repositories={repositories}
|
||||
gitStatus={gitStatus}
|
||||
toolTypes={toolTypes}
|
||||
currentBranch={currentBranch}
|
||||
branches={branches}
|
||||
hasRemote={Boolean(selectedRepo?.remote_url)}
|
||||
onRepoChange={handleRepoChange}
|
||||
onBranchChange={(branch) => {
|
||||
setCurrentBranch(branch);
|
||||
const newParams = new URLSearchParams(searchParams);
|
||||
newParams.set("branch", branch);
|
||||
setSearchParams(newParams);
|
||||
}}
|
||||
onRefresh={() => {
|
||||
void loadBranches();
|
||||
void loadGitStatus();
|
||||
window.dispatchEvent(new CustomEvent("refresh-file-tree"));
|
||||
}}
|
||||
onCommit={() => {
|
||||
void loadGitStatus();
|
||||
window.dispatchEvent(new CustomEvent("refresh-file-tree"));
|
||||
|
||||
Reference in New Issue
Block a user