{
  "_id": "6a629911d3420cf5dfdb4065",
  "Package": "palettecore",
  "Title": "Derive, Optimise and Audit a Scientific Colour Palette from One\nSeed Colour",
  "Version": "0.2.2",
  "Authors@R": "person(\"Heidi Helena\", \"Andersén\", role = c(\"aut\", \"cre\"),\nemail = \"andersenheidihelena@gmail.com\",\ncomment = c(ORCID = \"0000-0001-5923-5865\"))",
  "Description": "Generates sequential, diverging and categorical colour\npalettes from a single seed colour in OKLCH with CIEDE2000\nspacing, and audits every palette under simulated colour-vision\ndeficiency, greyscale conversion, sRGB gamut and WCAG contrast.\nColour-vision deficiency is simulated at severity 1.0 with the\nmodel of Machado, Oliveira and Fernandes (2009)\n<doi:10.1109/TVCG.2009.113>; the design rationale follows\nCrameri, Shephard and Heron (2020)\n<doi:10.1038/s41467-020-19160-7>. Mirrors the 'Python'\nreference implementation maintained in the same repository and\nis validated against shared parity fixtures. Thresholds are\nconfigurable design rules, not established accessibility\ncut-offs.",
  "License": "Apache License (>= 2)",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "7.3.3",
  "URL": "https://github.com/heidihelena/palettecore",
  "BugReports": "https://github.com/heidihelena/palettecore/issues",
  "Repository": "https://heidihelena.r-universe.dev",
  "Date/Publication": "2026-07-23 21:52:22 UTC",
  "RemoteUrl": "https://github.com/heidihelena/palettecore",
  "RemoteRef": "HEAD",
  "RemoteSha": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
  "RemoteSubdir": "r/palettecore",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-07-23 22:40:29 UTC",
    "User": "root"
  },
  "Author": "Heidi Helena Andersén [aut, cre] (ORCID:\n<https://orcid.org/0000-0001-5923-5865>)",
  "Maintainer": "Heidi Helena Andersén <andersenheidihelena@gmail.com>",
  "_user": "heidihelena",
  "_type": "src",
  "_file": "palettecore_0.2.2.tar.gz",
  "_fileid": "https://r2.ropensci.org/db2700ea8c6a4ccfb03eee71451c153f0d6adcd4333280b5ab7c9626bb64dce5",
  "_filesize": 110565,
  "_sha256": "db2700ea8c6a4ccfb03eee71451c153f0d6adcd4333280b5ab7c9626bb64dce5",
  "_expires": "2026-10-31T22:43:28.000Z",
  "_created": "2026-07-23T22:40:29.000Z",
  "_published": "2026-07-23T22:43:29.813Z",
  "_jobs": [
    {
      "job": 89351965553,
      "time": 138,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8580932801"
    },
    {
      "job": 89351965406,
      "time": 109,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8580922812"
    },
    {
      "job": 89351965413,
      "time": 67,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8580908120"
    },
    {
      "job": 89351965383,
      "time": 92,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8580916674"
    },
    {
      "job": 89351588894,
      "time": 130,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8580883777"
    },
    {
      "job": 89351965397,
      "time": 107,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "8580921808"
    },
    {
      "job": 89351965426,
      "time": 71,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8580909574"
    },
    {
      "job": 89351965396,
      "time": 59,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8580905961"
    },
    {
      "job": 89351965440,
      "time": 67,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8580908268"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130",
  "_status": "success",
  "_upstream": "https://github.com/heidihelena/palettecore",
  "_commit": {
    "id": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
    "author": "Heidi Andersén <heidihelena@hotmail.com>",
    "committer": "Heidi Andersén <heidihelena@hotmail.com>",
    "message": "v0.2.2: audit the returned HEX colours, input validation, diverging fixes, CI\n\nExternal review (2026-07-24) found the audit ran on internal float RGB\nwhile callers receive 8-bit HEX - quantisation could flip threshold\nresults (e.g. #86DC0A n=12 sequential: reported deuteranopia 6.0 with\nno warning; the returned colours recompute to 5.9, below threshold).\n\n- Quantise to the returned 8-bit colours BEFORE every diagnostic, in\n  both languages; audit now describes exactly the palette delivered.\n- anchor=\"exact\" now also snaps diverging palettes (was silently\n  sequential-only while reporting anchor: exact).\n- Validate use, threshold names, and threshold values (finite, >= 0);\n  a typo no longer looks like a clean audit.\n- Diverging requires n >= 3; new diverging_structure diagnostic (arms\n  monotonic, centre interior) with a warning when broken.\n- Precompute CVD simulations in categorical scoring (modest speedup;\n  vectorised CIEDE2000 stays on the roadmap).\n- 93 tests (22 new, incl. audit==returned-hexes consistency and the\n  reviewer's case); R parity PASS, 9/9 fixtures hex-exact; R CMD check\n  clean. New CI workflow: Python 3.10-3.14, artifacts + twine check,\n  R parity, R CMD check on push/PR.\n- PEP 639 SPDX license metadata; README: greyscale wording corrected\n  to a luminance proxy, install section, roadmap updated.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n",
    "time": 1784843542
  },
  "_maintainer": {
    "name": "Heidi Helena Andersén",
    "email": "andersenheidihelena@gmail.com",
    "orcid": "0000-0001-5923-5865"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1",
      "role": "Depends"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "jsonlite",
      "role": "Suggests"
    }
  ],
  "_owner": "heidihelena",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-30",
      "n": 7
    }
  ],
  "_tags": [
    {
      "name": "v0.2.0",
      "date": "2026-07-23"
    },
    {
      "name": "v0.2.1",
      "date": "2026-07-23"
    },
    {
      "name": "v0.2.2",
      "date": "2026-07-23"
    }
  ],
  "_topics": [
    "accessibility",
    "ciede2000",
    "color",
    "colorblind",
    "data-visualization",
    "oklch",
    "palette",
    "python"
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "heidihelena",
      "count": 7,
      "uuid": 155103098
    }
  ],
  "_userbio": {
    "uuid": 155103098,
    "type": "user",
    "name": "Heidi Andersen",
    "followers": 35,
    "description": "Founder, Vahtian | Thoracic oncologist, pulmonologist, and clinical data analyst | MD, PhD"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/palettecore"
  },
  "_devurl": "https://github.com/heidihelena/palettecore",
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/palettecore.html",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "ciede2000",
    "contrast_ratio",
    "generate_palette",
    "hex_to_oklch",
    "hex_to_srgb",
    "max_chroma",
    "oklch_to_hex",
    "out_of_gamut_excursion",
    "scale_color_accessible",
    "scale_colour_accessible",
    "scale_fill_accessible",
    "simulate_cvd",
    "srgb_to_hex"
  ],
  "_help": [
    {
      "page": "ciede2000",
      "title": "CIEDE2000 colour difference between two sRGB colours",
      "topics": [
        "ciede2000"
      ]
    },
    {
      "page": "contrast_ratio",
      "title": "WCAG 2.x contrast ratio between two sRGB colours",
      "topics": [
        "contrast_ratio"
      ]
    },
    {
      "page": "generate_palette",
      "title": "Generate an audited palette from one seed colour",
      "topics": [
        "generate_palette"
      ]
    },
    {
      "page": "hex_to_oklch",
      "title": "Convert a HEX colour to OKLCH",
      "topics": [
        "hex_to_oklch"
      ]
    },
    {
      "page": "hex_to_srgb",
      "title": "Convert a HEX colour to sRGB",
      "topics": [
        "hex_to_srgb"
      ]
    },
    {
      "page": "max_chroma",
      "title": "Largest OKLCH chroma at (L, H) inside the sRGB gamut",
      "topics": [
        "max_chroma"
      ]
    },
    {
      "page": "oklch_to_hex",
      "title": "Convert an OKLCH colour to HEX",
      "topics": [
        "oklch_to_hex"
      ]
    },
    {
      "page": "out_of_gamut_excursion",
      "title": "Pre-clamp gamut excursion of a CVD simulation",
      "topics": [
        "out_of_gamut_excursion"
      ]
    },
    {
      "page": "scale_colour_accessible",
      "title": "Discrete colour scale from an audited palettecore palette",
      "topics": [
        "scale_color_accessible",
        "scale_colour_accessible"
      ]
    },
    {
      "page": "scale_fill_accessible",
      "title": "Discrete fill scale from an audited palettecore palette",
      "topics": [
        "scale_fill_accessible"
      ]
    },
    {
      "page": "simulate_cvd",
      "title": "Simulate colour-vision deficiency (complete dichromacy)",
      "topics": [
        "simulate_cvd"
      ]
    },
    {
      "page": "srgb_to_hex",
      "title": "Convert an sRGB colour to HEX",
      "topics": [
        "srgb_to_hex"
      ]
    }
  ],
  "_readme": "https://github.com/heidihelena/palettecore/raw/HEAD/README.md",
  "_rundeps": [],
  "_score": 1.6989700043360187,
  "_indexed": true,
  "_nocasepkg": "palettecore",
  "_universes": [
    "heidihelena"
  ],
  "_previous": "0.2.1",
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.2",
      "date": "2026-07-23T22:42:52.000Z",
      "distro": "resolute",
      "commit": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
      "fileid": "https://r2.ropensci.org/093535f33ab214bc6cacd4bfd0e43d55fce17f2d39e33359e6264a91bad2c699",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.2",
      "date": "2026-07-23T22:42:24.000Z",
      "distro": "resolute",
      "commit": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
      "fileid": "https://r2.ropensci.org/130c9824f72a4154ebf62911bb7bcdc2ccaa46ac89d01192d4c09697571c6944",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.2",
      "date": "2026-07-23T22:41:45.000Z",
      "commit": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
      "fileid": "https://r2.ropensci.org/d8942427ef00b916a9b851133036aec2c6a49313b0c545bf8f7b327f40377c4e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.2",
      "date": "2026-07-23T22:42:06.000Z",
      "commit": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
      "fileid": "https://r2.ropensci.org/bd31da4c88ca74802a122331917225ac174148c8e072c20a3b22d3aaf27306d6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.2",
      "date": "2026-07-23T22:42:29.000Z",
      "commit": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
      "fileid": "https://r2.ropensci.org/52d5b89e62ff73af45a2b1e777e3dc6a7e6c3343c1210464afb5db42cbb52ae8",
      "status": "success",
      "buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.2",
      "date": "2026-07-23T22:41:41.000Z",
      "commit": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
      "fileid": "https://r2.ropensci.org/4dd688bff3355f5ff81961c056f930b0871d5c5f06f62e0cfd55d3334d8721bd",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.2",
      "date": "2026-07-23T22:41:31.000Z",
      "commit": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
      "fileid": "https://r2.ropensci.org/2cf271f749747692c3ca6c5c1d331df7644de8e9ba4cfdb3f9b253366da4e60e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.2",
      "date": "2026-07-23T22:41:38.000Z",
      "commit": "ef9f78d8ff5a96658866f7207b61d70c8c8e5aaf",
      "fileid": "https://r2.ropensci.org/70bd62d145e4eeca5645bf1b4b9c1aa9469322361035b22977b3fe5fa4cbd898",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/heidihelena/actions/runs/30050563130"
    }
  ]
}