Skip to content

v10.5.6

Latest

Choose a tag to compare

@bcordis bcordis released this 08 Aug 20:35
f4c80e5

What's Changed

  • fix: define BIBLESTUDY_* path constants in every application by @bcordis in #1430
  • docs: trim CLAUDE.md to non-derivable content by @bcordis in #1432
  • fix: read Proclaim version from manifest_cache, load language files everywhere by @bcordis in #1433
  • feat: add GET /v1/proclaim/info API endpoint by @bcordis in #1434
  • docs: add PR Hygiene section to CONTRIBUTING.md by @bcordis in #1435
  • fix: restore ACL check in CwmsermonController::allowEdit() by @bcordis in #1451
  • fix: add MultiCampusAccessTrait to CwmplaylistController by @bcordis in #1452
  • fix: CwmcommentController::batch() references nonexistent 'Comment' model by @bcordis in #1453
  • fix: route saveChapters() through Table save instead of raw SQL by @bcordis in #1454
  • fix: make CwmsermonController::commentsEmail() private by @bcordis in #1455
  • fix: escape group title in FiltersField.php by @bcordis in #1468
  • fix: replace dark-mode-unsafe classes in 5 admin fields by @bcordis in #1470
  • chore: add missing suites to composer test:unit script by @bcordis in #1471
  • fix: escape interpolated values in Modal/ServerTypeField.php by @bcordis in #1472
  • fix: escape hex value in ColorPickerField.php by @bcordis in #1473
  • fix: correct inverted conditional in MediaFileField option labels by @bcordis in #1474
  • fix: stop TemplateListField's static cache leaking XML options across instances by @bcordis in #1475
  • fix: derive hardcoded jform[...] names from field state in 2 fields by @bcordis in #1476
  • chore: remove two orphaned field classes with mismatched $type by @bcordis in #1477
  • fix: correct base class for 9 fields extending ListField without a real list by @bcordis in #1478
  • Migrate StudyField/TeacherDisplayField to ModalSelectField; delete orphaned LocationField by @bcordis in #1479
  • Migrate ServerTypeField to core ModalSelectField by @bcordis in #1481
  • Drop redundant per-location usage query in LocationGroupMappingField by @bcordis in #1482
  • Field rendering-style cleanup: fix 3 correctness bugs from #1467 audit by @bcordis in #1485
  • Migrate PopupCodeField/DescriptionFormatField scripts to WebAssetManager by @bcordis in #1486
  • Migrate LocationGroupMappingField's serialisation script to WebAssetManager by @bcordis in #1487
  • Migrate CustomField/ColorPickerField script and style to WebAssetManager by @bcordis in #1488
  • Extract BibleVersionField's business logic to CwmbibleVersionHelper by @bcordis in #1490
  • Correct CwmcpanelController's base class to BaseController by @bcordis in #1491
  • fix: move CwmadminController's legacy AJAX SQL into CwmadminModel by @bcordis in #1493
  • fix: move CwmmessageController's topic tag-sync into CwmmessageModel by @bcordis in #1494
  • fix: harden CwmaiHelper AI Assist error handling against Gemini quirks by @bcordis in #1496
  • refactor: extract CwmscriptureController's provider-fallback chain into a helper by @bcordis in #1497
  • refactor: extract CwmpodcastController's HTTP streaming logic into CwmpodcastTrackHelper by @bcordis in #1498
  • refactor: hoist API preprocessSaveData() field-stripping into a shared helper by @bcordis in #1499
  • fix: checkDeleteFiles() 500s on every call; dedupe with CwmmediafilesHelper by @bcordis in #1500
  • fix: controller cleanup nits — legacy by-ref getModel(), duplicated shutdown handler, dead code by @bcordis in #1504
  • feat: episode number auto-fill, duplicate detection, and audit report by @bcordis in #1506
  • fix: cwmseriesdisplays.paginateAjax always 500'd — two distinct root causes by @bcordis in #1507
  • fix: delete-confirm.js sends the wrong CSRF token, silently disabling the warning modal by @bcordis in #1508
  • fix: regenerate podcast RSS feeds when podcast settings are saved by @bcordis in #1510
  • refactor: consolidate 5 duplicate sendJsonResponse() implementations into a shared trait by @bcordis in #1511
  • chore: enable phpdoc_scalar and normalize long-form scalar types in PHPDoc by @bcordis in #1512
  • fix: changePlayerByMediaTypeXHR() reads mediatype correctly and matches real records by @bcordis in #1514
  • fix: CwmpIconvert PreachIT converter — broken redirect message, malformed/mis-escaped JSON, untyped params by @bcordis in #1516
  • chore: bump dev dependencies (globals, rollup) and patch brace-expansion advisory by @bcordis in #1517
  • fix: CwmpIconvert validates PreachIT access codes against #__viewlevels by @bcordis in #1520
  • chore(deps): bump guzzlehttp/guzzle from 7.15.1 to 7.15.2 in /admin/src/Addons/Servers/Youtube by @dependabot[bot] in #1518
  • fix: Cwmbackup validates table names against Proclaim's own tables by @bcordis in #1529
  • fix: Cwmrestore restricts executed statements to Cwmbackup's own SQL shapes by @bcordis in #1530
  • fix: Cwmassets nested-set drift on parent-reparent and N+1 in status query by @bcordis in #1531
  • fix: Cwmrestore reads backuprestore via getCmd(), not getWord() by @bcordis in #1532
  • fix: Cwmssconvert stops double-escaping bios and fixes crosswalk overwrite by @bcordis in #1533
  • fix: Cwmbackup streams exportdb() in chunks instead of buffering the dump by @bcordis in #1534
  • fix: remove dead Cwmstats::getTopScoreSite() method by @bcordis in #1535
  • fix: CwmpIconvert book-number mapping and 8 other logic bugs by @bcordis in #1536
  • fix: CwmImageMigration path traversal and 2 efficiency bugs by @bcordis in #1543
  • fix: CwmmigrationHelper batch-skip, junction-row orphaning, TOCTOU doc by @bcordis in #1544
  • fix: CwmcsvimportHelper access-control bypass, date-parsing corruption by @bcordis in #1545
  • fix: CwmupgradeHelper drops live table, cleanup runs on failed upgrade, guided-tour errors hidden by @bcordis in #1546
  • fix: CwmserverMigrationHelper external-host filename corruption, legacy-ID precedence by @bcordis in #1547
  • fix: CwmtemplatemigrationHelper rename clobbers new params, rowspan cleanup skipped by @bcordis in #1548
  • fix: CwmyoutubeQuota fail-open write failures, TOCTOU lost-update race, DST-unsafe reset by @bcordis in #1554
  • fix: CwmyoutubeFileCache public cache dir has no access control, silent write failures, torn reads by @bcordis in #1555
  • fix: CwmpodcastTrackHelper proxy drops Location header, Host-header-based misrouting by @bcordis in #1556
  • fix: CwmaiHelper Gemini API key leak, silent failure masking, JSON extraction fragility by @bcordis in #1557
  • fix: CwmplaylistSyncHelper fatal-flag write-back stop, logger fail-open, quota/upgrade-helper fixes (#1553) by @bcordis in #1559
  • fix: multi-campus location filtering fatal-on-enable + fail-open bypass (#1561) by @bcordis in #1592
  • fix: CwmschemaorgHelper stored XSS, Smart Sync hash mismatch, divergent sync builders by @bcordis in #1593
  • fix: CwmImageCleanup path traversal, TOCTOU races, false-positive orphan detection by @bcordis in #1594
  • test: trim tautological/vacuous/duplicate tests, consolidate copy-paste files by @bcordis in #1595
  • test: correctness pass — fix tests that stayed green when guarded behavior broke by @bcordis in #1596
  • test: seed fixtures so CI-vacuous integration tests exercise their real branches by @bcordis in #1597
  • build: raise Node floor and CI runners to 24 (active LTS; 20 is EOL) by @bcordis in #1598
  • fix: Cwmuploadscript upload() unreachable via type mismatch, Legal Extensions ignored by @bcordis in #1600
  • fix: restrict cwmmediafile.xhr to an addon allow-list and require edit/create by @bcordis in #1601
  • fix: Cwmalias backfill assigned duplicate aliases, serving the wrong record by @bcordis in #1602
  • fix: CwmdbHelper execute() bool contract and unanchored table allow-list match by @bcordis in #1603
  • fix: Cwmparams fatal on corrupt component params and on a missing admin row by @bcordis in #1604
  • fix: correct corrupted Genesis verse-count table in BibleStructure by @bcordis in #1605
  • fix: CwmDebug SQL buffer reachable by anonymous visitors; guard logger calls by @bcordis in #1606
  • fix: Cwmthumbnail delete-before-write, unchecked encodes, missing resize allow-list by @bcordis in #1607
  • fix: CwmanalyticsHelper w-domain corruption, rollup atomicity, and purge safety by @bcordis in #1610
  • fix: honour Global Privacy Control, gate outbound clicks on consent by @bcordis in #1614
  • fix: make topic associations atomic, unique and cascade-deleted by @bcordis in #1620
  • fix: spellcheck addon language files — "Protocl" has been shipping since 2022 by @bcordis in #1615
  • fix: stop overwriting admin-edited guided tours on every update by @bcordis in #1618
  • fix: make scripture reference saving atomic by @bcordis in #1619
  • fix: make teacher associations atomic by @bcordis in #1621
  • fix: Cwmhelper fatal on null params, missed streaming skip, CLI warning by @bcordis in #1624
  • fix: stop one corrupted thumbnail crashing the public podcast list by @bcordis in #1625
  • fix: keep the extension on filenames containing # or ? by @bcordis in #1628
  • fix: survive valid-JSON-wrong-shape params in description building by @bcordis in #1630
  • fix: validate the whole body of an uploaded WebVTT file by @bcordis in #1631
  • fix: read each page's own filters instead of the sermons list's by @bcordis in #1632
  • fix: make action logging actually fail open by @bcordis in #1633
  • fix: key and daily-rotate the analytics session hash by @bcordis in #1616
  • fix: read the Getting Started checklist from the store that holds its settings by @bcordis in #1634
  • fix: stop offering unservable Bible versions in a servable-only field by @bcordis in #1635
  • fix: report failed YouTube log rotation, and keep reading the rotated file by @bcordis in #1636
  • fix: bound outbound HTTP requests that could hang a worker indefinitely by @bcordis in #1637
  • fix: throw a RuntimeException that exists by @bcordis in #1638
  • fix: batch list methods return arrays, and each widget labels itself by @bcordis in #1639
  • fix: stale backup version and 'worning' alert type by @bcordis in #1640
  • fix: make episode numbers unique within a series by @bcordis in #1629
  • ci: bump github/codeql-action from 4.37.3 to 4.37.4 in the actions-minor-and-patch group by @dependabot[bot] in #1489
  • perf: batch and chunk the Schema.org bulk sync (#1562) by @bcordis in #1641
  • fix: make (remote playlist, server) unique and de-dup existing rows (#1560) by @bcordis in #1642
  • fix: follow Joomla's delete flow for teachers (#1622) by @bcordis in #1643
  • fix: make the media display batch apply a whole configuration (#1627) by @bcordis in #1644
  • fix: stop storing referrer query strings, retire the dead retention setting (#1612, #1609) by @bcordis in #1645
  • test: complete the release gate for 10.5.6 and stop reset-testsite leaking rows by @bcordis in #1646
  • fix: YouTube title matching skips the reversed reading (#1591) by @bcordis in #1647
  • fix: the Getting Started podcast step could never appear (#1626) by @bcordis in #1648
  • test: pin scripture rendering before converting the read paths (#1623) by @bcordis in #1649
  • docs: state behaviour in admin/src/Helper docblocks (#1617) by @bcordis in #1650
  • docs: finish the behaviour-first docblock sweep for this repo (#1617) by @bcordis in #1651
  • fix: count only submitted content as awaiting review, gate every cpanel tile by @bcordis in #1652
  • fix: make admin list column sorting work (#1654) by @bcordis in #1655
  • fix: make JSON decode failures observable (#1558 tier A) by @bcordis in #1657
  • fix: stop two JSON fallbacks failing quietly (#1558 tier B) by @bcordis in #1659
  • chore: pin lib_cwmscripture v1.1.9 and scripturelinks v1.2.1 by @bcordis in #1660
  • test: make step 11 check its own precondition (lib_cwmscripture#37) by @bcordis in #1663
  • fix: stop an absent index aborting the update, and get test:release green by @bcordis in #1665

Full Changelog: v10.5.5...v10.5.6