Symptom
`ls ` should list the contents of the named subtree. Instead it returns the listing of the current cursor (as if no path were passed).
Surfaced by an agent on 2026-05-26: from a tab root, `ls main_443/conversation_list/listitem_507` returned the root listing, not the listitem's contents. Only `cd ` then `ls` worked.
This breaks a natural agent pattern (peek at a subtree without changing the cursor) and forces extra cursor manipulation.
Likely cause
`handleLs` probably calls `getChildVFSNodes(getCurrentNodeId(), nodeMap)` directly without checking for a positional path argument. The fix is to resolve the path via `resolveByPath` first, then list its children.
Expected
```
ls main_443/conversation_list/listitem_507
[d] something_under_listitem
[x] press_return_link
[-] avatar_img
```
Same flag support as plain `ls` (`--type`, `--text`, `--json`, …).
Reference
Smoke report from 2026-05-26, paragraph "Relative `ls ` ignores the path argument."
Symptom
`ls ` should list the contents of the named subtree. Instead it returns the listing of the current cursor (as if no path were passed).
Surfaced by an agent on 2026-05-26: from a tab root, `ls main_443/conversation_list/listitem_507` returned the root listing, not the listitem's contents. Only `cd ` then `ls` worked.
This breaks a natural agent pattern (peek at a subtree without changing the cursor) and forces extra cursor manipulation.
Likely cause
`handleLs` probably calls `getChildVFSNodes(getCurrentNodeId(), nodeMap)` directly without checking for a positional path argument. The fix is to resolve the path via `resolveByPath` first, then list its children.
Expected
```
ls main_443/conversation_list/listitem_507
[d] something_under_listitem
[x] press_return_link
[-] avatar_img
```
Same flag support as plain `ls` (`--type`, `--text`, `--json`, …).
Reference
Smoke report from 2026-05-26, paragraph "Relative `ls ` ignores the path argument."