Skip to content

Releases: FASTSHIFT/FPBInject

FPBInject v1.3.0

11 Feb 07:51

Choose a tag to compare

FPBInject v1.3.0 Release Notes

Overview

This release focuses on improving test coverage, fixing critical bugs in FPB hardware handling, and enhancing the development tooling.

New Features

FPB Hardware Improvements

  • Added complete FPB hardware information printout for better debugging
  • Added complete FPB register information parsing
  • Disabled FL_USE_FILE by default to reduce flash usage

WebServer Enhancements

  • Added --skip-port-check option to bypass port occupancy check on startup
  • Removed the inject_ function prefix requirement for cleaner injection code

Development Tools

  • Added CMake auto-format support in code formatting tools
  • Added shell script auto-format support
  • Added PDF parser tool for documentation extraction

Documentation

  • Added ARMv7-M architecture reference manual

Bug Fixes

Critical Fixes

  • Fixed FPB remap table index error that could cause incorrect function patching
  • Fixed uninitialized value in timer module
  • Fixed NuttX macro errors in Tools

WebServer Fixes

  • Fixed test failures in main module
  • Removed double quotes from file paths in serial commands
  • Fixed JavaScript test failures

Improvements

Code Quality

  • Made fpb_trampoline_table static for better encapsulation
  • Moved fpb_trampoline_targets out of the noinit section
  • Renamed HOST_TESTING macro to FPB_HOST_TESTING for clarity
  • Removed ADC initialization to reduce FLASH usage
  • Removed support for short commands -p and -n (use --path and --newpath instead)

Test Coverage

  • Increased JavaScript test coverage to 81%
  • Increased lower-level machine test coverage to 80%+
  • Added mock lower-level machine testing with 90%+ coverage
  • Added DebugMon and trampoline test cases
  • Added DebugMon NuttX test cases
  • Increased func_allocator test coverage

Breaking Changes

  • The inject_ function prefix is no longer required for injection functions
  • Short command options -p and -n have been removed; use --path and --newpath instead

Full Changelog: 9f347ec...4b72cb2

FPBInject v1.2.3

06 Feb 05:23

Choose a tag to compare

FPBInject Release Notes

Version 1.2.3

This release includes significant enhancements to the WebServer interface, file transfer capabilities, and core functionality improvements. The update focuses on improving user experience, performance optimization, and code quality.


🚀 New Features

File Transfer System

  • File Transfer Support - Complete file transfer functionality between host and device
  • Folder Upload - Support for uploading entire directories with drag-and-drop
  • File Rename - Ability to rename files on the device through the web interface
  • Directory Operations - Create directories and delete files/folders recursively
  • Transfer Cancellation - Cancel ongoing file transfers at any time
  • Time Estimation - Real-time transfer time estimation and progress tracking
  • Two-Factor Authentication - CRC-based verification for file transfer integrity
  • Drag-and-Drop Upload - Intuitive file upload via drag-and-drop interface

WebServer UI Improvements

  • Modern File List Display - Redesigned file browser with improved visual hierarchy
  • Activity Bar - Added functional activity bar for better navigation
  • Sidebar Enhancements - Scrollable sidebar with adjustable height
  • Terminal Output Pause - Pause/resume terminal output for easier log inspection
  • Backend Health Check - Automatic connection health monitoring
  • Clickable Refresh - Made "Click refresh to load" text clickable for better UX
  • Symbol Bar Adaptation - Improved symbol bar height adaptation
  • White Theme Support - Fixed text selection visibility in white-themed terminal

Function Loader Enhancements

  • File Operations - Added fseek, fcrc, and rename commands
  • Unlimited File Lists - Support for arbitrarily long file listings
  • NuttX Makefile Support - Added build support for NuttX makefile system
  • Adaptive Argument Arrays - Dynamic argv array length adaptation

Development Tools

  • Version Management - Comprehensive version number tracking system
  • ADB Shell Converter - Tool to convert ADB shell commands to serial port format
  • Bear Support - Added support for Bear's compile_commands.json output format
  • Flexible FPB Tags - Support for /* fpb inject */ with flexible spacing (spaces, underscores, hyphens)
  • Path Matching - Improved automatic compilation path matching with suffix-based fallback
  • ELF Path Flexibility - Removed extension requirement for ELF file selection

