Releases
v2.1 (stable)

Madoc v2.1

This is a larger release and include changes to bring Madoc inline with Canvas Panel and Manifest Editor, and supports a wider range of IIIF resources as a result.

  • 🚀 Faster - Smaller bundles and quicker page loads
  • ✨ New Capture Model API - Rewritten and simplified this will ensure any further development all happens in the same repository. There is a migration step, but it will also migrate on the fly as you go, so no changes required. Once we have verified everyone has migrated, we will remove the old service.
  • 📦 New page blocks - Lots of new page blocks have been added and extra customisation to existing ones
  • 🎨 New theme options - There are lots of new ways to customise Madoc headers/footers with page blocks or remote URLs
  • ⚡️ Canvas Panel - Madoc now uses Canvas Panel to render resources and will continue updating to view new types of IIIF resources while adding annotation support along the way

Fixed

  • Fixed creation of GlobalHeader page block slot (with none as the context)
  • Fixed bug with loading canvases where annotations did not match the source canvas ID
  • Fixed various SSR related bugs
  • Fixed React key error on i18n configuration page
  • Fixed bug with viewing IIIF media items
  • Fixed bug where Capture model previewing in the backend would not refresh correctly
  • Fixed bug where space-bar could not be used if region had not been confirmed in capture model editor
  • Fixed bug with first entity selector not being revised correctly (and not saving)
  • Fixed bug with capture model selectors self-referencing after being cloned
  • Fixed bug with hydrateCaptureModel helper producing invalid entities
  • Fixed missing labels when viewing "Document" in sidebar
  • Fixed incorrect selector shown in "Preview" modal and "Document" sidebar.
  • Fixed bug with success modal popup not always showing
  • Fixed metadata page re-flowing issues on Manifest/Canvas pages
  • Fixed z-index issue with the notification window being occluded
  • Fixed task loading bug (incorrect cache key)
  • Fixed SSR bugs relating to global header, footer and static pages (e.g. homepage)
  • Fixed messaging when "Maximum number of contributors reached" instead of "This image is complete"
  • Fixed z-index issue with manifest item filter
  • Fixed styling of continue contributions block
  • Fixed text overflow styling on review dashboard
  • Fixed bug where you could not delete a project if the capture model had already been deleted
  • Fixed missing structure in project export
  • Fixed bug where some empty annotations were exported
  • Fixed annotation format when exporting Presentation 3 Manifest (OA -> W3C)
  • Fixed bug with read-only annotations disappearing
  • Fixed message "login to contribute" on published projects
  • Fixed notification showing on document panel when panel is empty
  • Fixed bug where "choice" was not reset after making a submission
  • Fixed manifest thumbnail bug where it sometimes skipped first canvas
  • Fixed bug with "Start contributing" returning invalid results
  • Fixed bug with "Max contributors" if user had already started working
  • Fixed "Maximise window" to avoid cutting off the top section of the header
  • Fixed firefox bug where "Define window" button was disabled if selector required
  • Fixed Annotation styled hidden by default
  • Fixed some fields showing in submission if empty
  • Fixed email links sometimes not working in email clients - with option link to paste

Added

  • Remote header and footer support in themes [@todo provide docs]
  • New Capture Model database within Madoc (previously external API)
  • Migration process integrated into Admin
  • Uses different API endpoint /api/crowdsourcing -> /api/madoc/crowdsourcing
  • Added iiif-builder IIIF Builder (opens in a new tab) from IIIF Commons
  • New CAPTURE_MODEL_API_MIGRATED environment variable to avoid extra calls to old Capture Model API.
  • Added CanvasExplorer capture model field type (editorial only) for selecting canvases within a Manifest context
  • Added new page to Canvas admin page to see JSON representation
  • Added "Download JSON" button to edit translation page in Admin
  • Added support for import "remote" project templates from URL [@todo documentation / button in UI]
  • New and Missing translations [@todo list]
  • Added floating option to canvas status bar (green/orange/blue) styling option
  • Added "Untitled" label for capture model entities without a label
  • Added save on navigate away from capture model (disabled by default)
  • Fixed bug with incorrect zoom on deep zoom images while navigating
  • Page blocks - added block options for bread crumbs
  • Page blocks - Added new "Footer Image Grid" block
  • Page blocks - Added "Featured items" page block
  • Page blocks - Added "Project contributors" page block
  • Page blocks - Added full width option to IIIF Hero block
  • Page blocks - Added lots of styling options to Heading 1 block
  • Page blocks - Added block options for "Single collection" block
  • Page blocks - Added block options to "Spacer" with vertical and horizontal support
  • Page blocks - Added block options to "Canvas Manifest pagination" block
  • Page blocks - Added option to show both Canvas and Manifest labels in "Canvas Page Header" block
  • Page blocks - Added new "External links" block
  • Page blocks - Added new global footer slot to customise the footer globally
  • Page blocks - Added inline menu options and option to hide "Homepage" in the global header
  • Page blocks - Added block options to "Manifest actions" block
  • Page blocks - Added block options to "Manifest canvas grid" block
  • Page blocks - Added full width option to "Manifest hero" block
  • Page blocks - Added block options to "Altas canvas viewer" block
  • Page blocks - Added block options to "Pagination" block
  • Page blocks - Added block options to "Manifest Canvas Grid" block
  • Page blocks - Added block options to "Project Manifests" block
  • Page blocks - Added block options to "Project Manifests" block
  • Page blocks - Added new project-footer slot
  • Page blocks - Added new block to embed items through iframe
  • Added "reset error" option to attempt to recover from error states
  • Added configuration option for vertical canvas zoom controls layout
  • Added canvas rotation option (without annotation support)
  • Added "Global font" to theme options
  • Added error boundaries so only parts of a page crash (slots)
  • Added error boundary to pages overridden by external plugins (to avoid crashing site, only page)
  • Added extra theme options
  • option to put the black "user bar" above or below the theme header
  • Footer JS files
  • Footer inline JS
  • Header inline JS
  • Remote JS / Stylesheets in linked assets
  • HTML and "main" class names
  • Added createdAt and updatedAt fields to capture models
  • Added ability to create automated user types
  • Added experimental Auto-review process
  • Added new Export mechanism
  • Preview Manifest or Canvas exports in the Admin
  • Run a large project export as a background task and download a zip at the end
  • Supported exports:
  • Canvas API - A JSON document with each canvas from the API
  • Manifest API - A JSON document with each manifest from the API
  • Canvas model export - Export full raw capture models for each canvas
  • Canvas plaintext - export plaintext transcriptions for each document
  • Canvas annotation export - a JSON document with the output of each canvas annotations (w3c/oa/json)
  • Project API - A JSON document with project metadata
  • Simple CSV export - exports all capture models into a csv file.
  • Added new interactions in the Document panel for annotations
  • Added secondary view for "X hours ago" to show the date and time on click (browser preference)
  • Added "Generate PDF" option for manifests using pdiiif (opens in a new tab) from (@jbaiter - Repository (opens in a new tab))
  • Added small indication under choices in the capture model UI with number of previous submissions
  • Added new auto-complete endpoints migrated from Madoc 1.x
  • searchFAST (opens in a new tab)
  • WikiData (opens in a new tab)
  • Added more Dutch translations (Thanks Davy Verbeke)

