Skip to content

Releases: FASTSHIFT/FPBInject

FPBInject v1.6.0

25 Mar 08:13

Choose a tag to compare

FPBInject v1.5.7 - v1.6.0 Release Notes

v1.6.0

New Features

  • CLI: Add CLI-GUI coexistence with server proxy and port lock, enabling CLI and WebServer to share the same device simultaneously
  • CLI: Complete CLI-GUI coexistence phases 1, 3-5
  • CLI: Add server-stop command and port conflict detection
  • Serial: Add serial port flow control options (DTR/RTS)

Bug Fixes

  • i18n: Use plain English in log calls instead of t() to avoid translation issues in logs
  • i18n: Add missing slot tooltip translations for Status/ON/OFF
  • i18n: Add DTR and RTS to the non-translated whitelist
  • CLI: Per-port PID files for multi-instance support
  • MCP/CLI: Sync MCP tools, autoApprove, CLI docs with actual implementation
  • Test: Fix test_fpb_cli test failures

Improvements

  • CLI: Simplify device ops with unified _require_device helper
  • Test: Add port conflict scenario tests to reach 85% coverage

v1.5.7

New Features

  • WebServer: Add serial connection diagnostics with error classification
  • WebServer: Lock connection params when serial port is connected

Bug Fixes

  • WebServer: Only quote --path argument when path contains spaces
  • WebServer: Update chunk size tooltips to recommend throughput test
  • WebServer: Alert when fpbInfo fails due to unresponsive device
  • Main: Print startup banner as single block instead of per-line logger calls

Improvements

  • Protocol: Use short flags for serial commands
  • MCP: Move mcp dependency to runtime check in fpb_mcp_server.py
  • WebServer: Remove serial connection retry logic
  • Refactor: Split test dependencies into WebServer/tests/requirements.txt
  • Docs: Revise README for clarity on FPBInject features

CI

  • Add mcp package install since it was removed from requirements.txt
  • Install ARM toolchain for ELF symbol tests

Full Changelog: 567068f...a445e99

FPBInject v1.5.6

16 Mar 10:55

Choose a tag to compare

FPBInject v1.5.4 - v1.5.6 Release Notes

v1.5.6

New Features

  • WebServer: Added blink animation to tutorial guided elements
  • Serial: Retry up to 3 times before declaring probe failure
  • Func Loader: Derive FL_B64_BUF_SIZE from FL_BUF_SIZE at compile time
  • Func Loader: Enable help print

Bug Fixes

  • WebServer: Use i18n for transfer.js prompt and error messages
  • Serial: Limit throughput test max_size to 512
  • WebServer: Sync frontend tests with refactored config/fpb code

Improvements

  • Func Loader: Replace if-else chain with cmd_args_t + dispatch table
  • Serial: Rename serial params and add 3-phase throughput test

v1.5.5

New Features

  • WebServer: Add token authentication for non-localhost access
  • WebServer: Show local and network URLs on server startup
  • WebServer: Add clickable slot indicator to toggle patch enable/disable
  • WebServer: Generate call-original pattern in patch template (function pointer + fpb_enable_patch disable/re-enable)
  • WebServer: Use GDB ptype for function signature extraction
  • FPB: Implement fpb_enable_patch API with unit tests
  • MCP: Add mem_read, mem_write, mem_dump tools
  • CLI: Add mem-read, mem-write, mem-dump commands
  • Func Loader: Add enable command and unit tests
  • CMake: Enable -gdwarf-4

Bug Fixes

  • WebServer: Add Thumb bit (| 1) for ARM Cortex-M function pointer in patch template
  • WebServer: Use static const instead of #define for function pointer
  • WebServer: Fix typedef syntax in patch template
  • WebServer: Fix slot parsing and add i18n for toggle enable tooltip
  • WebServer: Add missing tooltips.toggle_enable i18n key
  • WebServer: Pass origAddr to openManualPatchTab for call-original code generation
  • WebServer: Dynamic banner width for long network URL
  • WebServer: saveSymbolData uses cached hex_data instead of DOM parsing
  • WebServer: Throttle transfer speed/ETA display to 500ms
  • WebServer: Skip quotes for single-char path in --path argument
  • WebServer: Localize auto-generated patch preview label
  • CLI: Fix memory read/write failure

