Sync fork with upstream CollectionBuilder-CSV: Apply key accessibility and bug fixes while preserving custom features #227
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR selectively syncs the forschung.stadtgeschichtebasel.ch fork with upstream CollectionBuilder-CSV, applying critical accessibility improvements and bug fixes while preserving all Stadt.Geschichte.Basel custom features.
Background
The fork had diverged significantly from upstream (622 commits behind, 275 files differing) due to extensive customizations including multi-language support, EDTF timeline functionality, geodata visualization, and Stadt.Geschichte.Basel-specific branding. A full merge would have created hundreds of conflicts and risked breaking custom functionality.
Changes Applied
1. Fixed Blank Cloud Items Bug
Problem: Tag clouds could display empty items when metadata fields contained null values.
Solution: Added
| compactfilter in_includes/js/cloud-js.htmlto remove empty values before processing.// Before {% assign new = items | map: c | join: ';' %} // After {% assign new = items | map: c | compact | join: ';' %}2. Improved Accessibility with Correct ARIA Controls
Problem: Download buttons had incorrect
aria-controlsattributes pointing to generic "collapseExample" instead of actual target IDs.Solution: Updated aria-controls to match the actual collapse target IDs for better screen reader navigation.
// Before aria-controls="collapseExample" // After aria-controls="collapseTranscript" aria-controls="collapseTranscript{{ child.objectid }}"3. Enhanced TimelineJS Accessibility
Problem: TimelineJS timeline data lacked alt text for images, reducing accessibility.
Solution: Added alt text fields to
assets/data/timelinejs.jsonusing metadata or fallback values.{ "media": { "url": "...", "alt": {{ item.image_alt_text | default: item.description | default: item.title | jsonify }}, "caption": "..." } }Custom Features Preserved
All Stadt.Geschichte.Basel customizations remain intact:
Strategy & Risk Mitigation
This approach enables the project to benefit from upstream improvements while maintaining the significant investment in custom development that makes this platform unique for historical research data presentation.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.