Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,26 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.3.4] - 2026-02-22

### Fixed

- **PyPI wheel packaging**: Fixed project build file to remove web includes/excludes that were breaking CI/CD

### Changed

- **`Makefile`**: Simplified `build-release` target to remove `.gitkeep` preservation logic since the placeholder is not needed in distribution builds.


## [1.3.3] - 2026-02-22

### Fixed

- **PyPI wheel packaging**: Fixed duplicate `.gitkeep` file in wheel that caused PyPI upload rejection. Changed wheel build configuration to use `only-include` for Python files, preventing the `.gitkeep` placeholder from being included via the `packages` directive while still allowing it through `force-include`.
- **PyPI wheel packaging**: Fixed duplicate `.gitkeep` file in wheel that caused PyPI upload rejection. Modified `build-release` Makefile target to not preserve the `.gitkeep` placeholder file when copying web UI build artifacts, as it's only needed for development and editable installs.

### Changed

- **`Makefile`**: Simplified `build-release` target to remove `.gitkeep` preservation logic since the placeholder is not needed in distribution builds.

## [1.3.2] - 2026-02-22

Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ build-web: ## Build Next.js static export into web-ui/out/ (required before svg2
cd web-ui && npm run build

build-release: build-web ## Build Next.js UI and copy into the Python package for distribution
uv run python -c "import shutil,pathlib; w=pathlib.Path('src/SVG2DrawIOLib/web'); gitkeep=w/'.gitkeep'; gitkeep_content=gitkeep.read_text() if gitkeep.exists() else ''; shutil.rmtree(w,ignore_errors=True); shutil.copytree('web-ui/out',w); [(p.rename(p.parent.parent/(p.parent.name+'.__PAGE__.txt')),p.parent.rmdir()) for p in list(w.rglob('__PAGE__.txt')) if p.parent.name.startswith('__next.')]; w.mkdir(exist_ok=True); gitkeep.write_text(gitkeep_content) if gitkeep_content else None"
uv run python -c "import shutil,pathlib; w=pathlib.Path('src/SVG2DrawIOLib/web'); shutil.rmtree(w,ignore_errors=True); shutil.copytree('web-ui/out',w); [(p.rename(p.parent.parent/(p.parent.name+'.__PAGE__.txt')),p.parent.rmdir()) for p in list(w.rglob('__PAGE__.txt')) if p.parent.name.startswith('__next.')]"

start-web: build-web ## Build then launch the web UI via the CLI (opens browser)
svg2drawio web
5 changes: 0 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,6 @@ path = "src/SVG2DrawIOLib/__about__.py"

[tool.hatch.build.targets.wheel]
packages = ["src/SVG2DrawIOLib"]
only-include = [
"SVG2DrawIOLib/**/*.py",
"SVG2DrawIOLib/**/*.typed",
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Removing only-include reintroduces duplicate wheel file entries

Medium Severity

Removing only-include while keeping force-include for the same web directory reintroduces the duplicate file issue fixed in v1.3.3. The empty .gitkeep file is explicitly un-ignored in .gitignore (!src/SVG2DrawIOLib/web/.gitkeep), so packages discovers it, while force-include also includes it — creating a duplicate entry in the wheel. Hatchling has a documented issue where overlapping force-include and packages paths produce invalid wheels with duplicate entries that fail PyPI upload. This only affects builds without running build-release first (which deletes .gitkeep), but matches the exact regression from v1.3.2.

Additional Locations (1)

Fix in Cursor Fix in Web

"SVG2DrawIOLib/py.typed",
]

[tool.hatch.build.targets.wheel.force-include]
"src/SVG2DrawIOLib/web" = "SVG2DrawIOLib/web"
Expand Down
2 changes: 1 addition & 1 deletion src/SVG2DrawIOLib/__about__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
"""Package version information."""

__version__ = "1.3.3"
__version__ = "1.3.4"
2 changes: 0 additions & 2 deletions src/SVG2DrawIOLib/web/.gitkeep
Original file line number Diff line number Diff line change
@@ -1,2 +0,0 @@
# Placeholder for web UI build artifacts
# The actual web UI is built from web-ui/ and copied here during release builds