@ranx729/ducktape-assets 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -11,7 +11,7 @@ Generated. Use these rules; do not edit this file by hand.
11
11
 
12
12
  1. **Paste a URL.** Any HTML, CSS or Markdown references one file on jsDelivr, for example `https://cdn.jsdelivr.net/npm/@ranx729/ducktape-assets-walters-w102@1.2.0/webp/rabbit-church-bells-512.webp`. Only that file is transferred. `catalog.json` lists the exact URL of every width and format, so nothing has to be guessed.
13
13
  2. **Pick and copy.** Keep a small `ducktape.json` listing the asset ids you want, with optional widths, formats and `masters: true`. `npx @ranx729/ducktape-assets copy` fetches exactly those files into the project (default `src/assets/ducktape/`), verifies every SHA-256 against the manifest, and writes `ducktape.manifest.json` beside them with type, dimensions (native and of the capped master), transparency, render geometry (tile axis, frame slice), thumbhash, licence and attribution per asset. `masters: true` alone copies only the lossless master (for apps that encode their own images); add `formats`, `widths` or `max` to copy ladder files as well. Re-running is idempotent.
14
- 3. **Resolve in code.** `npm i @ranx729/ducktape-assets` installs metadata and a resolver, zero images. `assets.image(id, { width })` returns `src`, `srcset`, `sizes`, width, height, thumbhash, licence, `attribution`, and `file` / `files` (path, bytes and sha256 of every referenced rung, for scripts that record or verify what they use). Bytes come from the CDN at request time, or from flow 2 when `base` points at the copied directory.
14
+ 3. **Resolve in code.** `npm i @ranx729/ducktape-assets` installs metadata and a resolver, zero images. `assets.image(id, { width })` returns `src`, `srcset`, `sizes`, width, height, thumbhash, `license`, `attribution` (the bare credit, licence kept separate), `set` / `package` / `version` (where the bytes come from), and `file` / `files` (path, bytes and sha256 of every referenced rung, for scripts that record or verify what they use). Bytes come from the CDN at request time, or from flow 2 when `base` points at the copied directory.
15
15
 
16
16
  Build-time recipe in Node, offline, no network:
17
17
 
@@ -47,7 +47,7 @@ Exact-version URLs are immutable and cached for a year. Large sets are split int
47
47
 
48
48
  ## Rules
49
49
 
50
- - Honour the licence block: show the `attribution` line when the asset's licence requires it.
50
+ - Honour the licence block: show the `attribution` credit together with `license` (SPDX id) when the licence requires it; `attribution` is the institution and object for historical sets, or the author for authored and imported ones, and never contains the licence.
51
51
  - Never use `@latest` or range URLs; always an exact version from `index.json` or `catalog.json`.
52
52
  - Never put a master on a page. Masters are for re-encoding in a build.
53
53
  - Images are decorative by default (`alt=""`); use `description` when the image carries meaning.
@@ -57,6 +57,16 @@ Exact-version URLs are immutable and cached for a year. Large sets are split int
57
57
 
58
58
  | Set | Title | Summary | Assets | Licence | Repo |
59
59
  | --- | --- | --- | --- | --- | --- |
