Skip to content

Gloss v0.1.1

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Jul 20:58
· 8 commits to main since this release

Gloss v0.1.1

Gloss v0.1.1 is a major usability, safety, and distribution update. It improves command organization and navigation, adds bulk actions and secure updating, hardens local storage and managed aliases, and introduces reproducible releases for macOS and Linux.

New

  • Added command multiselection in the TUI.
  • Added bulk tag editing for selected commands.
  • Added copying the focused command directly to the clipboard.
  • Added category jumping with [ and ].
  • Added Page Up, Page Down, Home, and End navigation.
  • Added a complete, scrollable command-shortcut reference with ?.
  • Added gloss update to check for the latest stable release.
  • Added gloss update --install for verified self-updates of standalone installations.
  • Added optional automatic update checks.
  • Added first-launch update-check onboarding and a corresponding Settings option.
  • Added support for installing through go install.

Automatic checks are opt-in, run in the background at a limited interval, remain quiet when Gloss is current or offline, and never install updates automatically.

Commands and tags

  • Added shared tag normalization across storage, CLI, filtering, and the TUI.
  • Made exact tag filtering case-insensitive.
  • Added deterministic ordering by primary tag, with untagged entries handled consistently.
  • Improved command grouping and sorting.
  • Preserved the focused command by database identity when filtering, resizing, or refreshing the list.
  • Added reliable viewport scrolling for long and wrapped command descriptions.
  • Improved behavior when navigating filtered or changing command lists.
  • Reworked CLI dispatch so direct commands can run without unnecessarily launching or initializing the TUI.

Interface improvements

  • Added responsive wide, medium, narrow, and compact command layouts.
  • Improved command, alias, scan, settings, and detail-screen spacing.
  • Added clearer focus, selection, and multiselection states.
  • Added concise status messages for copy, selection, bulk-tag, and update actions.
  • Improved footer shortcuts and context-sensitive help.
  • Improved wrapped command descriptions and narrow-terminal behavior.
  • Fixed home-screen navigation and several focus and cursor inconsistencies.

Storage integrity

  • Made batch command creation transactional.
  • Made scan imports atomic, preventing partially imported batches after a failure.
  • Ensured updates receive fresh UTC timestamps.
  • Added consistent tag persistence and retrieval behavior.
  • Restricted the Gloss configuration directory to 0700.
  • Restricted configuration and database files to 0600.
  • Added rollback, timestamp, permissions, and scan-import coverage.

Managed alias safety

  • Added strict portable alias-name validation using the Bash/zsh identifier format.
  • Rejected invalid alias names and alias targets containing NUL bytes.
  • Changed managed alias rendering to safe shell-literal quoting.
  • Correctly escaped embedded single quotes in alias targets.
  • Applied the same validation across CLI, TUI, storage, and shell synchronization.
  • Preserved managed-block replacement, backups, and no-op synchronization behavior.

Secure updater

  • Added stable semantic-version discovery through GitHub Releases.

  • Added platform-specific updates for:

    • macOS Intel
    • macOS Apple Silicon
    • Linux AMD64
    • Linux ARM64
  • Added SHA-256 verification before archives are inspected or installed.

  • Added strict checksum-manifest parsing.

  • Added strict ZIP layout validation and archive traversal protection.

  • Added download and extracted-binary size limits.

  • Required HTTPS except for loopback test servers.

  • Added atomic executable replacement that preserves the existing installation if replacement fails.

  • Prevented self-update from replacing Homebrew-managed or otherwise unsuitable executables.

  • Directs Homebrew users to:

    brew upgrade Architeg/tap/gloss

Installer and distribution

  • Corrected the Go module identity to:

    github.com/Architeg/gloss
    
  • Established Go 1.25 as the build baseline.

  • Added a production release builder for four supported platform archives.

  • Added deterministic ZIP generation and checksums.txt.

  • Added validation of the exact expected five-file release set.

  • Added a tag-triggered GitHub release workflow.

  • Added version metadata validation for tagged builds.

  • Added a secure installation script with checksum and archive validation.

  • Changed the default script installation directory to:

    ~/.local/bin
    
  • Restored optional automatic PATH configuration for zsh and bash.

  • Added support for custom installation directories, including paths containing spaces or shell-sensitive characters.

  • Prevented duplicate PATH entries across repeated installations.

  • Added safe handling for missing, symlinked, or nonregular shell configuration files.

  • Improved noninteractive installation when no controlling terminal is available.

  • The installer never invokes sudo.

Fixed

  • Fixed tag comparisons and ordering being implemented differently across screens and storage operations.
  • Fixed selection drifting to a different command after filtering or list changes.
  • Fixed scrolling failures with wrapped or variable-height command rows.
  • Fixed command descriptions being truncated or poorly arranged in narrow terminals.
  • Fixed unsafe double-quoted managed alias rendering.
  • Fixed non-atomic scan imports.
  • Fixed installer PATH prompts when used through curl | bash.
  • Fixed installer PATH writes for zsh and bash.
  • Fixed installer tests hanging when launched from an interactive terminal.
  • Fixed repeated installations adding duplicate shell configuration entries.
  • Fixed shell detection when $SHELL contains only a shell name or a nonstandard path.

Testing and reliability

  • Added comprehensive tests for tags, storage transactions, permissions, aliases, clipboard behavior, navigation, responsive layouts, multiselection, bulk tags, updates, release artifacts, and installation.
  • Added isolated installation tests for local scripts, commit-specific scripts, tagged scripts, and published-style release assets.
  • Added validation of all four platform archives and their checksums.
  • Added race-enabled coverage for the affected packages.
  • Improved installer subprocess isolation and timeout handling.

Installation

Homebrew:

brew install Architeg/tap/gloss

Install script:

curl -fsSL https://raw.githubusercontent.com/Architeg/gloss/main/scripts/install.sh | bash

Go:

go install github.com/Architeg/gloss/cmd/gloss@latest

If the installation directory is not already in PATH, the interactive installer offers to update .zshrc or .bashrc. You can decline and apply the printed command manually.

Development scope

This release covers all ten development phases:

  1. Module identity and Go baseline
  2. Shared tag behavior and ordering
  3. Storage integrity and permissions
  4. Early CLI dispatch
  5. Managed alias safety
  6. Command identity, navigation, and scrolling
  7. Responsive UI, selection, bulk tags, and clipboard
  8. Secure updater and automatic checks
  9. Installer and release automation
  10. Isolated installation and distribution validation