Skip to content

Releases: CadenFinley/cjsh

cjsh v1.5.9

Choose a tag to compare

@github-actions github-actions released this 19 Sep 06:37

1.5.9 - 2026-09-18

Added

  • Added regression coverage for interactive history expansion, escaped history records, passive completion-menu activation, and variable-assignment diagnostics in command lists and inline loops.

Changed

  • Passive automatic completion menus now activate on Up/Down or mouse-wheel input with the first candidate selected. Right accepts the first suggestion, and Tab immediately completes a unique match while activating the menu for multiple matches. Accepted completions refresh suggestions in passive mode and return focus to the command line.
  • Status-line command hints now show builtin command names and include the names of defined functions.

Fixed

  • History expansion now uses the newest completed command instead of skipping it, including after failed commands and multiline pastes. Persisted newlines, tabs, and backslashes are decoded before history expansion, history, and fc use the entries.
  • Variable validation now recognizes assignments throughout command lists, conditionals, and loops without treating assignment-like arguments, test expressions, or operators inside expansions as new variable definitions. Diagnostics retain the correct source line after multiline quotes.
  • Made automatic-completion PTY cancellation wait for Escape to close the menu before sending more keys, preventing slow runners from combining the input into an Alt sequence.

Full Changelog: v1.5.8...v1.5.9

cjsh v1.5.8

Choose a tag to compare

@github-actions github-actions released this 17 Sep 03:03

1.5.8 - 2026-09-16

Added

  • Added opt-in cjshopt history-directory-parents on|off|status and matching isocline APIs to include commands from all ancestor directories up to / while directory-aware history is enabled. It works independently of history-directory-subdirs and excludes sibling branches. Alt+P toggles it temporarily inside the history menu.
  • Added independent isocline menu-height setters/getters for completion, history, command palette, and custom menus, exposed through cjshopt completion-menu-max-lines, history-menu-max-lines, command-palette-max-lines, and custom-menu-max-lines (<count|status>). Ctrl+J inside any menu temporarily toggles between its configured limit and all available terminal space; closing the menu resets the toggle.
  • Added opt-in cjshopt completion-auto-menu on|off|status and matching isocline APIs. Typing shows an unselected, live completion list; Tab activates navigation, mouse interaction, preview, and acceptance without inserting a common prefix or accepting a lone match. With prompt mouse clicking enabled, clicking a passive entry activates and selects it; header/footer clicks select the first entry. The activating click never accepts. After acceptance, refreshed suggestions stay visible in passive mode until Tab or another menu click activates them.
  • Added scrollbars to overflowing completion, history, command palette, and custom menus, with click-to-page and thumb-drag scrolling that respect the existing mouse settings.
  • Added regression coverage for automatic completion menus, history-based completion ranking, ancestor-directory history, menu sizing and scrollbars, quick history substitution, and isocline performance and allocation-failure handling.

Changed

  • Organized cjshopt --help into nine sections by purpose, with consistent descriptions and defaults, lines that fit an 80-column terminal, and shared guidance for persistence and subcommand help.
  • Menu content-row defaults are now 15 for completion, history, command palette, and custom menus. Per-menu cjshopt overrides and the temporary Ctrl+J height toggle remain available.
  • Completion menus now always use the full single-column list with scrolling, paging, and mouse support.
  • Refreshed menu headers, result counts, shortcut footers, and selected-entry styling, with terminal-space calculations that account for wrapped headers and help text.
  • Reduced isocline editing overhead with indexed completion deduplication, reusable history snapshots, compact undo/redo storage, geometric string-buffer growth, and faster printable-ASCII width checks.
  • Extended the agent waiting-status shimmer across the configured command while preserving literal markup and UTF-8 characters. Color-disabled terminals retain the once-per-second timer.

Removed

  • Removed the shared ic_set_menu_max_line_count() / ic_get_menu_max_line_count() API and cjshopt menu-max-lines. Use the per-menu isocline APIs or cjshopt settings instead, and replace the old option in startup files.
  • Removed the collapsed completion menu, its expand/collapse controls, and cjshopt completion-menu-expanded (including the corresponding isocline API). Remove this setting from existing startup files.

Fixed

  • Quick history substitution now rejects empty search text such as ^^ instead of rerunning the previous command, and preserves text after the closing caret in expressions such as ^old^new^ extra.
  • Made history-sort PTY assertions handle wrapped headers at a fixed terminal width, avoiding false failures after adding the ancestor-directory status field.
  • Made automatic-completion PTY checks wait for the expected screen state, avoiding false failures while mouse release or menu redraws are still being processed on slower runners.
  • Successful bare-command history entries now defer to available regular command completions, so commands such as lazygit keep their executable description and trailing space as well as their history priority.
  • Regular completions now retain priority from matching history when duplicate history suggestions are removed, preserving file and directory suffixes and command, option, subcommand, and value descriptions before applying result limits. Commands used with arguments also boost the bare command name, so git clean -xdf in history prioritizes git.
  • Ranked matching command names shortest first with alphabetical ties before applying completion limits, so commands such as git precede gen_bridge_metadata for g in Tab completion and automatic suggestions.
  • Passive automatic completion menus now reuse the prompt's PATH cache and defer manual-page lookups and dynamic completion providers until an explicit Tab request, avoiding expensive searches on each keystroke, especially on WSL.

