You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added .github/workflows/cppcheck.yml CI workflow that runs cppcheck on src/ and tests/, converts results to SARIF using airtower-luna/convert-to-sarif, and uploads them to the GitHub Security tab via github/codeql-action/upload-sarif
Added cmake/cppcheck.cmake standalone script and cmake/cppcheck-targets.cmake for running cppcheck locally via cmake --build --preset=dev --target=cppcheck
Updated developer documentation in docs/pages/devdocs/testing.dox and docs/pages/devdocs/install.dox with cppcheck usage instructions
Added getDataType(), getChunking(), and toLinkArrayDataSetConfig() functions to ReadDataWrapper (@copilot, @oruebel#266)
Added support for creating soft-links to existing datasets to avoid data duplication (@copilot, @oruebel#257)
Added BaseArrayDataSetConfig abstract base class for polymorphic dataset configuration
Added LinkArrayDataSetConfig class for creating HDF5 soft-links to existing datasets
Updated ArrayDataSetConfig to inherit from BaseArrayDataSetConfig
Updated all NWB type initialize() methods to accept BaseArrayDataSetConfig (TimeSeries, ElectricalSeries, SpikeEventSeries, AnnotationSeries, Data, NWBData, VectorData)
Added user docs page on using links and processing modules docs/pages/userdocs/links.dox
Added BaseIO::getStorageObjectDataType and BaseIO::getStorageObjectChunking and corresponding HDF5IO implementations
Updated BaseIO::createArrayDataSet to raise std::runtime_error on failure (rather than returning nullptr) to make error handling more robust and to allow link creation to return nullptr without ambiguity.
Added LinkArrayDataSetConfig::validateTarget() to validate that a link target is compliant with expected schema requirements and updated initialize methods of Data, VectorData, and TimeSeries accordingly to check that link targets are valid (@copilot, @oruebel#259)
Added AQNWB::IO::ConstMultiArrayView<DTYPE, NDIMS> as a lightweight, non-owning const multi-dimensional view over a buffer used to facilitate multi-dimensional array access in C++17/20 (@chittti , #250)
Added UUID/time/endian utilities in src/Utils.hpp to replace corresponding Boost utilities (@chittti, #250)
Added AQNWB_CXX_STANDARD option to the cmake build to allow configuration of the std C++ version to support 17, 20, and 23 to allow the use of std::mdspan if C++23 is used (@oruebel, #250)
Added ProcessingModule class in src/nwb/base/ to support creation of processed data groups in the /processing/ hierarchy of NWB files (@oruebel, #255)
Added .github/copilot-instructions.md with comprehensive onboarding documentation for GitHub Copilot coding agents (@copilot, @oruebel, #256)
Added docs/pages/devdocs/github_release_workflow.dox with instructions for how to make a release (@oruebel, #279)
Changed
Replaced explicit std::vector<SizeType> usages with the SizeArray type alias throughout the codebase for consistency (@copilot, @oruebel#262)
Standardized naming of initialize() parameters generated by schematype_to_aqnwb utility (@copilot, @oruebel#261):
Updated DataBlock::as_multi_array() to return ConstMultiArrayView instead of boost::const_multi_array_ref to remove the need Boost and for C++17/20 compatibility (@chittti, #250)
Updated the docs and examples to discuss the optional use of std::mdspan if C++23 is used (@oruebel, #250)
Changed the dependency includes in CMake so the HDF5 C++ headers and libraries found via ${HDF5_INCLUDE_DIRS} / ${HDF5_CXX_LIBRARIES} are exported to AqNWB consumers (@cboulay, #248).
Updated NWBFile to make common root path definitions (e.g., acquisition, processing, stimulus) public to make path generation easier (@oruebel, #257)
Fixed
Fixed HDF5IO::createAttribute to use base element type (typeSize=1) for numeric array attributes (instead of array-type with typeSize equal to the number of elements), to enhance compatibility with the NWB schema and PyNWB (@copilot, @oruebel#276)
Correctness: Fixed BaseIO::stopRecording to return the computed composite status instead of hardcoded Status::Success; initialized SpikeEventSeries::m_eventsRecorded to 0 in-class; removed dead chunk/DSetCreatPropList code from HDF5RecordingData constructor; updated ~HDF5IO() to avoid calling the virtual close() from the destructor; added override to virtual destructors
Performance: Changed const std::string / const std::vector pass-by-value parameters and return types to const & across Channel, AnnotationSeries, ElectrodesTable, NWBFile, nwbio_utils.hpp, BaseIO, ReadIO, RegisteredType and test utilities
API hygiene: Added explicit to single-arg constructors on HDF5IO, HDF5RecordingData, ElectrodesTable, and NWBFile; added override to HDF5RecordingData::writeDataBlock overloads; marked BaseIO::getFullTypeNameconst; made ReadDataWrapper::getStorageObjectTypestatic; aligned constructor parameter names in HDF5IO, HDF5ArrayDataSetConfig, and DynamicTable::addReferenceColumn; declared const std::tm* pointers in Utils.hpp; removed unused variables in tests
STL modernization: Replaced raw loops with std::any_of, std::accumulate, std::transform, and std::find_if in BaseIO.cpp, HDF5IO.cpp, RecordingObjects.cpp, and ReadIO.hpp
cppcheck suppressions: Added --suppress=duplInheritedMember and --suppress=normalCheckLevelMaxBranches globally to cmake/cppcheck.cmake and .github/workflows/cppcheck.yml; added inline cppcheck-suppress comments for intentional test patterns (duplicateExpression, knownConditionTrueFalse, useStlAlgorithm, variableScope)
Restricted code coverage report to src/ folder only (@copilot, @oruebel#262):
Updated cmake/coverage.cmake to use a two-step lcov approach: capture all coverage into coverage_raw.info, then use lcov --extract to filter to src/* only, producing the final coverage.info
Added .codecov.yml to instruct the Codecov server to ignore tests/**, preventing Codecov-action from including test files it discovers via independent gcov scanning of the build directory
Removed redundant resources/utils/requirements.txt and update CI accordingly. Dependencies are now defined in resources/utils/pyproject.toml (@copilot, @oruebel#260)
Added explicit permissions blocks to all GitHub Actions workflow files to restrict GITHUB_TOKEN to least-privilege scopes (@copilot, @oruebel#269)