Improvements

  • FPB: Consolidate register definitions into fpb_regs.h
  • FPB: Remove redundant enabled field from state structs
  • WebServer: Use browser download for patch and symbol save
  • C++: Replace regex-based function parsing with nm -l line-based resolution

v1.5.4

New Features

  • C++: Full C++ injection support with name mangling and namespace resolution
  • Compiler: Add C++ file compilation adapter (auto-switch gccg++)
  • Main: Check gdb-multiarch availability on startup

Bug Fixes

  • Compiler: Fix inject_marker_lines not passed to compile_inject in inject_multi

Improvements

  • Docs: Add iteration cycle comparison diagram (Traditional vs FPBInject) to README
  • Docs: Update calling original function pattern — function pointer + fpb_enable_patch
  • Docs: Sync Architecture.md API Reference, Protocol, Memory Allocation, and Compilation Process with actual implementation

Full Changelog: 4be6cc6...567068f

FPBInject v1.5.3

10 Mar 13:13

Choose a tag to compare

FPBInject v1.5.0 - v1.5.3 Release Notes

v1.5.3

New Features

  • Protocol: Added CRC integrity check to read/patch/tpatch/dpatch commands, including addr/offset and len in CRC calculation

Bug Fixes

  • Symbols: Added c_type and decoded_value to all symbol read endpoints for proper scalar value display
  • Symbols: Render scalar variables using struct tree style for consistent UI
  • Auto-Inject: Replaced slow GDB symbol lookup with nm-based approach and fixed serial thread safety violation
  • WebServer: Restored function name display in slot status bar
  • WebServer: Fixed auto-inject progress bar not auto-hiding after completion
  • Func Loader: Resolved build errors in cmd_read and disabled patch branches

v1.5.2

New Features

  • GDB: Added single-shot read cache line for RSP bridge to reduce redundant memory reads
  • GDB: Extracted memory regions from ELF PT_LOAD headers for smarter caching
  • GDB: Added external GDB connection functionality for attaching to running debug sessions
  • GDB: Bridged GDB logs to frontend OUTPUT panel for real-time visibility
  • Symbols: Added inline value editing for tree nodes (symbols and watch)
  • Symbols: Added save memory data to binary file
  • Serial: Added chunk-level retry for memory read/write operations
  • Func Loader: Added address range check for read/write commands
  • Func Loader (NuttX): Automatically enter FL mode when the first instruction is executed
  • WebServer: Used proportional viewport units for responsive layout

Bug Fixes

  • Symbols: Skipped struct layout parsing for very large variables to avoid timeouts
  • Symbols: Skipped layout parsing for large symbols in read stream paths
  • GDB: Removed duplicate GDB prefix in log output
  • WebServer: Fixed status bar slot display showing {{slot}}
  • WebServer: Show - for slot status when device not connected
  • WebServer: Prevented panel from covering status bar
  • WebServer: Made Chinese text scanner fail tests when findings exist
  • i18n: Added missing reading_progress translation key
  • i18n: Added translations for save symbol data feature
  • Tests: Resolved lint warnings in test_file_routes.py

Improvements

  • GDB: Aligned cache line size with serial chunk_size
  • Tutorial: Simplified hello_inject step
  • Docs: Rewrote Architecture.md with full system overview
  • Docs: Added inline memory write interaction design
  • Tests: Added saveSymbolData tests and Save button coverage
  • Tests: Added tests for file browse and write endpoints

v1.5.1

New Features

  • SSE: Added SSE streaming progress for inject and memory read operations
  • Tutorial: Added dynamic arrow rotation pointing to target element
  • Tutorial: P0 UX improvements — gate banner and simplified text
  • Main: Added requirements.txt check on startup with tests