Changed

  • Node updated from 14 -> 18
  • PM2 update from 4.x -> 5.x
  • When creating a capture model revision in "edit mode" empty entities will be "forked" if allowMultiple=true
  • Removed IIIF-Builder code and use published module (iiif-builder on NPM)
  • Capture Model API endpoint /api/crowdsourcing -> /api/madoc/crowdsourcing
  • Updated IIIF/Hyperion dependencies
  • @atlas-viewer/atlas [@todo use published version]
  • @hyperion-framework/types -> @iiif/presentation-3
  • @hyperion-framework/presentation-2 -> @iiif/presentation-2
  • @hyperion-framework/parser -> @iiif/parser
  • @hyperion-framework/vault -> @iiif/vault
  • @hyperion-framework/store removed
  • @hyperion-framework/react-vault -> react-iiif-vault
  • Updated react-i18next updated from 11.7.2 to 11.18.4
  • Updated React Router to 6.4 [@todo update to stable]
  • CollectionExplorer capture model field type (editorial only) now uses smaller thumbnails
  • Default query config from refetchOnMount: true to refetchOnMount: 'always'
  • Changed Canvas/Manifest/Collection grids to use CSS Grid (opens in a new tab)
  • useLayoutEffect -> useBrowserLayoutEffect to try and fix SSR warnings
  • CSS - Reduced box-shadows in capture model editor forms
  • Changed all Atlas Viewer instances to use Canvas panel
  • Simplified styling on search results
  • Improved reviewer dashboard view
  • Sortable table headers
  • Resizable layout
  • Full row clickable
  • Focus mode & edit added
  • Clearer language
  • Side by side canvas preview and improved styling
  • Navigation between items in list
  • Default to no selected task
  • Added infinite scroll

Removed

  • Removed external Capture Model API
  • Removed AutoSelectDefineRegion behaviour from capture model editor

Security

  • Pinned ws from 7.4.6 -> 8.8.0

Development

  • Migrated build from Webpack to Vite
  • Split server builds (auth/queue/producer/server)
  • Added hot module reloading
  • Better module splitting in production (-70% bundle size)
  • Visual indicator that JS is still bundling in development
  • Add HTTPS option for local development
  • Helper scripts now have .cjs or .mjs extensions
  • Consolidated all File paths to services/madoc-ts/src/paths
  • Consolidated all environment variables to services/madoc-ts/src/paths
  • Changed all const { push } = useHistory() to const navigate = useNavigate() (React Router upgrade)
  • Change all renderUniversalRoutes(...) to <Outlet /> (React Router upgrade)
  • Change all api.getIsServer() checks to <BrowserComponent /> wrapper (React router upgrade)
  • Change all <Redirect /> to <Navigate /> (React router upgrade)
  • Fork of RegionHighlight, ResizeWorldItem from Atlas viewer (may be removed in future)
  • Capture model helper captureModelShorthandText for creating test fixtures (with values)
  • Removed almost all external modules made available to plugins (breaks code-splitting, see use-module.ts (opens in a new tab))
  • Move Api keys database code to ApiKeyRepository
  • Added flags that can be passed into the BaseRepository class
  • Split out ViewDocument into more manageable components