← Back to tacterm

tacterm: status and differences from Rio

Last reviewed: 2026-10-20.

This file describes the changes integrated into tacterm's main branch. Update it when a change is integrated, upstream accepts an equivalent fix, or validation and release status changes. Proposed changes are not implemented features.

Upstream baseline

Implemented changes

AreaChanges relative to the baselineMain commits / evidence
Executable nameCargo builds tacterm / tacterm.exe directly. Release packaging, local build helper, desktop launchers and CLI naming use the new binary name. The Cargo package remains rioterm.frontends/rioterm/Cargo.toml, frontends/rioterm/src/cli.rs, packaging/release.mjs
Application iconAdapt the website's lime t_ mark for the window icon, Windows EXE resources, macOS app bundles, and Linux desktop integration. Include multiple sizes, Retina representations, and a reproducible vector source. Use a matching Linux app/desktop ID so Wayland can resolve the icon.Icon assets and generator; frontends/rioterm/build.rs, frontends/rioterm/src/router/window.rs, packaging/release.mjs
Tab title renderingImprove mixed Unicode title shaping, fallback font selection, baseline alignment, vertical centering, and pixel alignment. Cache shaped title runs. Support tab-font-family and tab-font-size, including platform overrides, without changing terminal fallback fonts.b7e076cd80, 24d69c3767, a6bc99ab69, 966f2870f7, a99b322020, d0252f0ae8; settings example in README
macOS title fontsCheck preferred title font coverage with CoreText, including collection fonts and fonts without backing file data.7a67599194; macOS-specific tests require macOS
Configuration reloadReapply platform overrides when loading an updated configuration, preserving platform-specific settings after reload.06b88fb63d
Independent configurationUse a dedicated tacterm directory and TACTERM_CONFIG_HOME. Import Rio settings and assets once when the destination is absent, excluding logs and installer backups; preserve the source and never fall back to it.rio-backend/src/config/migration.rs; configuration details in README
WSL working directoriesOpen a new tab in the focused tab's directory when inheritance is enabled. Automatically load the WSL zsh working-directory integration; restore the shell directory at prompts and ignore subshell reports.126454e0ce, fc05f6d77f, 4ec4cc646e
New tab dimensionsPreserve full window dimensions and the original font size when creating tabs, avoiding repeated subtraction of panel padding and progressive loss of terminal area.8dc3e939bd; context regression test covers repeated tab creation at 150% scale
GPU allocation policyReduce GPU memory reservations and defer unused atlas storage.ebf9ddf67b
Grid rendering resourcesRemove unused grid frame buffers and share wgpu grid pipelines between panels in the same window.1fcf03d0e9, cee1de68d7; shared-pipeline GPU readback regression test
Color glyph atlasesGrow color atlases on demand rather than allocating full-size textures immediately; preserve cached pixels and glyph coordinates during growth.be47166333; GPU regression tests
Grayscale glyph atlasesStart smaller and grow grayscale atlases on demand; refresh bindings when atlas size changes.9571ae44a7; GPU regression tests
Windows timingPreserve precision for refresh-rate fractions and large QPC counts in the fallback vsync interval calculation.d62532facd; two regression tests
Windows VRR presentationContinuously present focused, visible, non-occluded fullscreen or maximized GPU windows. Reuse resident grid data for idle frames and pace successful frames through the swapchain instead of adding a DWM wait. Fall back to display-paced retries after failed surface acquisition.cafbad552c, 812ae341ab; unchanged-row and cursor-update GPU readback regression test

Performance and limits

GPU memory savings depend on the backend, driver, number of panels, and glyph workload. Growing atlases retain their capacity after clear, so a heavy workload can reach the original maximum texture storage. Reduced allocation does not by itself establish a throughput or latency improvement.

Continuous presentation performs GPU work even when terminal contents are idle; it trades idle resource use for steady presentation in the specified window states. Other window states keep event-driven rendering. Behavior still needs validation across displays and GPUs.

Workstation measurement reports and ad hoc benchmark helpers are kept locally, outside the published repository. Regression tests remain part of the source.

Validation

