Renovate Bot b5f47ea033
Release / generate-dungeon (push) Failing after 44s
Release / upload-to-gitea-release (push) Skipped
chore(deps): update all non-major dependencies (#23)
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@vitest/coverage-v8](https://vitest.dev/guide/coverage) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8)) | [`4.1.9` → `4.1.10`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-v8/4.1.9/4.1.10) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fcoverage-v8/4.1.10?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fcoverage-v8/4.1.9/4.1.10?slim=true) |
| [eslint](https://eslint.org) ([source](https://github.com/eslint/eslint)) | [`10.7.0` → `10.8.0`](https://renovatebot.com/diffs/npm/eslint/10.7.0/10.8.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/eslint/10.8.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint/10.7.0/10.8.0?slim=true) |
| [globals](https://github.com/sindresorhus/globals) | [`17.7.0` → `17.8.0`](https://renovatebot.com/diffs/npm/globals/17.7.0/17.8.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/globals/17.8.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/globals/17.7.0/17.8.0?slim=true) |
| [puppeteer](https://github.com/puppeteer/puppeteer/tree/main#readme) ([source](https://github.com/puppeteer/puppeteer)) | [`25.3.0` → `25.4.0`](https://renovatebot.com/diffs/npm/puppeteer/25.3.0/25.4.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/puppeteer/25.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/puppeteer/25.3.0/25.4.0?slim=true) |
| [vitest](https://vitest.dev) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`4.1.9` → `4.1.10`](https://renovatebot.com/diffs/npm/vitest/4.1.9/4.1.10) | ![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/4.1.10?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/4.1.9/4.1.10?slim=true) |

---

### Release Notes

<details>
<summary>vitest-dev/vitest (@&#8203;vitest/coverage-v8)</summary>

### [`v4.1.10`](https://github.com/vitest-dev/vitest/releases/tag/v4.1.10)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.9...v4.1.10)

#####    🐞 Bug Fixes

- **browser**: Check fs access in builtin commands \[backport to v4]  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (claude-opus-4-8)** in [#&#8203;10680](https://github.com/vitest-dev/vitest/issues/10680) [<samp>(5c18d)</samp>](https://github.com/vitest-dev/vitest/commit/5c18dd267)
- **vm**: Fix external module resolve error with deps optimizer query for encoded URI \[backport to v4]  -  by [@&#8203;SveLil](https://github.com/SveLil) and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;10661](https://github.com/vitest-dev/vitest/issues/10661) [<samp>(bae52)</samp>](https://github.com/vitest-dev/vitest/commit/bae52b511)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.9...v4.1.10)

</details>

<details>
<summary>eslint/eslint (eslint)</summary>

### [`v10.8.0`](https://github.com/eslint/eslint/releases/tag/v10.8.0)

[Compare Source](https://github.com/eslint/eslint/compare/v10.7.0...v10.8.0)

#### Features

- [`2fee9bb`](https://github.com/eslint/eslint/commit/2fee9bb7416116cbed4d8c8100b1ae713b6356a1) feat: export `ConfigObject` from `eslint/config` ([#&#8203;21082](https://github.com/eslint/eslint/issues/21082)) (sethamus)

#### Bug Fixes

- [`6b8d2f7`](https://github.com/eslint/eslint/commit/6b8d2f7589b8a7c8b91b8ca2a2ef6d46178760d8) fix: escape reserved characters in rule id in `html` formatter ([#&#8203;21129](https://github.com/eslint/eslint/issues/21129)) (Francesco Trotta)
- [`9091071`](https://github.com/eslint/eslint/commit/90910715011211a20d011d807d398a7005127f35) fix: prevent `no-unreachable-loop` crash when all loop types are ignored ([#&#8203;21116](https://github.com/eslint/eslint/issues/21116)) (Pixel)
- [`e23fafe`](https://github.com/eslint/eslint/commit/e23fafe8d4b15355adef6cdebef414c3a2019454) fix: prefer-object-spread add semicolon when adding parenthesis ([#&#8203;21081](https://github.com/eslint/eslint/issues/21081)) (synthex-byte)
- [`20b5ad0`](https://github.com/eslint/eslint/commit/20b5ad052360a443786a202e94624a3f81846511) fix: quadratic-time regex in `prefer-template` ([#&#8203;21096](https://github.com/eslint/eslint/issues/21096)) (Milos Djermanovic)
- [`8b6f6c0`](https://github.com/eslint/eslint/commit/8b6f6c0b33411f34485512456d94f221daf7321f) fix: apply ignore configs to computed methods in class-methods-use-this ([#&#8203;21094](https://github.com/eslint/eslint/issues/21094)) (Pixel)
- [`b2c608c`](https://github.com/eslint/eslint/commit/b2c608c014a396800a24a89343265d0616bee2d8) fix: NewExpression with parenthesized callee in `preserve-caught-error` ([#&#8203;21083](https://github.com/eslint/eslint/issues/21083)) (Francesco Trotta)

#### Documentation

- [`6ddf858`](https://github.com/eslint/eslint/commit/6ddf8587e5cfeeb7328332601bb76d98b8a198ea) docs: fix broken Specify Parser Options anchor link ([#&#8203;21106](https://github.com/eslint/eslint/issues/21106)) (Minsu)
- [`784dfbe`](https://github.com/eslint/eslint/commit/784dfbe98f0222426fd200153a5ce2e5624151f0) docs: Clarify `no-eq-null` description ([#&#8203;21120](https://github.com/eslint/eslint/issues/21120)) (Park Harin)
- [`7ec733a`](https://github.com/eslint/eslint/commit/7ec733a3ba5acb053a73ac656030a3879aa48fda) docs: Fix typos and grammar in glossary ([#&#8203;21095](https://github.com/eslint/eslint/issues/21095)) (Marry (Subin Yang))
- [`92bb13f`](https://github.com/eslint/eslint/commit/92bb13f13065db72d62454b9830d3ae52db15c76) docs: replace quake link ([#&#8203;21108](https://github.com/eslint/eslint/issues/21108)) (Jung Hyeon Jun)
- [`68eb4a5`](https://github.com/eslint/eslint/commit/68eb4a57572409dbdcfeb3bc5c92ddbba46bc770) docs: fix broken Specify Globals anchor links in rule pages ([#&#8203;21103](https://github.com/eslint/eslint/issues/21103)) (Minsu)
- [`d28f697`](https://github.com/eslint/eslint/commit/d28f697e0d32d7446c825fd89c362db028450134) docs: replace Code Climate CLI links with Qlty CLI links ([#&#8203;21099](https://github.com/eslint/eslint/issues/21099)) (Jung Hyeon Jun)
- [`eccc68d`](https://github.com/eslint/eslint/commit/eccc68d42564e46bc9020d19ec52d2988f3b7bfa) docs: correct --suppressions-location option description ([#&#8203;21093](https://github.com/eslint/eslint/issues/21093)) (Ga eun Lee)
- [`c5963f7`](https://github.com/eslint/eslint/commit/c5963f74bfa82a5b7ccc0607dcdcc695b8c97a31) docs: Update README (GitHub Actions Bot)

#### Chores

- [`4fbf46d`](https://github.com/eslint/eslint/commit/4fbf46d140120ae838db08cbe49544c985956490) test: pin `webpack` version to 5.108.4 ([#&#8203;21137](https://github.com/eslint/eslint/issues/21137)) (Francesco Trotta)
- [`2d063e2`](https://github.com/eslint/eslint/commit/2d063e224e9bb0ccb0a28c120f7e380a8d62f320) chore: update HTTP URLs to HTTPS in JSDoc and comments ([#&#8203;21101](https://github.com/eslint/eslint/issues/21101)) (Bo Hyun Kim)
- [`eccbe7b`](https://github.com/eslint/eslint/commit/eccbe7bc9257a6c99880468e452c8dfafbf47f74) test: add error locations to `no-class-assign` ([#&#8203;21123](https://github.com/eslint/eslint/issues/21123)) (devoil)
- [`e7d1e43`](https://github.com/eslint/eslint/commit/e7d1e4373bf626f8da76d62ce024c28928bc99bc) ci: bump actions/setup-go from 6 to 7 ([#&#8203;21118](https://github.com/eslint/eslint/issues/21118)) (dependabot\[bot])
- [`e9d66d0`](https://github.com/eslint/eslint/commit/e9d66d0cde1a7752c29dee53ab7b62632835a87a) ci: bump actions/setup-node from 6 to 7 ([#&#8203;21119](https://github.com/eslint/eslint/issues/21119)) (dependabot\[bot])
- [`ee225b6`](https://github.com/eslint/eslint/commit/ee225b60c26f0cc5f4d71641888a5bd2ec5626d6) test: Add error location details to `no-eq-null` rule ([#&#8203;21117](https://github.com/eslint/eslint/issues/21117)) (Park Harin)
- [`044a627`](https://github.com/eslint/eslint/commit/044a627fa3e28ee1410d515acc5378eb4b49f8ba) chore: update minimatch to ^10.2.5 ([#&#8203;21107](https://github.com/eslint/eslint/issues/21107)) (김채영)
- [`fb09aa8`](https://github.com/eslint/eslint/commit/fb09aa8ff09730d3ccf68859e065f99666b52466) chore: update ecosystem plugins ([#&#8203;21115](https://github.com/eslint/eslint/issues/21115)) (ESLint Bot)
- [`5abd878`](https://github.com/eslint/eslint/commit/5abd878740fe417fd8a910cac3741f2a0317b365) test: add error locations to `no-proto` ([#&#8203;21114](https://github.com/eslint/eslint/issues/21114)) (Gihyeon Jeong / 정기현)
- [`9715887`](https://github.com/eslint/eslint/commit/9715887ec94a5ff936447d7b680d039fbe2f0541) test: Add error location details to `no-div-regex` ([#&#8203;21110](https://github.com/eslint/eslint/issues/21110)) (Park Harin)
- [`a746ec6`](https://github.com/eslint/eslint/commit/a746ec6ea4a2249b1eb3f512264da5f4d5f7c886) test: add error locations to `no-new-wrappers` ([#&#8203;21109](https://github.com/eslint/eslint/issues/21109)) (Gihyeon Jeong / 정기현)
- [`8dde645`](https://github.com/eslint/eslint/commit/8dde64570e240f3ef8af873d59a752db6d8519aa) test: add error locations to `no-ex-assign` ([#&#8203;21102](https://github.com/eslint/eslint/issues/21102)) (devoil)
- [`13ab0ec`](https://github.com/eslint/eslint/commit/13ab0ec447650c079d8a5e5d67222f79e69c741e) test: add error locations to `no-label-var` ([#&#8203;21098](https://github.com/eslint/eslint/issues/21098)) (Gihyeon Jeong / 정기현)
- [`a99906f`](https://github.com/eslint/eslint/commit/a99906ffb8342dde03336b5c6372b5658f21d5f2) test: Add error location details to `no-delete-var` rule ([#&#8203;21105](https://github.com/eslint/eslint/issues/21105)) (Park Harin)
- [`c47e8dc`](https://github.com/eslint/eslint/commit/c47e8dc9bbfba797430db45ae08cb6f7392cfc9d) chore: add missing backticks to `languages/js/index.js` ([#&#8203;21104](https://github.com/eslint/eslint/issues/21104)) (beeen)
- [`0174428`](https://github.com/eslint/eslint/commit/0174428dd7543d118cf67a823b98dd97032fe68c) chore: add missing backticks to `translate-cli-options.js` ([#&#8203;21097](https://github.com/eslint/eslint/issues/21097)) (dongkyu lee)
- [`3d36589`](https://github.com/eslint/eslint/commit/3d36589a4917326500f0707bb41745160f387d00) chore: add missing backticks to `serialization.js` ([#&#8203;21091](https://github.com/eslint/eslint/issues/21091)) (이규환)
- [`dcc9312`](https://github.com/eslint/eslint/commit/dcc9312c1081931de0fe1b555fbb6aa82fe696b9) test: add error locations to `eqeqeq` ([#&#8203;21090](https://github.com/eslint/eslint/issues/21090)) (Ga eun Lee)
- [`2710b18`](https://github.com/eslint/eslint/commit/2710b182472cd1a95e4aff6186cb2c4fbadb4ee0) ci: Add explicit permissions to rebuild-docs-sites workflow ([#&#8203;21089](https://github.com/eslint/eslint/issues/21089)) (Marry (Subin Yang))
- [`5d2f866`](https://github.com/eslint/eslint/commit/5d2f8663ee60701e9036b0b0933a12efd9d93269) chore: update dependency prettier to v3.9.5 ([#&#8203;21086](https://github.com/eslint/eslint/issues/21086)) (renovate\[bot])
- [`d584e31`](https://github.com/eslint/eslint/commit/d584e31098f262563b97dc5d5f23a63a187879a0) chore: fix failing ecosystem test for `eslint-plugin-unicorn` ([#&#8203;21084](https://github.com/eslint/eslint/issues/21084)) (Francesco Trotta)
- [`bf3eda0`](https://github.com/eslint/eslint/commit/bf3eda049bd690f1e9a5a0c4520a6329b3e4ec85) chore: update ecosystem plugins ([#&#8203;21079](https://github.com/eslint/eslint/issues/21079)) (ESLint Bot)

</details>

<details>
<summary>sindresorhus/globals (globals)</summary>

### [`v17.8.0`](https://github.com/sindresorhus/globals/releases/tag/v17.8.0)

[Compare Source](https://github.com/sindresorhus/globals/compare/v17.7.0...v17.8.0)

- Update globals (2026-07-01) ([#&#8203;347](https://github.com/sindresorhus/globals/issues/347))  [`7394811`](https://github.com/sindresorhus/globals/commit/7394811)

***

</details>

<details>
<summary>puppeteer/puppeteer (puppeteer)</summary>

### [`v25.4.0`](https://github.com/puppeteer/puppeteer/blob/HEAD/CHANGELOG.md#2540-2026-07-27)

[Compare Source](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.3.0...puppeteer-v25.4.0)

##### 🎉 Features

- add browser-level PWA install/launch/uninstall APIs ([#&#8203;15235](https://github.com/puppeteer/puppeteer/issues/15235)) ([4a48c8a](https://github.com/puppeteer/puppeteer/commit/4a48c8a3637376a19238696bcc40816962380b1d))
- expose Explicit Resource Management (`using`) ([#&#8203;15027](https://github.com/puppeteer/puppeteer/issues/15027)) ([a1ca86b](https://github.com/puppeteer/puppeteer/commit/a1ca86b9df6036d76c055c94be2661b90e1d800c))
- expose handled getter on Dialog ([#&#8203;15225](https://github.com/puppeteer/puppeteer/issues/15225)) ([be6f726](https://github.com/puppeteer/puppeteer/commit/be6f72675587722e75b84edfc4bd813180ac1031))
- roll to Chrome 151.0.7922.47 ([#&#8203;15237](https://github.com/puppeteer/puppeteer/issues/15237)) ([06442ae](https://github.com/puppeteer/puppeteer/commit/06442aeb8b03fb9effb32bd261a9bffa0b45603a))

##### Dependencies

- The following workspace dependencies were updated
  - dependencies
    - puppeteer-core bumped from 25.3.0 to 25.4.0

##### 🛠️ Fixes

- combine duplicate BiDi response headers instead of overwriting ([#&#8203;15203](https://github.com/puppeteer/puppeteer/issues/15203)) ([16ec165](https://github.com/puppeteer/puppeteer/commit/16ec165d4bdf498e3b0fd6a8a7f0a3f02bfc823b))
- don't throw in checkVisibility for a detached text node ([#&#8203;15197](https://github.com/puppeteer/puppeteer/issues/15197)) ([89683ac](https://github.com/puppeteer/puppeteer/commit/89683ac2da9522f7d99df9172b487a50e4cbeec1))
- roll to Chrome 150.0.7871.115 ([#&#8203;15223](https://github.com/puppeteer/puppeteer/issues/15223)) ([3232cd4](https://github.com/puppeteer/puppeteer/commit/3232cd4bd432107d2007e9d582fee5ade311a1df))
- roll to Chrome 150.0.7871.46 ([#&#8203;15196](https://github.com/puppeteer/puppeteer/issues/15196)) ([30d4100](https://github.com/puppeteer/puppeteer/commit/30d4100bca7512c8a227bc141cef580faee8bc5d))
- roll to Chrome 150.0.7871.49 ([#&#8203;15220](https://github.com/puppeteer/puppeteer/issues/15220)) ([633d55d](https://github.com/puppeteer/puppeteer/commit/633d55dc82cd0bd85dc012db736a42c44e7e890d))
- roll to Firefox 152.0.5 ([#&#8203;15219](https://github.com/puppeteer/puppeteer/issues/15219)) ([5de975a](https://github.com/puppeteer/puppeteer/commit/5de975a415e34455fb431e473205e281374162b7))

</details>

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNTEuMyIsInVwZGF0ZWRJblZlciI6IjQ0LjMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->Reviewed-on: https://git.keligrubb.com/keligrubb/scrollsmith/pulls/23

Co-authored-by: Renovate Bot <renovate@keligrubb.com>
2026-08-04 02:29:09 +00:00
2026-02-21 22:19:21 -05:00
2026-02-21 22:19:21 -05:00
2026-02-22 03:26:50 +00:00
2026-02-21 22:19:21 -05:00
2026-02-21 22:19:21 -05:00

Scrollsmith

status-badge

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:
    1. Draft: initial dungeon ideas
    2. Refine: proofread, add flavor, fill in vague details
    3. 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
  • .env file 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/completions vs /api/generate); no OLLAMA_API_TYPE variable.


Usage

  1. Configure .env and ensure the LLM endpoint is reachable.
  2. Run:
npm start
  1. 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_KEY when the server requires it.
  • Dungeon generation can take a few minutes depending on your LLM response time.

License

PROPRIETARY

S
Description
No description provided
Readme
2.4 MiB
2026-04-30
Latest
2026-04-30 00:03:38 +00:00
Languages
JavaScript 100%