diff --git a/.env b/.env index 27929cde..3967bc09 100644 --- a/.env +++ b/.env @@ -1 +1 @@ -VERSION=1.1.1 \ No newline at end of file +VERSION=1.1 \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index c4510ae9..8940ef8c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,7 +1,7 @@ import React from "react" import {Homepage} from "@/apps/Homepage/Homepage.tsx" -import {Terminal} from "@/apps/SSH/Terminal/Terminal.tsx" +import {SSH} from "@/apps/SSH/Terminal/SSH.tsx" import {SSHTunnel} from "@/apps/SSH/Tunnel/SSHTunnel.tsx"; import {ConfigEditor} from "@/apps/SSH/Config Editor/ConfigEditor.tsx"; import {SSHManager} from "@/apps/SSH/Manager/SSHManager.tsx" @@ -35,7 +35,7 @@ function App() { )} {mountedViews.has("terminal") && (
- +
)} {mountedViews.has("tunnel") && ( diff --git a/src/apps/Homepage/Homepage.tsx b/src/apps/Homepage/Homepage.tsx index 9efe1e67..470168b5 100644 --- a/src/apps/Homepage/Homepage.tsx +++ b/src/apps/Homepage/Homepage.tsx @@ -3,7 +3,6 @@ import React, {useEffect, useState} from "react"; import {HomepageAuth} from "@/apps/Homepage/HomepageAuth.tsx"; import axios from "axios"; import {HomepageUpdateLog} from "@/apps/Homepage/HompageUpdateLog.tsx"; -import {HomepageWelcomeCard} from "@/apps/Homepage/HomepageWelcomeCard.tsx"; interface HomepageProps { onSelectView: (view: string) => void; @@ -33,12 +32,9 @@ export function Homepage({onSelectView}: HomepageProps): React.ReactElement { const [username, setUsername] = useState(null); const [authLoading, setAuthLoading] = useState(true); const [dbError, setDbError] = useState(null); - const [showWelcomeCard, setShowWelcomeCard] = useState(true); useEffect(() => { const jwt = getCookie("jwt"); - const welcomeHidden = getCookie("welcome_hidden"); - if (jwt) { setAuthLoading(true); Promise.all([ @@ -50,7 +46,6 @@ export function Homepage({onSelectView}: HomepageProps): React.ReactElement { setIsAdmin(!!meRes.data.is_admin); setUsername(meRes.data.username || null); setDbError(null); - setShowWelcomeCard(welcomeHidden !== "true"); }) .catch((err) => { setLoggedIn(false); @@ -69,11 +64,6 @@ export function Homepage({onSelectView}: HomepageProps): React.ReactElement { } }, []); - const handleHideWelcomeCard = () => { - setShowWelcomeCard(false); - setCookie("welcome_hidden", "true", 365 * 10); - }; - return ( - - {loggedIn && !authLoading && showWelcomeCard && ( -
- -
- )}
); diff --git a/src/apps/Homepage/HomepageWelcomeCard.tsx b/src/apps/Homepage/HomepageWelcomeCard.tsx deleted file mode 100644 index 4ef52ce3..00000000 --- a/src/apps/Homepage/HomepageWelcomeCard.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from "react"; -import {Card, CardContent, CardFooter, CardHeader, CardTitle} from "@/components/ui/card"; -import {Button} from "@/components/ui/button"; - -interface HomepageWelcomeCardProps { - onHidePermanently: () => void; -} - -export function HomepageWelcomeCard({onHidePermanently}: HomepageWelcomeCardProps): React.ReactElement { - return ( - - - - The Future of Termix - - - -

- Please checkout the linked survey{" "} - - here - - . The purpose of this survey is to gather feedback from users on what the future UI of Termix could - look like to optimize server management. Please take a minute or two to read the survey questions - and answer them to the best of your ability. Thank you! -

-

- A special thanks to those in Asia who recently joined Termix through various forum posts, keep - sharing it! A Chinese translation is planned for Termix, but since I don’t speak Chinese, I’ll need - to hire someone to help with the translation. If you’d like to support me financially, you can do - so{" "} - - here. - -

-
- - - -
- ); -} diff --git a/src/apps/SSH/Terminal/Terminal.tsx b/src/apps/SSH/Terminal/SSH.tsx similarity index 97% rename from src/apps/SSH/Terminal/Terminal.tsx rename to src/apps/SSH/Terminal/SSH.tsx index e6e92600..002be4ca 100644 --- a/src/apps/SSH/Terminal/Terminal.tsx +++ b/src/apps/SSH/Terminal/SSH.tsx @@ -1,10 +1,9 @@ import React, {useState, useRef, useEffect} from "react"; -import {TerminalSidebar} from "@/apps/SSH/Terminal/TerminalSidebar.tsx"; -import {TerminalComponent} from "./TerminalComponent.tsx"; -import {TerminalTopbar} from "@/apps/SSH/Terminal/TerminalTopbar.tsx"; +import {SSHSidebar} from "@/apps/SSH/Terminal/SSHSidebar.tsx"; +import {SSHTerminal} from "./SSHTerminal.tsx"; +import {SSHTopbar} from "@/apps/SSH/Terminal/SSHTopbar.tsx"; import {ResizablePanelGroup, ResizablePanel, ResizableHandle} from '@/components/ui/resizable.tsx'; import * as ResizablePrimitive from "react-resizable-panels"; -import {ChevronDown, ChevronRight} from "lucide-react"; interface ConfigEditorProps { onSelectView: (view: string) => void; @@ -17,7 +16,7 @@ type Tab = { terminalRef: React.RefObject; }; -export function Terminal({onSelectView}: ConfigEditorProps): React.ReactElement { +export function SSH({onSelectView}: ConfigEditorProps): React.ReactElement { const [allTabs, setAllTabs] = useState([]); const [currentTab, setCurrentTab] = useState(null); const [allSplitScreenTab, setAllSplitScreenTab] = useState([]); @@ -26,7 +25,7 @@ export function Terminal({onSelectView}: ConfigEditorProps): React.ReactElement const [isSidebarOpen, setIsSidebarOpen] = useState(true); const [isTopbarOpen, setIsTopbarOpen] = useState(true); const SIDEBAR_WIDTH = 256; - const HANDLE_THICKNESS = 10; + const HANDLE_THICKNESS = 6; const [panelRects, setPanelRects] = useState>({}); const panelRefs = useRef>({}); @@ -161,7 +160,7 @@ export function Terminal({onSelectView}: ConfigEditorProps): React.ReactElement const isVisible = !!layoutStyles[tab.id]; return (
- + {/* Sidebar (collapsible) */}
- - - -
+ title="Show top bar" + /> )} + {/* Main terminal area (height adapts to topbar) */}
+ {/* Sidebar reopen handle */} {!isSidebarOpen && (
setIsSidebarOpen(true)} @@ -771,13 +769,9 @@ export function Terminal({onSelectView}: ConfigEditorProps): React.ReactElement background: '#222224', cursor: 'pointer', zIndex: 20, - display: 'flex', - alignItems: 'center', - justifyContent: 'center', }} - title="Show sidebar"> - -
+ title="Show sidebar" + /> )}
); diff --git a/src/apps/SSH/Terminal/TerminalSidebar.tsx b/src/apps/SSH/Terminal/SSHSidebar.tsx similarity index 99% rename from src/apps/SSH/Terminal/TerminalSidebar.tsx rename to src/apps/SSH/Terminal/SSHSidebar.tsx index 90318520..e92dbae5 100644 --- a/src/apps/SSH/Terminal/TerminalSidebar.tsx +++ b/src/apps/SSH/Terminal/SSHSidebar.tsx @@ -74,7 +74,7 @@ export interface SidebarProps { onOpenChange?: (open: boolean) => void; } -export function TerminalSidebar({ +export function SSHSidebar({ onSelectView, onHostConnect, allTabs, diff --git a/src/apps/SSH/Terminal/TerminalTabList.tsx b/src/apps/SSH/Terminal/SSHTabList.tsx similarity index 98% rename from src/apps/SSH/Terminal/TerminalTabList.tsx rename to src/apps/SSH/Terminal/SSHTabList.tsx index 2e52d865..b60bfbb5 100644 --- a/src/apps/SSH/Terminal/TerminalTabList.tsx +++ b/src/apps/SSH/Terminal/SSHTabList.tsx @@ -16,7 +16,7 @@ interface SSHTabListProps { setCloseTab: (tab: number) => void; } -export function TerminalTabList({ +export function SSHTabList({ allTabs, currentTab, setActiveTab, diff --git a/src/apps/SSH/Terminal/TerminalComponent.tsx b/src/apps/SSH/Terminal/SSHTerminal.tsx similarity index 99% rename from src/apps/SSH/Terminal/TerminalComponent.tsx rename to src/apps/SSH/Terminal/SSHTerminal.tsx index c69ac609..74089981 100644 --- a/src/apps/SSH/Terminal/TerminalComponent.tsx +++ b/src/apps/SSH/Terminal/SSHTerminal.tsx @@ -13,7 +13,7 @@ interface SSHTerminalProps { splitScreen?: boolean; } -export const TerminalComponent = forwardRef(function SSHTerminal( +export const SSHTerminal = forwardRef(function SSHTerminal( {hostConfig, isVisible, splitScreen = false}, ref ) { diff --git a/src/apps/SSH/Terminal/TerminalTopbar.tsx b/src/apps/SSH/Terminal/SSHTopbar.tsx similarity index 94% rename from src/apps/SSH/Terminal/TerminalTopbar.tsx rename to src/apps/SSH/Terminal/SSHTopbar.tsx index 036ae622..30d4c910 100644 --- a/src/apps/SSH/Terminal/TerminalTopbar.tsx +++ b/src/apps/SSH/Terminal/SSHTopbar.tsx @@ -1,4 +1,4 @@ -import {TerminalTabList} from "@/apps/SSH/Terminal/TerminalTabList.tsx"; +import {SSHTabList} from "@/apps/SSH/Terminal/SSHTabList.tsx"; import React from "react"; import {ChevronUp} from "lucide-react"; @@ -17,7 +17,7 @@ interface SSHTopbarProps { onHideTopbar?: () => void; } -export function TerminalTopbar({ +export function SSHTopbar({ allTabs, currentTab, setActiveTab, @@ -38,7 +38,7 @@ export function TerminalTopbar({ }}>
-