Full Changelog: v1.5.7...v1.5.8

cjsh v1.5.6

Choose a tag to compare

@github-actions github-actions released this 15 Sep 05:54

1.5.6 - 2026-09-15

Added

  • Added directory-aware interactive history with cjshopt history-directory and cjshopt history-directory-subdirs, both off by default, to scope arrow-key recall, fuzzy search, and history completions to the current directory and optionally its descendants. Alt+D and Alt+N toggle these settings temporarily inside the history menu.
  • Added customizable heredoc-delimiter highlighting for opening and closing markers, including quoted or escaped delimiters, multiple heredocs, and <<- tab stripping. Heredoc bodies now use string styling rather than command highlighting.
  • Added regression coverage for directory-scoped history, heredoc highlighting, completion lookup behavior, and glob and extended-glob matching endpoints.

Changed

  • History records now capture the physical working directory before command execution and deduplicate repeated commands per directory. Older records remain available in global history; history, fc, and history expansion continue to use the full history.
  • Improved syntax-highlighting and completion hot paths with bounded per-redraw lookup caches, fewer redundant PATH and filesystem checks, earlier spell-correction filtering, and lighter history metadata parsing.
  • Optimized pattern-based parameter trimming and replacement by reusing matching endpoints, and reduced repeated work when matching overlapping or empty extended-glob alternatives.

Fixed

  • Made history-menu mouse-click PTY coverage independent of the parent terminal width, checking both wrapped and single-row history headers.

Full Changelog: v1.5.5...v1.5.6

cjsh v1.5.5

Choose a tag to compare

@github-actions github-actions released this 12 Sep 08:30

1.5.5 - 2026-09-12

Added

  • Added an Alt+O browser shortcut and command-palette action that opens URL input directly or runs a web search for non-URL buffer text using the configurable BROWSER launcher.

Changed

  • Moved prompt internals into the core module layout and refreshed related keybinding application paths.
  • Improved parser and interpreter hot paths with broader coverage for token dispatch, variable lookup, and redirection-focused regression scenarios.

Fixed

  • Fixed command-substitution evaluation in loop and select expressions so nested substitution results are handled consistently.
  • Fixed Alt+O handling on WSL terminals by recognizing the escape sequence emitted for the key chord.
  • Stabilized shell lifecycle and process-cleanup regressions by tightening synchronization in niche race-prone test flows.

Full Changelog: v1.5.4...v1.5.5

cjsh v1.5.4

Choose a tag to compare

@github-actions github-actions released this 10 Sep 10:38

1.5.4 - 2026-09-10

Changed

  • Updated repository links, badges, Codacy links, and clone commands for the GitHub repository rename to CadenFinley/cjsh.
  • Standardized the changelog format and documented all tagged releases back to 1.0.0.
  • Use each version's changelog entry as its GitHub release notes.

Fixed

  • Fixed GitHub Pages links in the documentation, shell help, and first-run message to use the new /cjsh/ site URL.
  • Restored normal PATH initialization in --minimal mode, including system paths for login shells and fallback paths when PATH is missing or empty.

Full Changelog: v1.5.3...v1.5.4

cjsh v1.5.3

Choose a tag to compare

@github-actions github-actions released this 10 Sep 09:13

1.5.3 - 2026-09-10

Added

  • Added cjshopt line-wrap-marker <char|''|status> and matching isocline APIs so wrapped-line markers can be customized with a single printable character or disabled with an empty string.
  • Added and stabilized PTY coverage for wrap-marker customization, history navigation behavior, and vim profile interactions.

Changed

  • Improved interactive history navigation so Up and Down at the end of the buffer move through history with recalled entries placing the cursor at the end, while Shift+Up and Shift+Down navigate history from any cursor position.
  • Updated wrapped-line marker behavior and documentation so marker width is reserved only when a marker is configured, including support for wide printable Unicode markers.
  • Expanded syntax regression coverage with generated validation probes and focused tests for function/control-flow edge cases.

Fixed

  • Fixed wrapped-line rendering and menu layout interactions to avoid an extra padding column and keep redraw behavior consistent when the marker is customized or hidden.
  • Fixed multiline function and control-flow parsing and validation so inline and multiline forms, quoted delimiters, and keyword-like arguments are handled correctly in both interactive checks and -n syntax mode.

