Skip to content

Releases: psd-tools/psd-tools

v1.11.0 - Enhanced Layer Creation APIs and Type Safety

09 Nov 14:10
29b9d0f

Choose a tag to compare

What's New in v1.11.0

This release introduces significant improvements to the public API, enhanced type safety throughout the codebase, and better developer ergonomics for layer creation workflows.

🎨 New Features

Public Layer Creation APIs

New public methods for creating layers and groups directly from PSDImage:

from psd_tools import PSDImage
from PIL import Image

# Create a new PSD document
psdimage = PSDImage.new(mode='RGB', size=(640, 480), depth=8)

# Create pixel layers with intuitive API
layer = psdimage.create_pixel_layer(pil_image, name="Layer 1", top=0, left=0, opacity=255)

# Create groups and organize layers
group = psdimage.create_group(name="Group 1")
group.append(layer)

psdimage.save('new_image.psd')

New Layer Attributes

  • fill_opacity: Control layer fill opacity separate from overall opacity (#507)
  • reference_point: Access and modify layer transformation reference points (#508)

🔧 Improvements

  • Type Safety: Comprehensive type annotations added across the API (#509, #510, #512, #516)
  • Architecture: Eliminated circular dependencies in psd_tools.api using Protocols (#515)
  • Debugging: Improved pretty print representation for Subpath objects (#506)
  • Developer Experience: Added Claude Code support for AI-assisted development (#511)

🐛 Bug Fixes

  • Fixed group blend mode returning None with minimal section divider data (#514)

💥 Breaking Changes

Layer Creation Requirements

  • Layer creation now requires a valid PSDImage object (orphaned layers are no longer supported)
  • Layers cannot be shared between multiple container objects

Before (v1.10.x):

layer = PixelLayer.frompil(None, image, parent=None)

After (v1.11.x):

layer = psdimage.create_pixel_layer(image, name="Layer 1")

📚 Documentation

  • Enhanced migration guide with detailed examples of breaking changes
  • Updated usage documentation with clearer API examples
  • Reorganized API reference for better navigation

📦 Changes Since v1.10.13

  • [api] Add public APIs for layer and group creation (#517)
  • [api] Type safety improvements (#516)
  • [api] Refactor psd_tools.api import dependencies (#515)
  • [api] Fix group blend mode returning None (#514)
  • [dev] Add Claude Code support (#511)
  • [api] Add type annotation to more APIs (#509, #510, #512)
  • [api] Add fill_opacity and reference_point attributes (#507, #508)
  • [psd] Improve pretty print of Subpath (#506)

Installation

pip install psd-tools==1.11.0

Full Changelog

See CHANGES.rst for complete details.


Note: This release includes breaking changes. Please review the migration guide before upgrading.

v1.10.13

02 Oct 02:14
e341a1d

Choose a tag to compare

What's Changed

  • Fix crash when reading Levels records by @kyamagu in #501
  • [Feature] Improve tree traversal API by @kyamagu in #502
  • Fix updated status for layer update operations by @kyamagu in #503
  • Fix incorrect method name in the documentation by @kyamagu in #504
  • Increment version to v1.10.13 by @kyamagu in #505

Full Changelog: v1.10.12...v1.10.13

v1.10.12

25 Sep 14:38
e612de4

Choose a tag to compare

What's Changed

Full Changelog: v1.10.11...v1.10.12

v1.10.11

24 Sep 21:52
9276f00

Choose a tag to compare

What's Changed

Full Changelog: v1.10.10...v1.10.11

v1.10.10

19 Sep 05:47
31954ca

Choose a tag to compare

What's Changed

Full Changelog: v1.10.9...v1.10.10

v1.10.9

07 Aug 00:38
571435d

Choose a tag to compare

What's Changed

Full Changelog: v1.10.8...v1.10.9

v1.10.8

06 Jun 07:48
56ee8d6

Choose a tag to compare

What's Changed

  • Support CAI, GenI, OCIO tags by @kyamagu in #469
  • Add a workaround for levels layer from clipstudio paint export by @kyamagu in #470
  • Update cibuildwheel to 2.23.3 by @kyamagu in #471

Full Changelog: v1.10.7...v1.10.8

v1.10.7

25 Feb 00:26
b1c517c

Choose a tag to compare

What's Changed

Full Changelog: v1.10.6...v1.10.7

v1.10.6

20 Feb 00:03
8222efb

Choose a tag to compare

What's Changed

Full Changelog: v1.10.5...v1.10.6

v1.10.5

18 Feb 00:10
5ae4b9c

Choose a tag to compare

What's Changed

Full Changelog: v1.10.4...v1.10.5