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
spacetill~ - 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,\nor\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_LEVELmacro 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_FindOptparameter validation (pcCmd || pcCmd→pcCmd || 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
volatilequalifier 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-configtarget, move config generation toexample/directory - Add compiler selection support (
CC ?= gcc/clang) with passthrough from top-level Makefile - Add
--ping/-pflag to defaultwshcommand for adapter health check - Improve print macros format: add colored
[TAG]prefix toINFO/WARN/ERRmessages for easier log parsing - Fix unknown token handling: print
[WARN]for unrecognized options instead of silently falling back to default behavior - Fix spurious
ERR_EMPTYresponse 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_adapterpackage 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
portorvid/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/examplevia PTY and for non-zero exit on failedWSH_SHELL_ASSERT - Add adapter and test documentation
- Automate adapter test runs in GitLab CI