Repository navigation
Releases: HostisHumani/ReceiptPi
Release list
ReceiptPi v1.2.3 — ESC/POS Temp Cache Fix
ReceiptPi v1.2.3 — ESC/POS Temp Cache Fix
This patch release fixes an issue where ESC/POS capability cache files could accumulate in temporary directories over time.
🛠 What was fixed
ReceiptPi now delays printer imports in watcher-related modules so that ESC/POS initialization only happens when printing is actually required.
Affected areas:
- Message printing
- Weather alerts
- Wi-Fi printing
This prevents background watchers from repeatedly creating ESC/POS capability cache files during normal polling.
💾 Reduced temporary file usage
On affected systems, thousands of temporary cache directories could accumulate under /tmp and /var/tmp, eventually filling the filesystem.
The fix prevents new temporary cache folders from being created during watcher runs.
✅ Verified
The fix was tested with:
- Manual watcher runs
- Real
/print/messagetest print - Service restart
- Journal inspection
/tmpand/var/tmpmonitoring
No new temporary cache directories were created after the fix.
Full Changelog: v1.2.2...v1.2.3
ReceiptPi v1.2.2 — Security Hardening
ReceiptPi v1.2.2 - Security Hardening
This patch release focuses on security hardening and safer handling of credentials, redirects, file paths, and error responses.
🔐 Mealie token protection
ReceiptPi now handles Mealie credentials more defensively.
- Stored API tokens are only reused for the exact configured Mealie base URL.
- Changing the Mealie URL requires entering the token again.
- Authorization headers are stripped on cross-origin redirects.
- Same-origin redirects continue to work normally.
This prevents a saved Mealie token from being forwarded to an unexpected host.
🖨️ Safer logo handling
Logo file handling now uses a fixed slot-to-path mapping instead of constructing file paths dynamically from request values.
This removes the possibility of unsafe path manipulation while keeping the existing logo workflow unchanged.
🖼️ Safer image and upload errors
Detailed Pillow/Base64 exceptions are no longer returned directly through the API.
- Users receive a generic error message.
- Full technical details remain available in the server logs via
journalctl
This avoids exposing unnecessary internal implementation details.
🔑 SSH host key pinning
Password-authenticated system report hosts now pin SSH host keys on the first successful connection.
- First contact behaves like
StrictHostKeyChecking=accept-new - Future connections Verify the stored host key.
- Changed host keys are rejected instead of silently accepted
- SSH keys are stored separately in ReceiptPi's state directory.
This replaces the previous permissive Paramiko host-key behavior.
📚 Documentation
The English and German documentation has been updated to reflect the stricter Mealie token behavior.
Full Changelog: v1.2.1...v1.2.2
ReceiptPi v1.2.1 — Security & Maintenance
ReceiptPi v1.2.1 — Security & Maintenance
This maintenance release improves ReceiptPi's development and security infrastructure.
🔐 Automated Security Scanning
ReceiptPi now uses GitHub CodeQL to automatically scan the codebase for potential security issues.
CodeQL covers both:
- Python
- JavaScript / TypeScript
Scans run on pushes and pull requests to main, as well as on a weekly schedule.
🤖 Dependabot
Dependabot is now enabled for:
- Python dependencies
- GitHub Actions
This allows ReceiptPi to automatically detect available dependency and workflow updates and propose them through pull requests.
🔄 GitHub Actions Updates
The first Dependabot updates have already been applied, bringing the affected GitHub Actions dependencies up to their current major versions.
✅ No Application Changes
This release does not change ReceiptPi's user-facing functionality.
It is a maintenance release focused on keeping the project easier to maintain and continuously checked for dependency and code security issues.
Full Changelog: v1.2.0...v1.2.1
ReceiptPi v1.2.0 - PWA Support
ReceiptPi v1.2.0 - PWA Support
ReceiptPi can now live on your home screen.
Version 1.2.0 adds full Progressive Web App support, making ReceiptPi installable directly from supported browsers when accessed over HTTPS, no separate mobile app is required.
📱 Install ReceiptPi like an app
ReceiptPi now includes:
- Web App Manifest
- Service Worker
- Dedicated app icons for Android and iOS
- Maskable icon support
- Apple Touch Icon support
- Standalone app experience
- Full-app Service Worker scope via
/sw.js
When installed, ReceiptPi launches like a regular app without the usual browser interface, providing quick access to printing, lists, recipes, and everything else ReceiptPi offers.
🤖 Android & 🍎 iOS
When ReceiptPi is served over HTTPS, supported browsers can install it as a PWA.
On iOS, ReceiptPi can also be added to the Home Screen.
No App Store, Play Store, or separate mobile application is required. ReceiptPi remains the same self-hosted application running on your Raspberry Pi.
⚡ Safe & predictable caching
The new service worker deliberately does not cache ReceiptPi pages or API requests.
Only versioned static assets (/static/...?...v=<hash>) are cached. Everything else continues to go directly to ReceiptPi.
This means:
- Pages always come from ReceiptPi.
- API requests are never served from the Service Worker cache.
- Updated assets automatically receive a new content hash.
- Old versions of changed assets are removed.
- Updating ReceiptPi activates the new service worker and cleans up old caches.
- The cache cannot continuously accumulate old versions of static assets.
This keeps the PWA lightweight while avoiding stale application data or unexpected offline behavior.
🎨 PWA appearance
ReceiptPi now provides dedicated PWA metadata and icons, including:
- 192×192 app icon
- 512×512 app icon
- 512×512 maskable icon
- 180×180 Apple Touch Icon
- ReceiptPi theme colors for installed-app integration
📚 Documentation
The English and German documentation has been updated with information about installing and using ReceiptPi as a PWA.
Full Changelog: v1.1.0...v1.2.0
ReceiptPi v1.1.0 — Recipes & Mealie Integration
ReceiptPi v1.1.0 — Recipes & Mealie Integration
ReceiptPi v1.1.0 adds recipe support with a full Mealie integration, bringing recipes and shopping lists directly to the receipt printer.
🍳 Mealie Integration
ReceiptPi can now connect directly to your Mealie instance.
- Search your Mealie recipe collection
- Search for recipes by ingredient
- Open recipe details directly in ReceiptPi
- Print recipes on your thermal printer
- Pick and print a random recipe
- Configure the integration directly from ReceiptPi settings
- Enable or disable recipe functionality through the module system
🛒 Shopping List Integration
Mealie and ReceiptPi shopping lists now work together.
Shopping list items from Mealie can be imported directly from ReceiptPi's shopping list page, ready to edit, extend and print like any other ReceiptPi shopping list.
🔐 Secure API Configuration
Mealie API credentials are stored encrypted by ReceiptPi.
The existing secrets infrastructure has been extended so integration credentials do not need to be stored as plaintext in the settings file.
🖨️ Integrated with ReceiptPi
Recipe printing participates in ReceiptPi's existing infrastructure, including:
- Print queue
- Print history
- Pending jobs
- Reprint handling
- Module management
- German and English translations
📚 Documentation
The English and German documentation has been updated with information about the new recipe and Mealie functionality.
Full Changelog: v1.0.0...v1.1.0
ReceiptPi v1.0.0
ReceiptPi v1.0.0
ReceiptPi is now stable.
After multiple alpha releases, real-world testing on Raspberry Pi hardware and several rounds of UI, reliability and security improvements, ReceiptPi has reached its first stable release.
Highlights
Redesigned interface
- Refined mobile-first UI
- IBM Plex Sans / Mono typography
- Improved navigation, cards and settings layout
- Lucide icons throughout the interface
- Easy Read mode
- Multiple themes
- Cache-busted static assets for reliable UI updates
Lists and task cards
- Shopping lists
- To-do lists
- Task / Kanban cards
- Priorities and due dates
- Persistent drafts with autosave and restore
- Manual discard
- Draft cleanup after successful printing
Reliable print handling
- Central print queue
- Quiet hours and print rules
- Print history
- Pending / reprint queue for blocked or failed jobs
- Manual retry and discard
- Retention settings
- Secure handling of pending image data
Automation and API
- REST endpoints for supported print types
- Home Assistant / curl friendly
- Backwards-compatible shopping endpoints
- API-triggered jobs integrate with history, pending jobs and print rules
System reporting
- Configurable remote hosts
- Proxmox and PBS support
- Custom SSH commands for additional systems
- SSH key authentication
- Optional encrypted SSH password storage using Fernet
- Sensitive credentials are never returned through the settings API
Reliability and performance
- Reduced unnecessary SD-card writes
- Cached state reads
- Watchers only persist state when something actually changes
- Static asset caching
- Improved persistent state handling
Update awareness
- Installed ReceiptPi version shown in the footer
- Automatic GitHub release checks
- Update notification when a newer release is available
- GitHub Actions keeps the local VERSION metadata in sync with releases
Notes
ReceiptPi remains intentionally lightweight and self-hosted. No external cloud service is required for normal operation.
Existing installations can update from the current main branch. Review the README for current installation and configuration instructions.
Thanks to everyone who tested ReceiptPi, opened issues, suggested features or simply starred the project.
ReceiptPi v0.1.10-alpha1
What's new
Persistent list drafts
Shopping lists, to-do lists, and task cards now automatically save their contents while you work.
- Drafts are restored when returning to a list
- Drafts can be discarded manually
- Successfully printed drafts are cleared automatically
- Printing through the REST API also clears the corresponding draft
- Failed print jobs keep the draft intact
- Protection against delayed autosaves restoring an already printed draft
Release update indicator
ReceiptPi can now tell you when a newer GitHub release is available.
- Current ReceiptPi version shown in the footer
- Cached GitHub release check every 12 hours
- New releases are linked directly from the footer
- GitHub outages or API errors never block the web interface
- Alpha/prerelease tags are supported
Additional improvements
- Updated English and German documentation
- Mobile, Easy Read, and all themes tested with the new UI elements
- No new runtime dependencies
As always, feedback and bug reports are welcome.
ReceiptPi 0.1.9alpha — UI Redesign & Module Management
What's new
✨ Redesigned Web UI
ReceiptPi's Web UI has received a major visual overhaul while keeping the existing themes and color choices intact.
- New Home dashboard with printer status, active module count and total print count
- Redesigned module tiles, cards, forms and settings pages
- Improved navigation and clearer visual hierarchy
- Settings are now grouped into logical sections
- Responsive layouts optimized for desktop and mobile
- Easy Read is integrated into the redesigned interface
- Consistent local SVG icons powered by Lucide
- No external icon service or CDN required
The redesign changes the presentation, not the established ReceiptPi workflow or theme choices.
🧩 Module Management
ReceiptPi modules can now be enabled or disabled individually from Settings.
Available modules:
- Shopping List
- Message
- Images
- WiFi
- Weather
- System
- Games
Disabling a module removes it from the Home dashboard and disables its associated UI and print/API routes.
Weather and WiFi watchers also respect their corresponding module state.
Changes take effect immediately without restarting ReceiptPi.
🎲 Games improvements
The offline Games module introduced in the previous release is now fully integrated into the redesigned interface.
- Sudoku
- Five Dice score sheets
- Tic-Tac-Toe
- Consistent UI and iconography across all game pages
- Existing print history, queue, rate-limit and quiet-hours handling remains integrated
Games continue to work completely offline without external APIs.
👓 Easy Read improvements
Easy Read is now more consistently integrated throughout the Web UI.
- Larger interface text
- Single-column module layout
- Redesigned components adapt to the larger text scale
- Existing larger print output remains supported
- Normal display mode remains unchanged
Easy Read can be configured under Print Rules.
📡 Watcher improvements
Background watchers now behave more defensively and respect module configuration.
- FritzBox WiFi watcher skips execution when the WiFi module is disabled
- FritzBox configuration validation avoids unnecessary connection attempts with placeholder or missing credentials
- Storm warning watcher skips external requests when the Weather module is disabled
- Improved handling around watcher execution and configuration
🎨 UI & technical improvements
- Locally bundled Lucide SVG icons
- Lucide icons distributed under the ISC License
- Improved reusable UI components and spacing
- Improved button, list and form consistency
- Better focus and interaction states
- Updated German and English translations
- Updated German and English READMEs
- PyUSB/import cleanup
- Various smaller UI and runtime improvements
Upgrade notes
No configuration migration is required.
All existing modules remain enabled by default, so existing installations retain their previous functionality after upgrading.
Module availability can be configured under Settings → Modules.
ReceiptPi is still in alpha.
v0.1.8-alpha1 – Offline Games, Easy Read & Core Improvements
What's new
🎲 Offline Games
ReceiptPi now includes a new Games section with printable activities that work completely offline.
- Sudoku with Easy, Medium and Hard difficulty
- Sudoku puzzles are generated locally with a unique solution
- Optional solution printout
- Printable Dice Score sheets
- Printable Tic-Tac-Toe boards
- Optimized layouts for 80 mm receipt paper
- Games are integrated with print history and existing print restrictions
No internet connection or external API is required — generate, print and play.
👓 Easy Read
A new Easy Read option improves readability both on screen and on printed receipts.
- Larger body text on supported printouts
- Larger headings while preserving the existing layout
- Larger Web UI text
- Single-column tile layout when Easy Read is enabled
- Normal mode remains unchanged
- Configurable under Print Rules
⚙️ Core improvements
This release also includes a larger internal review and cleanup of ReceiptPi.
- Improved error handling and runtime robustness
- Print queue improvements
- History handling improvements
- Security-related improvements
- Cleaner configuration handling
- Improved watcher implementations
- Explicit PyUSB runtime dependency
- Code and documentation cleanup
- Various print-path improvements
🌐 Languages
- German and English translations updated for the new features
Notes
ReceiptPi is still in alpha. Existing installations should continue to use the normal text size unless Easy Read is explicitly enabled.
ReceiptPi v0.1.7-alpha1
ReceiptPi v0.1.7-alpha1
This release expands ReceiptPi's weather capabilities with selectable weather providers and automatic severe weather alerts.
🌦️ Weather Providers
Weather reports are no longer tied to a single provider.
You can now select the weather data source directly in Settings → Weather:
- DWD — Germany
- Open-Meteo — Germany and Europe
The selected provider is used for regular weather reports and can be changed at any time.
⚠️ Severe Weather Alerts
ReceiptPi can now automatically monitor official weather warning services and print new severe weather alerts.
Supported providers:
- 🇩🇪 DWD — Germany
- 🇪🇺 MeteoAlarm — Europe
- 🇺🇸 NWS — United States
A new background watcher checks for active warnings every 15 minutes.
Only new warnings are printed. ReceiptPi keeps track of previously seen alerts to prevent the same warning from being printed repeatedly.
Severe weather alerts can be completely enabled or disabled from the Weather settings.
🌙 Quiet Hours
Severe weather alerts have their own Ignore quiet hours setting.
When enabled, important weather warnings can still be printed while normal ReceiptPi jobs remain blocked by an active quiet-hours rule.
This bypass applies only to quiet hours. Rate limiting and duplicate protection remain active.
⚙️ Settings
The Weather settings page now includes configuration for:
- Weather report provider
- Severe weather alerts
- Warning provider
- Provider-specific region/location
- Ignore quiet hours for severe weather alerts
Existing weather locations continue to work as before.
🔧 Technical
- Added dedicated severe weather provider handling
- Added a storm warning watcher
- Added persistent state to prevent duplicate warning prints
- Added a dedicated internal weather-alert print endpoint
- Quiet-hours bypass is controlled server-side from ReceiptPi settings
- No new Python dependencies
ReceiptPi is still in alpha. Feedback and bug reports are welcome.