User Experience

  • Chunk Size Recommendations - Automatic chunk size optimization with user confirmation dialog
  • Packet Loss Statistics - Real-time packet loss monitoring and reporting
  • Reduced Latency - Optimized serial protocol to minimize transmission delays
  • Progress Display - Improved transfer progress percentage display
  • Directory Switching - Eliminated flickering during directory navigation

🐛 Bug Fixes

File Transfer

  • Fixed duplicate directory creation during folder uploads
  • Fixed read/write permission issues causing CRC check failures
  • Optimized file and transfer exception handling with proper cleanup
  • Fixed file list not automatically stretching to fit content

WebServer

  • Fixed duplicate log printing in output window
  • Fixed JavaScript test failures across multiple components
  • Fixed transfer test failures
  • Fixed symbols bar height adaptation issues
  • Fixed selected text visibility in white-themed terminal
  • Merged duplicate CRC error logs

Function Loader

  • Fixed file list log printing timing issues
  • Removed unnecessary readdir logs

Tools

  • Fixed missing comma in JavaScript version file

⚡ Performance Improvements

  • Serial Protocol Optimization - Reduced packet latency and packet loss through protocol enhancements
  • Directory Switching - Significantly reduced latency when navigating directories
  • Color Scheme Optimization - Improved rendering performance with optimized color schemes

🔧 Refactoring & Code Quality

Memory Allocator

  • Refactored memory allocator with improved architecture
  • Separated header files and source files for better modularity
  • Added comprehensive test cases for allocator functionality

Code Cleanup

  • Removed duplicate CRC16 algorithm implementation (consolidated to utils)
  • Removed FPBINJECT_PROGNAME from Kconfig
  • Formatted CMake files for consistency
  • Updated GCC compilation test commands

Command Interface

  • Replaced --cmd with shorter -c flag for cleaner command syntax

🧪 Testing Improvements

  • Added version module test coverage
  • Added asynchronous test support in JavaScript testing framework
  • Fixed multiple test failures across Python and JavaScript test suites
  • Added test cases for memory allocator
  • Improved test coverage for file transfer operations

📝 Documentation & Maintenance

  • Updated file refresh instruction tags
  • Improved inline documentation
  • Version bumped to v1.2.3 (from v1.2.2)

🔄 Breaking Changes

None. This release maintains backward compatibility with previous versions.


📊 Statistics

  • Total Commits: 60+
  • Files Changed: 100+

🙏 Acknowledgments

Special thanks to all contributors who helped improve FPBInject through bug reports, feature requests, and code contributions.


📦 Installation & Upgrade

To upgrade to this version, pull the latest changes from the repository:

git pull origin main

For new installations, refer to the main README.md for setup instructions.


Full Changelog: 34f3cb3...9f347ec

FPBInject v1.1

02 Feb 04:09

Choose a tag to compare

FPBInject Release Notes

Version: v1.0 → v1.1 (2026-01-24 ~ 2026-02-02)

This release includes 70 commits with significant improvements in code architecture, new features, bug fixes, and comprehensive test coverage enhancements.


Highlights

🏗️ Major Architecture Refactoring

The WebServer codebase has undergone a comprehensive refactoring effort to improve maintainability and modularity:

  • Routes Modularization: Migrated all route handlers into dedicated modules (routes/files, routes/logs, routes/patch, routes/symbols, routes/watch)
  • Component Separation: Separated ELF parser, ELF compiler, and serial port logic from the main fpb_inject module
  • Utility Reorganization: Moved device_worker, file_watcher, fpb_cli, patch_generator, state, and timer to separate directories
  • Code Cleanup: Replaced old CRC functions with a dedicated CRC16 module, removed unused files

✨ New Features

