@@ -31,7 +31,6 @@ let autoLaunch = false;
3131let searchQuery = '' ;
3232let sessionOrder = [ ] ; // User-defined order of session IDs
3333let draggedId = null ;
34- let activeFilters = new Set ( ) ; // empty = all visible, or: 'active', 'waiting', 'completed'
3534
3635// ═══ DOM refs ═══
3736
@@ -138,37 +137,8 @@ async function init() {
138137 $btnBack . addEventListener ( 'click' , ( ) => setView ( previousViewMode || 'grid' ) ) ;
139138 $btnPinMicro . addEventListener ( 'click' , togglePin ) ;
140139
141- // Status filter chips (multi-select)
142- document . querySelectorAll ( '.status-filter .filter-chip' ) . forEach ( chip => {
143- chip . addEventListener ( 'click' , ( ) => {
144- const filter = chip . dataset . filter ;
145- if ( activeFilters . has ( filter ) ) {
146- activeFilters . delete ( filter ) ;
147- } else {
148- activeFilters . add ( filter ) ;
149- }
150- updateFilterPills ( ) ;
151- render ( ) ;
152- } ) ;
153- } ) ;
154-
155- // Clear filters button
156- document . getElementById ( 'btnClearFilters' ) . addEventListener ( 'click' , ( ) => {
157- activeFilters . clear ( ) ;
158- updateFilterPills ( ) ;
159- render ( ) ;
160- } ) ;
161-
162- // Clear all (filters + search) from empty state
163- document . getElementById ( 'btnClearAllFilters' ) . addEventListener ( 'click' , ( ) => {
164- activeFilters . clear ( ) ;
165- searchQuery = '' ;
166- const search = document . getElementById ( 'searchInput' ) ;
167- search . value = '' ;
168- search . style . display = 'none' ;
169- updateFilterPills ( ) ;
170- render ( ) ;
171- } ) ;
140+ // Clear search from empty state
141+ document . getElementById ( 'btnClearAllFilters' ) . addEventListener ( 'click' , closeSearch ) ;
172142 $btnPin . addEventListener ( 'click' , togglePin ) ;
173143 $btnAdd . addEventListener ( 'click' , ( ) => $addModal . style . display = 'flex' ) ;
174144 $addCancel . addEventListener ( 'click' , closeAddModal ) ;
@@ -320,10 +290,7 @@ async function init() {
320290 search . style . display = 'block' ;
321291 search . focus ( ) ;
322292 } else {
323- search . style . display = 'none' ;
324- search . value = '' ;
325- searchQuery = '' ;
326- render ( ) ;
293+ closeSearch ( ) ;
327294 }
328295 }
329296
@@ -393,15 +360,15 @@ function updatePinButton() {
393360 $btnPin . classList . toggle ( 'active' , alwaysOnTop ) ;
394361}
395362
396-
397- function updateFilterPills ( ) {
398- document . querySelectorAll ( '.status-filter .filter-chip' ) . forEach ( p => {
399- p . classList . toggle ( 'active' , activeFilters . has ( p . dataset . filter ) ) ;
400- } ) ;
401- const clearBtn = document . getElementById ( 'btnClearFilters' ) ;
402- clearBtn . style . display = activeFilters . size > 0 ? 'inline-flex' : 'none' ;
363+ function closeSearch ( ) {
364+ const search = document . getElementById ( 'searchInput' ) ;
365+ search . style . display = 'none' ;
366+ search . value = '' ;
367+ searchQuery = '' ;
368+ render ( ) ;
403369}
404370
371+
405372function updateNotifPosition ( ) {
406373 $notificationOverlay . setAttribute ( 'data-position' , notifPosition ) ;
407374 document . querySelectorAll ( '.position-btn' ) . forEach ( btn => {
@@ -576,7 +543,6 @@ function getRenderableSessions() {
576543
577544function render ( ) {
578545 const count = sessions . size ;
579- const filtersActive = activeFilters . size > 0 || searchQuery ;
580546 const visibleCount = getRenderableSessions ( ) . length ;
581547
582548 const showNoSessions = count === 0 ;
@@ -672,18 +638,6 @@ function getSortedSessions() {
672638 ) ;
673639 }
674640
675- // Filter by active filter pills (multi-select, OR logic)
676- if ( activeFilters . size > 0 ) {
677- arr = arr . filter ( s => {
678- const name = s . state . name ;
679- if ( activeFilters . has ( 'active' ) && ( name === 'running' || name === 'thinking' ) ) return true ;
680- if ( activeFilters . has ( 'waiting' ) && ( name === 'waiting' || name === 'pending' ) ) return true ;
681- if ( activeFilters . has ( 'completed' ) && name === 'completed' ) return true ;
682- return false ;
683- } ) ;
684- }
685-
686-
687641 // Separate completed from active
688642 const active = arr . filter ( s => s . state . name !== 'completed' ) ;
689643 const completed = arr . filter ( s => s . state . name === 'completed' ) ;
@@ -1305,11 +1259,8 @@ function updateStatusBar() {
13051259 const totalInput = all . reduce ( ( sum , s ) => sum + ( s . tokens ?. input || 0 ) , 0 ) ;
13061260 const totalOutput = all . reduce ( ( sum , s ) => sum + ( s . tokens ?. output || 0 ) , 0 ) ;
13071261
1308- const filtersActive = activeFilters . size > 0 || searchQuery ;
1309- const visibleCount = filtersActive ? getSortedSessions ( ) . length : all . length ;
1310-
1311- const activeLabel = filtersActive
1312- ? t ( 'status_filtered' , { visible : visibleCount , total : all . length } )
1262+ const activeLabel = searchQuery
1263+ ? t ( 'status_filtered' , { visible : getSortedSessions ( ) . length , total : all . length } )
13131264 : t ( 'status_active' , { n : active . length } ) ;
13141265
13151266 document . getElementById ( 'statActive' ) . textContent = activeLabel ;
0 commit comments