60
+ | `cma-1950-154` | Cleveland 1950.154, Greek Psalter leaf | Byzantine ornament and figures from a leaf of a Greek Psalter and New Testament written in Constantinople in 1084, Cleveland Museum of Art 1950.154. | 7 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-cma-1950-154) |
61
+ | `cma-1963-256` | Cleveland 1963.256, Hours of Queen Isabella | Flowers, insects and a bird from the strewn floral border of folio 80v of the Hours of Queen Isabella the Catholic (Ghent or Bruges, ca. 1500, Master of the First Prayerbook of Maximilian and associates), Cleveland Museum of Art 1963.256. | 6 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-cma-1963-256) |
62
+ | `fuchs-1542-herbal` | Fuchs, De historia stirpium (1542) | Woodcut plant portraits from the 1542 Basel edition of Leonhart Fuchs's herbal De historia stirpium commentarii insignes, scanned by the Universitätsbibliothek Basel (shelfmark UBH Lo I 4) on e-rara. | 7 | LicenseRef-PDM | [repo](https://github.com/adrian729/ducktape-assets-fuchs-1542-herbal) |
63
+ | `gessner-historiae-animalium` | Gessner, Historiae animalium | Woodcut animals and details from Conrad Gessner's Historiae animalium (Zürich, 1551–1587), scanned by the Zentralbibliothek Zürich on e-rara; one section of the book per asset, with the lion section yielding several pieces. | 11 | LicenseRef-PDM | [repo](https://github.com/adrian729/ducktape-assets-gessner-historiae-animalium) |
64
+ | `getty-ms20` | Getty Ms. 20, Mira calligraphiae monumenta | Two rosebuds, a cut apple and a strapwork cartouche from folio 107 of the Mira calligraphiae monumenta (J. Paul Getty Museum Ms. 20, 86.MV.527), where Joris Hoefnagel painted specimens in 1591–1596 around Georg Bocskay's calligraphy of 1561–1562. | 4 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-getty-ms20) |
65
+ | `hopfer-prints` | Daniel Hopfer ornament prints | Friezes, a thistle fillet and a candelabra grotesque etched by Daniel Hopfer in Augsburg around 1515, taken from three sheets in the Metropolitan Museum of Art; loose prints by one artist, grouped by sheet. | 12 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-hopfer-prints) |
60
66
  | `illuminated-acanthus` | Illuminated acanthus | Red, blue and gold acanthus corners, dividers, frames, margin rods, sprigs and a muse figure in the style of a 15th-century Flemish illuminated border, AI-generated by adrian729 from style references for the Polyhymnia app. | 36 | CC-BY-4.0 | [repo](https://github.com/adrian729/ducktape-assets-illuminated-acanthus) |
61
67
  | `medieval-cutouts` | Medieval cutouts | A legacy collection of 41 painted cut-outs in a medieval manuscript style (animal and human musicians, drolleries, readers and single animals) whose origin was never recorded. | 41 | CC-BY-4.0 | [repo](https://github.com/adrian729/ducktape-assets-medieval-cutouts) |
68
+ | `met-356741` | Rosselli border sheet | Border strips, corners and roundels cut from one engraved sheet of border segments by Francesco Rosselli (Florence, 1490–1500) in the Metropolitan Museum of Art, accession 29.16.3; the strips tile and the corners compose into frames. | 8 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-met-356741) |
69
+ | `mkg-de-bry-alphabet` | De Bry, Nova Alphati Effictio (1595) | Figures and ornaments cut from the sheet of the letter B in Johann Theodor de Bry's engraved alphabet series "Nova Alphati Effictio Historiis ad singulas literas correspondentibus illustrata" (Frankfurt, 1595), held by the Museum für Kunst und Gewerbe Hamburg. | 9 | LicenseRef-PDM | [repo](https://github.com/adrian729/ducktape-assets-mkg-de-bry-alphabet) |
70
+ | `schongauer-prints` | Martin Schongauer ornament prints | Leaf, thistle and hop-vine ornaments and the owl mocked by day birds, engraved by Martin Schongauer in Colmar around 1480–1490, from four sheets in the National Gallery of Art, Washington; loose prints by one artist, grouped by sheet. | 6 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-schongauer-prints) |
71
+ | `solis-prints` | Virgil Solis ornament prints | An animal frieze and a bird frieze from Virgil Solis's 1557 series "Mancherlei Conterfectisches von Thierlein" in the Museum für Kunst und Gewerbe Hamburg, and an arabesque cartouche on dark ground in the Metropolitan Museum of Art; loose prints by one Nuremberg artist, grouped by sheet. | 3 | LicenseRef-PDM | [repo](https://github.com/adrian729/ducktape-assets-solis-prints) |
62
72
  | `walters-w102` | Walters W.102 marginalia | Marginal creatures and scenes from Walters Art Museum W.102, a Flemish book of hours of around 1300 whose margins are filled with animal musicians, hybrids and small architectural vignettes. | 4 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-walters-w102) |
