cdf94c9fd069be1aa6954fbbf157adea0869b300
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`10.8.0` → `10.8.1`](https://renovatebot.com/diffs/npm/eslint/10.8.0/10.8.1) |  |  | | [globals](https://github.com/sindresorhus/globals) | [`17.8.0` → `17.9.0`](https://renovatebot.com/diffs/npm/globals/17.8.0/17.9.0) |  |  | | [puppeteer](https://github.com/puppeteer/puppeteer/tree/main#readme) ([source](https://github.com/puppeteer/puppeteer)) | [`25.4.0` → `25.5.0`](https://renovatebot.com/diffs/npm/puppeteer/25.4.0/25.5.0) |  |  | --- ### Release Notes <details> <summary>eslint/eslint (eslint)</summary> ### [`v10.8.1`](https://github.com/eslint/eslint/releases/tag/v10.8.1) [Compare Source](https://github.com/eslint/eslint/compare/v10.8.0...v10.8.1) #### Bug Fixes - [`18eb0a7`](https://github.com/eslint/eslint/commit/18eb0a7e787b9fac3049ef3dad0e845d2bd940a4) fix: prevent ASI hazard in `no-unused-labels` autofix ([#​21173](https://github.com/eslint/eslint/issues/21173)) (dongkyu lee) - [`151ba3f`](https://github.com/eslint/eslint/commit/151ba3f5834a0909e8b9b1736f4889ac694c0104) fix: false positives in `getter-return` and `accessor-pairs` ([#​21163](https://github.com/eslint/eslint/issues/21163)) (Grit) - [`6898df9`](https://github.com/eslint/eslint/commit/6898df9364639ee64b9448a4cb6b08a30c16bd37) fix: ignore meta-property names in `id-denylist` ([#​21166](https://github.com/eslint/eslint/issues/21166)) (Pixel) - [`4d7db66`](https://github.com/eslint/eslint/commit/4d7db6628e2badf0857cb88734fe641c3874bce9) fix: ignore meta-property names in `id-match` ([#​21167](https://github.com/eslint/eslint/issues/21167)) (Pixel) - [`677214e`](https://github.com/eslint/eslint/commit/677214e7eea83d8bc6e4b79eea871577e1369d5f) fix: handle ASI hazards in no-unused-vars removeVar suggestion ([#​20935](https://github.com/eslint/eslint/issues/20935)) (kuldeep kumar) #### Documentation - [`7d0cbf8`](https://github.com/eslint/eslint/commit/7d0cbf81cfdb7526b5c4cb7b222ddc7f257db560) docs: Update README (GitHub Actions Bot) - [`0a05812`](https://github.com/eslint/eslint/commit/0a05812adb12598b32e85297b98df5ad14501d60) docs: add missing backticks to `no-duplicate-imports.js` ([#​21183](https://github.com/eslint/eslint/issues/21183)) (Lee Daeun) - [`678c90b`](https://github.com/eslint/eslint/commit/678c90b55da2889d4400cbf6e2584ab683faf202) docs: Update README (GitHub Actions Bot) - [`8a10424`](https://github.com/eslint/eslint/commit/8a104242e8e1c5614940fab7324346974cff7d26) docs: Update README (GitHub Actions Bot) - [`69bb948`](https://github.com/eslint/eslint/commit/69bb948061105426dbe6e3c931fcda783286e020) docs: Update README (GitHub Actions Bot) #### Chores - [`0a14800`](https://github.com/eslint/eslint/commit/0a148005051fded2ef1d14cc228ae505251b4b10) chore: update github/codeql-action action to v4.37.4 ([#​21196](https://github.com/eslint/eslint/issues/21196)) (renovate\[bot]) - [`05adcb1`](https://github.com/eslint/eslint/commit/05adcb13542061dc7fadde5cd58d23d405a96d93) test: fix failing ecosystem test for `eslint-plugin-unicorn` ([#​21191](https://github.com/eslint/eslint/issues/21191)) (Lazizbek Ergashev) - [`5611035`](https://github.com/eslint/eslint/commit/56110356652dd614b3cf0933538abb551fc6bd6f) test: add error locations info to `no-void` ([#​21185](https://github.com/eslint/eslint/issues/21185)) (Lee Daeun) - [`ee47333`](https://github.com/eslint/eslint/commit/ee47333aa681cfc3cb54df08c38f211ea219cc2a) ci: bump github/codeql-action from 4 to 4.37.3 ([#​21176](https://github.com/eslint/eslint/issues/21176)) (dependabot\[bot]) - [`f131c03`](https://github.com/eslint/eslint/commit/f131c034ad91bbf06bcbb6b5e931447a8e419a46) chore: improve ecosystem test failure reporting ([#​20937](https://github.com/eslint/eslint/issues/20937)) (crimsonjay0) - [`1f6edde`](https://github.com/eslint/eslint/commit/1f6eddee609b369b50993eab08d437dda4700991) chore: update ecosystem plugins ([#​21182](https://github.com/eslint/eslint/issues/21182)) (ESLint Bot) - [`d3266fb`](https://github.com/eslint/eslint/commit/d3266fb26c719c6b90a6cbe54bb120c9335ad19c) chore: unpin `webpack` dependency ([#​21172](https://github.com/eslint/eslint/issues/21172)) (Francesco Trotta) - [`65a6519`](https://github.com/eslint/eslint/commit/65a6519cc8733b4688558a8611397cf9d01dd55d) chore: add allowScripts field to package.json ([#​21092](https://github.com/eslint/eslint/issues/21092)) (GiHoon Noh) - [`22e5256`](https://github.com/eslint/eslint/commit/22e52568536e0009d4493dc888736bc163220c4b) ci: add `triage:no` label to Dependabot PRs ([#​21141](https://github.com/eslint/eslint/issues/21141)) (lumir) - [`55c9038`](https://github.com/eslint/eslint/commit/55c9038836c91b6bd5617f0c97bea2274c9cc0bf) ci: bump actions/labeler from 6 to 7 ([#​21159](https://github.com/eslint/eslint/issues/21159)) (dependabot\[bot]) - [`7280e78`](https://github.com/eslint/eslint/commit/7280e78183d4711a49916b6a49ba5efaa651a991) chore: update dependency prettier to v3.9.6 ([#​21162](https://github.com/eslint/eslint/issues/21162)) (renovate\[bot]) - [`eddbad6`](https://github.com/eslint/eslint/commit/eddbad60158d8cda86830fbe934a9d2282273b32) test: fix failing ecosystem test for `eslint-plugin-unicorn` ([#​21156](https://github.com/eslint/eslint/issues/21156)) (Francesco Trotta) - [`60a178d`](https://github.com/eslint/eslint/commit/60a178d5ef1b0c471be0831031ed7347f8f81dc2) chore: update ecosystem plugins ([#​21150](https://github.com/eslint/eslint/issues/21150)) (ESLint Bot) - [`f9f61dc`](https://github.com/eslint/eslint/commit/f9f61dc6112836f46a58a410c38b8c2faf10973f) test: add error locations to `no-unreachable` ([#​21151](https://github.com/eslint/eslint/issues/21151)) (JIYEON) - [`d086293`](https://github.com/eslint/eslint/commit/d08629382b0a6aaa042823b796e5100e60053b54) test: add error locations to `no-undef` ([#​21147](https://github.com/eslint/eslint/issues/21147)) (JIYEON) - [`cc01b67`](https://github.com/eslint/eslint/commit/cc01b67061bbf558aa25746883ea1cad847f7cf2) test: add error locations to `no-useless-catch` ([#​21144](https://github.com/eslint/eslint/issues/21144)) (devoil) - [`688e75e`](https://github.com/eslint/eslint/commit/688e75ede01b295d51f2f86c9d82da020a4c887e) chore: add missing backticks in JSDoc ([#​21143](https://github.com/eslint/eslint/issues/21143)) (Bo Hyun Kim) - [`7c1e175`](https://github.com/eslint/eslint/commit/7c1e17543ad396f50f65b003cf9142d43d3c63b0) test: add error locations to `require-await` ([#​21145](https://github.com/eslint/eslint/issues/21145)) (Grit) - [`588a26d`](https://github.com/eslint/eslint/commit/588a26ddce3c5a20f5b3f3d51ba1353cce7b4b0c) test: add error locations to `no-extra-label` ([#​21139](https://github.com/eslint/eslint/issues/21139)) (dongkyu lee) - [`059aa89`](https://github.com/eslint/eslint/commit/059aa895743639e3ab53d14f9d944ff4be042233) test: add error locations to `no-useless-concat` ([#​21140](https://github.com/eslint/eslint/issues/21140)) (dongkyu lee) - [`5a452a8`](https://github.com/eslint/eslint/commit/5a452a8ba53917d65c9d83c3959ed35c2f890613) test: add error locations to `no-const-assign` ([#​21138](https://github.com/eslint/eslint/issues/21138)) (dongkyu lee) </details> <details> <summary>sindresorhus/globals (globals)</summary> ### [`v17.9.0`](https://github.com/sindresorhus/globals/releases/tag/v17.9.0) [Compare Source](https://github.com/sindresorhus/globals/compare/v17.8.0...v17.9.0) - Update globals (2026-08-01) ([#​348](https://github.com/sindresorhus/globals/issues/348)) [`5a958ed`](https://github.com/sindresorhus/globals/commit/5a958ed) *** </details> <details> <summary>puppeteer/puppeteer (puppeteer)</summary> ### [`v25.5.0`](https://github.com/puppeteer/puppeteer/blob/HEAD/CHANGELOG.md#2550-2026-08-04) [Compare Source](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.4.0...puppeteer-v25.5.0) ##### ♻️ Chores - **puppeteer:** Synchronize puppeteer versions ##### Dependencies - The following workspace dependencies were updated - dependencies - [@​puppeteer/browsers](https://github.com/puppeteer/browsers) bumped from 3.0.6 to 3.1.0 ##### 🎉 Features - roll to Firefox 153.0 ([#​15258](https://github.com/puppeteer/puppeteer/issues/15258)) ([6a54140](https://github.com/puppeteer/puppeteer/commit/6a541408972cffff21bab4a7b45e64507bb50835)) - track dialog status ([#​15266](https://github.com/puppeteer/puppeteer/issues/15266)) ([9a6f646](https://github.com/puppeteer/puppeteer/commit/9a6f6461996dcd1918f87e018e1916417e531628)) ##### 🛠️ Fixes - disable WebUIOmniboxPopup and WebUIOmniboxAimPopup features ([#​15278](https://github.com/puppeteer/puppeteer/issues/15278)) ([5dc2964](https://github.com/puppeteer/puppeteer/commit/5dc2964de9fd5d22ee02d2f5c81284f4d6500431)) - do not override the user agent when nothing is emulated ([#​15274](https://github.com/puppeteer/puppeteer/issues/15274)) ([39c4653](https://github.com/puppeteer/puppeteer/commit/39c4653fae57e412e788f844db7932881c7dc9d3)) - forward headers to browserURL HTTP discovery and WebSocket connection ([#​15238](https://github.com/puppeteer/puppeteer/issues/15238)) ([948d870](https://github.com/puppeteer/puppeteer/commit/948d8703080e4da25904e970872468cdcc7115d4)) - reject PWA access if network conditions are configured ([#​15271](https://github.com/puppeteer/puppeteer/issues/15271)) ([6eb2b8c](https://github.com/puppeteer/puppeteer/commit/6eb2b8c341bcf330e6e93ddfa3b03fe9c7ece09d)) - roll to Chrome 151.0.7922.71 ([#​15272](https://github.com/puppeteer/puppeteer/issues/15272)) ([a7f07db](https://github.com/puppeteer/puppeteer/commit/a7f07dbab0e5e900c0a8e2858a94fbb8ccb26c5c)) - roll to Firefox 153.0.1 ([#​15269](https://github.com/puppeteer/puppeteer/issues/15269)) ([dd365cc](https://github.com/puppeteer/puppeteer/commit/dd365cc473c2064423e70805b9cc3b0ce6184838)) ##### 📄 Documentation - document units in page.metrics() ([#​15221](https://github.com/puppeteer/puppeteer/issues/15221)) ([eae2b9a](https://github.com/puppeteer/puppeteer/commit/eae2b9a6eef9de65dfef95232657d032d647f0a3)) ##### 🏗️ Refactor - move some of the logger to constructor ([#​15282](https://github.com/puppeteer/puppeteer/issues/15282)) ([67d1467](https://github.com/puppeteer/puppeteer/commit/67d1467d8d7d0101988df3a9a46249c65e8cc7d3)) - use a enum to manage the prefixes ([#​15281](https://github.com/puppeteer/puppeteer/issues/15281)) ([c8faa53](https://github.com/puppeteer/puppeteer/commit/c8faa53225f96a0f3a0e4d18958c3405e3ee4d57)) </details> --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMy4yIiwidXBkYXRlZEluVmVyIjoiNDQuMjIuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==--> Reviewed-on: https://git.keligrubb.com/keligrubb/scrollsmith/pulls/26 Co-authored-by: Renovate Bot <renovate@keligrubb.com>
Scrollsmith
Scrollsmith is a Node.js tool for generating Dungeons & Dragons one-page dungeon PDFs automatically. It calls an LLM (Open WebUI /api/chat/completions or Ollama /api/generate, inferred from OLLAMA_API_URL), proofreads and refines the result, then builds a structured PDF with maps, rooms, encounters, treasure, and NPCs.
Features
- Three-pass dungeon generation:
- Draft: initial dungeon ideas
- Refine: proofread, add flavor, fill in vague details
- JSON conversion: output strictly valid JSON for PDF generation
- Automatically generates a PDF named after the dungeon title
- PDF layout includes three columns: map & hooks, rooms, encounters & treasure & NPCs
- Open WebUI or Ollama
Requirements
- Node.js 22+
- LLM endpoint (see below)
- Gitea Releases (optional) for PDF uploads
.envfile with:
OLLAMA_API_URL=https://your-openwebui-host/api/chat/completions
OLLAMA_API_KEY=your_api_key_here
OLLAMA_MODEL=qwen3.5-122b-a10b
COMFYUI_URL=http://192.168.1.124:8188
Installation
git clone https://github.com/yourusername/scrollsmith.git
cd scrollsmith
npm install
API Configuration
The client automatically infers the API type from the endpoint URL, making it flexible for different deployment scenarios.
Direct Ollama API
For direct Ollama API calls, set:
OLLAMA_API_URL=http://localhost:11434/api/generate
Open WebUI API
For Open WebUI API calls, set:
OLLAMA_API_URL=https://your-openwebui-host/api/chat/completions
OLLAMA_API_KEY=your_open_webui_api_key
OLLAMA_MODEL=qwen3.5-122b-a10b
Note: The API type is inferred from the URL (
/api/chat/completionsvs/api/generate); noOLLAMA_API_TYPEvariable.
Usage
- Configure
.envand ensure the LLM endpoint is reachable. - Run:
npm start
- A PDF will be generated automatically. The filename matches the dungeon title.
Optional: update the map path in index.js if you have a local dungeon map.
Project structure
index.js– Entry point: env, model init, dungeon + image + PDF.src/– Application modules:dungeonGenerator.js– LLM-backed dungeon content generation and validation.dungeonTemplate.js– HTML template and layout for the PDF.ollamaClient.js– Ollama/Open WebUI API client and text cleaning.imageGenerator.js– Map image generation (Ollama + optional ComfyUI).generatePDF.js– Puppeteer-based PDF generation from the template.
test/– Unit tests (test/unit/) and integration tests (test/integration/).
Example Output
-
the-tomb-of-shadows.pdf -
Three-column layout:
- Column 1: Map, Adventure Hooks, Rumors
- Column 2: Rooms
- Column 3: Encounters, Treasure, NPCs
Notes
- Open WebUI needs a valid
OLLAMA_API_KEYwhen the server requires it. - Dungeon generation can take a few minutes depending on your LLM response time.
License
PROPRIETARY