Skip to content

Releases

xTerminal 3.1.1.0

Choose a tag to compare

@0x78654C 0x78654C released this 14 Oct 19:35
c0ec53a

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. With clangd, 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, after run, in capture assignments, and after pipes. Condition suggestions now also include true, 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 xte command 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 cd storing a directory path without its trailing separator.
  • Fixed the quoted open-port check in the netaudit.xt example and changed its ping invocation to ping {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

What's Changed

Full Changelog: v3.1.0.0...v3.1.1.0

xTerminal 3.1.0.0

Choose a tag to compare

@0x78654C 0x78654C released this 12 Oct 03:23
94240de

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 -sha2 completes to hash -sha256, and wget --n completes to wget --noping.
  • Press Tab repeatedly to cycle through matching parameters and wrap back to the first match. For example, ls -c cycles 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 ls file-path completion to suggest both files and directories.

C# projects and solutions in xte

  • Open .csproj, .sln, and .slnx files directly with xte. The editor opens a source file, preferring Program.cs, and starts its file explorer in the project or solution directory.
  • Opening a .cs file 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 :project or :project reload to 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 edit opens the explicitly selected solution or the owning project for editing; save with :w.
  • Added plain-text syntax mode through -syntax text and :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, and ls -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, and note syntax.

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

Choose a tag to compare

@0x78654C 0x78654C released this 05 Oct 16:25
e082568

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-warning commands.
  • Rust analysis checks unsaved code after a short typing pause, including undeclared values such as E0425. Cargo projects also run cargo check on 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 file command 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

Choose a tag to compare

@0x78654C 0x78654C released this 29 Sep 19:00
b52306b

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 (.rs or -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-analyzer integration 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 -tree to 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. Use fxp --help to 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 -i for 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 cd to switch to a drive root, such as C: or C:\.
  • 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-src

xte 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

Choose a tag to compare

@0x78654C 0x78654C released this 10 Sep 18:54
f76f235

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 xte for keywords, built-in functions, declared functions after call, and variables inside {...} or after lines:.
  • 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.xt example.

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 -p text 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/catch handling 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 -check now 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 in netaudit.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

Choose a tag to compare

@0x78654C 0x78654C released this 26 Aug 21:47
85c2689

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 xup command:
    • xup -e enables update checks when an interactive session starts.
    • xup -d disables startup update checks.
    • xup -s shows whether startup update checks are enabled.
    • xup -c checks 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 (x64 or x86).
  • 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.exe before 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 wget and the updater.
  • mkfile now reports a clear error when no filename is supplied.
  • Refined the pcinfo xTerminal 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

Choose a tag to compare

@0x78654C 0x78654C released this 27 Jul 20:39
f20cb1b

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 ver command now displays the file version and SHA-256 checksum for:
    • xTerminal.dll
    • Core.dll
    • Commands.dll
    • OllamaInt.dll
    • OpenAI.Api.Client.dll
    • Openrouter.dll
  • SHA-256 checksums are displayed consistently in uppercase.
  • Updated the xTerminal assembly version to 3.0.6.0 and the Core assembly version to 1.8.9.0.

What's Changed

Full Changelog: v3.0.5.0...v3.0.6.0

xTerminal v3.0.5.0

Choose a tag to compare

@0x78654C 0x78654C released this 19 Jul 13:19
2d93282

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 TermXT editor.
  • 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 fxp file 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

Choose a tag to compare

@0x78654C 0x78654C released this 11 Jul 21:21
cc466c5

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 packages lists packages used by the current buffer.
    • :nuget add <package> [version] adds a package with an optional version.
    • :nuget remove <package> removes a package.
    • :nuget restore restores the declared packages.
  • Package references and compatible dependencies are resolved for compilation, diagnostics, IntelliSense, and execution.

TermXT editor improvements

  • Added Ctrl+D in 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

  • ccs can 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 tmpZip folder.
  • 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 waifu arguments 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 asInvoker execution level for its per-user installation.
  • Added xInstaller/generate-payload-manifest.ps1 for 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.

  • wget now 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 complete data directory:

    .\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

Choose a tag to compare

@0x78654C 0x78654C released this 15 Jun 20:15

Improves

  • Now exif command 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.