Skip to content

Latest commit

 

History

History
501 lines (313 loc) · 51 KB

CHANGELOG.md

File metadata and controls

501 lines (313 loc) · 51 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.5.4 – 2024-11-11

Changed

  • Deps: update @angular to 18.2.11. (7d3b184)
  • Deps: update express to 4.21.1. (c02930e)
  • Deps: update marked to 15.0.0. (2979390)
  • Deps: update tslib to 2.8.1. (92f7631)
  • Deps: pin @ionic to 8.2.2. (5275d39)
  • Deps (dev): update @types/node to 20.17.6. (2685ec8)
  • Deps (dev): update jasmine-core to 5.4.0. (82b4437)
  • Deps (transitive): update multiple by recreating package-lock.json. (d3557a6, bfa02a1)

1.5.3 – 2024-09-26

Changed

  • Deps: update @angular to 18.2.6. (112623d)
  • Deps: update express to 4.21.0. (ccbe649)
  • Deps: update marked to 14.1.2. (70e6fb7)
  • Deps (dev): update @types/node to 20.16.9. (1ec69f7)
  • Deps (dev): update jasmine-core to 5.3.0. (7d72e39)
  • Deps (transitive): update browser-sync to 3.0.3 and serve-static to 1.16.2. (04a421d)

1.5.2 – 2024-08-30

Fixed

  • Named entity modal: prevent text wrapping in labels. (dd0664a)

Changed

  • Dependabot configuration: allow security updates of @angular packages. (066d45e)
  • Deps: update @angular to 18.2.2. (2ff2b72)
  • Deps (transitive): update micromatch to 4.0.8. (a74b1d7)

1.5.1 – 2024-08-28

Fixed

  • Generate static collection menus prebuild script: skip collections that are not included according to the config. (6a5a339)
  • Generate sitemap prebuild script: skip collections that are not included according to the config. (b5b84a2)
  • Home page: start-aligned instead of left-aligned text. (f714e09)

1.5.0 – 2024-08-28

Added

  • PDF viewer on ebooks page: PDF title to secondary toolbar. (4351a3f)
  • PDF viewer on ebooks page: message and download link to PDF as fallback if the user’s browser doesn’t support viewing embedded PDFs. (7aa557c)
  • PDF viewer on ebooks page: support navigating to specific page in PDF. Fixes incorrect translations for the component. (8250ca9)
  • PDF viewer on ebooks page: support search term highlighting in PDF (dependent on browser support, which currently includes only Firefox). (118e7b0)
  • Assets: the SLS logo in various sizes as PNG images. (33fe8b4)
  • Elasticsearch page: filter labels for regions and reference numbers. (6e52f09)
  • Elasticsearch page: support PDF type search results for PDFs ingested in Elasticsearch as one page in plain text format per document. For links from the search results to correctly map to PDFs on the ebook pages, you need to enter the PDFs as collections in the database, and add a collectionId property to each ebook object in the ebooks array in the config. (c3d8695)

Changed

  • backendBaseURL in config set to https://api.sls.fi/digitaledition by default. (7cea657)
  • Home page: reduce landscape banner image height to 40% on viewport widths less than 1100px. (e6cbab6)
  • Content grid: fetch collection cover image data only for collections included in the config. (f2028fa)
  • Elasticsearch page: rename Elastic hit path and queryparams pipes. (c9d9606)
  • Rename trust HTML pipe file. (bb2ab6c)
  • Update nginx to 1.26.2. (58d5bf2)
  • Deps: update @angular to 18.2.1. (d1508ea)
  • Deps: update marked to 14.1.0. (210b9a7)
  • Deps: update tslib to 2.7.0. (cc67715)
  • Deps (dev): update @types/node to 20.16.2. (ce75cd8)

Fixed

  • Media collections: reduce filter select widths to prevent clear button from wrapping to a new line when all three filter categories are available. (a33b48a)
  • Document title set correctly when going back to previous collection pages in nav stack. (36d4839)
  • Home page: sticky footer. (bab6d0d)

Removed

  • index.html: deprecated and outdated meta tags. (2bf9c2e)
  • compose.yml: testa-vonwright.sls.fi from extra hosts. (5bb6ff8)