WebServer Enhancements

  • Ace Editor Integration: Replaced the previous editor with Ace Editor for better code editing experience
  • Decompilation Reference Display: Added support for viewing decompilation references
  • Global/Static Variables Support: Extended symbol support to include global and static variables
  • Address-based Function Lookup: Added capability to lookup functions by memory address
  • Compile Time Verification: Added verification for compilation timestamps
  • Dependency File Parsing: Added support for parsing *.d dependency files
  • Angr Error Messages: Improved error reporting with detailed angr error messages
  • Watcher Icon Linkage: Added visual linkage for file watcher icons
  • File Path Placeholders: Added placeholder support in file paths
  • Auto-exit FL Mode: Automatically exits Function Loader mode after successfully obtaining device information
  • Reinject Function Removal: Simplified workflow by removing the reinject function

Func Loader Improvements

  • Dynamic Memory Allocator: Implemented func_allocator to replace static allocation
  • Arduino Static Memory Allocator: Added a simple allocator for static memory on Arduino platforms
  • C++ Member Function Injection: Added support for injecting C++ class member functions
  • Serial Port Trunk Mode: Added TX trunk feature to workaround high packet loss rate serial drivers
  • Portable Print Format: Avoided %zu format specifier to bypass standard library restrictions
  • Arduino digitalRead Test: Added digitalRead call test for Arduino port

🐛 Bug Fixes

  • Fixed SSE (Server-Sent Events) connection blocking issues
  • Fixed alloc mode injection failure regression
  • Fixed incorrect content width in serial port terminal
  • Fixed thread safety issues in routes serial port operations
  • Fixed file_watcher test failures
  • Fixed API check failures
  • Fixed ELF exception handling
  • Fixed z-order issue where injection status indicator was obscured by line numbers
  • Fixed line break recognition problems
  • Fixed mock NuttX build break
  • Fixed JS test failures

🧪 Testing Improvements

  • Increased JavaScript code test coverage to 60% with CI threshold check
  • Added comprehensive test coverage for routes, reaching 80% overall coverage
  • Split JavaScript test cases for better organization
  • Added more file_watcher_manager tests
  • Separated test environment configuration files
  • Added serial port connectivity tests

📚 Documentation

  • Migrated documentation to use Mermaid diagrams instead of ASCII images
  • Moved SKILLS and REFACTOR_PLAN documents to the docs directory
  • Added AI SKILLS documentation
  • Updated refactoring plan documentation

🔧 Maintenance & Chores

  • Removed angr from default installation to reduce installation time
  • Added directory exclusion for automatic formatting scripts
  • Code formatting improvements
  • Added black version printing for consistency
  • Removed unused worker.py
  • Made symbol search interface more compact

Breaking Changes

  • The reinject function has been removed from the WebServer
  • Route endpoints have been reorganized into modular structure

Upgrade Guide

  1. Update your local repository to the latest version
  2. If you have custom scripts depending on the old route structure, update them to use the new modular routes
  3. The reinject functionality is no longer available; use the standard inject workflow instead

Git Commit History

