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.
This release consolidates the frontend structural-assessment hardening work, expands export privacy protections, and tightens release-readiness validation.
- Specifications UI Harmonization: Migrated the Specifications page to shared page-header/help-panel primitives and retained project-bound derivative-link wiring behavior with focused regression assertions.
- Analysis Outputs UI Harmonization: Migrated the Analysis Outputs (Recipes) page to shared page-header/help-panel primitives and added focused wiring assertions while keeping project-bound API fallback behavior unchanged.
- Validation Results UI Harmonization: Migrated the Validation Results page to shared page-header/help-panel primitives and added focused validator wiring assertions.
- Projects UI Harmonization: Migrated the Projects page to shared page-header/help-panel primitives while preserving preliminary-state and beginner-help workflows.
- Validator Landing UI Harmonization: Migrated the Dataset Validation landing page to shared page-header/section-card/help-panel primitives while preserving validation target and progress wiring.
- Converter UI Harmonization: Migrated the Converter page to shared page-header/help-panel primitives and added focused converter template wiring assertions.
- Survey Library UI Harmonization: Migrated the Survey Library page to shared page-header/help-panel primitives and added focused library workflow wiring assertions.
- Shared Help-Panel Coverage Guard: Added a regression test that enforces shared help-panel macro imports across harmonized top-level templates.
- Workflow Wiring Test Realignment: Updated stale frontend wiring assertions to match the current module split (projects selection/open/bootstrap and converter log-renderer), restoring broad wiring-suite green status.
- Library Action Wiring Consolidation: Moved Survey Library action handlers from inline template JavaScript to
static/js/library.jsand wired requests through shared relative-path API fallback behavior. - Frontend Assessment Phase Pivot: Marked UI harmonization tranche complete in roadmap tracking and started Projects page structural assessment checkpoint documentation (Phase 1.2).
- Validator Assessment Kickoff: Started Phase 1.3 validator structural assessment documentation, including backend command ownership mapping, stability findings, and remediation slice acceptance criteria.
- Results Assessment Kickoff: Started Phase 1.4 results structural assessment documentation, including re-validation progress lifecycle findings and result-action state hardening slices.
- Template Editor Assessment Kickoff: Started Phase 2.1 template editor structural assessment documentation, including project-context race guardrails and safe-save/import contract slices.
- Recipe Builder Assessment Kickoff: Started Phase 2.2 recipe builder structural assessment documentation, including async stale-load guardrails and recipe save/compatibility contract slices.
- Survey Customizer Assessment Kickoff: Started Phase 2.3 survey customizer structural assessment documentation, including session-state hydration safeguards and project-bound export-copy guardrails.
- Survey Generator Assessment Kickoff: Started Phase 2.4 survey generator structural assessment documentation, including merged-library reload guardrails and customizer handoff payload contract slices.
- File Management Assessment Kickoff: Started Phase 2.5 file management structural assessment documentation, including multi-tool state isolation guardrails and preview-then-apply contract slices.
- JSON Editor Assessment Kickoff: Started Phase 3.1 JSON editor structural assessment documentation, including project-root sync safeguards and local-vs-project persistence contract slices.
- Neurobagel Workflow Assessment Kickoff: Started Phase 3.2 neurobagel workflow structural assessment documentation, including duplicate fetch ownership guardrails and preview-vs-saved schema state precedence slices.
- Library and Library Editor Assessment Kickoff: Started Phase 3.3 library/editor structural assessment documentation, including inline-editor fetch ownership guardrails and advanced JSON runtime dependency slices.
- Specifications Assessment Kickoff: Started Phase 3.4 specifications structural assessment documentation, including derivative-link state guardrails and route ownership consolidation slices.
- PRISM App Runner Assessment Kickoff: Started Phase 3.5 PRISM App Runner structural assessment documentation, including disabled-state contract guardrails and runner-control drift remediation slices.
- Home Page Assessment Kickoff: Started Phase 3.6 home-page structural assessment documentation, including route-policy guardrails and include-composition integrity slices.
- Shared Module Assessment Kickoff: Started Phase 4.1 shared-module structural assessment documentation, including API fallback policy, project-state precedence, and bounded polling contract slices.
- Phase-Boundary Smoke Sweep Complete: Executed consolidated post-checkpoint smoke validation across completed assessment suites (54 passed) and recorded baseline continuity in roadmap/tracker artifacts.
- Neurobagel Fetch Ownership Unification: Updated Neurobagel widget participant loading to use shared API fallback wiring and prevented global helper overwrite collisions in mixed runtime loading paths.
- Library Editor Module Extraction: Replaced inline Library Editor runtime script with
app/static/js/library_editor.jsand routed draft-save requests through shared relative-path API fallback wiring. - Library Editor Advanced-Mode Graceful Degrade: Added explicit fallback behavior when JSONEditor CDN assets are unavailable (visible warning + disabled Advanced JSON tab) while preserving simple-mode save flow.
- PRISM App Runner Stale-Control Cleanup: Removed stale/non-rendered image-scan control branches from app-runner frontend wiring and tightened browse-kind handling with dedicated regression assertions.
- PRISM App Runner Disabled-State Frontend Guarding: Added explicit frontend disabled-state guards (including startup profile-fetch suppression) so UI runtime behavior stays aligned with disabled HTML/API contracts.
- Shared Module Contract Coverage Hardening: Added focused shared-module wiring coverage for API fallback policy, project-state precedence, and job-polling retry/timeout/abort bounds.
- Validator/Results Abortable Polling Hardening: Added explicit abortable polling session contracts for validator and re-validation progress loops to prevent stale overlapping updates across reconnect/navigation edges.
- Validator Target/Request Assembly Consolidation: Added canonical validator request-option resolvers and shared form-data assembly helpers across current-project, server-folder, and upload validation starts.
- Results Action-State Contract Hardening: Added logic-level result-action lock guards (click/keyboard prevention) so interaction blocking is enforced independently of CSS pointer styling.
- Recipe Export Regression Repair: Fixed backend recipe export contracts for merge-all score prefixing, participant-column propagation in per-recipe/combined outputs, and SAV sociodemographic measure/type handling.
- Phase-Boundary Coverage Closeout: Restored full-suite green state after Priority 1.36 remediation tranche closeout (
./rtk coverage: 2206 passed, 3 skipped). - Export Privacy Hardening (Priority 3 Slice A): Added export-time MRI sidecar sensitive-tag scrubbing plus
.nii.gzGZIP header normalization (clearedMTIME/FNAME) and wired this behavior through the projects export scrub option. - Export Privacy Regression Coverage Expansion: Added focused export tests for root-level
.nii.gzheader cleaning and explicit no-clean behavior to protect header-preservation defaults. - Defacing Confirmation Lifecycle Coverage: Added an integration test that validates global default, project override, and reset-to-inherited behavior across the public export settings and project-preferences APIs.
This release focuses on workflow reliability across project open/validate flows, state continuity between pages, and clearer user feedback in everyday operations. It also expands conversion/export capabilities and strengthens packaged runtime confidence.
- Project-Open Safety Net: Added validate-on-load routing for explicit and recent project open actions, plus clearer no-project guidance on tool pages.
- Cleaner Data and Template Operations: Added file-management delete support with preview/filtering controls and template-editor item deletion support.
- Broader Export and Survey Coverage: Added project export output-folder preferences, project-structure filtering controls, defacing/MRI JSON scrub reporting, and structured survey modality handling.
- Interop and Runtime Confidence: Added modality-aware BIDS entity rewriting support and expanded smoke/runtime capability checks for packaged flows.
- One Project Context Across Tools: Standardized explicit project-path targeting and API fallback behavior across converter, survey export/customizer, JSON editor, specifications, file management, recipe builder, and related handlers.
- More Predictable Project Lifecycle UX: Projects page now preserves active project context by default, while open-project flows validate earlier and communicate status more clearly.
- Stale-Asset Prevention: Added static asset version tokens and no-store static response headers to prevent stale JS/CSS after updates.
- Sharper Validation Readability: Improved mode-specific validation wiring (BIDS/PRISM), issue grouping, modality handling, and runner warning clarity in result/reporting flows.
- Resume Mismatch Guardrails: Fixed stale validation resume state by enforcing target-context compatibility before auto-resume and clearing incompatible payloads.
- Recent Project Robustness: Fixed transient recent-project API failure handling to avoid over-pruning valid recent entries.
- Session Registration Visibility: Fixed silent converter session-registration failures by surfacing warnings to UI logs/events.
- Handler Input Safety: Fixed several null/invalid JSON payload and project-path edge cases across web handlers and action routes.
- Windows Build UX Alignment: Fixed local Windows build helper output guidance to reference
PrismStudiopaths/executable names.
- Project Runtime Capability Checks: Added runtime capability endpoint coverage for project selection checks, including explicit pyreadstat support detection in packaged app smoke probes.
- PRISMMETA Code Mapping in Import: Added embedded PRISMMETA CodeMap support in the import pipeline for reversible LimeSurvey code sanitization and improved template matching.
- Project Save UX and Search APIs: Added top action buttons, project save/status updates, recruitment location search wiring, and improved folder browsing/file picker behavior.
- Metadata Save and Validation Flow: Refined preliminary save behavior for incomplete metadata, participant validation rules, and project creation flow feedback.
- Template and Conversion Wiring: Improved template-version override persistence, shared participant-ID selection helpers, and recipe output labeling for analysis exports.
- Release Artifact Naming: Standardized internal release artifact naming and upload conventions across Windows, macOS, and Linux build jobs.
- Projects Accessibility and Error Safety: Escaped user-facing HTML in feedback surfaces and improved keyboard access on collapsible project UI controls.
- Validation Initialization: Restored required-field validation styling and explicit initialization paths in project validation front-end wiring.
- Repository Hygiene: Removed outdated example import Excel files and reorganized documentation for clearer release-facing structure.
- Survey Versioning Workflows: Added multi-version survey detection, normalization, persistence, and selection across project registration, conversion, and template handling.
- Run-Aware Survey Conversion: Added run-entity support across survey conversion and wide-to-long workflows, including alphanumeric run handling and improved output naming.
- Recipe Builder Expansion: Added recipe builder coverage checks, global library inclusion, richer item metadata, export anonymization, and minimum-valid score handling.
- LimeSurvey Tooling: Added questionnaire preview improvements, Word export, separate system-variable outputs, and stronger multi-version import handling.
- Release Smoke Coverage: Added packaged app smoke tests and endpoint probes to tagged build workflows.
- Dedicated Terminal Behavior: Refactored dedicated terminal relaunch logic into safer helpers and changed the dedicated startup terminal default to opt-in.
- Participants and Metadata Handling: Improved participant ID normalization, preview behavior, output shaping, and metadata handling across conversion flows.
- Documentation Coverage: Expanded beginner-help, import, and LimeSurvey workflow documentation with clearer step-by-step guidance and updated screenshots.
- Startup and Port Reliability: Fixed Windows packaged startup/relaunch edge cases, dedicated terminal recursion guards, and PRISM Studio port conflict handling.
- LimeSurvey Compatibility: Fixed LimeSurvey 6.x import parsing, system column detection, template fallback behavior, and run-suffix matching.
- Conversion and Export Edge Cases: Fixed SPSS export naming/sanitization, survey template encoding issues, and several survey/participants conversion edge cases.
- UI and Release Robustness: Fixed toolbar/search alignment issues and strengthened packaged web app endpoint availability checks.
- Windows Packaged Startup Reliability: Replaced fragile nested
cmd /c start ... cmd /k ...relaunch with a safercmd.exe /kcommand path and explicit environment handoff, preventing malformed command execution on paths with spaces/parentheses. - Windows Relaunch Guarding: Enforced no-relaunch guard argument injection (
--no-dedicated-terminal) in relaunch command generation to prevent terminal recursion. - Settings Surface for Terminal Launch: Added dedicated terminal setting API and Projects -> Global Settings toggle so users can switch behavior without CLI flags.
- Wide-to-Long Conversion: Added CLI-backed wide-to-long conversion with exact session indicator matching for longitudinal survey exports.
- macOS First Launch Helpers: Added
Prism Studio Installer.appandOpen Prism Studio.commandto macOS release bundles to handle quarantine and first-launch friction more reliably. - Release Awareness in UI: Added latest GitHub release detection and update availability display in the web interface.
- Batch Conversion Cancellation: Added cancellation support for environment and physio batch conversion jobs.
- Homebrew Distribution Support: Added Homebrew cask metadata and checksum update tooling for macOS distribution.
- Dedicated App Launch Terminal: Added dedicated terminal support for application launch flows.
- macOS Release Flow: Clarified installer naming and first-launch documentation for distributed macOS bundles.
- Project Path Normalization: Improved canonical project path handling across app launch and project workflows.
- CI Runtime Compatibility: Updated GitHub Actions runtime settings and action versions used in release workflows.
- Release Artifacts: Corrected build workflow artifact names for generated release assets.
- Neurobagel Annotation: Preserved source level keys without auto-recoding during annotation export.
- Bundle Smoke Tests: Added CI smoke tests for bundled imports to verify packaged application integrity after build.
- Path Resolution Improvements: Enhanced canonical path resolution and user settings handling for packaged app startup.
- Code Maintenance: Refactored application structure for readability and maintainability in packaging-related paths.
- Windows Packaged Startup: Fixed startup import recursion in packaged Windows builds and restored the tools blueprint.
- Participants Conversion: Preserved participant source values by disabling unintended auto-recoding through value mappings.
- Dependencies and Typing: Bumped
pydicomfor security maintenance and resolved mypy issues in conversion handlers.
- Dependency Structure: Restructured requirements into three tiers (
requirements-runtime.txt,requirements-optional.txt,requirements-docs.txt) for cleaner builds and reduced release artifact size. GitHub build workflow now uses runtime-only dependencies, cutting bundle size by ~30-50%. - Recipe Export Formats: Removed R/feather export option (now supporting CSV, XLSX, and SPSS formats only).
- PyInstaller Safeguards: Added explicit exclude directives to prevent optional and documentation packages from being accidentally bundled in release builds.
- Build Efficiency: PyInstaller now consumes runtime-only dependencies, significantly reducing standalone application size on all platforms (Windows, macOS Intel/Apple Silicon, Linux).
- Release Packaging Names: Updated GitHub Actions archive steps to package
PrismStudiooutputs (PrismStudio.app,dist/PrismStudio,dist/PrismStudio.exe) after the app rename fromPrismValidator, restoring successful tagged builds across macOS/Windows/Linux.
- CSV/TSV Manual Separator Control: Added selectable delimiter handling for participant and survey conversion flows in the web interface, including support for comma, semicolon, tab, and pipe.
- Tabular Import Robustness: Improved shared delimiter normalization and parsing flow across conversion endpoints for more reliable CSV/TSV ingestion.
- Intel macOS Release Builds: Stabilized x86_64 builds on
macos-15by adding Rosetta/x86 runtime preparation and explicit Intel execution paths in CI, restoring successful tagged multi-platform release runs.
- Participants Conversion: Expanded participants preview and conversion workflow with support for user-defined columns and richer mapping control.
- Survey Recipes: Improved recipe handling by copying only matched survey recipes and auto-filling required missing fields.
- Participants Conversion Refactor: Removed legacy value-rewrite mapping paths and aligned participants conversion/UI behavior with the updated mapping model.
- CI: Restored Intel macOS release builds on
macos-15by running the x86_64 job under Rosetta with x64 Python while keeping the native Apple Silicon build.
- CI: Dropped Intel macOS build. GitHub retired
macos-13Intel runners anduniversal2is not feasible without fat-binary dependencies. macOS build now produces a native Apple Silicon (arm64) binary onmacos-15.
- CI: Replaced separate Intel/Apple Silicon macOS builds with a single
universal2build onmacos-15. Resolves dylib crash caused by Python 3.10.20 being compiled for macOS 15.7 while running on macOS 14 runners. The universal binary runs natively on both Intel and Apple Silicon.
- CI: Fixed Intel macOS build runner (switched to
macos-14with x64 Python under Rosetta 2); opted into Node.js 24 for all GitHub Actions steps.
- Release Verification Gate: Adjusted test session key setup in project lifecycle handler tests to avoid false-positive secret detection during repository release checks.
- 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.
- 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.
- 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}.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Security Documentation: Added clarifying comments for temp directory usage patterns to document that they are read-only validation operations.
- 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.
- Windows Stability: Additional Windows-specific stability improvements and bug fixes.
- 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.
- 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.
- 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.
- Code Signing: Windows executables are now digitally signed by trusted CA (SignPath) for IT department compliance.
- 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.
- 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.
- UI: Removed confusing red error styling for mandatory fields in Project Tab.
- Workflow: Updated build pipeline to generate specific artifacts for different architectures.
- 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.
- BIDS Compatibility: Enhanced
.bidsignorerules and integrated automatic updates during survey conversion. - Refactoring: Updated imports in the web module for improved organization.
- Examples: Removed outdated example files.
- 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.
- 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.
- Documentation: Updated ReadTheDocs specifications with new schema keys and features.
- Consistency: Synchronized version numbers across all project files (
codemeta.json,CITATION.cff, etc.).
- 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.
- 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.
- Refactoring: Improved output directory handling and validation for survey and biometrics imports.
- Demo Data: Restructured demo dataset paths and related scripts.
- 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.
- 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.
- 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
- 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
- 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)
- 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 reporting - Updated
docs/ERROR_CODES.mdwith complete error code reference
- JSON output (
--json,--json-pretty) for CI/CD integration - SARIF format (
--format sarif) for GitHub Code Scanning - JUnit XML (
--format junit) for test runners - Markdown (
--format markdown) for documentation - CSV export (
--format csv) for spreadsheet analysis - Output file redirection (
-o,--output)
- Automatic fixing of common issues (
--fix) - Dry-run mode (
--dry-run) to preview fixes - Fixable issues: missing dataset_description.json, missing sidecars, .bidsignore updates
- List all fixable issues (
--list-fixes)
- 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
- Blueprint-based API at
/api/v1/ - Endpoints:
/health,/schemas,/schemas/<version>,/validate - JSON request/response format
- Async validation with progress tracking
- Physiological (physio) schema: ECG, EDA, respiration, PPG, EMG support
- Eyetracking schema: gaze tracking, fixations, saccades
- 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
.prismrc.jsonproject config file support- Settings: default schema version, output format, strict mode, ignored patterns
- Per-dataset configuration
- pytest unit tests covering core functionality
- Test coverage for issues, validators, config, formatters
- Demo folder used for integration testing
- 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
- Renamed entry script to
prism-studio.py - CLI 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
.gitignoreto properly track test files - Fixed modality patterns to include JSON sidecars for physio/eyetrack
- Fixed BIDS regex to accept physio, eyetrack, events suffixes
1.0.0 - 2025-10-09
This is the first major release of PRISM with comprehensive features for validating psychological research datasets.
- Docker-like schema versioning (
stable,v0.1, etc.) --schema-versionCLI flag to specify validation schema version--list-versionscommand to display available schema versions- Schema 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 specified - Comprehensive documentation for schema versioning
- 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
- 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)
- Added
SCHEMA_VERSIONING_GUIDE.md- Complete user guide - Added
SCHEMA_VERSIONING_IMPLEMENTATION.md- Technical details - Added
SCHEMA_VERSIONING_QUICKREF.md- Quick reference - Added
SCHEMA_VERSIONING_COMPLETE.md- Implementation summary - Added
SCHEMA_VERSIONING_CHECKLIST.md- Development checklist - Added
SCHEMA_VERSIONING_VISUAL.md- Visual documentation - Updated README.md with versioning information
- Created
schemas/stable/directory for stable schema version - Created
schemas/v0.1/directory for version 0.1 - Enhanced
schema_manager.pywith version-aware loading - Updated
runner.pyto support schema version parameter - Improved web interface validation workflow
- Updated main validator to accept
schema_versionparameter - Modified web interface to pass schema version through validation pipeline
- Enhanced templates with schema version UI elements
- Updated README with new features and examples
- Python 3.10+ compatible
- Flask-based web interface
- JSON Schema validation
- Cross-platform support (Windows, macOS, Linux)
- Zero-dependency validation core
For existing users:
- No breaking changes - all existing code continues to work
- Default behavior uses
stableschema version - Explicitly specify version only if needed for specific use cases
- See
docs/SCHEMA_VERSIONING_GUIDE.mdfor detailed migration instructions
🎉 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
- Developed at MRI-Lab Graz, University of Graz
- Maintained by Karl Koschutnig
- Built for the research community ❤️
- Project Rename: Renamed project from
prism-studiotoprism. - Repository Restructuring: Moved helper scripts to
helpers/directory. - Documentation: Updated all documentation to reflect the new name.