Skip to content

Maintenance 2026#85

Open
samizdatco wants to merge 40 commits into
mainfrom
maintenance-2026
Open

Maintenance 2026#85
samizdatco wants to merge 40 commits into
mainfrom
maintenance-2026

Conversation

@samizdatco

@samizdatco samizdatco commented Jul 14, 2026

Copy link
Copy Markdown
Member

Misc. Improvements

  • Upgraded bundled Python to 3.14 in app
  • Added precompiled wheels for module installs (supporting Python 3.9–3.14)
  • No longer requires Xcode command line tools in order to install
  • Added support for running under uv
  • Editor now uses a WKWebKit-based view (replacing the deprecated WebKit framework)
  • Added new default editor theme
  • New app icon should avoid "squircle jail" on macOS 26+

Bugfixes

  • ordered() now works correctly and no longer causes the Advanced/Sorting.pv example to crash
  • Text.flow() will now invoke user-provided callbacks to determine layout of multi-column runs
  • Command line tool now parses {4}-style padded number blocks in exported filenames correctly
  • Silenced a console error by fixing super() use in command line tool
  • Restorable state in the app now uses the newer 'secure' api

Stacked PR

- all the metadata has been moved to pyproject and setup.py is now only responsible for building the c/objc/swift extension
- CI helpers and app/package building now live in the `build.py` script
- builds & tests now use standard `python3 -m build` and `python3 -m tests`
- pyobjc doesn't ship wheels for 3.8 anyway
- previously they would never interrupt CI, even with a failure
- also fixes local env detection in cli when run from repo
- allows the test suite to run in CI
- it was using map() which started being lazy in python3 and was failing to invoke the callback
- comparing to a tuple was always a non-match
- add missing dunder methods and drop otiose ones from MagicNumber (the base class for Dimension & Unit)
- add unit tests exercising numeric comparison ops
- fixes #67
- previously the vector would be rasterized at the width/height of the PDF or SVG, then that bitmap mask would be scaled
- now the vector image is scaled to the size it will occupy on the canvas *before* being rasterized, so the masking is still pixel-based, but will no longer be super-low res
- partially addresses #83 (though it doesn't provide the vector-based mask the user exptected)
- initial migration uses some runloop trickery in the EditorView.source getter to stay compatible with the synchronous file-saving api
- web inspector is now only enabled by default on dev builds (though it can be added to dist builds with a defaults write to `WebKitDeveloperExtras`)
- removed the need for the runloop trickery by keeping a cached copy of the document in _last_source (updated via the undo-manager callback)
- source file is app/art/PlotDevice-app.icon
- Assets.car can be rebuilt with `make.py icon`
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.

1 participant