• src/syncterm/Wren.adoc src/syncterm/scripts/auto/picker/file_picker.wr

    From Deuc¨@VERT to Git commit to main/sbbs/master on Sunday, July 19, 2026 13:28:48
    https://gitlab.synchro.net/main/sbbs/-/commit/6c09071ae20ae8d08f241919
    Modified Files:
    src/syncterm/Wren.adoc src/syncterm/scripts/auto/picker/file_picker.wren src/syncterm/scripts/ui_list.wren ui_list_test.wren
    Log Message:
    wren: fix picker list focus and positioning

    Keep both sides of the file picker in the normal active palette while
    showing the selection lightbar only in the list that owns focus. Preserve
    the existing always-visible selection default for other ListView callers.

    When a selection is restored before list bounds are known, center it during initial layout if it falls outside the first viewport. Continue using the existing minimal scrolling behavior for subsequent keyboard navigation.

    Document both ListView controls and cover focused rendering and initial viewport positioning in the Wren UI tests.

    Co-Authored-By: OpenAI Codex <noreply@openai.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¨@VERT to Git commit to main/sbbs/master on Sunday, July 19, 2026 13:28:48
    https://gitlab.synchro.net/main/sbbs/-/commit/f56a1ff1d1f3b79c4cd61c96
    Modified Files:
    src/syncterm/Wren.adoc src/syncterm/scripts/auto/picker/file_picker.wren src/syncterm/scripts/ui_draw.wren ui_draw_test.wren ui_list.wren ui_list_test.wren
    Log Message:
    wren: correct scrollbar click handling

    Map scrollbar track clicks through the inverse of the thumb placement calculation so a one-cell thumb lands on the clicked row instead of the
    row above it.

    Treat the separator column between list content and the scrollbar as
    inert. The picker keeps its inactive-pane focus behavior while routing
    only actual scrollbar clicks through the scrollbar handler.

    Document the interaction and cover both cases with Wren tests.

    Co-Authored-By: OpenAI Codex <noreply@openai.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¨@VERT to Git commit to main/sbbs/master on Monday, July 20, 2026 11:51:19
    https://gitlab.synchro.net/main/sbbs/-/commit/793574a598a0d1140900f72c
    Modified Files:
    src/syncterm/Wren.adoc src/syncterm/scripts/auto/picker/file_picker.wren src/syncterm/scripts/sftp_app.wren ui_list.wren ui_list_test.wren
    Log Message:
    wren: preserve list view across refreshes

    ListView.items= reset the selection and scrollTop whenever a caller
    rebuilt its row labels. Callers then restored the selected index, causing ensureVisible_() to place that row at the bottom of the viewport.

    Preserve the selected index and viewport when replacing a populated
    list, clamping only when the replacement is shorter. Add resetItems() for actual collection navigation and use it when changing file-picker and
    SFTP directories.

    Document the two replacement modes and test preservation across both an
    item refresh and subsequent layout.

    Co-Authored-By: OpenAI Codex <noreply@openai.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net