Bug Fixes

  • GDB: Flushed stale buffer before ptype to prevent pipe cross-talk
  • Tutorial: Delayed arrow calculation until modal transition completes
  • Tutorial: Arrow points left towards sidebar, removed duplicate hint
  • CSS: Added debug token colors for light theme watch panel
  • Tests: Used counter-based time mock to avoid StopIteration in platform detection tests
  • Tests: Excluded gdb_json_print.py from coverage (requires GDB runtime)
  • Tests: Fixed CI to fail when coverage below target threshold
  • CI: Added pytest to requirements.txt

Improvements

  • Tests: Switched test runner from unittest to pytest for real-time progress
  • Tests: Added unit tests for gdb_json_print with mocked gdb module
  • Docs: Added granular progress bar design for inject and memory read

v1.5.0

New Features

  • Watch: Added watch expression feature with activity bar button
  • Watch: VS Code-style tree view with expand/collapse and auto-refresh
  • Watch: Added localStorage persistence for watch expressions
  • Watch: Improved panel layout with expression editing and text selection
  • Symbols: Implemented Phase 1 symbol viewer improvements
  • Symbols: Tree-view struct viewer with GDB native values
  • Symbols: Distinguished pointer types and added dereference support
  • Symbols: Nested struct decode with progress bar and GDB fallback
  • Symbols: Used GDB Python API for structured JSON value output
  • Symbols: Added loading spinner when opening symbol value tab
  • Symbols: Added sym_type from nm to distinguish function/variable/const
  • GDB: Added GDB integration for symbol queries
  • GDB: Added detailed timing logs for GDB operations
  • UI: Overhauled symbol viewer with i18n, auto-read and struct layout cache
  • CLI: Added get-symbols subcommand to fpb_cli
  • Tutorial: Added watch tutorial step and sidebar coverage test
  • Func Loader: Completed memory-independent command
  • Memory: Added memory read/write functionality
  • WebServer: Completed the initial version of the SYMBOL interactive interface

Bug Fixes

  • Symbols: Fixed tree view bugs and added comprehensive tests
  • Symbols: Used variable name for GDB print instead of type cast
  • Symbols: Preserved scroll on refresh and re-render on language change
  • Symbols: Decoded struct values on backend instead of frontend
  • Symbols: Added i18n keys for progress bar, fail-fast test runners
  • GDB: Improved symbol value read reliability
  • GDB: Used GDB session for symbol lookup in inject workflow
  • CSS: Enabled text selection in symbol value viewer, watch section, and tutorial body
  • Connection: Avoided false backend disconnect when under heavy load
  • Func Loader: Fixed cmd_read was not printing [FLEND]

Improvements

  • Symbols: Switched symbol search to nm-based approach for faster performance
  • Symbols: Reused global inject progress bar for device read
  • GDB: Replaced pyelftools with GDB as sole symbol provider
  • GDB: Used pygdbmi for MI communication and fixed symbol resolution
  • GDB: Optimized symbol search and used word-sized reads
  • WebServer: Optimized ELF loading speed
  • Tests: Added C/C++ ELF fixtures and integration tests
  • Tests: Cached GDB sessions in test_elf_symbols.py
  • Tests: Added tests to meet 80% coverage threshold
  • Docs: Added watch expression design document
  • Docs: Normalized filenames to kebab-case and unified titles

Full Changelog: bf59ec9...4be6cc6

FPBInject v1.4.5

06 Mar 06:25

Choose a tag to compare

FPBInject v1.4.1 - v1.4.5 Release Notes

v1.4.5

New Features

• Tutorial: Added serial tab gate to hello_verify step
• Tutorial: Automatically enter FL mode during onboarding
• Tutorial: Added adding and removing patch instructions
• Tutorial: Removed the text editor and terminal introduction from the tutorial page
• Connection: Replaced baud rate text input with select dropdown for easier configuration
• Func Loader: Automatically exit FL mode in case of incorrect input
• Func Loader: Added fl_hello demo command
• CMake: Added library.cmake for simplified library integration
• Patch Template: Replaced printf with fl_println in the patch template

Bug Fixes

