v4.2.0
Overview
This release includes
- Support for time variable fares that was adopted in GTFS in July 2023
- A new summary section of the validation report, including tags to see if a feed has GTFS components like Blocks, Frequencies, or Fares v2
- Automatic generation of the RULES documentation on https://gtfs-validator.mobilitydata.org/rules.html
- New releases published to Maven
New notices
- invalid_input_files_in_subfolder 🔴 ERROR, added to the spec in google/transit#379
- trip_distance_exceeds_shape_distance 🔴 ERROR, added to the spec in google/transit#380
- missing_bike_allowance 🟠WARNING, added to best practices in MobilityData/GTFS_Schedule_Best-Practices#55
- missing_feed_contact_email_and_url 🟠WARNING
- unused_parent_station ⚪ INFO
Notices for Fares v2 - time variable fares, added to the spec in google/transit#357
- timeframe_overlap 🔴 ERROR
- timeframe_only_start_or_end_time_specified 🔴 ERROR
- timeframe_start_or_end_time_greater_than_twenty_four_hours 🔴 ERROR
Changed notices
- Downgraded platform_without_parent_station 🟠WARNING → ⚪ INFO
- Replaced missing_timepoint_column 🟠WARNING → missing_recommended_column 🟠WARNING
Impacts on existing data
You can find the impact of this release on all existing datasets we have in the Mobility database in this spreadsheet.
Full Changelog: v4.1.0...v4.2.0
New Contributors
- @mijogu made their first contribution in #1396
- @ryon made their first contribution in #1397
- @jcpitre made their first contribution in #1439
- @lottspot made their first contribution in #1453
- @cka-y made their first contribution in #1469
- @qcdyx made their first contribution in #1492
- @bradyhunsaker made their first contribution in #1493
- @Whoops made their first contribution in #1519
- @emmambd made their first contribution in #1550
- @1Maxnet1 made their first contribution in #1546
- @fredericsimard made their first contribution in #1558
What's Changed
Rules
- fix: Downgraded platform_without_parent_station notice to info by @jcpitre in #1444
- feat: Add a rule that stations (location_type 1) must be the parent_station of some stop (location_type 0). by @bradyhunsaker in #1493
- feat: Added missing_recommended_column notice by @jcpitre in #1470
- feat: Validation for timeframes.txt by @bdferris-v2 in #1518
- feat: 1423 only warn if feed contact email or url are both unset by @qcdyx in #1514
- feat: validator for ferry trips + bikes allowance by @cka-y in #1510
- feat: 1504 add new error if a gtfs dataset has gtfs files in sub folders by @qcdyx in #1535
- feat: trip vs shape distance validation by @cka-y in #1553
- fix: comments on #1587 by @cka-y in #1592
Bug fixes
- fix: Fix typo in TimeframeOverlapNotice class name by @bdferris-v2 in #1569
- Fix: typo in config.yml by @isabelle-dr in #1435
- feat: 1532 support mac created zip files by @qcdyx in #1543
- fix: Mixed Case false positives by @briandonahue in #1430
- fix: don't throw exception on calendar with no days by @Whoops in #1519
- fix: Update the "Help" menu with current command line parameters#1116 by @cka-y in #1502
- fix: Package installers CI step failing by @davidgamez in #1568
- Fix for deprecated of
set-output
in GH actions by @fredericsimard in #1571 - bug: initialized tooltip in the report.html by @qcdyx in #1581
- fix: Remove triage action & add exclude paths by @fredericsimard in #1576
- fix: fix OutOfBoundsException when agency.txt is missing in the input data… by @qcdyx in #1551
- Fix: Restore missing CSS by @briandonahue in #1457
- fix: Modified to accept mime type encountered on Windows by @jcpitre in #1439
- fix: Web Validator hangs after supplying non-zip URL #1445 by @cka-y in #1481
- fix: Web validator allows non-zip files to be uploaded #1440 by @cka-y in #1482
New summary section of report
- feat: Add metadata to report by @briandonahue in #1389
- fix: Bug in HTML report generation where feed metadata can be null by @bdferris-v2 in #1451
- feat: Added route names component by @cka-y in #1469
- Issue/1463 by @cka-y in #1471
- feat: 1465 add a route colors gtfs component by @qcdyx in #1492
- feat: 1466 add a transfers gtfs component by @qcdyx in #1501
- feat: Provide an explanation to users about what a GTFS Component is #1505 by @cka-y in #1512
- feat: added rest of GTFS components by @cka-y in #1516
- feat: Add overview section to the Json report by @jcpitre in #1531
Generate documentation automatically
- fix: Refactor MainTest to avoid stubbing System.exit() by @bdferris-v2 in #1410
- feat: Add @GtfsValidationNotice annotations to all notice classes by @bdferris-v2 in #1366
- feat: Add unit-test check for @GtfsValidationNotice annotation and notices that I missed by @bdferris-v2 in #1413
- feat: Include section references in the notice output schema. by @bdferris-v2 in #1416
- feat: Add Notice documentation header check. by @bdferris-v2 in #1422
- feat: Change Notice field comment format and unit-test to enforce they exist by @bdferris-v2 in #1421
- Fix: Switch javadoc aggregation plugin to non-jar version. by @bdferris-v2 in #1432
- feat: Add a few missing "Affected files" references by @bdferris-v2 in #1427
- fix: Use correct import for @nullable annotation. by @bdferris-v2 in #1438
- Feat: Bulk update Notice Javadoc to include content from RULES.md. by @bdferris-v2 in #1428
- feat: Add documentation update + unit-test for new notice doc conventions. by @bdferris-v2 in #1429
- feat: Split the notice doc comment into a short summary string and additional documentation. by @bdferris-v2 in #1452
- feat: Additional test to enforce documentation comment conventions by @bdferris-v2 in #1450
- Fix: bug in Notice documentation comment splitting. by @bdferris-v2 in #1479
- feat: Resolve notice severity level from @GtfsValidationNotice annotation. by @bdferris-v2 in #1475
- Feat: Remove SeverityLevel from ValidationNotice constructor by @bdferris-v2 in #1489
- feat: Remove unit-test that RULES.md is up-to-date with Notice classes. by @bdferris-v2 in #1517
- Remove unit-test that RULES.md is up-to-date with Notice classes by @qcdyx in #1522
Web-based validator improvements
- feat: integrate Cypress for E2E testing by @mijogu in #1396
- chore: ignore web packages on acceptance and e2e tests by @davidgamez in #1403
- feat: report link sharing by @ryon in #1397
- feat: Web Validator Service Tests by @briandonahue in #1375
- feat: add Cypress tests for error messaging by @mijogu in #1405
- feat: add google analytics by @ryon in #1407
- docs(web-client): update local dev instructions by @KClough in #1408
- feat: web pipeline by @briandonahue in #1406
- docs(web-service): update readme with local dev guidance by @KClough in #1414
- feat: use sentry spring-boot by @KClough in #1415
- docs: Update README.md with open api spec by @KClough in #1418
- fix(web/service): change permissions for application.properties, service acount json, & newrelic.yml by @lottspot in #1453
- refactor: remove web merge actions by @lottspot in #1497
- feat: generate rules page from json file by @KClough in #1508
- refactor(ci): rename cypress workflow to be consistent by @themightychris in #1490
For developers: Ability to change "required" status of GTFS files/tables at run-time instead of compile time
- feat: Make GtfsTableDescriptor.required a mutable property by @bdferris-v2 in #1566
- feat: Add method to GtfsFeedLoader to access GtfsTableDescriptors. by @bdferris-v2 in #1573
Report improvements
- HTML Report, limit records displayed by @briandonahue in #1433
- feat: Add notice descriptions to HTML report by @briandonahue in #1447
- feat: add stop_id to the decreasing_or_equal_stop_time_distance notice by @cka-y in #1554
- fix: Use csvRowNumber in MissingFeedContactEmailAndUrlNotice for consistency with other notices by @bdferris-v2 in #1572
- fix: Add back support for @GtfsTable.maxCharsPerColumn. by @bdferris-v2 in #1462
- feat: 1425 output fieldname of missing recommended field notice even if there is no column by @qcdyx in #1511
Documentation updates
- Fix: Update slack links by @isabelle-dr in #1426
- Fix: Add reference routes.txt Best Practices by @isabelle-dr in #1424
- fix: correct typo for export notices schema flag by @KClough in #1449
- Fix: Update slack channel link by @isabelle-dr in #1495
- Add david as core developer and steering commitee CONTRIBUTING.md by @isabelle-dr in #1498
- docs: Update core developers list by @emmambd in #1550
- docs: Fix Link in README.md by @1Maxnet1 in #1546
Maintenance
- Docs: Update NOTICE_MIGRATION.md by @isabelle-dr in #1379
- build(deps-dev): bump @sveltejs/kit from 1.7.2 to 1.15.1 in /web/client by @dependabot in #1376
- feat: deploy web app to staging environment by @lottspot in #1560
- feat: 1520 gtfs validator desktop app deprecation by @qcdyx in #1555
- build(deps): bump requests from 2.26.0 to 2.31.0 in /scripts/mobility-database-harvester by @dependabot in #1443
- feat: Conditionally run more multi-file validators if their dependencies don't have parse errors by @bdferris-v2 in #1496
- fix: report.json doesn't include details of parsing failures by @cka-y in #1526
- fix: Forced java version to 17.0.7 in github action by @jcpitre in #1541
- chore: add local Spring Boot profile by @davidgamez in #1545
- feat: Automate generation of release artifacts by @cka-y in #1529
- feat: Automation of the update of the NOTICE_MIGRATION.md on releases by @cka-y in #1530
- feat: 1537 get list of validators that couldnt run because of a parsing problem by @qcdyx in #1565
- Updated actions/setup-node action to v3.8.1 to use node 16 by @fredericsimard in #1577
- Corrected a problem with the acceptance test action. by @jcpitre in #1583
- feat: Resolve release version from new /version endpoint. by @bdferris-v2 in #1586
- feat: 1588 publish to maven central by @jcpitre in #1596