• src/sbbs3/scfg/gen_option_index.py scfgindex.h

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun May 24 02:49:23 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/366d01cf1acbb783954e17c1
    Modified Files:
    src/sbbs3/scfg/gen_option_index.py scfgindex.h
    Log Message:
    scfg: index rate-limit submenu options (Count IPv6 Clients By, etc.)

    The Ctrl-F search index generator was skipping every option inside rate_limit_cfg() (Limit Rate of Connections/Requests, Count IPv4/IPv6
    Clients By, Auto-Filter Threshold/Duration/Silently, Subnet Filter
    Threshold) because is_navigable_list() only recognized the direct
    dispatch pattern `switch (sel)` and missed the indirection-table form
    `switch (action[sel])` used by that function (it needs the parallel
    action[] array since options are conditionally hidden).

    Extend the regex to also match `switch (table[var])`, then regenerate.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sun May 24 02:49:23 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/807b7337725a5f9bb11ae23d
    Modified Files:
    src/sbbs3/scfg/gen_option_index.py scfgindex.h
    Log Message:
    scfg: index helper-menu options under every caller's path

    The Ctrl-F search index generator only attributed shared config helpers (rate_limit_cfg, login_attempt_cfg, js_startup_cfg, edit_sys_timezone, choose_io_method, dir_toggle_options, edit_fixed_event) to the single alphabetically-first caller. Options reachable from multiple servers
    were therefore missing from the search index for all but one server -
    e.g. "Failed Login Threshold" only appeared under FTP Server even
    though it exists under Global Settings, Terminal, Web, Mail, and
    Services too.

    Two fixes in gen_option_index.py:

    1. Filter cfg_wizard out of the caller graph. It runs once at
    first-install, before main's Configure-menu loop, so its callees
    aren't reachable via Ctrl-F search. Indexing them produced bare
    path entries with no "Configure >" anchor AND stole attribution
    from sys_cfg (the real caller) via the alphabetical-first heuristic
    -- e.g. timezone choices were filed under "Non-U.S. Time Zone >
    Australian Central" instead of "System > Local Time Zone > ...".

    2. Replace build_path's single-caller walk with build_paths, which
    DFS-enumerates every distinct caller chain from option_func up to
    main and returns one path per chain. The existing dedup-by-(label,
    menu, path) at the entries level collapses identical chains.

    Regenerated index grows from 800 to 2077 entries. Audit (against the
    parser's own option extraction plus an independent raw-source grep for
    opt[] writes and string-array initializers) confirms every navigable
    SCFG option reachable from main is indexed at least once.

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