NEWS WIRE CHANGELOG =================== 1.0.7 - Network safety, cache robustness, and parser cleanup ----------------------------------------------------------- - Added v1.0.7 to the NEWS WIRE title on every caller screen. - Hardened feed/article requests against localhost, private, reserved, and link-local destinations. - Changed redirects to manual HTTPS-only handling with destination validation on every hop. - Added an 8-second caller-screen network budget and a bounded admin feed-test budget. - Reduced per-request network timeouts so a slow publisher cannot monopolize a caller session. - Added short negative-cache cooldowns after failed feed and article requests. - Changed per-URL locks to non-blocking behavior; callers use stale data instead of waiting behind another refresh. - Added cleanup of abandoned .lock, .tmp, and old failure-marker files. - Enforced the 1 MiB response limit while data is being downloaded, including decoded cURL responses. - Reworked the allow_url_fopen fallback to use bounded reads with a wall-clock deadline. - Split feed cache and article-text cache pools so article activity cannot evict RSS/Atom responses. - Changed article caching to store only the extracted text excerpt instead of the full publisher HTML page. - Limited article extraction input to 256 KiB and replaced the broad paragraph/article regex scans with bounded string scanning. - Added a per-feed Article checkbox in admin.php so SysOps can disable linked-page excerpt fetching for a source. - Fixed Atom feeds where an empty incorrectly hid populated text. - Added fallback conversion for legacy/non-UTF-8 feeds handled by the internal parser. - Fixed punctuation/symbol/emoji-only headlines being dropped by the de-duplication pass. - Fixed duplicate feed names overwriting one another in the SysOp feed-test results. - Changed remote publisher text to literal ANSI output so ATDT %XX MCI variables cannot be expanded from headlines or stories. - Changed story wrapping to ATDT's multibyte-safe visible-width wrapper. - Improved HTML cleanup so adjacent paragraph/block tags do not glue sentences together. - Replaced caller-visible transport details with a generic feed-error screen while keeping detailed errors in SysOp logs/admin diagnostics. - Corrected desk ENTER labels, stale-cache wording, and undocumented/dead key handling. - Updated README/admin copy for ATDT 1.7.7 terminology, PHP 8.1+, current feed management, cache behavior, and article-excerpt behavior. - Centralized the PHP version literal in lib/Version.php. - Removed the runtime cache/.gc marker from the distribution; it is created automatically when needed. - Fixed publisher-page excerpts that could include inline JavaScript/analytics text after the readable story content. - Added explicit removal of script, style, noscript, template, SVG, canvas, and iframe blocks before paragraph extraction. - Added preference for publisher articleBody sections before falling back to a generic article element. - Added a secondary code-like text filter for malformed publisher markup. - Changed article extraction to prefer structured JSON-LD articleBody text, then visible article paragraphs, then the page description instead of simply choosing the longest candidate. - Versioned the article-text cache key so older bad excerpts are ignored immediately and rebuilt cleanly. - Updated README documentation for publisher-page excerpt filtering. 1.0.6 - Cache folder cleanup ---------------------------- - Kept the runtime cache folder as newswire/cache/ for fresh installs. - Removed the legacy temp-to-cache migration code. - Updated admin/status wording to refer to the cache folder consistently. 1.0.5 - Cache folder rename --------------------------- - Changed the runtime cache folder from newswire/temp/ to newswire/cache/. - Updated the package layout and documentation for the new cache path. - Added temporary migration logic for older temp-cache installs; this was removed in 1.0.6 for the fresh-install package. 1.0.4 - Main Menu label cleanup -------------------------------- - Changed the M navigation option from "M Main" to "Main Menu" across door screens. - The leading M remains bright white as the highlighted hotkey. 1.0.3 - Admin-managed feeds --------------------------- - Added editable U.S. and World RSS/Atom source lists to admin.php. - Added enable/disable controls for individual feeds. - Added up to eight configurable feed slots per desk. - Added protected JSON persistence in newswire/config/feeds.json. - Added one-click restore of the built-in NPR, New York Times, and Guardian defaults. - Feed diagnostics now test the currently enabled admin-configured sources. - Custom source labels receive a stable bright ANSI color automatically. - Custom feed settings remain filesystem-based; no News Wire ATDT database tables are created. 1.0.2 - Colorized headline desk -------------------------------- - Added publisher-specific colors to the headline source labels. - Changed story numbers to bright yellow for faster scanning. - Added color emphasis to headline counts, source counts, and page numbers. - Kept headline text bright white and single-line for readability. 1.0.1 - Display cleanup and story-text improvement -------------------------------------------------- - Removed the landing-screen implementation/storage lines to keep the main menu cleaner. - Changed headline desks to display each story title on a single line only. - Added article-page text extraction when the feed summary is too short or missing. - Changed story screens to label whether the text came from the feed summary or the article page. - Updated help/readme text for the new story behavior. 1.0.0 - Initial release ----------------------- - Added separate United States and World headline desks. - Added NPR National and NPR World RSS sources. - Added New York Times U.S. and World RSS sources. - Added The Guardian U.S. and World RSS sources. - Added newest-first multi-source merge and headline de-duplication. - Added five-headline paging and numbered story selection. - Added paged publisher-supplied story summaries. - Added article-link screen. - Added five-minute feed cache and six-hour last-good failover. - Added automatic cache size/file-count limits. - Added SysOp connectivity and RSS/Atom parser diagnostics. - Added source configuration in config.php. - Added cursor:false to door.json. - No ATDT door tables, API keys, cron jobs, or background services required.