File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1010}
1111
1212.aria-dock-expanded {
13- max-height : 320 px ;
14- min-height : 140 px ;
13+ flex : 1 ;
14+ min-height : 0 ;
1515}
1616
1717.aria-dock-chamber {
171171 color : var (--t2 );
172172}
173173
174+ /* ── Inline links in messages ── */
175+
176+ .aria-link {
177+ display : inline;
178+ font-size : inherit;
179+ font-family : var (--font-code );
180+ color : var (--blue );
181+ background : none;
182+ border : none;
183+ padding : 0 ;
184+ cursor : pointer;
185+ text-decoration : underline;
186+ text-decoration-color : transparent;
187+ text-underline-offset : 2px ;
188+ word-break : break-all;
189+ transition : color var (--transition-fast ), text-decoration-color var (--transition-fast );
190+ }
191+
192+ .aria-link : hover {
193+ color : var (--t1 );
194+ text-decoration-color : var (--blue );
195+ }
196+
174197/* ── Code blocks ── */
175198
176199.aria-code-block {
Original file line number Diff line number Diff line change @@ -23,6 +23,30 @@ function formatTime(ts: number): string {
2323 return `${ h } :${ m } `
2424}
2525
26+ const URL_PATTERN = / ( h t t p s ? : \/ \/ [ ^ \s < > " ' ) \] ] + ) / g
27+
28+ function renderTextWithLinks ( text : string , keyPrefix : string ) {
29+ const segments = text . split ( URL_PATTERN )
30+ return segments . map ( ( seg , j ) => {
31+ if ( URL_PATTERN . test ( seg ) ) {
32+ // Reset lastIndex after test() consumed it
33+ URL_PATTERN . lastIndex = 0
34+ return (
35+ < button
36+ key = { `${ keyPrefix } -link-${ j } ` }
37+ className = "aria-link"
38+ onClick = { ( ) => window . daemon . shell . openExternal ( seg ) }
39+ title = { seg }
40+ >
41+ { seg }
42+ </ button >
43+ )
44+ }
45+ URL_PATTERN . lastIndex = 0
46+ return seg ? < span key = { `${ keyPrefix } -text-${ j } ` } > { seg } </ span > : null
47+ } )
48+ }
49+
2650function renderContent ( text : string ) {
2751 const parts = text . split ( / ( ` ` ` [ \s \S ] * ?` ` ` ) / g)
2852 return parts . map ( ( part , i ) => {
@@ -37,7 +61,7 @@ function renderContent(text: string) {
3761 )
3862 }
3963 if ( ! part . trim ( ) ) return null
40- return < span key = { i } > { part } </ span >
64+ return < span key = { i } > { renderTextWithLinks ( part , String ( i ) ) } </ span >
4165 } )
4266}
4367
Original file line number Diff line number Diff line change 450450 padding : 4px 2px ;
451451}
452452
453+ /* Terminal output search overlay — top-right of terminal container */
454+ .terminal-search-overlay {
455+ position : absolute;
456+ top : 8px ;
457+ right : 10px ;
458+ width : min (380px , calc (100% - 20px ));
459+ border : 1px solid var (--border );
460+ border-radius : 6px ;
461+ background : var (--s2 );
462+ backdrop-filter : blur (6px );
463+ box-shadow : var (--shadow-float );
464+ z-index : 5 ;
465+ }
466+
467+ .terminal-search-input-row {
468+ display : flex;
469+ align-items : center;
470+ gap : 4px ;
471+ padding : 4px 6px ;
472+ }
473+
474+ .terminal-search-icon {
475+ color : var (--t3 );
476+ display : flex;
477+ align-items : center;
478+ flex-shrink : 0 ;
479+ }
480+
481+ .terminal-search-input {
482+ flex : 1 ;
483+ background : none;
484+ border : none;
485+ outline : none;
486+ font-size : 12px ;
487+ font-family : 'JetBrains Mono' , 'Cascadia Code' , monospace;
488+ color : var (--t1 );
489+ min-width : 0 ;
490+ }
491+
492+ .terminal-search-input ::placeholder {
493+ color : var (--t4 );
494+ }
495+
496+ .terminal-search-count {
497+ font-size : 10px ;
498+ color : var (--t3 );
499+ white-space : nowrap;
500+ padding : 0 4px ;
501+ flex-shrink : 0 ;
502+ }
503+
504+ .terminal-search-nav {
505+ width : 20px ;
506+ height : 20px ;
507+ display : flex;
508+ align-items : center;
509+ justify-content : center;
510+ border-radius : 3px ;
511+ color : var (--t2 );
512+ flex-shrink : 0 ;
513+ }
514+
515+ .terminal-search-nav : hover : not (: disabled ) {
516+ background : var (--s4 );
517+ color : var (--t1 );
518+ }
519+
520+ .terminal-search-nav : disabled {
521+ opacity : 0.3 ;
522+ cursor : default;
523+ }
524+
525+ /* xterm search highlight override */
526+ .terminal-view .xterm-rows span .search-match {
527+ background : color-mix (in srgb, var (--amber ) 35% , transparent) !important ;
528+ outline : 1px solid var (--amber );
529+ }
530+
531+ .terminal-view .xterm-rows span .search-match-active {
532+ background : color-mix (in srgb, var (--green ) 40% , transparent) !important ;
533+ outline : 1px solid var (--green );
534+ }
535+
453536/* Agent Grid — multi-page Claude session grid */
454537.agent-grid-wrapper {
455538 display : flex;
You can’t perform that action at this time.
0 commit comments