@@ -7,11 +7,13 @@ import {
77 Settings as SettingsIcon ,
88 KanbanSquare ,
99 Code2 ,
10+ ArrowUpRight ,
1011} from 'lucide-react' ;
1112import { ShortcutHint } from '../ui/shortcut-hint' ;
1213import SidebarLeftToggleButton from './SidebarLeftToggleButton' ;
1314import SidebarRightToggleButton from './SidebarRightToggleButton' ;
1415import { Button } from '../ui/button' ;
16+ import { Badge } from '../ui/badge' ;
1517import { Tooltip , TooltipContent , TooltipProvider , TooltipTrigger } from '../ui/tooltip' ;
1618import OpenInMenu from './OpenInMenu' ;
1719import FeedbackModal from '../FeedbackModal' ;
@@ -24,6 +26,7 @@ import { useProjectManagementContext } from '../../contexts/ProjectManagementPro
2426import { useTaskManagementContext } from '../../contexts/TaskManagementContext' ;
2527import { useGithubContext } from '../../contexts/GithubContextProvider' ;
2628import { useAppSettings } from '@/contexts/AppSettingsProvider' ;
29+ import { getEmdashV1BetaUrl } from '@shared/urls' ;
2730
2831const isMacOS = typeof navigator !== 'undefined' && / M a c | i P o d | i P h o n e | i P a d / . test ( navigator . platform ) ;
2932
@@ -131,6 +134,7 @@ const Titlebar: React.FC<TitlebarProps> = ({
131134 const [ isHeaderHovered , setIsHeaderHovered ] = useState ( false ) ;
132135 const feedbackButtonRef = useRef < HTMLButtonElement | null > ( null ) ;
133136 const headerRef = useRef < HTMLElement | null > ( null ) ;
137+ const betaUrl = getEmdashV1BetaUrl ( 'titlebar-badge' ) ;
134138
135139 const handleOpenFeedback = useCallback ( async ( ) => {
136140 void import ( '../../lib/telemetryClient' ) . then ( ( { captureTelemetry } ) => {
@@ -219,11 +223,29 @@ const Titlebar: React.FC<TitlebarProps> = ({
219223 </ div >
220224 ) }
221225 < div
222- className = "pointer-events-auto flex flex-shrink-0 items-center [-webkit-app-region:no-drag]"
226+ className = "pointer-events-auto flex flex-shrink-0 items-center gap-2 [-webkit-app-region:no-drag]"
223227 style = { {
224228 paddingLeft : isMacOS ? 'env(titlebar-area-x, 80px)' : '0.5rem' ,
225229 } }
226230 >
231+ < Badge
232+ asChild
233+ variant = "outline"
234+ className = "border-emerald-700/18 hover:border-emerald-600/28 h-7 rounded-md bg-gradient-to-r from-emerald-950 via-emerald-900 to-teal-900 px-2.5 text-[11px] font-semibold text-emerald-50 shadow-sm shadow-emerald-950/20 transition-colors hover:from-emerald-900 hover:via-emerald-800 hover:to-teal-800 hover:text-white dark:border-emerald-500/30 dark:from-emerald-950 dark:via-emerald-900 dark:to-teal-900 dark:text-emerald-50 dark:hover:border-emerald-400/40 dark:hover:from-emerald-900 dark:hover:via-emerald-800 dark:hover:to-teal-800"
235+ >
236+ < a
237+ href = { betaUrl }
238+ target = "_blank"
239+ rel = "noopener noreferrer"
240+ onClick = { ( event ) => {
241+ event . preventDefault ( ) ;
242+ void window . electronAPI . openExternal ( betaUrl ) ;
243+ } }
244+ >
245+ Try v1 beta now
246+ < ArrowUpRight className = "size-3.5" data-icon = "inline-end" />
247+ </ a >
248+ </ Badge >
227249 { showResourceMonitor ? < PerformanceChip /> : null }
228250 </ div >
229251 { /* Center: project/task context (grows to fill) */ }
0 commit comments