1.4.4 – 2024-08-08

Added

  • Configuration file for Dependabot version updates of packages. (741796c, 7f08e0b)

Changed

  • Docs: mention current Node version of app in README. (a7f854d)
  • Deps: update @angular to 18.1.4. (f6e829a)
  • Deps: update marked to 14.0.0. (d73fa2c, aa72d73)
  • Deps: update zone.js to 0.14.10. (26ce24e)
  • Deps (dev): update @types/node to 20.14.14. (bb6b347)
  • Deps (dev): update karma to 6.4.4. (7d7008f)
  • Deps (dev): update typescript to 5.5.4. (53679f7)

Fixed

  • Match type when comparing collection IDs in text-changer component (i.e. allow collectionId to be either string or number in table of content JSON-files). (8f3142d)
  • Add missing ngFor import to pdf-viewer.component. (b751172)
  • Filter type headings should not be visible in index filter modal when no filter options available. (ff975df)
  • Home page banner image min-height set to 200px in landscape image mode. This fixes an issue where the banner image height is too small on mobile phones in landscape orientation. You should adjust the min-height for the banner image in your project in custom.scss if necessary. You can use the selector page-home div.banner.banner. (d5b717d)

1.4.3 – 2024-07-22

Changed

  • Legacy key-value format for NODE_ENV in Dockerfile. (385b67e)
  • Docs: refactor code snippets in the development notes and add note about NgModules. (c3552a9)
  • Deps: update @angular to 18.1.1. (9af16d9)
  • Deps: update marked to 13.0.2. (6471779)
  • Deps: update zone.js to 0.14.8 (includes SSR memory leakage fix). (9eced7c)
  • Deps (dev): update @types/node to 20.14.11. (0afdcc2)
  • Deps (dev): update jasmine-core to 5.2.0. (b107f9e)
  • Deps (dev): update typescript to 5.5.3. (5897905)

Fixed

  • Incorrect CSS selector for references after comments. (898a2b7)

1.4.2 – 2024-07-02

Changed

  • Deps: update @angular to 18.0.5. (f8129f1)
  • Deps: update marked to 13.0.1. (f871a15)
  • Deps (dev): update @types/node to 20.14.9. (154f481)
  • Deps (dev): update ws, engine.io-client, engine.io and socket.io-adapter. (09a926e)

1.4.1 – 2024-06-17

Changed

  • Deps: update @angular to 18.0.3. (a18049e)

Fixed

  • Active media collection filters do not clear properly when deselecting all filter options for a filter group. (a708a0d)

Removed

  • Superfluous addition of Title service to providers in AppModule. (06c141a)

1.4.0 – 2024-06-14

Added

  • Support for showing a ”facsimile-only icon” next to items in the collection side menu that have the facsimileOnly property set to true in the collection table of contents file. (fc7e0c6)

Changed

  • Change search method on the (named entity) index page from fuzzy to substring search when the provider is ElasticSearch. (ce30c3e)
  • Unwrap lone grouped collections in the main side menu: if a collection group contains just one collection, the group menu item will not be collapsible/expandable, instead the menu item will link directly into the collection. The menu item title will still be the title of the collection group (defined in translation xliff-files). (ff7ac04)
  • Deps: update @angular to 17.3.11. (dd7cbc5)
  • Deps: update @ionic to 8.2.2. (746218a)
  • Deps: update marked to 13.0.0. (85699b3)
  • Deps: update tslib to 2.6.3. (0065912)
  • Deps: update zone.js to 0.14.7. (1061fd3)
  • Deps (dev): update @types/node to 20.14.2. (a2b72de)
  • Deps (dev): update braces to 3.0.3. (6a559f3)
  • Deps (dev): update ng-extract-i18n-merge to 2.12.0. (62aa573)
  • Update transitive dependencies by recreating package-lock.json. (2f6f6d6)
  • Update nginx to 1.26.1. (3fe3dd9)

1.3.4 – 2024-05-07