package/README.md CHANGED
@@ -6,7 +6,7 @@ Find an asset here, use it in under a minute. This package is metadata and a bui
6
6
 
7
7
  1. **Paste a URL.** Any HTML, CSS or Markdown references one file on jsDelivr, for example `https://cdn.jsdelivr.net/npm/@ranx729/ducktape-assets-walters-w102@1.2.0/webp/rabbit-church-bells-512.webp`. Only that file is transferred. `catalog.json` lists the exact URL of every width and format, so nothing has to be guessed.
8
8
  2. **Pick and copy.** Keep a small `ducktape.json` listing the asset ids you want, with optional widths, formats and `masters: true`. `npx @ranx729/ducktape-assets copy` fetches exactly those files into the project (default `src/assets/ducktape/`), verifies every SHA-256 against the manifest, and writes `ducktape.manifest.json` beside them with type, dimensions (native and of the capped master), transparency, render geometry (tile axis, frame slice), thumbhash, licence and attribution per asset. `masters: true` alone copies only the lossless master (for apps that encode their own images); add `formats`, `widths` or `max` to copy ladder files as well. Re-running is idempotent.
9
- 3. **Resolve in code.** `npm i @ranx729/ducktape-assets` installs metadata and a resolver, zero images. `assets.image(id, { width })` returns `src`, `srcset`, `sizes`, width, height, thumbhash, licence, `attribution`, and `file` / `files` (path, bytes and sha256 of every referenced rung, for scripts that record or verify what they use). Bytes come from the CDN at request time, or from flow 2 when `base` points at the copied directory.
9
+ 3. **Resolve in code.** `npm i @ranx729/ducktape-assets` installs metadata and a resolver, zero images. `assets.image(id, { width })` returns `src`, `srcset`, `sizes`, width, height, thumbhash, `license`, `attribution` (the bare credit, licence kept separate), `set` / `package` / `version` (where the bytes come from), and `file` / `files` (path, bytes and sha256 of every referenced rung, for scripts that record or verify what they use). Bytes come from the CDN at request time, or from flow 2 when `base` points at the copied directory.
10
10
 
11
11
  Build-time recipe in Node, offline, no network:
12
12
 
@@ -48,6 +48,16 @@ Exact-version URLs are immutable and cached for a year. Large sets are split int
48
48
 
49
49
  | Set | Title | Summary | Assets | Licence | Repo |
50
50
  | --- | --- | --- | --- | --- | --- |
