Releases: rendis/pdf-forge
Releases · rendis/pdf-forge
v0.2.0
What's New
Inline Injector Width Resize
Scalar injectors (TEXT, NUMBER, DATE, CURRENCY, BOOLEAN) can now be horizontally resized via a drag handle on the right edge:
- Width persisted as node attribute and rendered in Typst as
#box(width:) - Content truncates with ellipsis when narrower than natural width
- Right-click "Reset Width" to restore auto-sizing
- Max width capped at natural content width; min width enforced at 40px
Image Text Wrapping
Full support for wrapping text around images (CSS float left/right in the editor, wrap-it Typst package for PDF output):
- Wrap-left and wrap-right alignment modes with custom SVG icons and grouped selector
- PDF rendering via
wrap-content()with look-ahead converter that groups inline images with following paragraphs - Proper vertical alignment by overriding Tailwind Typography prose margins
- Free aspect-ratio resize for non-circle image shapes; width resize no longer locks in wrap mode
Variables Panel & Modal
- Expandable variables modal (800px, fixed height) for better visibility of long variable/group names
- Search now includes group names
- Modal auto-closes after variable selection
Font Mark Persistence
- Font family, size, and other marks now persist on empty paragraphs across navigation and focus changes
- New
StoredMarksPersistenceTipTap extension saves/restoresstoredMarks - Popover-based
FontFamilyPickerandFontSizePickerreplace Radix Select to prevent editor focus stealing
Auth & Invitations
- Shadow users created during member invitation are now activated on first OIDC login
- Pending workspace memberships transition to active automatically
Bug Fixes
- editor: prevent preview overflow in injector config dialog
- editor: prevent page settings from hiding when variables panel is expanded
- editor: align variables panel header with editor toolbar using CSS grid/subgrid
- migrations: renumber FK removal migration to 000008 (execution order fix)
- migrations: remove FK constraint for provider injectable keys (runtime-validated, not schema-level)
- injectable: treat provider injectables as system-like for storage (avoid FK errors on publish)
- injectable: assign workspaceID to provider injectables (correct scoping)
Commits (15)
Features
4127941feat(editor): add horizontal width resizing for inline injector chips675ad43feat(render): support text wrapping around images in PDF output06183b6feat(editor): add image text wrapping and fix width resize constraint4a2fc9dfix(editor): persist font marks on empty paragraphs and fix toolbar focus5956f71feat(editor): add expandable variables modal with improved search
Fixes
8ff6061fix(editor): prevent preview overflow in injector config dialogfba773dfix(editor): align wrapped image with text by overriding prose margins8f1bc32fix(editor): prevent page settings from hiding when variables panel is expanded1266e6efix(auth): activate invited users and pending memberships on first login0ab3973fix(editor): align variables panel header with editor toolbard89c161fix(editor): close variables modal after selecting variable7c9630dfix(migrations): renumber FK removal migration to 000008a420d13fix(migrations): remove FK constraint for provider injectable keysba8682efix(injectable): treat provider injectables as system-like for storageb138ef8fix(injectable): assign workspaceID to provider injectables
Full Changelog: v0.1.1...v0.2.0
v0.1.0 - Initial Development Release
🎉 Initial Release
First public release of pdf-forge - a multi-tenant PDF template engine powered by Typst.
Features
- ✨ Visual Editor - TipTap-based rich text editor with live PDF preview
- 🏗️ Plugin Architecture - Custom injectors for any data source (CRM, DB, API)
- 📄 Typst Rendering - Fast concurrent PDF generation with image caching
- 👥 Multi-Tenant - Tenant/workspace isolation with 3-level RBAC
- 🔐 Multi-OIDC - Support for multiple identity providers
- ⚛️ React 19 Frontend - Modern SPA with TypeScript
- 🐹 Go 1.25 Backend - High-performance API with PostgreSQL 16
- 🐳 Docker Support - Easy deployment with Docker Compose
Tech Stack
- Backend: Go 1.25, Gin, PostgreSQL 16
- Frontend: React 19, TypeScript, TanStack Router, Zustand
- Rendering: Typst
- UI: Tailwind CSS, Radix UI, TipTap
- Auth: OIDC/JWKS (Keycloak, Auth0, Okta, etc.)
Getting Started
# Clone the repository
git clone https://github.com/rendis/pdf-forge.git
cd pdf-forge
# Start with Docker Compose
make docker-upVisit http://localhost:8080 to access the application.
Documentation
Note: This is an early development release. APIs and features may change.