Skip to content

Add Gauntlets of Ogre Power magic item - #190

Open
stiffneckjim wants to merge 33 commits into
canismarko:masterfrom
stiffneckjim:feature/188-gauntlets-ogre-power
Open

Add Gauntlets of Ogre Power magic item#190
stiffneckjim wants to merge 33 commits into
canismarko:masterfrom
stiffneckjim:feature/188-gauntlets-ogre-power

Conversation

@stiffneckjim

Copy link
Copy Markdown

Description

This PR adds support for the Gauntlets of Ogre Power magic item.

Changes

  • Added GauntletsOfOgrePower class to dungeonsheets/magic_items.py
  • Sets the wearer's Strength score to 19 (documented in docstring)
  • Properly configured as uncommon, wondrous item requiring attunement

Testing

The item is now available for use in character sheets and follows the same pattern as other magic items in the codebase.

Closes #188

stiffneckjim and others added 28 commits November 8, 2025 14:52
ci: update GitHub Actions workflow for main branch
ci: remove Travis CI configuration
* latex.py: Silence a couple of docutils warnings

Docutils spews a truckload of FutureWarnings:

The default for the setting "use_latex_citations" will change to "True" in
Docutils 1.0.
The default for the setting "legacy_column_widths" will change to "False" in
Docutils 1.0.

This patch sets both use_latex_citations to True, which means that it might
be necessary in the future to set legacy_column_widths to False. However,
at present that causes various latex errors.

* latex.py: Set docutils legacy_column_widths to False

Docutils are planning to set legacy_column_widths to False in the
future. Follow suit, add the required DUcolumnwidth definition to
our latex preamble, and make our own code a bit simpler as well!

* character.py: Remove fighting styles from features

Feature options have long been treated using the
FeatureSelector class. This also holds for fighting styles.
Remove the redundant code from the Features property in
character.py

* character.py: Don't sort spells unnecessarily

Spells were sorted in various places where it wasn't really
necessary. Probably doesn't make a lot of difference, but it
is a little cleaner.

* make_sheets.py: Remove unused variable pages[]

* latex character template: Fix halfcaster sheet

Previously, dungeonsheets assumed a halfcaster sheet when the character
didn't have any spell slots of sixth level and higher. However, there
are cases when a player would add such a spell to their character sheet
despite not having associated spell slots, for instance when granted
through a magic item. This would cause a bug in the latex character
template (cpu go to 100%, compilation never finishes). This patch
instead checks whether no such spells have been added.

Incidentally, the fillable forms have a similar problem. However, they
will just forget about spells at levels for which the player doesn't
have spell slots and finish compilation.

* fillable_pdf_template: Fix halfcaster sheet

Previously, dungeonsheets assumed a halfcaster sheet when the character
didn't have any spell slots of sixth level and higher. However, there
are cases when a player would add such a spell to their character sheet
despite not having associated spell slots, for instance when granted
through a magic item. This patch instead checks whether no such spells
have been added.

* pyproject.toml: Package all html forms

Pytest complains about missing preamble.html. Make
sure that it gets packaged by explicitly adding all
html files to pyproject.toml.

* pyproject.toml: Deal with some deprecation warnings

* docs: Fix some warnings

---------

Co-authored-by: PJBrs <pjbrs@floorenpj.nl>
* Add AI agent instructions for dungeon-sheets project

* Update README.rst with new badge links and Docker instructions

* Remove unused badge images for test coverage and documentation status from README.rst

* docs: update Copilot instructions with CI/CD documentation
* Add AI agent instructions for dungeon-sheets project

* Update README.rst with new badge links and Docker instructions

* Remove unused badge images for test coverage and documentation status from README.rst

* docs: update Copilot instructions with CI/CD documentation

* fix: disable container push for pull requests to avoid permission errors

When PRs come from forked repositories, GITHUB_TOKEN doesn't have
permission to push to the package registry. This is a security feature.

Changes:
- Only login to GHCR when not a pull request
- Build and test Docker image for PRs, but don't push
- Push to registry only on pushes to main branch

This allows PRs to validate Docker builds without permission errors.
* fix: use raw strings for escape sequences in text_box function

Fixes SyntaxWarning about invalid escape sequences \m and \r.
Python 3.12+ warns that these will become errors in future versions.

Changed all strings using backslash markers to raw strings (r"...")
since \m is used as a placeholder marker, not an actual escape sequence.

