Repository navigation
Releases
xTerminal 3.1.1.0
xTerminal 3.1.1.0 adds C/C++ IntelliSense, expands TermXT editor diagnostics, and improves command editing, file reloading, and script error reporting.
Highlights
- C/C++ IntelliSense in
xte. Automatic suggestions now include language keywords, preprocessor directives, standard-library identifiers, and names from the current file. Withclangd, completion also resolves members after.,->, and::, header paths, and project symbols using unsaved code. Press Ctrl+Space to request suggestions manually. - Live TermXT errors and warnings in
xte. Unsaved scripts are checked for block structure, conditions, function calls, and constant arguments or expressions. Warnings flag undeclared variables, assignments to computed built-ins, ignored trailing arguments, ineffective waits, and likely keyword typos. Gutter markers, header counts, and the F2 diagnostic list update as issues are fixed; select an entry and press Enter to jump to its location. - Expanded TermXT completion in
xte. Suggestions include xTerminal commands at the start of a statement, afterrun, incaptureassignments, and after pipes. Condition suggestions now also includetrue,false,&&, and||. Function names containing spaces are quoted when accepted.
Fixes and improvements
- TermXT runtime errors now include the original source line as
[line N], including errors inside functions, nested blocks, and conditions. The{error_message}variable preserves this location for error handling. - The
xtecommand prompt supports editing and pasting at the cursor, Left/Right and Home/End navigation, Ctrl+Left/Right word movement, Delete, and Backspace. Long commands scroll horizontally, and Unicode characters remain intact during navigation and deletion. - Reloading with
:reload,:reload!, or:e!preserves the cursor and scroll position, including after mouse-wheel scrolling. Positions are adjusted when the reloaded file becomes shorter. - Improved language detection prevents C/C++ code and TermXT scripts from incorrectly activating C# completion.
- Fixed
cdstoring a directory path without its trailing separator. - Fixed the quoted open-port check in the
netaudit.xtexample and changed its ping invocation toping {host} -t 1.
Upgrade notes
The ctx command now requires a leading dash on its subcommands. Update scripts and aliases that use the previous forms:
| Previous syntax | New syntax |
|---|---|
ctx save <name> |
ctx -save <name> |
ctx load <name> |
ctx -load <name> |
ctx list |
ctx -list |
ctx show <name> |
ctx -show <name> |
ctx del <name> |
ctx -del <name> |
Basic C/C++ suggestions work without clangd. For member, header, and project completion, xte discovers clangd on PATH and in LLVM or Visual Studio installations. Set XTE_CLANGD to select a specific server executable. Project compiler options come from compile_commands.json or compile_flags.txt.
TermXT editor diagnostics include checks beyond xt -check. Save the script before checking or running it from the terminal; those commands read the file on disk.
Documentation
- Updated the TermXT scripting language user manual to edition 1.0.3, covering runtime error locations, diagnostic codes, editor navigation, and troubleshooting.
- Added the TermXT manual v1.0.3 PDF and refreshed the README and command help.
What's Changed
Full Changelog: v3.1.0.0...v3.1.1.0
xTerminal 3.1.0.0
xTerminal v3.1.0.0 - Release notes
xTerminal 3.1.0.0 adds command parameter completion, C# project and solution support in the built-in editor, and more reliable file and directory completion after command options.
Command completion
- Type a command and part of a supported parameter, then press Tab to complete it. For example,
hash -sha2completes tohash -sha256, andwget --ncompletes towget --noping. - Press Tab repeatedly to cycle through matching parameters and wrap back to the first match. For example,
ls -ccycles through-c,-cf,-cd, and-ct. - Parameter completion replaces only the final argument, preserving earlier arguments, spacing, and the prompt. Editing the input starts a fresh set of matches.
- Expanded
lsfile-path completion to suggest both files and directories.
C# projects and solutions in xte
- Open
.csproj,.sln, and.slnxfiles directly withxte. The editor opens a source file, preferringProgram.cs, and starts its file explorer in the project or solution directory. - Opening a
.csfile automatically discovers its owning project, including linked source files found through a nearby solution. - C# completion and diagnostics now use other source files in the project, project references, implicit/global usings, compile exclusions, and restored NuGet compile assemblies. Analysis includes unsaved changes in the active file.
- Use
:e <path>to switch to another file, project, or solution. Use:projector:project reloadto show the owning project and refresh its sources and references. New completion requests also pick up external source changes after a short cache interval. - Use
xte -raw <file>or:e -raw <path>to edit a project or solution file directly as plain text.:project editopens the explicitly selected solution or the owning project for editing; save with:w. - Added plain-text syntax mode through
-syntax textand:syntax text, with language diagnostics and completion disabled.
Examples:
xte MySolution.sln
xte MySolution.slnx
xte src/MyApp/MyApp.csproj
xte -raw src/MyApp/MyApp.csproj
Fixes and improvements
- Fixed repeated Tab presses losing the original parameter matches or changing earlier input.
- Unrecognized parameters beginning with
-leave the input unchanged instead of triggering file completion. - Fixed file and directory completion after parameters, such as
xte -raw someFi,cat -o output.txt someFi, andls -d someDir. Press Tab twice to begin path completion. - Path completion preserves earlier arguments and spacing, handles quoted paths with spaces, and supports nested and absolute paths. It also works through aliases for supported commands.
- Added file and directory suggestions for
xte, including after-raw. - Updated command help and parameter suggestions for the revised
chain,env, andnotesyntax.
Upgrade notes
The chain, env, and note commands now require a leading dash on their subcommands. Update saved scripts and aliases that use the old forms:
| Previous syntax | New syntax |
|---|---|
chain create, chain run, chain add |
chain -create, chain -run, chain -add |
chain show, chain list, chain del |
chain -show, chain -list, chain -del |
env get, env set, env del |
env -get, env -set, env -del |
env addval, env delval |
env -addval, env -delval |
env load, env export |
env -load, env -export |
note add, note list, note del, note clear |
note -add, note -list, note -del, note -clear |
The env -t <scope> option is unchanged; for example, use env -t user -get PATH.
C# project support
Project discovery supports ordinary SDK-style and legacy project items using Debug/AnyCPU and the first target framework. It does not execute custom MSBuild imports, targets, or source generators.
Run dotnet restore for project packages, then use :project in the editor to refresh references. Opening a project does not build it or restore packages automatically. The editor's :nuget commands manage source-file package directives rather than .csproj PackageReference entries. The xte -new option creates source files; open existing projects and solutions without it.
What's Changed
Full Changelog: v3.0.9.1...v3.1.0.0
xTerminal 3.0.9.1
xTerminal v3.0.9.1
xTerminal 3.0.9.1 improves Rust error reporting in the built-in xte editor, adds navigation from the F2 diagnostics list, and fixes caret movement when editing search terms.
Changes since v3.0.9.0.
Highlights
- Rust errors and warnings now appear in editor line markers, header counts, the F2 list, and
:errors,:warnings,:next-error, and:next-warningcommands. - Rust analysis checks unsaved code after a short typing pause, including undeclared values such as E0425. Cargo projects also run
cargo checkon save. - The F2 diagnostics list now supports selecting an error or warning and jumping directly to its line and column. Use Up/Down to select, Enter to jump, PgUp/PgDn or the mouse wheel to scroll, Home/End to reach the first or last entry, and F2/Esc to close.
Fixes and improvements
- Improved Rust diagnostic updates: outdated results are ignored, resolved errors are cleared, and compiler reports are combined with live analysis without duplicate entries.
- Rust diagnostics run in the background without blocking editor rendering or completion requests. Temporary server cancellations are retried, and unavailable analysis displays a status message.
- Improved selection and scrolling in the F2 list, including wrapped messages, window resizing, and background diagnostic refreshes.
- Fixed caret movement in document search and file explorer search. Left/Right, Ctrl+Left/Right, and Home/End move within the query; typing, Backspace, and Delete edit at the caret.
- Long search terms scroll horizontally to keep the caret visible. Navigation and deletion preserve Unicode surrogate pairs.
- Pasting into document search inserts text at the caret. Document shortcuts no longer move or modify the source while the search prompt is active.
- Fixed info display in
filecommand for some extensions.
Rust setup
Rust analysis requires rust-analyzer and Rust sources. With Rust installed, run:
rustup component add rust-analyzer rust-src
What's Changed
Full Changelog: v3.0.9.0...v3.0.9.1
xTerminal 3.0.9.0
This release adds Rust IntelliSense to the built-in xte editor, process tree navigation in wtop, and a redesigned installer. It also improves editor scrolling, file explorer navigation, and command completion.
Rust IntelliSense in xte
- Added automatic suggestions in Rust files (
.rsor-syntax rust) after two characters,::, or.. Press Ctrl+Space to open suggestions manually. - Added built-in completion for Rust keywords, macros, names declared in the current file, local fields and methods, and common standard-library paths and members. These suggestions work without a Rust toolchain.
- Added
rust-analyzerintegration for Cargo projects and saved standalone Rust files. Member completion resolves variables, fields, function results, indexed values, and method chains. - Added Cargo completion for dependency paths, imported and re-exported types, aliases, fields, and trait methods, including changes in the unsaved buffer.
- Project analysis loads in the background while built-in suggestions remain available. The status bar reports loading or setup failures when member completion has no immediate suggestions.
- Improved Rust function declaration highlighting and made syntax colors more consistent across supported languages.
TermXT Editor responsiveness
- Reduced redraw work during navigation and scrolling by reusing unchanged rows and cached syntax highlighting.
- Reduced repeated processing of multiline comments and strings when scrolling through larger files.
- Updated rendering to repaint affected rows after edits, selection changes, diagnostics, resizing, and closing completion or message overlays.
Process monitoring with wtop
- Added
wtop -treeto display parent and child processes. Press T or F5 to switch between the flat list and tree views. - Added branch navigation with Left/Right and folding with Space. Sorting keeps children grouped under their parents, and searching expands branches containing matches.
- Added search by exact PID, F3 to move to the next match, and R to refresh immediately. Added PageUp/PageDown and Home/End navigation, plus Esc and Ctrl+C to quit.
- Improved responsiveness with background process sampling, cached sorting, and bounded owner lookups. Refreshing and sorting preserve the selected process where possible.
- Improved CPU usage calculations and process termination checks. K acts on the selected process and checks its identity to avoid terminating a different process that reused its PID.
- Added system and service account names in normal-user sessions. A name ending in
*indicates a service's configured logon account when the process owner cannot be read; unavailable owners appear as—.
File explorer improvements
- Added an optional starting folder to
fxp [folder], including relative paths and quoted paths containing spaces. Usefxp --helpto view the controls. - Improved mouse-wheel scrolling and keyboard navigation, including Ctrl+Up/Down for paging and Home/End for the first or last entry.
- Reduced redraws and deferred preview loading while moving through entries. Directory listings now sort folders first, followed by files, with names sorted without regard to case.
- Fixed PageUp navigation so it moves directly to the parent folder, including after reopening the explorer. Ctrl+PageUp scrolls up one page.
- Fixed path handling and trailing separators when opening folders and saving the current directory.
- Prevented file preview contents from injecting terminal escape sequences, such as cursor movement.
Shell, networking, and installer
- Added
ifconfig -ifor a compact summary of network interface descriptions, types, IP ranges, and status. - Double-Tab file and folder completion now also works immediately after a supported command name, without requiring a space first.
- Fixed duplicate path separators when using
cdto switch to a drive root, such asC:orC:\. - Redesigned the installer with a dark interface, clearer version and platform details, an installation destination panel, and updated progress feedback.
Rust setup and ENV
For project-aware completion, install Rust and add the analysis components:
rustup component add rust-analyzer rust-srcxte discovers tools on PATH, in rustup installations, and in the VS Code Rust Analyzer extension. Set XTE_RUST_ANALYZER to select a specific server executable. Declare project dependencies in Cargo.toml, and save a new standalone .rs file once to enable analysis.
1. Install the components
Run in PowerShell:
rustup component add rust-analyzer rust-src
rustup which rust-analyzer
The second command prints the executable’s full path. Your current Rust toolchain reports that the analyzer is missing. See the [official installation guide](https://rust-analyzer.github.io/book/rust_analyzer_binary.html#rustup).
2. Set it inside xTerminal
Replace the example path with the path printed above:
env set XTE_RUST_ANALYZER "C:\path\to\rust-analyzer.exe"
To also save it for future sessions:
env -t user set XTE_RUST_ANALYZER "C:\path\to\rust-analyzer.exe"
3. Use completion
xte main.rs
Press i to enter Insert mode, then Ctrl+Space for suggestions. Completion also opens automatically while typing.
For a new standalone .rs file, save it once with Esc, then :w, then Enter to enable analysis. Cargo project dependencies are read from Cargo.toml.
What's Changed
Full Changelog: v3.0.8.0...v3.0.9.0
xTerminal v3.0.8.0
xTerminal v3.0.8.0
xTerminal 3.0.8.0 adds IntelliSense for TermXT scripts in the built-in xte editor, improves C# editing responsiveness, and updates the TermXT scripting language to 1.0.2.
Highlights
- Added release notes to new-version notifications, displayed before the update confirmation prompt.
- Added automatic TermXT IntelliSense in
xtefor keywords, built-in functions, declared functions aftercall, and variables inside{...}or afterlines:. - Added usage hints, case-insensitive filtering, and automatic closing braces for variable completions. Variable suggestions also work inside quoted text.
- Added completion keyboard controls for TermXT and C#:
- Ctrl+Space opens suggestions manually in insert mode.
- Up/Down selects a suggestion.
- Enter/Tab accepts the selected completion.
- Esc closes suggestions; pressing it again returns to normal mode.
- Updated TermXT to version 1.0.2, adding
{argc}, parenthesized conditions, and compact expressions such as{count}>=2&&{count}<5. - Added the TermXT 1.0.2 Markdown and PDF manuals and a new
language_features.xtexample.
Fixes and improvements
- Moved C# semantic diagnostics into background processing and cached runtime assembly metadata to reduce pauses in
xte. Outdated analysis results are discarded when the document changes. - Fixed TermXT logical operator precedence, quoted condition text, and repeated condition interpolation. Operators inside substituted values remain literal.
- Improved argument parsing for quoted and empty arguments, tab separators, and literal
-ptext inside quotes. - Fixed TermXT function argument leakage and stale return values. Function calls preserve whitespace and quotes in variable arguments and restore the caller's positional arguments and
{argc}. - Fixed TermXT nested loop counters and integer-range overflow. Excessive function or condition nesting now reports an error.
- Improved
try/catchhandling in TermXT, failure propagation, and cleanup after exceptions. Failed pipeline stages stop later stages. - Fixed quoted file paths, empty file output, and substring bounds handling in TermXT.
- Shared structural validation between the interpreter and editor.
xt -checknow reports failure through the command error state, including when a script is missing. - Updated example scripts to use
{argc}for optional arguments and adjusted port-status matching innetaudit.xt.
Upgrade notes
Use {argc} to check for optional script arguments; missing arguments remain literal placeholders. Write empty comparison operands as "".
Conditions apply comparisons/not, then &&, then ||. Use parentheses when negating a compound condition. Each interpolated variable in a function call now remains one argument, even when its value contains spaces.
Scripts with invalid block structure, assignments, or duplicate function definitions are rejected before execution. Run xt -check <script.xt> to check existing scripts.
What's Changed
Full Changelog: v3.0.7.0...v3.0.8.0
xTerminal 3.0.7.0
xTerminal v3.0.7.0
xTerminal 3.0.7.0 introduces an opt-in automatic update system, including a dedicated updater and the new xup command for managing update checks from the terminal.
Highlights
- Added
xUpdater, a dedicated application that downloads, installs, and restarts xTerminal after an update. - Added the
xupcommand:xup -eenables update checks when an interactive session starts.xup -ddisables startup update checks.xup -sshows whether startup update checks are enabled.xup -cchecks for a new release immediately.
- Added current-versus-latest version reporting and an interactive confirmation prompt before an update begins.
- Added automatic selection of the release package matching the detected Windows architecture (
x64orx86). - Added SHA-256 verification of downloaded release assets before extraction and installation.
- Added validation for downloads and extracted packages, including a check for the expected
xTerminal.exebefore installation. - The updater preserves its running executable during installation, can stage a newer updater for replacement, and restarts xTerminal from the correct working directory.
Fixes and improvements
- Consolidated HTTP/HTTPS URL and safe destination-filename validation so it is shared by
wgetand the updater. mkfilenow reports a clear error when no filename is supplied.- Refined the
pcinfoxTerminal logo alignment. - Updated Roslyn, .NET runtime-support, test SDK, FluentAssertions, and Visual Studio test runner dependencies.
Upgrade notes
Automatic update checks are enabled by default. Run xup -c whenever you want to check manually.
What's Changed
Full Changelog: v3.0.6.0...v3.0.7.0
xTerminal v3.0.6.0
xTerminal v3.0.6.0
This release improves C# and TermXT editing, makes compiled C# entry points more flexible, and adds detailed build verification information.
Highlights
Smarter TermXT editor completion
- Added suggestions for imported extension methods, including LINQ methods such as
Where. - Fixed member suggestions after typing
.on the line following a variable declaration. - Fixed member suggestions at the end of a document.
- Improved completion popup placement near the bottom of the editor.
More flexible C# compilation
- Added support for programs that use a parameterless
Main()entry point. - Preserved command-line argument handling for programs that use
Main(string[] args).
Expanded version and integrity information
- The
vercommand now displays the file version and SHA-256 checksum for:xTerminal.dllCore.dllCommands.dllOllamaInt.dllOpenAI.Api.Client.dllOpenrouter.dll
- SHA-256 checksums are displayed consistently in uppercase.
- Updated the xTerminal assembly version to
3.0.6.0and the Core assembly version to1.8.9.0.
What's Changed
Full Changelog: v3.0.5.0...v3.0.6.0
xTerminal v3.0.5.0
xTerminal v3.0.5.0
This release improves the TermXT editor, file browsing, and command-line workflows.
What’s New
- Added an F2 diagnostics panel displaying errors and warnings in source order in
TermXT. - Added scrolling and keyboard navigation to the diagnostics panel in
TermXT. - Added mouse-wheel scrolling to the
TermXTeditor. - Added Ctrl+A support for selecting the entire document in
TermXT. - Added
ls -nto display only file and directory names. - Added text-file previews to
fxp, limited to the first 64 KB with binary-file detection.
Improvements and Fixes
- Fixed file previews in the
fxpfile explorer. - Improved display of long and wrapped diagnostic messages in
TermXT.
What's Changed
Full Changelog: v3.0.4.0...v3.0.5.0
xTerminal 3.0.4.0
xTerminal v3.0.4.0
This release expands the C# development experience in xTerminal and delivers a broad security-hardening pass across password storage, downloads, archives, spreadsheets, command history, and installation.
Highlights
NuGet packages in C# workflows
-
Added NuGet package directives for C# files used by
ccs, add-ons, and the TermXT editor:// nuget: Newtonsoft.Json 13.0.3 -
Added TermXT editor commands for package management:
:nuget <package>adds the latest stable version.:nuget list packageslists packages used by the current buffer.:nuget add <package> [version]adds a package with an optional version.:nuget remove <package>removes a package.:nuget restorerestores the declared packages.
-
Package references and compatible dependencies are resolved for compilation, diagnostics, IntelliSense, and execution.
TermXT editor improvements
- Added
Ctrl+Din normal and insert modes to duplicate the current line while preserving the cursor position and undo history. - Improved function-name syntax highlighting and added regression coverage for declarations, invocations, member calls, and language keywords.
- Updated editor help and the README with the new shortcut and NuGet commands.
C# runner pipe support
ccscan now receive a C# file path from the preceding stage of a pipe.- Standard output from a compiled C# program can now be passed to the next pipe stage.
Security hardening
Password vault encryption pwm
- Replaced deterministic password-derived encryption with AES-256-GCM authenticated encryption.
- Master keys are derived with Argon2id and a random per-vault salt.
- Vault payloads now store a version, salt, nonce, KDF parameters, ciphertext, and authentication tag.
- Modified ciphertext and incorrect passwords fail authentication instead of returning unauthenticated data.
- Existing vaults remain readable and migrate to the new format after successful access.
- Cryptographic key material is cleared from memory where possible.
Safe archive staging and cleanup zip
- Archive creation uses a unique system-generated temporary directory instead of the predictable
tmpZipfolder. - Temporary data is removed only when it was created by the active archive operation.
- Recursive deletion no longer follows junctions, symbolic links, or other directory reparse points.
- Reparse-point source directories are rejected when creating multi-input archives.
Secure destinations wget
- Download filenames are derived from the normalized URI path instead of raw URL text.
- Directory separators, invalid filenames, trailing dots or spaces, and reserved Windows device names are rejected.
- The canonical destination path is verified to remain inside the requested directory.
- Existing files are no longer silently overwritten.
- Only absolute HTTP and HTTPS URLs are accepted.
Spreadsheet resource limits xcel
- Added limits for file size, worksheet count, rows, columns, and materialized cells.
- XLSX files now have per-entry and total expanded-size limits.
- Excessive ZIP compression ratios are rejected before XML parsing.
- DTD processing is disabled for XLSX XML content.
- Invalid or oversized XLSX and SpreadsheetML row and column references are rejected before allocation.
Command-history credential protection ch
- Passwords, access tokens, API keys, authorization headers, credentials embedded in URLs, and sensitive
waifuarguments are redacted before entering interactive or on-disk history. - Existing entries are sanitized when command history is loaded.
- Redacted values are replaced with
[SECRET].
Installer trust hardening
- Installer payloads and resources are resolved relative to
AppContext.BaseDirectory; the process working directory is no longer trusted. - Payload and destination reparse points are rejected.
- A SHA-256 payload manifest is required and verified before installation.
- The installer explicitly uses the
asInvokerexecution level for its per-user installation. - Added
xInstaller/generate-payload-manifest.ps1for package creation.
Upgrade and packaging notes
-
Vaults written in the new format may not be readable by older xTerminal versions. Back up existing vaults before downgrading.
-
wgetnow reports an error when the target file exists; remove or rename the file before downloading again. -
Spreadsheets exceeding the new safety limits are rejected instead of being partially loaded.
-
Installer packages must contain
data/payload.sha256. Generate it after assembling the completedatadirectory:.\xInstaller\generate-payload-manifest.ps1 -PackageDirectory <installer-package-directory>
What's Changed
Full Changelog: v3.0.3.0...v3.0.4.0
xTerminal 3.0.3.0
Improves
- Now
exifcommand can detect if a image is generated by some AI models like Stable Diffusion, Midjourney, DALL-E, ChatGPT or Adobe Firefly.
Fixes
- Fixed running xte, fxp and xcel in native shell.