Skip to content

TODO / Roadmap

v1.0

  • Implement base string parsing flow
  • Implement user authentication flow
  • Implement history buffer support
  • Implement autocomplete actions triggered by the Tab key
  • Add basic and Blue Pill examples
  • Add support for ESC sequences and other ASCII control commands

v2.0

  • Review approaches for using the shell module with multiple instances, if needed
  • Optimize history handling — fix bugs, improve user experience, replace CRC32 with Jenkins hash, etc.
  • Implement advanced autocomplete with flag suggestions
  • Simplify configuration file structure
  • Add a built-in default command for querying the shell interface
  • Optimize options file structure

v2.1

  • Support input range only from space till ~
  • Change command table attachment from storing commands to storing pointers to commands
  • Add an extra space (' ') on double-Tab during command autocompletion
  • Implement input blocking while waiting for specific keys (Enter, Yes/No, etc.)
  • Save previous symbol and handle different terminals setup (\r, \n or \r\n)
  • Add string print with deAuth reason on deAuth event
  • Automatically generate documentation on GitHub Pages

v2.2

  • Add support for storing passwords in encrypted (hashed) form in memory

v2.3

  • Review default command behavior and provide more detailed output about it
  • Fix fault on history read and write callbacks if history isn't inited
  • Review groups, permissions, and access levels for commands, users, and options; document them
  • Check the same names for commands and options (if short and long options repited in one command or commands are same)

v2.4 (Security, Robustness & Developer Experience)

Security Improvements

  • Implement constant-time comparison for login/password validation to prevent timing attacks
  • Add secure memory zeroing for sensitive data (password hash buffer) using volatile loop
  • Add comprehensive input validation for login and password lengths
  • Improve credential checking with length validation before comparison

Robustness & Bug Fixes

  • Fix potential fault in history read/write callbacks when history is not initialized
  • Fix escape sequence bug in input handling
  • Add duplicate detection for short and long option flags within commands (triggers ASSERT)
  • Fix command line flush bug
  • Fix argument processing flow
  • Multiple small fixes and code quality improvements

Features & Enhancements

  • Add history save support for interactive commands
  • Add default command description to help output
  • Add more detailed build information to shell startup banner (compiler, OS, build date/time)
  • Add FreeRTOS version detection support
  • Add WSH_SHELL_PRINT_LEVEL macro for better print control
  • Add debug build flag support
  • Review and document groups, permissions, and access levels system

Documentation & Tooling

  • Update documentation for permission rules and access control
  • Add ELF size analysis utility script
  • Fix grammar and typos in documentation
  • Update README with clearer examples
  • Fix VSCode task configurations
  • Improve Makefile structure

v2.5 (Security & Stability Fixes)

  • Fix typo in WshShellCmd_FindOpt parameter validation (pcCmd || pcCmdpcCmd || pcStr)
  • Add VLA stack overflow protection in autocomplete (check against WSH_SHELL_AUTOCOMPLETE_MAX_CANDIDATES)
  • Add bounds checking before buffer copy in autocomplete to prevent buffer overflow
  • Add secure erase of sensitive data (saltPass) in default hash function using volatile loop
  • Add volatile qualifier to constant-time comparison variables to prevent compiler optimization
  • Add validation for unclosed quotes in command parsing (WshShellStr_ParseToArgcArgv)

v2.6 (Build System, UX & Developer Tooling)

  • Restructure build system: remove static library target, add gen-config target, move config generation to example/ directory
  • Add compiler selection support (CC ?= gcc / clang) with passthrough from top-level Makefile
  • Add --ping / -p flag to default wsh command for adapter health check
  • Improve print macros format: add colored [TAG] prefix to INFO/WARN/ERR messages for easier log parsing
  • Fix unknown token handling: print [WARN] for unrecognized options instead of silently falling back to default behavior
  • Fix spurious ERR_EMPTY response when valid options are followed by unknown tokens in the same command call
  • Add entry/exit info messages for interactive mode
  • Fix IntelliSense configuration (c_cpp_properties.json)
  • Update and improve documentation
  • Extend autocomplete to support flag suggestions (not just command names)

v3.0 (Python Adapter, Tests & CI)

  • Add Python wsh_shell_adapter package with serial/UART and local PTY transports
  • Implement shell sync/auth flow with command execution, retry logic, sync probe verification, and structured output parsing
  • Add TOML-based adapter configuration
  • Add serial port auto-discovery by fixed port or vid/pid, including interactive port selection helpers
  • Add adapter unit tests for sync/login flow, JSON parsing, fragmented writes, timeout retry, empty command validation, and config loading
  • Add integration tests for running against example/build/example via PTY and for non-zero exit on failed WSH_SHELL_ASSERT
  • Add adapter and test documentation
  • Automate adapter test runs in GitLab CI