Changed

  • Run app as non-root user to increase security. (578937c)
  • Deps: update @angular to 17.3.7. (547c4e8)
  • Deps: update @ionic to 8.1.0. (8bde0a4)
  • Deps: update ionicons to 7.4.0. (1a4bb08)
  • Deps: update marked to 12.0.2. (db5dc72)
  • Deps: update zone.js to 0.14.5. (412caa0)
  • Deps: update @types/node to 20.12.10. (524024e, 0508562)
  • Deps: update typescript to 5.4.5. (4a8c95f)
  • Update nginx to 1.26.0. (4e3bdfa)

1.3.3 – 2024-04-04

Added

  • Docs: notes on how to run nginx in front of Node.js app locally. (caf8d1e)

Changed

  • Replace deprecated browserTarget with buildTarget in extract-i18n options in angular.json. (96c94fe)
  • Ensure build uses latest version of Node.js Docker-image. Remove unnecessary quotes around strings in GitHub Actions YAML build file. (971e06e)
  • Docs: restructure notes on running app locally. (a41dc7d)
  • Update nginx to 1.25.4. (2ce5529)
  • Deps: update @angular to 17.3.3. (e531f86, 0873abb)
  • Deps: update @ionic to 7.8.3. (29bd2ae, aa69990)
  • Deps: update express to 4.19.2. (a4443eb)
  • Deps: update ionicons to 7.3.1. (9d0bc07)
  • Deps: update marked to 12.0.1. (2978215)
  • Deps: update @types/node to 20.12.4. (5987f3a, 11f0385)
  • Deps: update ng-extract-i18n-merge to 2.11.2. (bd55fd0, 68d72fe)
  • Deps: update typescript to 5.4.3. (fd5d49f)
  • Deps: update es5-ext to 0.10.64 (e06c6d4)
  • Deps: update follow-redirects to 1.15.6. (82d4839)

Fixed

  • Link-elements added to the DOM using a custom renderer in the document head service are cleaned up when the service is destroyed. This fixes a potential memory leak in the SSR-app. (736195e)
  • Return values of the RxJS catchError function. (fb862c2)
  • Ensure cleanup of event listeners in the draggable-image directive. (0b2f871)

1.3.2 – 2024-02-29

Changed

  • Button labels in the secondary toolbar are hidden when the viewport is less than or equal to 960px wide, the same as for the labels in the top menu. (79973f5)
  • Set fetchpriority property to high on image element of home page banner image. (942ec0d)
  • Deps: update @angular to 17.2.3. (c9c28e9, 7d76625)
  • Deps: update @ionic to 7.7.3. (434306c)
  • Deps: update express to 4.18.3. (19cd3a5)
  • Deps: update @types/node to 20.11.23. (1460e29, 5a0198a)
  • Deps: update karma to 6.4.3. (4e66d5d)

Fixed

  • Missing collection menu when navigating backward using browser history if collection changes. (11687bb)

1.3.1 – 2024-02-19

Fixes

  • Memory leak related to BehaviorSubject-subscription in the download-texts modal. Also, as a precation, unsubscribe from all route subscriptions on component destruction. (b32dfe4)

1.3.0 – 2024-02-16