This eliminates the warning:
  SyntaxWarning: "\m" is an invalid escape sequence.
  Such sequences will not work in the future. Did you mean "\\m"?

Removed unnecessary # noqa: W605 comments as the issue is now fixed.

* fix: keep \r as actual carriage return character

Changed r"\r" back to "\r" (actual carriage return) since FDF format
expects the carriage return character, not the literal string.

The \m marker still uses raw string since it's just a placeholder.

* fix: resolve additional invalid escape sequences in stats, epub, and monsters

Fixed three more SyntaxWarnings found by pytest:

1. stats.py - Changed "(\d+)" to r"(\d+)" in regex pattern
   - \d is a valid regex pattern but invalid Python escape sequence

2. epub.py - Changed "h(\d+)" to r"h(\d+)" in regex compile
   - Same issue with \d in regex pattern

3. monsters_c.py - Changed description string to raw string
   - Fixed \% which is an invalid escape sequence
   - Used raw string to preserve literal backslashes

All files now compile without SyntaxWarnings when checked with:
  python3 -W error::SyntaxWarning -m py_compile

This completes the fix for all invalid escape sequence warnings
reported in the test suite.

* feat: add Silvery Barbs spell from Strixhaven

Add the Silvery Barbs spell, a 1st-level enchantment reaction spell from
Strixhaven: A Curriculum of Chaos.

Spell Details:
- Level: 1st-level Enchantment
- Casting Time: 1 reaction (when a creature succeeds on a roll)
- Range: 60 feet
- Components: V (Verbal only)
- Duration: Instantaneous
- Classes: Bard, Sorcerer, Wizard

Effect: Forces the triggering creature to reroll their successful d20 roll
and use the lower result. Then grants advantage to another creature you
choose on their next attack roll, ability check, or saving throw within
1 minute.

Also includes minor whitespace cleanup in Snare spell description.
* perf: optimize Docker build size and speed

Reduce Docker image size from ~7GB to ~1GB (86% reduction) and improve build speed:

**Docker Image Optimizations:**
- Switch from python:latest to python:3.12-slim base (saves ~300MB)
- Remove texlive-fonts-extra package (~3GB) - not needed for basic LaTeX
- Use --no-install-recommends for apt packages
- Clean up apt cache after installation
- Combine commands to reduce layers

**Build Speed Improvements:**
- Add GitHub Actions cache for Docker layers (cache-from/cache-to)
- Subsequent builds will reuse cached layers for faster builds

**CI Workflow:**
- Remove texlive-fonts-extra from python-ci.yml (saves CI time)
- Tests only need texlive-fonts-recommended

**Results:**
- Image size: ~7GB → ~1GB (86% smaller)
- Build time: Significantly faster with layer caching
- Functionality: All features preserved

* fix: Remove --fancy test from CI to avoid texlive-fonts-extra dependency

The --fancy option requires texlive-fonts-extra (~3GB) for the Royal font.
Since this is an optional experimental feature, we skip testing it in CI
to maintain the optimized build size.

Changes:
- Remove 'makesheets --debug --fancy' from CI test suite
- Add documentation comments explaining the tradeoff
- Users who need fancy decorations can still install texlive-fonts-extra

* test: Skip fancy decorations test when Royal font unavailable

The test_make_fancy_sheets test requires the Royal font from texlive-fonts-extra.
Since we're removing this package to optimize build size, we now gracefully skip
this test when the font is not available.

The skip uses kpsewhich to detect if Royal.sty is available before running the test.
* docs: Add comprehensive guide for fancy decorations feature

Add detailed documentation explaining the --fancy flag and D&D 5e LaTeX styling:

**Advanced Features Documentation:**
- New section explaining fancy decorations feature
- Details on what gets styled (spells, features, monsters, etc.)
- Technical implementation details
- Instructions for initializing git submodules
- Comparison between standard and fancy modes
- Usage examples

**README Updates:**
- Added 'For Development' section with submodule initialization
- Link to D&D 5e LaTeX template repository
- Clear instructions for contributors

**Key Information:**
- Explains rpgtex/DND-5e-LaTeX-Template submodule
- Documents TEXINPUTS environment variable usage
- Clarifies LaTeX requirement for fancy mode
- Shows how conditional Jinja2 templating works

This helps users understand:
- How to enable fancy styled output
- Why the submodule exists
- What dependencies are needed
- When to use standard vs fancy mode