34f3cb3 feat(WebServer): remove reinject function
cc69c0d docs(WebServer): move SKILLS to docs
e5ce0ad docs(WebServer): move REFACTOR_PLAN to docs
e8fd8a7 fix(WebServer): fix SSE connection blocked
d1f92c6 fix(WebServer): fix JS test failed
ad889bd fix(WebServer): fix alloc mode inject failed regression
3bf9b67 feat(func_loader): not use %zu printing to bypass certain standard library restrictions
9e2cb1d refact(func_loader): implement func_allocator to replace static allocation
04d2eed feat(func_loader_port_arduino): add a simple allocator for static memory
fa4c739 feat(WebServer): add angr error message
9bf32ef feat(WebServer): add placeholders to file paths
0c21110 fix(WebServer): fix incorrect content width in serial port terminal
4a18cce feat(WebServer): add Watcher icon linkage
c9ab575 test(WebServer): increase JS code test coverage to 60% & add CI threshold check
7abed55 feat(WebServer): add support for global and static variables
f795a69 refact(WebServer): split the HTML and add test cases
329187a test(WebServer): increase JS code test coverage to 50%
dac00ae test(WebServer): split JS test cases
38a9cb6 chore(WebServer): add a directory to exclude from automatic formatting scripts
d8078f7 refact(WebServer): refactoring JavaScript code into modules & Adding js code coverage statistics
06d2357 fix(WebServer): fix thread safety issues in routes serial port operations
85e3313 refact(WebServer): split toolchain and compiler instruction module
8c6a3c6 fix(WebServer): fix file_watcher test failed
0c2ea9a refact(WebServer): separate serial port protocol
f42c9e4 test(WebServer): increase the coverage of the entire series to 80%
719ae11 test(WebServer): improve route coverage
7ffef61 test(WebServer): add more file_watcher_manager test
676a247 fix(WebServer): add ELF exceptions
74c7fcd docs(WebServer): update REFACTOR_PLAN
4c12474 refact(WebServer): supplement compiler-related transfer functions
4b239c4 refact(WebServer): separate the elf compiler from fpb_inject
b658e37 refact(WebServer): separate the elf parse logic from fpb_inject
6f3b3fb refact(WebServer): separate the serial port logic from fpb_inject
eec7f43 refact(WebServer): helper functions for cleaning up routes
251c1dc refact(WebServer): complete routes migration
9abe731 refact(WebServer): migrate routes symbols logic to routes/symbols
4dd76f7 refact(WebServer): migrate routes patch logic to routes/patch
444cc7d refact(WebServer): migrate routes file watcher logic to routes/watch
d5e85eb refact(WebServer): migrate routes file logic to routes/files
8baeac6 fix(WebServer): fix api check failed
ab3dd02 refact(WebServer): migrate routes log logic to routes/logs
c267c39 refact(WebServer): move serial_utils to utils
42f1a43 refact(WebServer): replace the old CRC function with a separate CRC16 module
82d1c8e refact(WebServer): remove the jump file
1387a92 refact(WebServer): move device_worker, file_watcher, fpb_cli, patch_generator, state, and timer to a separate directory
a178673 chore(WebServer): remove unused worker.py
d82d8a3 arch(WebServer): add a refactoring plan and create a base directory
2033f2f feat(WebServer): automatically exit FL mode after successfully obtaining device information
c3fd855 fix(WebServer): fix the z-order of the injection status indicator was obscured by line numbers
58b858e chore(Tools): the default installation removes angr because the installation time is too long
6d3236a chore(WebServer): format code
4ffdfe5 chore(WebServer): add black version print
06cf6cf test(WebServer): separate the config.json file of the test environment
dd6773b feat(WebServer): add compile time verification
893062f chore(WebServer): format code
7c9d402 feat(WebServer): add *.d file parse
7e7d444 chore(WebServer): make symbol search shorter
5633a2c feat(WebServer): add support for lookup functions by address
010c10c feat: add tx trunk to workaround high packet loss rates serial drivers
bc29555 fix: fix mock nuttx build break
5e28a14 feat: add serial port connectivity test
2fe5dc6 feat(func_loader_port_arduino): add digitalRead call test
2102430 feat: add support for injecting C++ member functions
c02394f docs(WebServer): use mermaid to replace ASCII image
9603d9b docs(WebServer): refact docs & add AI SKILLS
0e50d8a fix(WebServer): add the CLI program
303a825 fix(WebServer): fix the problem of line break recognition
e77725c feat(func_loader_port_arduino): use printf to print logs & remove '\r'
0d9ef11 feat(WebServer): use Ace Editor & support using the middle button of the mouse to close tabs
11945a7 feat(WebServer): add decompilation reference display


Previous Release: v1.0 (7232e33 - docs: replace ASCII images with Mermaid)

Current Release: v1.1 (34f3cb3 - feat(WebServer): remove reinject function)

FPBInject v1.0

23 Jan 09:21

Choose a tag to compare

What's Changed

  • The lower-level machine program has been completed, including the STM32F103 bare-metal platform and the NuttX platform, and verification has been completed on Cortex-M55.
  • A Web host computer program in the style of VScode has been completed for visual debugging.
  • Complete documentation instructions and the deepwiki index have been added.
  • A complete automated testing framework has been added, and an automated verification process has been launched on CI.
  • The first PR was merged: #1
  • The entire project was almost developed and iterated by claude.