Added

  • Config options to enable server-side rendering of the collection side menu and prebuild static versions of the menu: config.app.ssr.collectionSideMenu and config.app.prebuild.staticCollectionMenus. Both options are booleans. config.app.ssr.collectionSideMenu defaults to false, which means that rendering of the dynamic collection side menu is not performed on the server, but deferred to the browser. This increases performance on the server for projects that have very large collections (hundreds of texts/collection). config.app.prebuild.staticCollectionMenus defaults to true, which means that static HTML versions of each collection menu, in each project language, are generated when the Docker image of the app is built. The static collection menus are included in the server-side rendering of collection pages, and then replaced with the dynamic collection menus in the browser. This improves SEO of collection pages when server-side rendering of collection menus is disabled, without degrading the user experience. Setting both new options to false puts the least load on the server, but makes the web app less crawlable by robots. Notice that the static menus are generated during build-time – if the collection table of contents are updated in the backend, a new build has to be created for the changes to be reflected in the static menus. (a25be18, 78108e3, 2ec89c3, 5848028)
  • Config option to control the generation of a sitemap file in a prebuild step: config.app.prebuild.sitemap. Defaults to true. (02d8b65)
  • Config option to define the intrinsic dimensions of the default banner image on the home page: config.page.home.bannerImage.intrinsicSize. The option defaults to null, meaning that the height and width attributes are not set on the image. The option takes an object with height and width keys and their respective values as numbers (the implicit unit is pixels). Setting the intrinsic dimensions of the image file (defined by the config.page.home.bannerImage.URL option) is recommended since the browser can then calculate the aspect ratio of the image, which improves initial page rendering. (4495d91)
  • Config option to define alternate image sources for the banner image on the home page: config.page.home.bannerImage.alternateSources. The option defaults to an empty array, which means that the banner image is rendered like before using the image URL provided in config.page.home.bannerImage.URL. The new alternateSources option takes an array of objects. If the array is non-empty, the banner image will be created as a <picture> element with each of the objects in the array specifying a <source> HTML element. The object can contain key-value pairs where the keys are the allowed attributes of the <source> element (media, srcset, sizes, type, height, width) and the values are strings or numbers defining the values of the corresponding attributes. For examples, see the forthcoming documentation. Using the alternateSources option makes it possible to define responsive images for the banner image (serve different image files based on screen resolution) and serve modern image formats like AVIF for reduced bandwidth. The default image defined by the URL option is still needed – it is used as the fallback image defined by the <img> element in the <picture> element. (49708b7)
  • The current text title in the text-changer component is appended with the value of the text_two property of the TOC item if the property exists. The previous/next text buttons have been changed into links and are thus crawlable. (5848028)
  • Vary: User-Agent HTTP response header to server-side rendered content. This enables more efficient caching and improves SEO by telling browsers etc. that the content varies by user agent (mobile vs desktop). (1160490)

Changed

  • Defer loading of the facsimile component on the collection text page to the browser. This increases server-side rendering performance since the component isn’t rendered on the server. (69fa89a, 5bbdaae)
  • Defer loading of the illustrations component on the collection text page to the browser. This increases server-side rendering performance since the component isn’t rendered on the server. (eb60a82)
  • Defer loading of the epub viewer component to the browser, since it’s not SSR-compatible. The epub title is shown as a <h1> placeholder in the server response. Also show pdf title as <h1> in the pdf viewer component. (7658b71)
  • Refactor requests for flattened collection table of contents to use function in the collection TOC service. (a6b643b)
  • Refactor the download texts modal to get the current text title from the document head service. (baa0a44)
  • Update the development notes with brief descriptions of dependencies. (34a1a7c)
  • Deps: update @angular to 17.2.1. (e78ed03, 0dffb42, 073f167)
  • Deps: update @ionic to 7.7.2. (5b57491, 7bd4e41, ad8b502)
  • Deps: update marked to 12.0.0. (17dc71e, dd6548b)
  • Deps: update zone.js to 0.14.4. (47d90dd)
  • Deps: update jasmine-core to 5.1.2. (3e2402b)
  • Deps: update ng-extract-i18n-merge to 2.10.0. (0387016)
  • Deps: update @types/node to 20.11.19. (75f2527, 90bc7f3, 67e4e80)

Fixed

  • Set correct app mode (desktop or mobile) on the server. Prior to this fix the server app would always return the app rendered in desktop mode, regardless of the actual client device. Previously Ionic’s Platform service was used to determine the current device in the browser, but since it’s not SSR-compatible, the user agent string is now used instead. On the server, the user agent is read from the request headers, and in the browser from the Window.navigator object. The app mode is now correctly set for most devices and browsers. One notable exception is Safari on iPads with iOS 13+, which are recognized as desktop devices. Using only the user agent string, it is not possible to distinguish Safari on iPads with iOS 13+ from Safari on MacBooks with MacOS. This fix makes the app compatible with Angular hydration, and nullifies the unreleased changes in a2f3ea2. (7a9efed)

Removed

1.2.3 – 2024-01-26

Fixed

  • Broken server-side rendering for non-default locales. Before this commit pages in non-default locales that used the UrlService were not rendered on the server. This was a side effect of the @jsonurl/jsonurl library used by the service to convert primitive data types and complex data structures like arrays, arrays of objects and objects with nested arrays and objects into URL-safe strings and vice versa. This fix removes the dependency on the external library and replaces its functionality with a custom conversion implementation. The custom implementation is not a full implementation of the JSON→URL specification, but produces the same results for the parts that are relevant for this project. The code has been generated by ChatGPT-4 according to the JSON→URL specification, meticulously guided by a human mind. (e4ff558)