The configuration import and executable rename passed Windows validation on 2026-10-20: 221 backend tests (including 5 import regressions), the renamed application's compile check, 4 packaging tests, 9 website tests, formatting and whitespace checks. The local memory-aware release build and installation passed version and SHA256 checks. The user confirmed familiar appearance after first launch; the imported configuration matched Rio's original, which was unchanged. Both pinned launchers were updated to the new executable with their arguments preserved. Native macOS and Linux import behavior still needs validation.

The website build passed with live release metadata. Source-build naming and configuration compatibility text are updated, and the internal screenshot-format maintenance section has been removed from the public status page. The homepage introduction now describes the project's ongoing direction rather than individual fixes; the static build and all 9 website tests passed on 2026-10-20 after this copy update.

Release 0.1.0 is published from 7e8a12f8b2 with all six native OS/architecture archives, checksums and feature-focused release notes. The release workflow passed every native build and packaging check. The downloaded Windows x64 archive and executable matched their published SHA256 values and reported tacterm 0.1.0. The native test workflow also passed on Windows, macOS and Linux. Measurements summarized in those notes compare individual optimization stages on one Windows workstation; they are not cumulative or a single final-release-versus-upstream benchmark. Detailed local reports and helpers remain excluded from the repository.

Integration checks on 2026-10-20, on Windows with Rust stable 1.99.0, passed against the combined code through merge commit 4500440f8d:

CheckResult
cargo +stable test -p rio-window --lib --locked -j 47 passed, including both vsync conversion regression tests
cargo +stable test -p sugarloaf --features wgpu --lib --locked -j 4133 passed, 8 ignored
cargo +stable test -p rioterm --bin rio --locked -j 4228 passed; 1 WSL/zsh integration test ignored
Explicit ignored shared-pipeline GPU readback test1 passed; covers panel isolation, resize, buffer growth, unchanged-row presentation, and cursor updates
WGPU_BACKEND=dx12 with cargo +stable test -p sugarloaf --features wgpu --test gpu_memory --locked -j 4 -- --ignored --nocapture2 passed; color and grayscale atlas pixels survive growth and clear on DX12
cargo +stable fmt --all -- --check, whitespace, local documentation linksPassed

The local build/installation scripts also passed PowerShell syntax checks, and the memory-aware release helper passed -DryRun. No release build or installation was performed for this transition. macOS-only tests and the ignored WSL/zsh integration test were not executed here.

The subsequent history cleanup removed local benchmark artifacts without changing application code or GPU regression tests. The retained commits were checked against their original trees, excluding only the removed artifacts.

The native project CI also passed formatting, Clippy, and the regular test suite on Windows, macOS, and Linux for release source commit e04e22900c. The separate MSYS2 check is PR-only and was skipped. Packaging validation (4 tests) and website download metadata validation (5 tests) passed as well.

The first release build compiled and packaged all six native OS/architecture targets from e04e22900c. Every packaged executable passed --version and --help; Linux dependency resolution and macOS ad-hoc signatures also passed. The downloaded Windows x64 archive and executable matched their recorded SHA256 hashes, and its native --version check reported tacterm 0.1.0-alpha.1 on the workstation. These are build, packaging, and CLI checks; no graphical sessions were tested for this release.

For the subsequent application-icon update, the generated assets passed a regeneration check; the multi-size ICO and 1024 px ICNS decoded successfully. A local Windows development build passed, and the icon extracted from its EXE matched the new ICO's opaque pixels and transparent background. macOS Dock and Linux desktop appearance still require native visual checks.

Release and compatibility status

The website presentation was refreshed on 2026-10-20 with larger typography, responsive change and download cards, and light/dark/system theme controls on the home, status, and error pages. Theme preference persists across navigation; system mode follows live OS changes. Website metadata and theme behavior checks passed (9 tests). Browser checks covered light/dark appearance, a 390 px mobile layout, six release download links, and theme persistence after reload and navigation. This is a website-only change; it does not change native builds. The homepage's illustrative terminal was replaced with an actual Windows development-build screenshot showing three native tabs and a real theme-test run. The caption identifies the custom theme and development build, and the image can be opened at full size. The homepage now explains practical differences before downloads, with compatibility questions and source-build instructions following them. Concise editorial summaries link to this complete status document, which includes section navigation. Builds without release metadata link to GitHub Releases instead of incorrectly implying that no release exists.

Release automation

Project website

Next work