* ci: Add path filters to Docker workflow to skip unnecessary builds

Only trigger Docker builds when relevant files change:
- Dockerfile
- requirements.txt
- dungeonsheets/** (source code)
- .github/workflows/docker.yml

This prevents Docker builds for documentation-only changes, saving CI time and resources.
* fix: update test expectations for PDF output filenames

The make_sheet function creates character PDFs with '_char' suffix
(e.g., rogue1_char.pdf), but tests were expecting the base name only
(e.g., rogue1.pdf). This has been causing test failures.

Changes:
1. Updated char_pdf path to include '_char' suffix
2. Added HAS_PDFLATEX check using shutil.which()
3. Made GM PDF tests conditional on pdflatex availability
   - GM PDFs require pdflatex which may not be installed
   - Tests now skip GM PDF validation when pdflatex is missing

Result: All 123 tests now pass (previously 2 were failing)

The tests now correctly reflect actual behavior:
- Character sheets: basename_char.pdf (e.g., rogue1_char.pdf)
- Person sheets: basename_person.pdf (e.g., rogue1_person.pdf)
- GM sheets: require pdflatex to generate

* fix: make character PDF tests conditional on pdftk availability

The tests for character PDF generation were failing in CI because pdftk
is required to create fillable PDFs, but may not be available in all
environments.

Changes:
- Added HAS_PDFTK check using shutil.which()
- Made test_make_sheets() character PDF test conditional on pdftk
- Made test_make_fancy_sheets() character PDF test conditional on pdftk
- GM PDF tests already conditional on pdflatex availability

This allows tests to pass gracefully when pdftk is not installed, similar
to how pdflatex availability is handled for GM sheets.

* Suppress expected UserWarnings in tests

- Suppress warning for undefined infusion test in test_character.py
- Suppress warnings for undefined monsters/attributes in GM file test
- These warnings are intentional tests of error handling behavior
- Add Development Workflow section explaining GitHub Flow model
- Include step-by-step branch creation and PR process
- Document branch naming conventions (feature/, fix/, perf/, docs/, refactor/)
- Emphasize requirement to always work on feature branches
* perf: Use vanilla TeX Live + tlmgr for minimal font installation

- Replace Ubuntu's texlive packages with vanilla TeX Live installation
- Use tlmgr to install only required fonts (~10MB vs 600MB texlive-fonts-extra)
- Install specific fonts needed for fancy decorations:
  * lettrine, royal, gillius2, kpfonts, bookman, contour
- Add only necessary LaTeX packages for character sheet generation
- Exclude documentation and source files to minimize size
- Maintains full functionality with significantly reduced image size

* Optimize Docker image with minimal TeX Live and add dev container support

- Reduced Docker image from 4.64GB to ~769MB (83% reduction)
- Created shared LaTeX package list (.devcontainer/install-texlive-packages.sh)
- Added dev container configuration with TeX Live support
- Fixed LaTeX table compatibility with TeX Live 2025:
  * Changed from supertabular to regular tabular for small tables
  * Added adaptive sizing: use longtable with onecolumn for tables >20 rows
  * Added regex fix for textbf syntax issues
- Updated CI workflow to re-enable fancy decorations test
- Improved PDF generation error handling (check PDF existence vs exit code)

Files changed:
- Dockerfile: Use minimal TeX Live + tlmgr for targeted package installation
- texlive.profile: Configure TeX Live with fixed paths (no year-based dirs)
- .devcontainer/: Complete dev container setup with automated TeX Live install
- dungeonsheets/latex.py: Smart table sizing and TeX Live 2025 compatibility
- tests/test_latex.py: Updated test expectations for new table handling

* Add test for large table handling

- Added test_large_table to verify tables >20 rows trigger longtable with onecolumn
- Updated test_simple_table to verify small tables use regular tabular
- All 123 tests passing

* Add verbose Docker build output and system tool dependencies

- Add gnupg and xz-utils packages to eliminate gpg/xz warnings
- Add verbose progress messages for TeX Live installation steps
- Add -v flag to install-tl for detailed installation output
- Fix tlmgr command by removing unsupported --verbose flag
- Code formatting improvements (line length, whitespace)

These changes improve Docker build monitoring and eliminate warning
messages during TeX Live installation, making builds cleaner and
easier to debug. The system tools (gnupg, xz-utils) are preferred
over TeX Live bundled versions for better performance.

Tested: All 35 example character files successfully generate 49 PDFs.
Final image size: 815MB (82% reduction from 4.64GB baseline).

* Add GitHub CLI to dev container

The GitHub CLI (gh) is needed for creating pull requests and managing
GitHub workflows directly from the terminal. This adds the official
GitHub CLI feature to the dev container configuration.

* Fix script path resolution in setup.sh

Improve the script directory detection to work correctly both when run
directly and via postCreateCommand by using BASH_SOURCE and cd to get
the absolute path.

* fix: Support multi-architecture builds (amd64/arm64) for TeX Live

Add both x86_64-linux and aarch64-linux to PATH to support building
on both amd64 and arm64 platforms. The TeX Live installer creates
platform-specific binary directories, and the previous hardcoded
x86_64-linux path caused 'tlmgr: not found' errors on arm64.

This fixes the Docker build failure on arm64 in CI.

* fix: Add missing courier font package

The pcrr8t font (Courier) is required for monospace text in character
sheets. Without it, LaTeX compilation fails with 'failed to make pcrr8t.tfm'.

Adding the courier package to the installation list fixes this issue.
…ackages (#12)

* perf: Use vanilla TeX Live + tlmgr for minimal font installation

- Replace Ubuntu's texlive packages with vanilla TeX Live installation
- Use tlmgr to install only required fonts (~10MB vs 600MB texlive-fonts-extra)
- Install specific fonts needed for fancy decorations:
  * lettrine, royal, gillius2, kpfonts, bookman, contour
- Add only necessary LaTeX packages for character sheet generation
- Exclude documentation and source files to minimize size
- Maintains full functionality with significantly reduced image size

* Optimize Docker image with minimal TeX Live and add dev container support

- Reduced Docker image from 4.64GB to ~769MB (83% reduction)
- Created shared LaTeX package list (.devcontainer/install-texlive-packages.sh)
- Added dev container configuration with TeX Live support
- Fixed LaTeX table compatibility with TeX Live 2025:
  * Changed from supertabular to regular tabular for small tables
  * Added adaptive sizing: use longtable with onecolumn for tables >20 rows
  * Added regex fix for textbf syntax issues
- Updated CI workflow to re-enable fancy decorations test
- Improved PDF generation error handling (check PDF existence vs exit code)

Files changed:
- Dockerfile: Use minimal TeX Live + tlmgr for targeted package installation
- texlive.profile: Configure TeX Live with fixed paths (no year-based dirs)
- .devcontainer/: Complete dev container setup with automated TeX Live install
- dungeonsheets/latex.py: Smart table sizing and TeX Live 2025 compatibility
- tests/test_latex.py: Updated test expectations for new table handling

* Add test for large table handling

- Added test_large_table to verify tables >20 rows trigger longtable with onecolumn
- Updated test_simple_table to verify small tables use regular tabular
- All 123 tests passing

* Add verbose Docker build output and system tool dependencies

- Add gnupg and xz-utils packages to eliminate gpg/xz warnings
- Add verbose progress messages for TeX Live installation steps
- Add -v flag to install-tl for detailed installation output
- Fix tlmgr command by removing unsupported --verbose flag
- Code formatting improvements (line length, whitespace)

These changes improve Docker build monitoring and eliminate warning
messages during TeX Live installation, making builds cleaner and
easier to debug. The system tools (gnupg, xz-utils) are preferred
over TeX Live bundled versions for better performance.

Tested: All 35 example character files successfully generate 49 PDFs.
Final image size: 815MB (82% reduction from 4.64GB baseline).

* Add GitHub CLI to dev container

The GitHub CLI (gh) is needed for creating pull requests and managing
GitHub workflows directly from the terminal. This adds the official
GitHub CLI feature to the dev container configuration.

* Fix script path resolution in setup.sh

Improve the script directory detection to work correctly both when run
directly and via postCreateCommand by using BASH_SOURCE and cd to get
the absolute path.

* feat: Re-enable fancy decorations with Royal font

- Add cfr-initials package for Royal font support
- Add all required LaTeX packages for DND-5e-LaTeX-Template decorations
- Remove skip decorator from test_make_fancy_sheets test
- Update CI to use minimal TeX Live with explicit package list
- Update install script with complete package dependencies:
  * cfr-initials (Royal font)
  * tcolorbox, environ, trimspaces (colored boxes)
  * pdfcol, tikzfill (TikZ drawing)
  * tocloft, titlesec (table of contents/titles)
  * initials, lettrine (drop caps)
  * gensymb, was, hang, numprint (symbols/formatting)
  * multitoc, xstring, keycommand, lipsum, luacolor, minifp

Fixes the fancy decorations feature that was disabled when we
switched from texlive-fonts-extra to minimal TeX Live installation.
All packages now explicitly listed and tested.

* fix: Support multi-architecture builds (amd64/arm64) for TeX Live

Add both x86_64-linux and aarch64-linux to PATH to support building
on both amd64 and arm64 platforms. The TeX Live installer creates
platform-specific binary directories, and the previous hardcoded
x86_64-linux path caused 'tlmgr: not found' errors on arm64.

This fixes the Docker build failure on arm64 in CI.

* fix: Add missing courier font package

The pcrr8t font (Courier) is required for monospace text in character
sheets. Without it, LaTeX compilation fails with 'failed to make pcrr8t.tfm'.

Adding the courier package to the installation list fixes this issue.
* Auto-initialize git submodules in dev container setup

- Add git submodule initialization to .devcontainer/setup.sh
- Ensures DND-5e-LaTeX-Template submodule is available when container builds
- Fixes test failures when fancy decorations require dnd.sty
- Improves developer experience by automating submodule setup

* Update GitHub CLI feature configuration

- Explicitly set version and installation method for github-cli feature
- Ensures consistent GitHub CLI installation across container rebuilds
* Add paper size support for character sheets

- Add --paper-size/-p CLI option with choices: letter (default), a4
- Thread paper_size parameter through all sheet generation functions
- Update LaTeX templates (preamble.tex, MSavage_template.tex) to use paper_size variable
- Fix non-standard 'lettersize' to standard 'letterpaper' in LaTeX
- Add comprehensive tests for A4 and letter paper generation
- Supports both regular and fancy decorated sheets with custom paper sizes

* docs: Add paper size option to README

Document the new --paper-size/-p CLI option with usage example
- Fix Dockerfile path in devcontainer.json
- Add fallback for submodule update in post-create.sh
- Update copilot instructions with gh repo set-default
* Fix devcontainer configuration

- Fix Dockerfile path in devcontainer.json
- Add fallback for submodule update in post-create.sh
- Update copilot instructions with gh repo set-default

* Added Python extensions to devcontainer.

* Added devcontainer Dockerfile

* Added instructions for how to run container in Windows.
* Changed the download URL for TeX live to always use tex.org.uk (alternative has been failing)
Added command to ensure the user tree is initiated for tlmgr so it doesn't throw an error if used in the container.

* Changed the download URL for TeX live to always use tex.org.uk (alternative has been failing)

* Fixed issue with path for Dockerfile

* Merge remote-tracking branch 'origin/main' into fix/texlive-download-failing
* Fixed typo and white-space

* Added potion of invisibility, white space

* Added arcane weapon spell.
* Added Armorer specialization for Artificer class and features.

* Added example armorer and updated tests.

* Removed eroneous requirement for 6th-level from Homunculus Servant infusion.
Added Mind Sharpener infusion to definitions and example artificer file.
* Name the docker image.
Re-order packages alphabetically
Sync packages across `.devcontainer/Dockerfile` and `Dockerfile`.

* Added remote-containers extension to devcontainer config.

* Fixed missing DND-5e-LaTeX-Character-Sheet-Template submodule.
Added fontconfig package from `.devcontainer/Dockerfile`

* Added installing Kalam fonts to Dockerfile

* Removed fonts for template that's not being used (yet).

Split the Dockerfile file into stages.

* Removed docker-in-docker feature from devcontainer.json as it was breaking.

* Switched from mcr.microsoft.com/devcontainers/python:1-3.12-bookworm image to python:3.12-slim

Commented out code to install fonts for template that's not yet being used.

Added instructions to create vscode user in Docker container.

* Pointed devcontainer.json to Dockerfile in project root.

Added features for Python to devcontainer.json:
- git
- github-cli
- python v3.12
- - pipx
- - black
- - pylint
- - pytest

Created new stage in Dockerfile for dungeon-sheets-dev:
- Add vscode user and group
- Switch to `/workspace` as working directory
- Switch to vscode user

* Change `WORKDIR` to `/workspace`

* Install apt packages missing from dev container built on python:3.12-slim
- git
- sudo
- build-essential
- openssh-client

* Removed git from features and will use apt install instead.
Added autopep8, coverage to tools installed with pipx.
Changed python interpreter path to location of python installed in image.

* Added zsh as apt package and set as shell for vscode user.

* Change to workspace instead of app.

* Deleted the (now unused) dev container Dockerfile.

* Added packages from requirements-tests.txt to dev container.

Removed installing dev python packages from devcontainer.json as it wasn't working and wasn't saying why not.

Added starship and zsh to dev container set up so the terminal in VS Code isn't hopeless.

* Updated submodule DnD-%e-LaTeX-Template

* Wrong repo owner for the submodule
Implements canismarko#188 - adds support for Gauntlets of Ogre Power, an uncommon
wondrous item that sets the wearer's Strength score to 19.
Copilot AI review requested due to automatic review settings March 9, 2026 11:58

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new MagicItem entry for Gauntlets of Ogre Power so it can be referenced/instantiated as part of the dungeonsheets content registry and appear on generated character sheets.

Changes:

  • Added GauntletsOfOgrePower class in dungeonsheets/magic_items.py
  • Set item metadata (name, rarity, attunement requirement, item type) and included rules text in the docstring

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +261 to +269
class GauntletsOfOgrePower(MagicItem):
"""Your Strength score is 19 while you wear these gauntlets. They
have no effect on you if your Strength is already 19 or higher.

"""
name = "Gauntlets of Ogre Power"
rarity = "uncommon"
requires_attunement = True
item_type = "Wondrous item"

Copilot AI Mar 9, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The item’s described mechanical effect (setting the wearer’s Strength score to 19 unless already 19+) is not implemented anywhere—this class only provides metadata/docstring, and ability scores are read directly from actor._ability_scores without consulting magic items. Either implement the Strength override (e.g., via a supported magic-item attribute handled in stats.Ability.__get__, or by adjusting the wielder’s Strength in the item’s initialization with the “no effect if already 19+” rule), or update the PR description to clarify that the effect is informational only.

Copilot uses AI. Check for mistakes.
Comment on lines +261 to +269
class GauntletsOfOgrePower(MagicItem):
"""Your Strength score is 19 while you wear these gauntlets. They
have no effect on you if your Strength is already 19 or higher.

"""
name = "Gauntlets of Ogre Power"
rarity = "uncommon"
requires_attunement = True
item_type = "Wondrous item"

Copilot AI Mar 9, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you implement the Strength-score behavior, please add a targeted unit test (likely in tests/test_magic_items.py) asserting that a character with Strength < 19 becomes 19 when the item is equipped/active, and a character with Strength >= 19 is unchanged. This will prevent regressions in the stat calculation / item-application path.

Copilot uses AI. Check for mistakes.
stiffneckjim and others added 5 commits March 9, 2026 18:48
* chore: migrate dependency management to uv

* fix: update CI to use uv and specify CTAN mirror for TeX Live

- Add explicit CTAN mirror to TeX Live installation to prevent mirror selection failures
- Migrate CI from pip to uv for dependency management
- Update all test commands to use 'uv run' prefix

* chore: enable package option for uv in pyproject.toml
* chore: migrate Dockerfile to use uv

- Replace pip with uv for dependency management in containers
- Update ENTRYPOINT to use 'uv run makesheets'
- Streamline dev container setup with uv sync
- Maintain all LaTeX/pdftk dependencies for PDF generation

* Add Docker test target and document container test workflow
* Fix uv run entrypoint resolving wrong project from /build workdir (#35)

* Initial plan

* Fix uv run entrypoint to use --project /app so venv resolves correctly from /build workdir

Co-authored-by: stiffneckjim <22213990+stiffneckjim@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stiffneckjim <22213990+stiffneckjim@users.noreply.github.com>

* Fix Dockerfile: run uv sync after source is copied (#34)

* Initial plan

* Fix uv sync ordering: use --no-install-project before source is copied

Co-authored-by: stiffneckjim <22213990+stiffneckjim@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: stiffneckjim <22213990+stiffneckjim@users.noreply.github.com>

* Refactor Dockerfile: consolidate uv installation to base image

* Update README: enhance Docker section with test image instructions

* Implement linting changes from code review

---------

Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
…rce, add libwww-perl, maintenance note [fixes #39] (#40)

Python CI scripts are now running.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Gauntlets of Ogre Power magic item

2 participants