Skip to content

Releases: Papilio-Labs/papilio-loader-mcp

v0.3.1 - Export Bug Fix

Choose a tag to compare

@jackgassett jackgassett released this 17 May 04:33

What's New in v0.3.1

Bug Fixes

  • Fix export crash: add missing \stored_filename\ column to \get_saved_files()\ SELECT queries — exporting saved files no longer fails with a database error

v0.3.0 - WiFi Log and OTA UX Improvements

Choose a tag to compare

@jackgassett jackgassett released this 17 May 01:30

What's New in v0.3.0

Bug Fixes

  • Fix WiFi log pop-out page (/web/wifi-log) crashing with NameError due to missing sys import
  • Fix HTML entities rendering literally in WiFi log status badge

WiFi Log Monitor

  • Add full ANSI color support for FPGA Companion log output
  • Status badge now correctly renders bullet and ellipsis characters

Flash Interface UX

  • OTA (WiFi) is now the default flash method instead of USB/Serial
  • Persist last-used OTA IP address across page loads via localStorage — no need to re-discover the device if the IP has not changed
  • Status Log moved above Saved Files and WiFi Log sections for better visibility
  • Added Keep history checkbox on the Status Log — flash operations auto-clear the log unless checked

Saved Files Library

  • Auto-append .bin extension when saving a file without a file extension
  • Uncheck Save to library after a successful save to prevent duplicate saves on repeated flashes
  • Export all saved files as a ZIP archive (includes metadata manifest)
  • Import saved files from a previously exported ZIP archive

v0.2.0 - OTA Updates & Improved Web Interface

Choose a tag to compare

@jackgassett jackgassett released this 13 May 21:16

Release Notes v0.2.0 — OTA Updates & Improved Web Interface

Date: 2026-05-13

Overview

This release adds Over-The-Air (OTA) wireless update capability for both ESP32 firmware and FPGA bitstreams, removes login requirements from the web interface for easier local network use, and improves the overall user experience. OTA support is available through Python API, MCP tools, and the web interface.

Highlights

  • OTA (Over-The-Air) Updates: Flash ESP32 and FPGA wirelessly via WiFi
    • Network device discovery (auto-scan local subnet)
    • Both firmware types supported (ESP32 .bin and FPGA .bin)
    • ~2-3 second flash times (vs 10-15s USB)
    • Full validation and error handling
  • Optional Authentication: Web interface no longer requires login by default
    • Perfect for local network deployments
    • Can be enabled via PAPILIO_REQUIRE_WEB_AUTH=true
  • Improved Web UI: Flash method selector (USB/Serial or OTA WiFi)
    • Device discovery button in web interface
    • Visual device list with click-to-select
    • Real-time OTA progress feedback

Changes

OTA Support

Web Interface Improvements

  • Flash method radio button selector (USB/OTA) on both FPGA and ESP32 cards
  • Device discovery button with visual feedback and device list
  • IP address input field with validation
  • OTA-specific error messages and troubleshooting tips
  • Updated CSS for OTA UI components (method selector, device list, discover button)

Authentication Changes

Code Cleanup

  • Removed unused imports and dead code
  • Deleted obsolete requirements.txt (consolidated to pyproject.toml)
  • Improved code organization in database and desktop modules

New Files

  • src/papilio_loader_mcp/tools/network_discovery.py - Network device discovery
  • src/papilio_loader_mcp/tools/ota_flash.py - OTA flashing implementation
  • documentation/OTA_FEATURE.md - Complete OTA documentation
  • testing/test_ota.py - OTA functionality tests

Fixes

  • None specific to this release (focused on new features)

Installation

  • Download and run the installer: installer_output/PapilioLoader-Setup-0.2.0.exe
  • See INSTALLATION.md for detailed instructions
  • Optional: Enable authentication with environment variable PAPILIO_REQUIRE_WEB_AUTH=true

Upgrade Notes

  • Breaking Change: Default web interface now has no authentication
    • To restore login requirement: set PAPILIO_REQUIRE_WEB_AUTH=true environment variable
  • New dependency: aiohttp>=3.9.0 (auto-installed with installer or pip install -e .)
  • OTA requires devices running firmware with HTTP OTA server on port 3232
    • Compatible with FPGA-Companion firmware v1.0+

Usage Examples

OTA via Web Interface

  1. Open http://localhost:8000 (no login required)
  2. Select firmware file
  3. Click "📡 OTA (WiFi)" method
  4. Click "🔍 Discover Devices"
  5. Select device from list
  6. Click "⚡ Flash"

OTA via MCP Tools (for AI assistants)

// Discover devices
{"method": "tools/call", "params": {"name": "discover_ota_devices"}}

