forked from enderofwings/NexusOS
/icons/image used a bare string startswith() against allowed roots, so a sibling dir like /usr/share/icons_evil would pass as if it were under /usr/share/icons. Switched to the pathlib parents-based check already used correctly in icons/compositor.py, plus a regression test. Also stopped three bare `except Exception: pass` blocks (auto model select fallback, conversation titling) from swallowing errors silently - they now log to the existing chat trace helper. Behavior unchanged, just visible when something's actually failing. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>