All extensions are optional and gated by ZOOM_USING_* macros in zoom_shell_cfg_user.h. Most default to 0 (see zoom_shell_cfg.h for the authoritative defaults).
The core library (src/) does not depend on any extension. Once an extension is compiled into the project, its commands are registered either through a linker section or a static table.
| Macro | Default | Description |
|---|---|---|
ZOOM_USING_CMD_EXPORT |
1 | Export commands via a linker section; when set to 0, the static-array mode is used |
ZOOM_USING_HISTORY |
1 | Command history |
ZOOM_USING_USER |
1 | Users / login / permissions |
ZOOM_USING_VAR |
1 | Variable inspection var |
ZOOM_USING_PLUGIN |
0 | Static plugin table |
ZOOM_USING_LOCK |
0 | Shell mutex callbacks |
ZOOM_USING_PERF |
1 | Command timing perf |
ZOOM_USING_ANSI |
1 | Colors, arrow keys, Tab completion, and so on |
ZOOM_USING_AUDIT_LOG |
0 | Audit log |
| Macro | Source path | Shell / API summary |
|---|---|---|
ZOOM_USING_HEXDUMP |
extensions/hexdump/zoom_shell_hexdump.c | mem read/write/dump memory inspection (dangerous; use with care) |
ZOOM_USING_LOG |
extensions/log/ | zoom_log.h: ZOOM_LOGI and friends; commands log level/on/off/test |
ZOOM_USING_CALC |
extensions/calc/zoom_shell_calc.c | calc <expression> |
ZOOM_USING_PASSTHROUGH |
extensions/passthrough/zoom_shell_passthrough.c | passthrough; Ctrl+D to exit; requires a registered callback |
ZOOM_USING_REPEAT |
extensions/repeat/zoom_shell_repeat.c | repeat <ms> <cmd> / repeat stop; works with the tick inside zoom_shell_run |
ZOOM_USING_KEYBIND |
extensions/keybind/ | Ctrl-key combinations; keybind list; zoom_shell_keybind_init |
ZOOM_USING_ALIAS |
extensions/alias/zoom_shell_alias.c | alias; first-word alias expansion |
ZOOM_USING_SCRIPT |
extensions/script/zoom_shell_script.c | script define/run/list/delete |
ZOOM_USING_PROGRESS |
extensions/progress/ | progress demo; APIs such as zoom_progress_bar |
ZOOM_USING_GAME |
extensions/game/ | Shell commands: game_2048, pushbox, snake |
ZOOM_USING_AI_BRIDGE |
extensions/ai_bridge/zoom_shell_ai_bridge.c | ai url/ask/status; see ai_bridge.md |
ZOOM_USING_SESSION |
extensions/session/ | session save/list/replay/...; record terminal output to a ring buffer, snapshot & replay by name. See session.md |
ZOOM_USING_JOURNAL |
extensions/journal/ | journal record/export/replay/...; auto-capture executed commands, move to another board, re-run. See journal.md |
| (no dedicated macro; header only) | extensions/cpp_support/zoom_shell_cpp.h | Include this header when exporting commands from C++ |
| (depends on the network stack) | extensions/telnet/ | Telnet service; requires socket callbacks |
| Macro | Meaning |
|---|---|
ZOOM_ALIAS_MAX |
Number of aliases |
ZOOM_SCRIPT_MAX_LINES / ZOOM_SCRIPT_MAX |
Script line count and number of scripts |
ZOOM_KEYBIND_MAX |
Number of key bindings |
ZOOM_LOG_BUFFER_SIZE |
Per-message log buffer size |
ZOOM_AI_URL_MAX / ZOOM_AI_RESP_MAX |
AI bridge URL length and response length |
- Refer to
EXT_SRCSin the official Makefile and pull what you need into your own build system. - When
ZOOM_USING_CMD_EXPORTis used, the linker script must retain thezoomCommand/zoomVar/zoomUsersections (see porting_general.md). - After modifying
zoom_shell_cfg_user.h, it is recommended to runmake cleanand then do a full rebuild to avoid macros and object files getting out of sync.
Some extensions have hooks inside zoom_shell_core.c (passthrough, repeat, alias, script, key bindings, and so on). When the corresponding macro is disabled, that code is not compiled in.