• ctrl/text.dat exec/load/t

    From Rob Swindell (on Windows@VERT to Git commit to main/sbbs/m on Wednesday, June 11, 2025 20:36:00
    https://gitlab.synchro.net/main/sbbs/-/commit/48cffb9ce1d534ff7bee3d32
    Modified Files:
    ctrl/text.dat exec/load/text.js src/sbbs3/ars.c ars_defs.h atcodes.cpp chk_ar.cpp js_user.c sbbsdefs.h src/sbbs3/scfg/scfgsys.c src/sbbs3/scfgdefs.h scfglib1.c scfgsave.c text.h text_defaults.c text_id.c userdat.c useredit.cpp userfields.h
    Log Message:
    Support tracking and limiting of user file downloads "per day"

    New SCFG->System->Security Options->Security Level Values...
    "Downloads Per Day" (D/D): defaults to 0/Unlimited for each level. So by default, there's no change in behavior for systems.
    This feature does *not* supercede any other download restriction (e.g. credit requirements, file ratios, per-directory download requirements). You can't use this feature to fully remove a user level's ability to download any files
    (i.e. set to 0 downloads per day); use the 'D' or 'T' user restrictions for that purpose instead. If you disagree with this design, let me know (ASAP).

    New ARS Keyword: "DLT" (Downloads Today), this can be used as a download requirement per file directory or anywhere else ARS keywords are sold (used). e.g. to limit access/feature to only those that have downloaded 0-99 files today, use "DLT NOT 100".

    "Per day" means since the most recent midnight in the BBS's time zone.

    New JavaScript User class properties:
    - user.stats.downloads_today
    - user.limits.downloads_per_day

    New @-code:
    - DTODAY (number of files downloaded by user today)

    New text.dat string:
    - NoMoreDownloads

    This implements feature request #938 by Xbit:
    "ability to govern number of files downloadable per day"

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Saturday, December 06, 2025 17:09:00
    https://gitlab.synchro.net/main/sbbs/-/commit/c3429c9033a7dc25ef4e2a40
    Modified Files:
    ctrl/text.dat exec/load/text.js src/sbbs3/logon.cpp text.h text_defaults.c text_id.c
    Log Message:
    When the user has unread personal mail, give a differnet prompt during logon

    ... and list/view their *unread* mail only (ordered newest first)

    I'm not filtering out SPAM here since that would be weird to be prompted to read your unread mail and then see no mail listed. sbbs_t::readmail() masks
    off the NOSPAM/SPAMONLY flags from the mode parameter anyway (not that I remember why).

    If the user changes the list order (! key) when reading their unread mail,
    that change is not saved to their preferences.

    This implements the feature request described in issue #1027, but without any "user setting". And it applies to all (personal) mail, not just "netmail".

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows@VERT to Git commit to main/sbbs/m on Monday, January 12, 2026 04:09:00
    https://gitlab.synchro.net/main/sbbs/-/commit/dd744b0920bcae4c9c07f7fa
    Modified Files:
    ctrl/text.dat exec/load/text.js src/sbbs3/readmail.cpp text.h text_defaults.c text_id.c userdat.c userdat.h text/menu/mailread.msg sentmail.msg
    Log Message:
    Add 'W'ide mode toggle at read/sent mail prompts

    When toggled on, "wide" messages won't be formatted for 80 columns on > 80 terminals.

    This adds a new text string: WideModeIsNow

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows@VERT to Git commit to main/sbbs/m on Saturday, May 02, 2026 16:42:00
    https://gitlab.synchro.net/main/sbbs/-/commit/560517b201bb9ee609b88351
    Modified Files:
    ctrl/text.dat exec/load/text.js src/sbbs3/prntfile.cpp text.h text_defaults.c text_id.c
    Log Message:
    sbbs3 printfile(): less-style search and help in P_SEEK pager

    In P_SEEK mode, add:
    - '/' prompts for a search string and finds the first match forward.
    - 'n' / 'N' navigate to next / previous match. Search starts from the
    line after (or before) the previous match, so matches still visible on
    the page above the prompt are reachable.
    - '?' shows a help screen listing all keys.
    - Q/q quits (case-insensitive).

    Behavior fixes:
    - The pager no longer exits silently at EOF in P_SEEK mode; instead the
    prompt fires one final time so the user can scroll back, search again,
    or quit.
    - When a search match is in the last page-worth of the file, the screen
    is positioned so the last full page of content fills the screen
    (rather than a one-line display + EOF prompt with leftover content
    above).
    - Not-found prints text[FindStringNotFound] and re-prompts in place
    (file position and visible content unchanged).

    Pager prompt (text[SeekPrompt]) reformatted to show the filename and
    '(?=Help)' hint instead of the full key list. Adds new text strings text[FindStringNotFound] and text[SeekHelp]. The K_UPPER flag was
    removed from getkey() in the seek prompt so 'n' (next) and 'N' (prev)
    are distinguishable.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

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