Changelogο
Changelogο
All notable changes to the PRISM project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]ο
[1.12.0] - 2026-03-08ο
Changedο
Scripts Canonicalization: Reorganized utility scripts into domain folders (
scripts/ci,scripts/data,scripts/dev,scripts/maintenance,scripts/release,scripts/setup) and updated internal docs/examples to canonical paths.Setup Test Script Placement: Moved setup-related test utilities to
scripts/ci/and retained setup-path compatibility wrappers for transition.Procedure Validation Session Source: Session existence checks now rely only on on-disk dataset structure (
sub-*/ses-*).PRISM702is deprecated and retained only for backward compatibility in the issue catalog.
Addedο
Wrapper Retirement Playbook: Added
docs/WRAPPER_CLEANUP_CHECKLIST.mdwith explicit exit criteria, removal sequence, validation commands, and rollback plan for controlled wrapper removal.Scripts Inventory Guide: Added
scripts/README.mdto classify active script domains (build,ci,setup) versusfuture_featureand_archivepaths after cleanup.
Removedο
Legacy Root Script Wrappers: Removed old root-level
scripts/*.py|*.sh|*.bat|*.ps1wrappers and standardized execution on canonical script locations underscripts/{ci,data,dev,maintenance,release,setup}.
[1.11.0] - 2026-02-26ο
Addedο
Examples in Build Distribution: Examples folder now included in PyInstaller bundles for Windows/macOS/Linux distributions. Users get sample datasets immediately upon extraction.
Decimal Separator Support: Enhanced numeric parsing to better support different decimal separators in survey data and participant information across locales.
Fixedο
Settings Management: Corrected last project path and name persistence in application settings.
AND Export Metadata: Fixed date format handling in AND export for better compatibility with external tools.
[1.10.1] - 2026-02-25ο
Fixedο
Logo Display in Executable: Added PRISM logo to
app/static/img/to ensure it displays correctly in bundled Windows executable. The logo now resolves from the bundled static assets rather than requiring parent directory traversal.
[1.10.0] - 2026-02-25ο
Addedο
Survey Customizer β LimeSurvey Survey Settings: New collapsible accordion with three sections for LimeSurvey-specific survey configuration (closes #9):
Text & Messages: Welcome message, end message, end URL, and end URL description with template dropdowns (Standard, Academic, Brief for welcome; Standard, Academic, Brief, Redirect for end message).
Data Policy / Ethics: Enable data policy toggle, policy notice with 5 consent templates (Standard Ethics, GDPR Data Protection, Anonymous Survey, Longitudinal Study, Minimal), policy error message, and checkbox label.
Presentation & Navigation: 14 survey-level settings including progress bar, backward navigation, question index, group info display, question numbering, βno answerβ option, on-screen keyboard, print answers, auto-redirect, and public statistics/graphs.
Survey Customizer β Text Templates: Built-in HTML templates for welcome messages, end messages, and data policy consent text with
[BRACKET]placeholders for easy customization.Template Editor β Language Overview Bar: Shows detected languages, primary language badge, and warning indicator when
Technical.Languagemismatches content. βAdd Languageβ and βRemove Languageβ buttons batch-update all question Descriptions and Levels consistently.Template Editor β Preview Tab: New βPreviewβ tab renders questions as a mock survey form with language switcher. Missing translations highlighted with warning styling. Shows Reversed/Required badges and response options (radio buttons or text input).
Language Consistency Validation: Backend
_validate_language_consistency()detects fake translations (identical content across languages), inconsistent language keys across items,Technical.Languagevs content key mismatches, and complementary/disjoint language sets. All warnings shown during template validation without blocking saves.
Fixedο
Template Editor β Global Template Access: Fixed
initializeLibraryPath()incorrectly setting the library path to project directory, which causedrefreshTemplateList()to use the non-merged API and hide global templates. Now uses merged API when a project is active, showing both[Global]and[Project]templates.
[1.9.2] - 2026-02-05ο
Securityο
MD5 Hash Security: Fixed all MD5 hash usage by adding
usedforsecurity=Falseparameter (HIGH severity - Bandit B324). MD5 is only used for generating short identifier suffixes, not for cryptographic purposes.XML Parsing Vulnerability: Replaced insecure
xml.etree.ElementTreewithdefusedxmlto protect against XML bomb attacks (MEDIUM severity - Bandit B314, B405, B408, B318).Code Injection Prevention: Added explicit
# nosec B307annotations to sandboxedeval()calls that use restricted SAFE_GLOBALS dictionary for formula evaluation in survey recipes.
Changedο
Security Documentation: Added clarifying comments for temp directory usage patterns to document that they are read-only validation operations.
Fixedο
Import Safety: Updated XML imports in pavlovia.py, limesurvey_exporter.py, and prism_to_limesurvey.py to use defusedxml with safe fallbacks.
Code Quality: Applied Black formatting and Ruff linting fixes across codebase.
[1.9.1] - 2026-01-21ο
Fixedο
Windows Stability: Additional Windows-specific stability improvements and bug fixes.
[1.9.0] - 2026-01-21ο
Addedο
Cross-Platform: Native folder picker for Windows and Linux using tkinter with graceful fallbacks.
Windows Support: Platform-specific browser launching with Windows fallback (cmd /c start).
Logging: Comprehensive logging system for compiled Windows builds (prism_studio.log in user home directory).
Windows UI: Startup notification dialog showing application URL when browser doesnβt auto-launch.
Code Signing: Integrated free SignPath.io code signing for Windows executables in GitHub Actions.
Path Handling: Added Windows-specific temp path recognition in error messages.
Error Feedback: Enhanced error alerts for failed folder picker operations in all templates.
Documentation: Added comprehensive cross-platform development guides (CROSS_PLATFORM.md, DEVELOPING_FOR_WINDOWS_ON_MACOS.md, CODE_SIGNING_SETUP.md).
Setup Scripts: Added tkinter availability checks with installation instructions in setup.ps1 and setup.sh.
Changedο
Folder Picker: Improved platform detection and error handling in /api/browse-folder endpoint.
Windows Compatibility: All templates (projects.html, recipes.html, survey_generator.html, converter.html) now show error messages when folder picker fails.
Build Workflow: GitHub Actions now automatically signs Windows executables when SignPath credentials are configured.
Fixedο
Windows Paths: Removed all hardcoded Unix paths (/Users/karl/work/) from codebase.
Temp Paths: Fixed Windows temp directory patterns in path_utils.py (\Temp, \AppData, C:\Users).
Browser Launch: Fixed browser not opening on Windows compiled version.
Silent Errors: Fixed folder picker failing silently without user feedback.
Console Output: Fixed missing console output in Windows compiled builds using log redirection.
Securityο
Code Signing: Windows executables are now digitally signed by trusted CA (SignPath) for IT department compliance.
[1.8.1] - 2026-01-15ο
Fixedο
Build: Fixed PyInstaller
--add-datasyntax error on Unix-based systems.Build: Corrected
--target-architectureflag for macOS Silicon builds.Build: Fixed missing icon source path in build script.
[1.8.0] - 2026-01-15ο
Addedο
Project Tab: Enhanced participants.json management with required field highlighting and star indicators.
NeuroBagel Widget: Improved error handling instructions when the widget cannot be loaded.
CI/CD: Added multi-platform build support for macOS (Intel/Silicon), Linux, and Windows in GitHub Actions.
Conversion: Added file head preview in terminal and logs for TSV/CSV debugging to help diagnose delimiter issues.
Changedο
UI: Removed confusing red error styling for mandatory fields in Project Tab.
Workflow: Updated build pipeline to generate specific artifacts for different architectures.
[1.7.1] - 2026-01-12ο
Addedο
Custom Recipes: Added support for custom recipe folders in survey and biometrics commands.
Project UI: Added dataset description API endpoints and metadata management.
Converter UI: Option to save conversion outputs directly to the project.
Logging: New logging helper for file previews and streamlined log processing in the converter UI.
Changedο
BIDS Compatibility: Enhanced
.bidsignorerules and integrated automatic updates during survey conversion.Refactoring: Updated imports in the web module for improved organization.
Removedο
Examples: Removed outdated example files.
[1.7.0] - 2026-01-12ο
Addedο
Workshop Materials: New PRISM workshop exercises and materials for data conversion, metadata creation, and SPSS export.
Alias Support: Implemented
AliasOfandAliasesresolution in sidecar data and schemas for better handling of redundant definitions.UI Enhancements: Added server shutdown functionality and quit button in the Web UI.
Project Management: Enhanced project selection enforcement and project management workflows.
Changedο
Validation: Enhanced validation logic and reporting for
eyetracking,physiological,func, andeegmodalities.Reporting: Improved dataset statistics and task reporting in summaries.
Architecture: Refactored survey recipes and core code structure for improved maintainability and readability.
Logic: Updated
participants.jsonresolution logic to be more robust across modules.
[1.6.6] - 2026-01-02ο
Changedο
Documentation: Updated ReadTheDocs specifications with new schema keys and features.
Consistency: Synchronized version numbers across all project files (
codemeta.json,CITATION.cff, etc.).
[1.6.5] - 2025-12-25ο
Addedο
Template Editor (Web UI): Create and edit Survey/Biometrics JSON templates with schema-derived field help.
Value-only editing: Keys are fixed; users edit values via form controls (no raw JSON/brackets for typical fields).
Item workflows: Add/select items (questions/metrics), edit per-item fields, validate, and download templates.
[1.6.2] - 2025-12-24ο
Addedο
Biometrics Support: Enhanced biometrics conversion and validation UI.
Methods Boilerplate: Added API endpoint and UI for generating methods boilerplate text.
Internationalization: Enhanced metadata structure for internationalization support.
Build Tools: Added macOS build script and enhanced Windows build version metadata.
Schemas: Added new PRISM schemas and example templates for survey and biometrics.
Changedο
Refactoring: Improved output directory handling and validation for survey and biometrics imports.
Demo Data: Restructured demo dataset paths and related scripts.
[1.6.1] - 2025-12-22ο
Addedο
Survey Generator UI: Added display of response scales (levels), units, and value ranges for items in the Survey Export tool.
Metadata Extraction: Enhanced template info extraction to include item-level metadata (Scale, Units, Min/Max values).
Rebranding: Renamed repository to
prism-studioand updated all internal/external references.
Fixedο
Version Consistency: Synchronized version numbers across
setup.py,src/__init__.py,prism.py, and API endpoints.Documentation: Updated all documentation links and script names to reflect the new
prism-studiobranding.
[1.6.0] - 2025-12-20ο
Addedο
Survey Data Processing (PRISM Studio)ο
Survey import wizard with TSV/CSV/Excel support
Library-based conversion using template JSON schemas
Automatic participant detection from data columns
Value validation against library definitions (min/max/levels)
Missing value handling with configurable strategies
Detailed import logs with row-by-row feedback
Derivatives Systemο
Survey scoring recipes in JSON format (
derivatives/surveys/*.json)Reverse coding support for inverted items
Subscale computation (sum, mean methods)
Multi-format export: CSV, Excel (with Codebook sheet), SPSS (.save), R/Feather
Rich metadata in exports: Variable labels, value labels, score details
Codebook generation: JSON and TSV codebooks with full documentation
Participant variables merge: Age, sex, education included in derivatives
PRISM Naming Conventionsο
Strict suffix validation for survey (
_survey) and biometrics (_biometrics)Physio and eyetrack suffixes added to BIDS regex
Task-based sidecar naming (
task-<name>_survey.json)
Structured Issue Systemο
PRISM error codes (PRISM001-PRISM9xx) with severity levels and categories
Error categories: dataset structure, file naming, sidecar/metadata, schema validation, content validation, BIDS compatibility, plugin errors
Comprehensive
src/issues.pymodule for consistent error reportingUpdated
docs/ERROR_CODES.mdwith complete error code reference
Output Formatsο
JSON output (
--json,--json-pretty) for CI/CD integrationSARIF format (
--format sarif) for GitHub Code ScanningJUnit XML (
--format junit) for test runnersMarkdown (
--format markdown) for documentationCSV export (
--format csv) for spreadsheet analysisOutput file redirection (
-o,--output)
Auto-Fix Systemο
Automatic fixing of common issues (
--fix)Dry-run mode (
--dry-run) to preview fixesFixable issues: missing dataset_description.json, missing sidecars, .bidsignore updates
List all fixable issues (
--list-fixes)
Plugin Systemο
Custom validators via Python plugins in
<dataset>/validators/Plugin template generator (
--init-plugin <name>)Plugin discovery and loading (
--list-plugins)Plugin disable flag (
--no-plugins)Context-aware API with access to files, subjects, modalities
REST APIο
Blueprint-based API at
/api/v1/Endpoints:
/health,/schemas,/schemas/<version>,/validateJSON request/response format
Async validation with progress tracking
New Schemasο
Physiological (physio) schema: ECG, EDA, respiration, PPG, EMG support
Eyetracking schema: gaze tracking, fixations, saccades
Survey Libraryο
Bilingual survey templates (German + English in single JSON)
i18n system for compile-time language selection
Surveys: PHQ-9, GAD-7, PSS-10, WHO-5, Rosenberg, MAIA, PSQI, BDI, DANCEQ, HFerst, GoldDSI
Migration tools:
prism_tools.py survey i18n-migrateandi18n-build
Project Configurationο
.prismrc.jsonproject config file supportSettings: default schema version, output format, strict mode, ignored patterns
Per-dataset configuration
Testingο
pytest unit tests covering core functionality
Test coverage for issues, validators, config, formatters
Demo folder used for integration testing
Web Interface Enhancementsο
Derivatives page with terminal output log
Progress tracking with percentage and current file
Navbar links to Derivatives and ReadTheDocs
Server-Sent Events for real-time updates
API blueprint integration
Changedο
Renamed entry script to
prism-studio.pyCLI now uses structured error codes instead of free-form messages
Validation results include severity levels (error, warning, info)
Improved error messages with fix hints
Fixedο
Fixed
.gitignoreto properly track test filesFixed modality patterns to include JSON sidecars for physio/eyetrack
Fixed BIDS regex to accept physio, eyetrack, events suffixes
1.0.0 - 2025-10-09ο
Added - Major Release πο
This is the first major release of PRISM with comprehensive features for validating psychological research datasets.
Schema Versioning Systemο
Docker-like schema versioning (
stable,v0.1, etc.)--schema-versionCLI flag to specify validation schema version--list-versionscommand to display available schema versionsSchema version selector in web interface (dropdown menu)
Version information included in all validation results
Automatic version normalization (supports both
0.1andv0.1formats)Default to
stableversion when not specifiedComprehensive documentation for schema versioning
Web Interface Improvementsο
Schema version dropdown in upload form
Schema version selector for local folder validation
Updated results page to display schema version used
Improved logo display with correct aspect ratio
Enhanced user experience with clear version selection
Core Featuresο
Multi-modal validation support (image, movie, audio, EEG, eye-tracking, behavior, physiological)
BIDS-inspired filename validation
JSON schema validation for metadata files
Cross-subject consistency checking
Comprehensive validation reports
Support for session-based and direct subject organization
Local folder validation (no upload required)
DataLad-style upload (metadata only, placeholders for large files)
Documentationο
Added
SCHEMA_VERSIONING_GUIDE.md- Complete user guideAdded
SCHEMA_VERSIONING_IMPLEMENTATION.md- Technical detailsAdded
SCHEMA_VERSIONING_QUICKREF.md- Quick referenceAdded
SCHEMA_VERSIONING_COMPLETE.md- Implementation summaryAdded
SCHEMA_VERSIONING_CHECKLIST.md- Development checklistAdded
SCHEMA_VERSIONING_VISUAL.md- Visual documentationUpdated README.md with versioning information
Infrastructureο
Created
schemas/stable/directory for stable schema versionCreated
schemas/v0.1/directory for version 0.1Enhanced
schema_manager.pywith version-aware loadingUpdated
runner.pyto support schema version parameterImproved web interface validation workflow
Changedο
Updated main validator to accept
schema_versionparameterModified web interface to pass schema version through validation pipeline
Enhanced templates with schema version UI elements
Updated README with new features and examples
Technical Detailsο
Python 3.10+ compatible
Flask-based web interface
JSON Schema validation
Cross-platform support (Windows, macOS, Linux)
Zero-dependency validation core
Migration Guideο
For existing users:
No breaking changes - all existing code continues to work
Default behavior uses
stableschema versionExplicitly specify version only if needed for specific use cases
See
docs/SCHEMA_VERSIONING_GUIDE.mdfor detailed migration instructions
Release Notesο
v1.0.0 Highlightsο
π First Major Release - PRISM is now production-ready!
Key Features:
β Schema versioning system (Docker-like)
β Web interface with schema selection
β Command-line tools with version support
β Comprehensive validation for psychological datasets
β Complete documentation suite
Whatβs Next:
Schema diff utilities
Auto-migration tools
Enhanced modality support
CI/CD integration examples
Acknowledgmentsο
Developed at MRI-Lab Graz, University of Graz
Maintained by Karl Koschutnig
Built for the research community β€οΈ
Linksο
[1.3.0] - 2025-11-28ο
Changedο
Project Rename: Renamed project from
prism-studiotoprism.Repository Restructuring: Moved helper scripts to
helpers/directory.Documentation: Updated all documentation to reflect the new name.