1.2.2 – 2024-01-25

Changed

  • Fix indentation in nginx.conf. (779b217)
  • Use ARG instructions in Dockerfile to define variables for setting Angular major version and Node image tag of the base image. This makes updating Dockerfile clearer as the Angular major version has to be changed in the file when the Angular major version of the app is updated. (700b4e5)
  • Refactor functions and services related to markdown content. Remove duplicate code by moving functions for getting markdown content to the markdown service. Add pipe for marking HTML safe (bypassing sanitization) in order to separate the getting and parsing of markdown to HTML from the trusting of the HTML. Rename MarkdownContentService MarkdownService. (a294791)
  • Replace bypassSecurityTrustHtml function calls with trustHtml pipe. (b698c67)
  • Run MathJax only in the browser. (d92853c)
  • Deps: update Angular to 17.1.1. (3aba10e, a3783f2)
  • Deps: update Ionic to 7.6.6. (1baa779)
  • Deps: update htmlparser2 to 9.1.0. (3a28300)
  • Deps: update marked to 11.1.1 and remove @types/marked. Move markdown parsing to function in dedicated markdown service. (2d214df)
  • Deps: update zone.js to 0.14.3. (9a33558)
  • Moved @angular/compiler from devDependencies to dependencies (like in fresh Angular 17 apps). (c8a680d)
  • Deps: update typescript to 5.3.3. (c2ef241)
  • Deps: update @types/node to 20.11.5. (ba5a0ea)
  • Deps: update browser-sync to 3.0.2. (7f65bed)
  • Deps: update jasmine-core to 5.1.1 and @types/jasmine to 5.1.4. (b548e78)

Removed

  • Deps: angular-eslint from devDependencies. (c719b45)
  • Deps: jasmine-spec-reporter from devDependencies. (a9e0702)
  • Deps: karma-coverage-istanbul-reporter from devDependencies. (f27d677)
  • Deps: ts-node from devDependencies. (e55173f)

1.2.1 – 2024-01-16

Added

  • Compression of static files. During the build step, static files of type html, xml, txt, css, js, svg, ico, json, ttf and otf in dist/app/browser/ are precompressed using gzip. Files smaller than 1300 B are not compressed. If there is a compressed version of a static file, nginx is configured to serve it instead of the uncompressed file. The necessary directives for compressing dynamically generated HTML on-the-fly have also been added to the nginx configuration (nginx.conf), however, the directives have been commented out because of the increased server CPU load associated with on-the-fly compression. Each project can choose to enable the directives as they see fit. (667b535)

Fixed

  • Legacy setup code from Angular 15 to 17 migration. Angular 17 introduced several changes to the app.module.\*, main.server.ts, main.ts, server.ts and tsconfig.\* files. During the original v15 -> v17 update of the app all of these changes were not implemented. This fix attempts to align the app with the setup of a new modules based Angular 17 app that has SSR and i18n enabled. (2b7c94d)

1.2.0 – 2024-01-10

Added

  • Config option to specify the dimensions of the site logo in the top menu: config.component.topMenu.siteLogoDimensions (7402e28). The new config option is an object containing nested objects for specifying the height and width of the logo in both desktop and mobile mode. If the option is omitted, it defaults to an empty object, which corresponds to the old behaviour where the height and width attributes of the HTMLImageElement of the logo are not set. Setting the dimensions reduces layout shifts during page loading. Structure of the siteLogoDimensions with example values:
siteLogoDimensions: {
  default: {
    height: 56,
    width: 173
  },
  mobile: {
    height: 56,
    width: 56
  }
}
  • Documentation on updating, building and deployment, as well as development. (c329aa8)

Changed

  • Default site logo in top menu changed to optimized PNG image file. Added both black and white versions of SLS’s logo to assets/images/logo/. (9df4bef)
  • Deps: update Angular dev-kit, CLI and SSR to 17.0.9. (c67b22e)
  • Deps: update dev-dependency follow-redirects to 1.15.4. (30355ea)

1.1.1 – 2024-01-09