51
+ | `cma-1950-154` | Cleveland 1950.154, Greek Psalter leaf | Byzantine ornament and figures from a leaf of a Greek Psalter and New Testament written in Constantinople in 1084, Cleveland Museum of Art 1950.154. | 7 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-cma-1950-154) |
52
+ | `cma-1963-256` | Cleveland 1963.256, Hours of Queen Isabella | Flowers, insects and a bird from the strewn floral border of folio 80v of the Hours of Queen Isabella the Catholic (Ghent or Bruges, ca. 1500, Master of the First Prayerbook of Maximilian and associates), Cleveland Museum of Art 1963.256. | 6 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-cma-1963-256) |
53
+ | `fuchs-1542-herbal` | Fuchs, De historia stirpium (1542) | Woodcut plant portraits from the 1542 Basel edition of Leonhart Fuchs's herbal De historia stirpium commentarii insignes, scanned by the Universitätsbibliothek Basel (shelfmark UBH Lo I 4) on e-rara. | 7 | LicenseRef-PDM | [repo](https://github.com/adrian729/ducktape-assets-fuchs-1542-herbal) |
54
+ | `gessner-historiae-animalium` | Gessner, Historiae animalium | Woodcut animals and details from Conrad Gessner's Historiae animalium (Zürich, 1551–1587), scanned by the Zentralbibliothek Zürich on e-rara; one section of the book per asset, with the lion section yielding several pieces. | 11 | LicenseRef-PDM | [repo](https://github.com/adrian729/ducktape-assets-gessner-historiae-animalium) |
55
+ | `getty-ms20` | Getty Ms. 20, Mira calligraphiae monumenta | Two rosebuds, a cut apple and a strapwork cartouche from folio 107 of the Mira calligraphiae monumenta (J. Paul Getty Museum Ms. 20, 86.MV.527), where Joris Hoefnagel painted specimens in 1591–1596 around Georg Bocskay's calligraphy of 1561–1562. | 4 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-getty-ms20) |
56
+ | `hopfer-prints` | Daniel Hopfer ornament prints | Friezes, a thistle fillet and a candelabra grotesque etched by Daniel Hopfer in Augsburg around 1515, taken from three sheets in the Metropolitan Museum of Art; loose prints by one artist, grouped by sheet. | 12 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-hopfer-prints) |
51
57
  | `illuminated-acanthus` | Illuminated acanthus | Red, blue and gold acanthus corners, dividers, frames, margin rods, sprigs and a muse figure in the style of a 15th-century Flemish illuminated border, AI-generated by adrian729 from style references for the Polyhymnia app. | 36 | CC-BY-4.0 | [repo](https://github.com/adrian729/ducktape-assets-illuminated-acanthus) |
52
58
  | `medieval-cutouts` | Medieval cutouts | A legacy collection of 41 painted cut-outs in a medieval manuscript style (animal and human musicians, drolleries, readers and single animals) whose origin was never recorded. | 41 | CC-BY-4.0 | [repo](https://github.com/adrian729/ducktape-assets-medieval-cutouts) |
59
+ | `met-356741` | Rosselli border sheet | Border strips, corners and roundels cut from one engraved sheet of border segments by Francesco Rosselli (Florence, 1490–1500) in the Metropolitan Museum of Art, accession 29.16.3; the strips tile and the corners compose into frames. | 8 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-met-356741) |
60
+ | `mkg-de-bry-alphabet` | De Bry, Nova Alphati Effictio (1595) | Figures and ornaments cut from the sheet of the letter B in Johann Theodor de Bry's engraved alphabet series "Nova Alphati Effictio Historiis ad singulas literas correspondentibus illustrata" (Frankfurt, 1595), held by the Museum für Kunst und Gewerbe Hamburg. | 9 | LicenseRef-PDM | [repo](https://github.com/adrian729/ducktape-assets-mkg-de-bry-alphabet) |
61
+ | `schongauer-prints` | Martin Schongauer ornament prints | Leaf, thistle and hop-vine ornaments and the owl mocked by day birds, engraved by Martin Schongauer in Colmar around 1480–1490, from four sheets in the National Gallery of Art, Washington; loose prints by one artist, grouped by sheet. | 6 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-schongauer-prints) |
62
+ | `solis-prints` | Virgil Solis ornament prints | An animal frieze and a bird frieze from Virgil Solis's 1557 series "Mancherlei Conterfectisches von Thierlein" in the Museum für Kunst und Gewerbe Hamburg, and an arabesque cartouche on dark ground in the Metropolitan Museum of Art; loose prints by one Nuremberg artist, grouped by sheet. | 3 | LicenseRef-PDM | [repo](https://github.com/adrian729/ducktape-assets-solis-prints) |
53
63
  | `walters-w102` | Walters W.102 marginalia | Marginal creatures and scenes from Walters Art Museum W.102, a Flemish book of hours of around 1300 whose margins are filled with animal musicians, hybrids and small architectural vignettes. | 4 | CC0-1.0 | [repo](https://github.com/adrian729/ducktape-assets-walters-w102) |