// Flash ESP32
{"method": "tools/call", "params": {
  "name": "flash_device_ota",
  "arguments": {
    "ip": "10.0.4.35",
    "device_type": "esp32",
    "file_path": "firmware.bin"
  }
}}

Enable Authentication

# Windows PowerShell
$env:PAPILIO_REQUIRE_WEB_AUTH="true"
python start_combined_server.py

# Or permanently in system environment variables

Performance Metrics

  • OTA Flash Times:
    • ESP32 (1.5MB): ~2.3 seconds
    • FPGA (2MB): ~3-4 seconds
  • USB Flash Times (for comparison):
    • ESP32: ~10-15 seconds
    • FPGA: ~10-15 seconds
  • Network Discovery: Typically completes in 2-5 seconds for /24 subnet

Known Issues

  • OTA discovery scans entire /24 subnet - may take longer on large networks
  • OTA requires devices to be on same local network (no remote OTA support)
  • First OTA flash after device boot may require 10-second delay for server startup
  • Primary support targets Windows 10/11. macOS/Linux packaging not included.

Verification Checklist

  • Build outputs present: GUI, console, pesptool.exe, esptool.exe
  • Installer compiles with version 0.2.0
  • Web interface accessible without login at http://localhost:8000
  • OTA device discovery works in web interface
  • OTA flash succeeds for ESP32 (requires hardware with OTA server)
  • OTA flash succeeds for FPGA (requires hardware with OTA server)
  • Authentication can be enabled via environment variable
  • USB flashing still works (regression test)

References

Checksums

SHA256 checksums for release files:

  • installer_output/PapilioLoader-Setup-0.2.0.exe: DA67E12A281AEE9F6FAF47303ECEF71882FEB01328ABB7B913B9A41266206559
  • dist/PapilioLoader.exe: 3A36DB5D36E839170A9C415CC267CF392633410B24E93BF5ABDFFDFCDA676764
  • dist/pesptool.exe: 4ACD17A08A16F480EEA3B1D0449BFE0F82D95BF8E16BFA68BE1F9097A2DDAE2A
  • dist/esptool.exe: 616B48A7C991541914491DBC0CE62B7990D67CD6C83915EEA4861B9BCC097106

Papilio Loader v0.1.0

Choose a tag to compare

@jackgassett jackgassett released this 28 Dec 22:33

Release Notes v0.1.0 — Desktop Installer & Tool Separation

Date: 2025-12-28

Overview

This release packages Papilio Loader as a Windows desktop application with an installer, separates flashing tools by device type, and fixes write-permission issues for installed builds. It also bundles required esptool data files to support ESP32 variants.

Highlights

  • Desktop executables: GUI (PapilioLoader.exe) and console (PapilioLoader-Console.exe).
  • Standalone tools: pesptool.exe (FPGA) and esptool.exe (ESP32, official).
  • Windows installer with optional PATH integration and shortcuts.
  • User data and temp files written to %LOCALAPPDATA%\\papilio-loader-mcp\\.

Changes

Fixes

  • Write-permission errors resolved by moving temp/saved data to %LOCALAPPDATA%\\papilio-loader-mcp\\.
  • Bundled esptool chip stub JSON files to prevent FileNotFoundError for ESP32 variants (e.g., S3).

Installation

  • Download and run the installer in installer_output. See INSTALLATION.md.
  • Optional: PATH integration enables pesptool.exe and esptool.exe from any terminal.

Upgrade Notes

  • Installed builds no longer write to Program Files. All writable data is under %LOCALAPPDATA%\\papilio-loader-mcp\\.
  • For Python/dev users, behavior is unchanged; dev mode uses the current working directory.

Known Issues

  • Primary support targets Windows 10/11. macOS/Linux packaging is not included in this release.
  • Default credentials are admin/admin; change for production use.

Verification Checklist

  • Build outputs present: GUI, console, pesptool.exe, esptool.exe.
  • Installer compiles and installs; shortcuts created if selected.
  • PATH integration enables CLI tools.
  • ESP32 S2/S3/C3 flashing validated post-install (requires hardware).

References

Checksums

  • installer_output/PapilioLoader-Setup-0.1.0.exe: SHA256 = 760FE1BDCC917C3890E25D82B689761FAD23425C29751396799613A12C90C2AC
  • dist/PapilioLoader.exe: SHA256 = 0392CD3EBBAFD307F1A6E720DDC5C48DAFEF6C670DB18F03E9839734A24AA464
  • dist/pesptool.exe: SHA256 = DB0EF34BFA24EB3142F30CA58B6BDA5C2F14D88D284095FA5E799283771AEED5
  • dist/esptool.exe: SHA256 = 6301C382D5B8BCD4FF3C993E0432302DEB8E19219D3B33F0155D4B008418BB2F