diff --git a/static/ui.js b/static/ui.js index ccf0ca8b..fe308c82 100644 --- a/static/ui.js +++ b/static/ui.js @@ -18792,7 +18792,7 @@ function _workspaceSortComparator(key){ const field=key==='created-desc'?'birthtime_ns':'mtime_ns'; return (a,b)=>_compareWorkspaceTimestampDesc(a,b,field); } -function _workspaceCreatedSortAvailable(){return !!S._workspaceBirthtimeSeen;} +function _workspaceCreatedSortAvailable(){return !!(S.session&&S.session.workspace&&S._workspaceBirthtimeSeen);} function _effectiveWorkspaceSortKey(){ const key=_normalizeWorkspaceSortKey(S.workspaceSortKey); return key==='created-desc'&&!_workspaceCreatedSortAvailable()?WORKSPACE_SORT_DEFAULT:key; diff --git a/tests/test_issue6066_workspace_sort.py b/tests/test_issue6066_workspace_sort.py index a2699f22..39e597e2 100644 --- a/tests/test_issue6066_workspace_sort.py +++ b/tests/test_issue6066_workspace_sort.py @@ -120,7 +120,7 @@ def _run_sort_harness(body): end = UI_JS.index("// ── Workspace preferences kebab menu", start) source = UI_JS[start:end] script = """ -global.S={showHiddenWorkspaceFiles:true,workspaceSortKey:'name-asc'}; +global.S={session:{workspace:'/test'},showHiddenWorkspaceFiles:true,workspaceSortKey:'name-asc'}; global.localStorage={getItem(key){return key==='hermes-workspace-show-hidden-files'?'1':null},setItem(){}}; global.$=()=>null; function _visibleWorkspaceEntries(entries){return S.showHiddenWorkspaceFiles?entries:entries.filter(()=>true)} @@ -195,6 +195,16 @@ if(S._workspaceBirthtimeSeen!==false||S._workspaceBirthtimeWorkspace!=='')proces assert result.returncode == 0, result.stderr +def test_session_teardown_disables_created_sort(): + result = _run_sort_harness(""" +S._workspaceBirthtimeSeen=true; +if(_workspaceCreatedSortAvailable()!==true)process.exit(1); +S.session=null; +if(_workspaceCreatedSortAvailable()!==false)process.exit(1); +""") + assert result.returncode == 0, result.stderr + + def test_missing_timestamps_sort_last(): result = _run_sort_harness(""" S.workspaceSortKey='created-desc';S._workspaceBirthtimeSeen=true;