• NuttX Port: Instead of automatically exiting FL mode, log prompts will be displayed
• Func Loader: Fixed missing line breaks that caused incomplete parsing of the function list
• WebServer: Fixed the failed fl -c command test
• WebServer: Supplemented missing translation text
• WebServer: Cleaned up isolated translations
• WebServer: Fixed __attribute__ tag not being recognized correctly

Improvements

• Func Loader: Renamed fl_cmd_demo to fl_hello for clarity
• Serial: Improved throughput test stepping and failure handling
• Test Coverage: Added test cases to improve coverage back to 80%

v1.4.4

New Features

• Interactive Tutorial System: Redesigned tutorial to UI-guidance mode with step-by-step onboarding
• Tutorial: Added appearance step for language and theme selection with interactive controls
• Tutorial: Added config gate for ELF, compile DB, toolchain, watch dirs, and auto-inject
• Tutorial: Added per-field visual guides with auto-positioned modal and drag support
• Tutorial: Added auto-inject explanation and code example to config step
• Tutorial: Added serial tab gate with status hint to logs step
• Tutorial: Added file editing area and log area instructions
• Serial: Added ThreadCheckedSerial for cross-thread access detection
• WebServer: Added tutorial page transition animation with gating to teaching steps
• WebServer: Decoupled i18n and business code
• WebServer: Added automatic browser opening on startup
• WebServer: Added advanced options to serial port settings
• i18n: Changed translation '你' → '您' for formal tone

Bug Fixes

• Tutorial: Fixed re-render step after language change in appearance
• Tutorial: Fixed overlay mask darkening sidebar
• Tutorial: Fixed highlight being blocked and clipped
• Tutorial: Fixed first-launch detection, appearance save, and finish button
• Tutorial: Renamed device step to Hot Patch and use throughput test gate
• Tutorial: Changed completed step dot color from green to blue
• WebServer: Fixed the issue where the monitoring path button was obscured by the tutorial page
• WebServer: Fixed i18n test failures and pytest issues
• WebServer: Skipped error log files when collecting format results
• Tests: Updated tutorial test step indices and patched logging.basicConfig for CI compatibility

Improvements

• Tutorial: Improved welcome page and highlight effect
• i18n: Added i18n conformance testing and unreferenced key testing
• Docs: Added tutorial/onboarding system technical assessment and design document

v1.4.3

New Features

• FPB v2 Support: Auto-enforce DebugMonitor mode for FPB v2 hardware
• FPB v2 Tooltip: Updated inject mode tooltip with FPB v2 compatibility info
• File Transfer: Added file transfer functionality with CLI/MCP tools integration
• Quick Commands: Added serial quick commands feature with macro support

Bug Fixes

• Compiler: User toolchain_path now correctly overrides compile_commands.json absolute paths
• Quick Commands: Added execution mutex to prevent concurrent command sending
• Quick Commands: Fixed double-escaping and auto-appended \n when editing commands
• Quick Commands: Fixed qc-item height jitter on hover
• i18n: Translated inject progress bar status texts
• File Browser: Unified directory navigation to double-click

Improvements

• Serial: Improved serial port response speed using SSE streaming
• Tests: Auto-discover test files instead of manual require list
• Test Coverage: Raised quick-commands coverage to 80.69% (≥80% threshold)

v1.4.2

New Features

• Quick Commands: Added serial quick commands with macro step support, drag-to-reorder, and per-step newline option
• File Browser: Added support for renaming files using the F2 shortcut key
• File Browser: Optimized directory switching animation

Bug Fixes

