Repository navigation
We are pleased to announce the release of ABCD version 4.0.0. This update represents a historic architectural leap, marking the transition of ABCD from a traditional ILS (Integrated Library System) to a true plugin-based LSP (Library Services Platform). The new version brings a modular approach, a native REST API, and expanded support for different types of collections.
Below, we highlight the main new features and structural improvements in this version:
🧩 Plugin-Based Modular Architecture
- Plugin System: The system core now operates with a robust plugin architecture, allowing the expansion of services without the need to modify the central code (core).
- On-Demand Installation: Legacy or specific databases and modules (such as ODDS, SIP2, Projects, and Experts) have been removed from the default installation. These components can now be managed and installed remotely, ensuring a lighter system adaptable to the needs of each institution.
🔗 Interoperability and Data Export
- Native REST API: Implementation of a complete REST API for direct and secure access to databases, featuring centralized API key management, SHA256 encryption, and read/write scope control.
- Batch JSON Export: New integrated workflow for exporting databases in JSON format, allowing extraction in the native ISIS format or with direct mapping to the Dublin Core standard.
- Export Resilience and Management: The data conversion engine was restructured to process blocks individually, ensuring high tolerance against malformed markup, control characters, and UTF-8 encoding failures. The interface includes a real-time progress bar and a manager for secure downloading and deletion of generated files.
🏛️ Museum Management (SPECTRUM Standard)
- New Data Model: Initial implementation of an example database and management module tailored for museums, strictly structured based on the international SPECTRUM standard.
- Museum OPAC: New public interfaces and display formats (PFTs) adapted for museum collections, featuring support for attachment metadata, inscription control, and multilingual support.
🔍 Public Interface (OPAC) and Search
- Expert Search: Introduction of a new direct boolean search interface in the OPAC, accompanied by results organized in collapsible panels to optimize the user experience.
- Relevance Control and Performance: Addition of configurable controls for relevance ranking, increased search buffer, and refactoring of the integrated search logic, ensuring more speed and stability for large collections.
- Metrics and Usability: Significant performance improvements in search log analysis (OPAC Analytics) and corrections in encoding handling for form submissions with accents.
🛠️ Cataloging and System Administration
- Language Management (LanguageManager): Implementation of a cascading translation system. Core files are now kept separate from institutions' local customizations (saved in the
contentfolder), preventing data loss during updates. - Enhanced Data Entry: Support for a new
HASHfield type (generating cryptographic values for unique identifiers), improved handling of multi-select fields, and integration of a secure assistant for auto-increment (AI) numbering. - Security and Interface (UI): Complete redesign of the central topbar, addition of a native and secure interface for changing passwords (with CSRF protection), and rigorous sanitization of variables to prevent XSS vulnerabilities.
- Maintenance and Synchronization: New automated routine for smart synchronization of the copies database with the loans database (loanobjects), and refactoring of the CrunchMF conversion utility for greater reliability on Linux systems.
What's Changed
- New translation system by @rogercgui in #680
- Add tooltips to form buttons and update icon by @rogercgui in #681
- Modernize language loading with LanguageManager by @rogercgui in #682
- Fix #683 select placeholder option and improve form validation by @rogercgui in #684
- Fix CodificaSubCampos subfield parsing by @rogercgui in #685
- Refactor loan_objects_add.php layout and functions by @rogercgui in #686
- Show empty-directory notice; add i18n entries by @rogercgui in #687
- Implement plugin system with management, routing, and translations by @rogercgui in #688
- Implements the ODDS Plugin by @rogercgui in #689
- Enhance odds plugin localization, file handling, and introduce form editor by @rogercgui in #690
- Add plugin hooks and support for raw HTML translations by @rogercgui in #691
- Update button onclick handlers in cloned rows by @rogercgui in #692
- Add plugin system bootstrap to config by @rogercgui in #693
- Odds plugin3 by @rogercgui in #694
- Spectrum museum standard by @rogercgui in #695
- Enhance cookie handling, search performance, and relevance controls by @rogercgui in #699
- Unify search expression building by @rogercgui in #700
- Add DOM existence checks in pft.php by @rogercgui in #701
- Spectrum db by @rogercgui in #702
- Add ABCD REST API implementation by @rogercgui in #703
- Add CISIS detection and encoding controls by @rogercgui in #704
- Localize API REST Manager interface by @rogercgui in #705
- Add plugin bootstrap and improve config handling by @rogercgui in #706
- Various corrections by @rogercgui in #707
- Fix CrunchMF base path separator by @rogercgui in #708
- Add SPECTRUM museum module and OPAC PFTs by @rogercgui in #709
- Rename databses.php to conf_databases by @rogercgui in #710
- Add Spectrum museum OPAC example by @rogercgui in #711
- Update bases.dat OPAC by @rogercgui in #712
- Sanitize request output to prevent XSS by @rogercgui in #713
- Refactor OPAC UI and enhance search functionality by @rogercgui in #714
- Add expert search, collapsible results, i18n by @rogercgui in #715
- Refactor pft/heading handling in browse.php by @rogercgui in #717
- Support multiple select inputs and array handling by @rogercgui in #718
- Topbar redesign & add change_password page by @rogercgui in #719
- Fix password page locale and encoding by @rogercgui in #720
- Add Museum management plugin by @rogercgui in #721
- Skip duplicate tags from check_select by @rogercgui in #723
- Improve DBDEF language copy workflow by @rogercgui in #724
- Add remote plugin install support by @rogercgui in #725
- Removes pre-installed plugins by @rogercgui in #726
- Minor adjustments by @rogercgui in #727
- Add plugin details and More info link by @rogercgui in #728
- Removes the ODDS database by default by @rogercgui in #729
- Removes unnecessary files and the main.css file by @rogercgui in #730
- Clean general by @rogercgui in #731
- Translation of OPAC into French and other adjustments. by @rogercgui in #732
- Some small improvements by @fho4abcd in #733
- Improve copy from other database by @fho4abcd in #734
- Add hooks and sanitize facet filters by @rogercgui in #735
- Add OPAC hook points for footer and topbar by @rogercgui in #736
- Fix search encoding by @rogercgui in #737
- Fixes an accidental leak of the search term between facets. by @rogercgui in #738
- Api improvements fixes by @rogercgui in #739
- Removes database schemas: experts and projects by @rogercgui in #740
- Loanobjects synchroniser by @rogercgui in #741
- Add safe AI counter helper by @rogercgui in #742
- Add HASH field type for data entry by @rogercgui in #743
- Add navigation hooks for menu/home links by @rogercgui in #744
- Add plugin config menu hook by @rogercgui in #745
- Deletes the MARC UTF-8 database by @rogercgui in #746
- Various corrections by @rogercgui in #747
- Add multilingual SPECTRUM OPAC and metadata by @rogercgui in #748
- Fix Portuguese reserve table headers by @rogercgui in #749
- Update version.php by @rogercgui in #750
- Add v4 migration safeguards and updates by @rogercgui in #751
- Update update_actions.php by @rogercgui in #752
- Improve update manager and migration scripts by @rogercgui in #753
- Corrects the name of the new file. by @rogercgui in #754
- Add batch JSON export support by @rogercgui in #755
- Fix XML-to-JSON export parsing by @rogercgui in #756
- Add JSON file management and export progress UI by @rogercgui in #758
- Preparations abcd 4 by @rogercgui in #760
- Clears directories containing junk files from local tests. by @rogercgui in #761
- Revise README with updated logo and content by @rogercgui in #762
Full Changelog: v3.9.0...v4.0.0