Added

  • nginx web server to serve static files in front of Node. This improves performance under load since 1) nginx is more performant than Node’s Express-server, 2) nginx’s performance is not impacted by Node being busy with server-side rendering tasks for dynamic content. (8952fdc by @rasek-sls)

Changed

  • Paths to font files in @font-face rules from absolute to relative. (2dd2bf3)
  • Deps: update Ionic to 7.6.3 and Ionicons to 7.2.2. (f35d148)

1.1.0 – 2023-12-28

Added

  • Config option to show or hide the toggle for switching between the normalized and non-normalized version of manuscripts: config.component.manuscripts.showNormalizedToggle. The new config option defaults to true, which corresponds to the old behaviour. (930eec2)
  • Config option to add mandatory TEI class names to collection text HTML loaded from the backend: config.collections.addTEIClassNames. The new config option defaults to true, which corresponds to the old behaviour. If set to false, the class attributes of all HTML elements in reading texts, manuscripts and variants fetched from the backend, must contain the value tei. In addition, elements in comments must contain the class name teiComment, elements in manuscripts the class name teiManuscript, and elements in variants teiVariant. Otherwise, some inherent functionality and styles won’t work anymore for these texts. Setting the new config option to false improves app performance. (df6554d, b8984f8)
  • Config option to fix paths to the assets/images/ folder in collection texts: config.collections.replaceImageAssetsPaths. The new config option defaults to true, which corresponds to the old behaviour. When this option is true, src attribute values starting with images/ in the HTML of collection texts are replaced with assets/images/, which is the correct path to the image assets folder. Setting the new config option to false improves app performance. (1f9d7ed)

Changed

  • Eagerly load home page banner image in portrait mode. (5d11e3c)
  • Deps: update Angular to 17.0.8. (e936d0b)
  • Deps: update ng-extract-i18n-merge to 2.9.1. (98e567b)

Fixed

  • Show placeholder image for collections in the content grid on the content and home page if unable to retrieve collection cover image URL from the backend. Previously a missing cover image URL disrupted loading of all collections in the grid. (3f3b256)

Removed

  • Trimming of collection texts fetched from backend. (990a08c)

1.0.3 – 2023-12-14

Added

Changed

  • Update base app Docker image repository and tag in compose.yml. (8bdfc5a)
  • Update README, CHANGELOG and build workflow code comments. (35d373d)
  • Deps: update Angular to 17.0.7. (90028cf)

Fixed

  • Remove incomplete regex sanitization of script tags in search query results. The regex sanitization is unnecessary because the query results are anyway parsed as HTML, only text nodes are retained and any <, > characters are converted to their corresponding HTML entities. (ce54078)

1.0.2 – 2023-12-11

Changed

  • Doodle illustrations must be placed in a media collection in the backend rather than in the hard coded src/assets/images/verk/ folder in the frontend. Use collections.mediaCollectionMappings in config.ts to map the id of the collection with doodles to the id of the media collection that holds the images in the backend. (9fd9d0e, 02d3d21)
  • Illustration image path mapping to media collections is performed solely based on the presence of the CSS class name est_figure_graphic on img elements – not as previously based on the image src containing assets/images/verk/ in it. Thus, illustration images that are to be mapped to media collections must have just the image file names in the src attributes, rather than images/verk/<filename> as previously. Images with absolute URLs in src are never mapped regardless of class names. (2b4f4e6)
  • Fixing image paths in collection pages from images/ to assets/images/ is done specifically at the start of src attribute values – not for any occurrence of the string images/. (111f902)

Removed

  • Legacy settings from Angular configuration file. (fbfc51c)

1.0.1 – 2023-12-07

Added

  • Matching text color to page break toggle labels in the view options popover. (514f999)

Changed

  • Apply background colors to toggle labels only instead of the entire toggles in the view options popover. (fc2fc38)
  • Adjust padding of facsimile page number input elements to accommodate changed spec in Ionic 7.6.0. (34d1ab0)
  • Move inline styles for checkbox labels on the elastic-search page to the component SCSS-file. (8d0a766)
  • Deps: update Ionic to 7.6.0. (9c66917)
  • Deps: update Angular to 17.0.6. (bf878ae)

1.0.0 – 2023-12-05

  • Initial release.