Full Changelog: v1.5.2...v1.5.3

cjsh v1.5.2

Choose a tag to compare

@github-actions github-actions released this 10 Sep 05:59

1.5.2 - 2026-09-10

Added

  • Added Windows WSL 2 CI coverage for Ubuntu 24.04 x86_64, running the full CTest suite as an unprivileged user from a checkout in the Linux filesystem.

Changed

  • Extended cached PATH filename lookup to Tab completion, status-line analysis, and command-error suggestions, checking executability only for matching candidates and refreshing lookups on explicit Tab requests.
  • Kept explicit command queries such as type, which, and command -v validating executable paths against the filesystem while avoiding unnecessary PATH lookups for shell builtins.
  • Expanded regression coverage for completion refreshes, executable filtering, command suggestions, explicit command lookup, and PATH restoration.
  • Replaced timing assumptions in shell lifecycle and background-job notification tests with synchronization suitable for slower WSL runners.

Fixed

  • Fixed command -p PATH restoration so empty and unset values are preserved after command execution and descriptive queries.
  • Preserved known command names from searchable PATH directories that cannot be listed so they remain available as completion candidates.

Full Changelog: v1.5.1...v1.5.2

cjsh v1.5.1

Choose a tag to compare

@github-actions github-actions released this 10 Sep 03:39

1.5.1 - 2026-09-09

Changed

  • Improved command and syntax-highlighting lookup paths to cache PATH command names during interactive redraws, reducing repeated filesystem scans for incomplete prefixes.
  • Updated inline completion hints to stay cache-only while typing: hint generation now avoids launching manual-page scraping and dynamic value providers until explicit Tab completion.
  • Ran a broad clang-tidy cleanup pass across core and isocline modules to refresh diagnostics and consistency in shared code paths.
  • Expanded regression and benchmark coverage for hint-fetch deferral, dynamic-provider gating, interactive PATH cache lifecycle, and cross-shell timing baselines.

Fixed

  • Fixed interactive PATH cache invalidation for relative PATH segments and working-directory changes so executable discovery updates correctly between prompts.
  • Fixed cached-name completion filtering so non-executable files are rejected even when name-only PATH indexing is active.

Full Changelog: v1.5.0...v1.5.1

cjsh v1.5.0

Choose a tag to compare

@github-actions github-actions released this 09 Sep 15:32

1.5.0 - 2026-09-09

Added

  • Added and expanded regression coverage for startup interruption policy, terminal selection/recovery, process-group launch races, and command-palette/menu cleanup scenarios in PTY drivers.

Changed

  • Replaced the legacy tests/run_shell_tests.sh flow with CTest-first test execution across developer docs and CI helper scripts.
  • Applied broad performance and cleanup passes across startup, history loading, parser/interpreter paths, completion, and isocline rendering.
  • Improved musl CI token-validation stability and aligned release/developer documentation with the CTest workflow.

Removed

  • Removed the internal --startup-test shell flag and dropped cjshopt login-startup-arg, simplifying startup option handling and related documentation/completions.

Fixed

  • Fixed startup hangs triggered by special files and orphaned process groups during startup policy handling.
  • Fixed command-palette action execution so the menu is dismissed and redrawn before the action runs, preventing stale UI artifacts on terminal resumes.
  • Fixed spurious process-group launch failures on macOS foreground command paths.

Full Changelog: v1.4.15...v1.5.0

cjsh v1.4.15

Choose a tag to compare

@github-actions github-actions released this 08 Sep 15:44

1.4.15 - 2026-09-08

Added

  • Added cjshopt menu-max-lines <count|status> to limit content rows in completion, history, command palette, and custom menus. The default is 50 rows, including expanded item previews; headers and help text use separate rows. Positive counts above 256 are clamped to 256.
  • Exposed menu height configuration through the isocline API with ic_set_menu_max_line_count() and ic_get_menu_max_line_count().
  • Added regression coverage for menu height defaults and bounds, command validation, quiet startup configuration, terminal fitting, scroll margins, paging, and expanded preview rows across menu types.

Changed

  • Applied the shared multiline-bottom-lines scroll margin, defaulting to 3 rows, around selected menu items. Menus respect the configured content limit and shrink to fit the terminal.
  • Updated builtin help, completions, and editing documentation for menu height and shared scroll-margin settings.

Fixed

  • Corrected menu paging so the selected item stays within the new page's scroll margins and subsequent rendering preserves the requested page, including Page Up in expanded completions.
  • Made menu viewport PTY tests drain redraw output as soon as it arrives, preventing macOS CI timeouts during long navigation sequences.

Full Changelog: v1.4.13...v1.4.15