• File Transfer: Fixed file transfer handling for paths with spaces and prevented command injection (#6)
• Quick Commands: Fixed incorrect shortcut command order for activity bar
• Quick Commands: Fixed macro step delay and serial garbled output on first send
• Quick Commands: Replaced hardcoded UI strings with t() for i18n
• UI: Fixed reverse shimmer animation

Improvements

• Auto-Inject: Removed copying in automatic injection mode and compile in place instead
• Format: Support parallel processing of multiple files
• CI: Increased the minimum code coverage requirement for Python code to 85%
• Test Coverage: Increased the code coverage of the Python program to 86%

v1.4.1

New Features

• MCP Server: Added Kiro MCP server for AI-assisted development
• UI: Added interactive animations and hover tooltips for hot patch button
• File Browser: Added support for downloading multiple files with SHIFT multi-selection
• Hot Patch: Added a re-inject button for quick re-patching
• UI: Adjusted the layout of the monitoring directory panel

Bug Fixes

• Dependencies: Added missing mcp package to requirements
• WebServer: Fixed retry count display
• WebServer: Fixed incomplete translation of floating tips
• WebServer: Supplemented missing translation text and fixed pytest issues

Improvements

• Test Coverage: Supplemented reinjectAll test cases and cleaned up manual resetMocks() calls
• Docs: Rewrote README with updated architecture support, patch demo, and file transfer instructions
• Docs: Updated Chinese README and FPB document jump links
• Docs: Merged SKILLS.md into CLI.md

Full Changelog: 4ffd2e4...bf59ec9

FPBInject v1.4.0

25 Feb 15:56

Choose a tag to compare

FPBInject v1.3.1 - v1.4.0 Release Notes

v1.4.0

New Features

  • Multilingual Support: Added internationalization (i18n) framework with English, Simplified Chinese, and Traditional Chinese translations
  • Theme Controls: Moved theme toggle to the CONFIG panel for better accessibility
  • Shell Wake-up Configuration: Added configurable shell wake-up count setting
  • High-Resolution Display Support: Improved UI rendering for high-DPI screens
  • Serial Port Filtering: Filter out /dev/ttyS* legacy serial devices from the port list to reduce clutter
  • Device Info Pop-ups: Added confirmation pop-ups for Ping and Get Info buttons with detailed feedback

Improvements

  • FPB Slots: Fixed maximum number of FPB slots to 8
  • Code Cleanup: Renamed func_loader APIs to use fl_ prefix for consistency
  • Build System: Simplified NuttX CMake configuration and file collection using GLOB

v1.3.5

New Features

  • FPB v2 Extension Support: Added support for FPB v2 hardware with extended comparator slots (#5)

Improvements

  • Performance: Reduced repeated handshakes during device communication
  • Serial Communication: Improved serial port echo handling and reduced data loss during sleep states
  • Code Quality: Replaced integer return values with enumerations in fpb_inject module

v1.3.4

New Features

  • Serial Port Echo Switch: Added toggle to enable/disable serial TX echo for debugging
  • Decompilation Progress Bar: Added visual progress indicator during Ghidra decompilation
  • Decompiled Code Output: Optimized the structure and formatting of decompiled code output

Bug Fixes

  • Serial Communication: Fixed serial port sleep data loss issues
  • Output Terminal: Fixed auto-height adjustment for OUTPUT terminal

Improvements

  • Logging: Unified log tag management and cleaned up duplicate log entries
  • Performance: Reduced default message sending wait time

v1.3.3

Bug Fixes

  • Directory Monitoring: Fixed issue where watch directories were not being saved
  • Platform Caching: Reverted platform tag caching due to stability issues

Improvements

  • Performance: Reduced repeated handshakes during platform detection

v1.3.2

New Features

  • ELF File Watcher: Added automatic monitoring for ELF file changes with reload prompts
  • FatFs Support: Added FatFs filesystem support for func_loader with configurable malloc usage
  • External Argparse: Added support for external argparse library in func_loader

Bug Fixes

  • Chunk Size: Fixed recommended chunk_size value mismatch with device capabilities
  • Slot Height: Fixed inconsistent slot height between loaded and non-loaded states

Improvements

  • Configuration Framework: Refactored configuration management with schema-based validation
  • Test Coverage: Added config_schema test cases and improved JS test coverage

v1.3.1

New Features

  • Ghidra Decompilation: Switched decompilation engine from angr to Ghidra for better results
  • Serial Log Recording: Added ability to record serial communication logs to file (#2)
  • CI Improvements: Added coverage rate output to PR comments (#3)

Improvements

  • Code Quality: Enabled lint checks for WebServer tests

Full Changelog: 4b72cb2...4ffd2e4

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.