Skip to content

Releases: pyxle-framework/Pyxle

v0.2.3

15 Apr 18:11
b72f1bc

Choose a tag to compare

v0.2.3 — Release Notes

🐛 Bug Fix

SSR props no longer break JSON.parse on pages containing <!-- or -->

The inline-JSON escaper (pyxle.ssr._escape.escape_inline_json) previously rewrote HTML-comment sequences with backslash escapes that are not valid JSON:

  • <!--<\!--\! is not a legal JSON escape
  • -->--\>\> is not a legal JSON escape

Any page whose props contained a literal --> (very common in docs that quote shell output, code examples, or arrow markers) would fail at hydration with:

[Pyxle] Failed to parse initial props
SyntaxError: Bad escaped character in JSON

The fix swaps the problematic replacements for Unicode escapes — which are valid JSON — and still neutralise the HTML-tokenizer sequences:

  • <!--\u003c!--
  • -->--\u003e

🧪 Tests

  • Added a parametrised test_output_is_valid_json_after_escape that round-trips escaped output through json.loads to catch this class of regression.
  • 1127 total tests, all passing.

📦 Install

pip install --upgrade pyxle-framework==0.2.3

🙏 Migration

None. This is a pure bug fix — existing apps just need to redeploy with 0.2.3 to get correct behaviour.

v0.2.2 — Release Notes

15 Apr 14:40
89a9864

Choose a tag to compare

v0.2.1

13 Apr 04:59
1f09d4d

Choose a tag to compare

Full Changelog: v0.2.0...v0.2.1

Pyxle v0.2.0 — File extension migration: `.pyx` → `.pyxl`

13 Apr 04:00
cc7fc54

Choose a tag to compare

v0.2.0

Breaking Changes

  • File extension changed from .pyx to .pyxl. All Pyxle page files now use the .pyxl extension. The .pyx extension was already used by Cython, causing GitHub to misclassify repositories, IDEs to default to Cython syntax highlighting, and confusion in search results. The new .pyxl extension is unique and maps clearly to the Pyxle name.

Migration

Rename your page files and update any cross-page imports:

find pages/ -name '*.pyx' -exec bash -c 'mv "$1" "${1%.pyx}.pyxl"' _ {} \;
// Before
import { useTheme } from './layout.pyx';

// After
import { useTheme } from './layout.pyxl';

See the full migration guide for details.

What's Changed

  • Compiler, scanner, CLI, error pages, registry, and layout resolver all recognize .pyxl
  • pyxle init scaffolds .pyxl files
  • pyxle check reports .pyxl file counts
  • error.pyxl and not-found.pyxl replace error.pyx and not-found.pyx as error boundary filenames
  • layout.pyxl and template.pyxl replace layout.pyx and template.pyx
  • JSX import rewriter handles the .pyxl.jsx specifier transform
  • All documentation updated

Full Changelog: v0.1.9...v0.2.0

v0.1.9

10 Apr 17:54
694837c

Choose a tag to compare

What's new

Navigation progress bar
A horizontal progress bar appears at the top of the page when navigating to non-prefetched pages. Shows after a 150ms delay (avoids flashing on fast navigations), uses a decay easing animation, respects prefers-reduced-motion, and includes ARIA progressbar accessibility.

##Language toolkit support
Pyxle now supports pip install pyxle-framework[langkit] as an optional extra, installing pyxle-langkit for IDE support — LSP server, linter, VS Code extension, and CLI tools.

##Architecture documentation
New docs/architecture/ section with 10 detailed pages covering the parser, compiler, routing, dev server, SSR pipeline, build system, runtime, and CLI internals.

##AI agents guide
New docs/guides/for-ai-agents.md — positions Pyxle as the framework most optimized for AI coding agents with side-by-side comparisons and technical reasoning.

##Editor setup guide
New docs/guides/editor-setup.md — covers VS Code extension installation, language server setup, CLI tools, Neovim/Sublime configuration, and troubleshooting.

##Bug fixes

  • fix(devserver): Prevent cached navigation JSON from replacing HTML when restoring a backgrounded tab. Added Vary: x-pyxle-navigation and Cache-Control headers, plus a pageshow BFCache handler on the client.
  • fix(ssr): Production error responses no longer leak exception type, message, or the dev-mode Vite script tag. Generic error page shown in production.
  • fix(compiler): Guard against MemoryError/RecursionError from deeply nested expressions in the parser. Added defensive per-file exception handling in pyxle check.
  • fix(compiler): Detect broken Python leaking into JSX segments via a JSX-toplevel-prefix whitelist. Suppress cascade diagnostics when Python errors exist.
  • Other changes
    • JSX component promoted as the recommended approach for head management across all docs
    • Removed legacy # --- client --- fence marker from scaffold template
    • Author email updated to dev@pyxle.dev

Full Changelog: v0.1.8...v0.1.9

Bump to v0.1.8 - Refactor Parser

09 Apr 09:23
b27d28e

Choose a tag to compare

Bug Fix: Module caching in production mode

06 Apr 04:33
f699801

Choose a tag to compare

Page loaders (@server) and action handlers (@action) were re-imported from disk on every HTTP request — even in production. This wasted CPU on redundant module execution and destroyed module-level state (caches, counters, connection pools).

Production mode (debug=False) now returns cached modules from sys.modules after first import. Dev mode continues to reimport on every request for hot-reload.

Other changes

  • Documentation links in README now point to [pyxle.dev/docs](https://pyxle.dev/docs/) instead of local docs/ directory
  • Fixed README logo image URL to use absolute path for correct rendering on PyPI
  • Updated Documentation URL in package metadata to pyxle.dev

Full Changelog: v0.1.5...v0.1.6

Bump version to v0.1.5

05 Apr 22:51
2e40269

Choose a tag to compare

v0.1.4

05 Apr 06:47
e06068c

Choose a tag to compare

Full Changelog: v0.1.3...v0.1.4

v0.1.3

05 Apr 06:38
bfc2256

Choose a tag to compare

Full Changelog: v0.1.2...v0.1.3