Skip to content

Latest commit

 

History

History
601 lines (465 loc) · 40 KB

File metadata and controls

601 lines (465 loc) · 40 KB

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.15.3] - 2026-05-27

This release consolidates the frontend structural-assessment hardening work, expands export privacy protections, and tightens release-readiness validation.

Changed

  • 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.js and 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.js and 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.gz GZIP header normalization (cleared MTIME/FNAME) and wired this behavior through the projects export scrub option.
  • Export Privacy Regression Coverage Expansion: Added focused export tests for root-level .nii.gz header 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.

[1.15.2] - 2026-04-28

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.

Added

  • 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.

Changed

  • 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.

Fixed

  • 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 PrismStudio paths/executable names.

[1.15.1] - 2026-04-14

Added

  • 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.

Changed

  • 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.

Fixed

  • 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.

[1.15.0] - 2026-04-11

Added

  • 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.

Changed

  • 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.

Fixed

  • 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 safer cmd.exe /k command 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.

[1.14.0] - 2026-03-24

Added

  • 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.app and Open Prism Studio.command to 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.

Changed

  • 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.

Fixed

  • Release Artifacts: Corrected build workflow artifact names for generated release assets.
  • Neurobagel Annotation: Preserved source level keys without auto-recoding during annotation export.

[1.13.1] - 2026-03-23

Added

  • 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.

Changed

  • Code Maintenance: Refactored application structure for readability and maintainability in packaging-related paths.

Fixed

  • 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 pydicom for security maintenance and resolved mypy issues in conversion handlers.

[1.13.0] - 2026-03-20

Changed

  • 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).

Added

  • PyInstaller Safeguards: Added explicit exclude directives to prevent optional and documentation packages from being accidentally bundled in release builds.

Fixed

  • Build Efficiency: PyInstaller now consumes runtime-only dependencies, significantly reducing standalone application size on all platforms (Windows, macOS Intel/Apple Silicon, Linux).

[1.12.8] - 2026-03-17

Fixed

  • Release Packaging Names: Updated GitHub Actions archive steps to package PrismStudio outputs (PrismStudio.app, dist/PrismStudio, dist/PrismStudio.exe) after the app rename from PrismValidator, restoring successful tagged builds across macOS/Windows/Linux.

[1.12.7] - 2026-03-17

Added

  • 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.

Changed

  • Tabular Import Robustness: Improved shared delimiter normalization and parsing flow across conversion endpoints for more reliable CSV/TSV ingestion.

Fixed

  • Intel macOS Release Builds: Stabilized x86_64 builds on macos-15 by adding Rosetta/x86 runtime preparation and explicit Intel execution paths in CI, restoring successful tagged multi-platform release runs.

[1.12.6] - 2026-03-17

Added

  • 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.

Changed

  • Participants Conversion Refactor: Removed legacy value-rewrite mapping paths and aligned participants conversion/UI behavior with the updated mapping model.

[1.12.5] - 2026-03-16

Fixed

  • CI: Restored Intel macOS release builds on macos-15 by running the x86_64 job under Rosetta with x64 Python while keeping the native Apple Silicon build.

[1.12.4] - 2026-03-16

Changed

  • CI: Dropped Intel macOS build. GitHub retired macos-13 Intel runners and universal2 is not feasible without fat-binary dependencies. macOS build now produces a native Apple Silicon (arm64) binary on macos-15.

[1.12.3] - 2026-03-16

Fixed

  • CI: Replaced separate Intel/Apple Silicon macOS builds with a single universal2 build on macos-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.

[1.12.2] - 2026-03-16

Fixed

  • CI: Fixed Intel macOS build runner (switched to macos-14 with x64 Python under Rosetta 2); opted into Node.js 24 for all GitHub Actions steps.

[1.12.1] - 2026-03-16

Fixed

  • Release Verification Gate: Adjusted test session key setup in project lifecycle handler tests to avoid false-positive secret detection during repository release checks.

[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-*). PRISM702 is deprecated and retained only for backward compatibility in the issue catalog.

Added

  • Wrapper Retirement Playbook: Added docs/WRAPPER_CLEANUP_CHECKLIST.md with explicit exit criteria, removal sequence, validation commands, and rollback plan for controlled wrapper removal.
  • Scripts Inventory Guide: Added scripts/README.md to classify active script domains (build, ci, setup) versus future_feature and _archive paths after cleanup.

Removed

  • Legacy Root Script Wrappers: Removed old root-level scripts/*.py|*.sh|*.bat|*.ps1 wrappers and standardized execution on canonical script locations under scripts/{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.Language mismatches 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.Language vs 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 caused refreshTemplateList() 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=False parameter (HIGH severity - Bandit B324). MD5 is only used for generating short identifier suffixes, not for cryptographic purposes.
  • XML Parsing Vulnerability: Replaced insecure xml.etree.ElementTree with defusedxml to protect against XML bomb attacks (MEDIUM severity - Bandit B314, B405, B408, B318).
  • Code Injection Prevention: Added explicit # nosec B307 annotations to sandboxed eval() 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-data syntax error on Unix-based systems.
  • Build: Corrected --target-architecture flag 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 .bidsignore rules 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 AliasOf and Aliases resolution 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, and eeg modalities.
  • 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.json resolution 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-studio and 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-studio branding.

[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.py module for consistent error reporting
  • Updated docs/ERROR_CODES.md with complete error code reference

Output Formats

  • 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)

Auto-Fix System

  • 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)

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>, /validate
  • JSON 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-migrate and i18n-build

Project Configuration

  • .prismrc.json project config file support
  • Settings: 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.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

  • Fixed .gitignore to 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

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-version CLI flag to specify validation schema version
  • --list-versions command 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.1 and v0.1 formats)
  • Default to stable version when not specified
  • Comprehensive 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 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

Infrastructure

  • Created schemas/stable/ directory for stable schema version
  • Created schemas/v0.1/ directory for version 0.1
  • Enhanced schema_manager.py with version-aware loading
  • Updated runner.py to support schema version parameter
  • Improved web interface validation workflow

Changed

  • Updated main validator to accept schema_version parameter
  • Modified 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 stable schema version
  • Explicitly specify version only if needed for specific use cases
  • See docs/SCHEMA_VERSIONING_GUIDE.md for 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-studio to prism.
  • Repository Restructuring: Moved helper scripts to helpers/ directory.
  • Documentation: Updated all documentation to reflect the new name.