Yori: Changelog
Yori | malsmith home
1.40 - 10 Nov 2020
- Many redraw fixes where characters don't render correctly
- Echo, intcmp and strcmp are true builtins to improve performance with AV products
- Improved handling of Alt+nnn keycodes
- Undo/redo in edit
- Lots of new edit key shortcuts including Ctrl+A, Shift+Ctrl+Home/Shift+Ctrl+End, Ctrl+left/Ctrl+right, Ctrl+Y
- Support searching backwards in edit
- Allow drive selection in edit (sorry!)
- Fix crash in timethis (thanks Robert!)
- Fix crash in edit with negative tab width (thanks Pyroman!)
- Fix crash in edit opening empty files (thanks Pyronman!)
- Improvements to sleep countdown (thanks Pyroman!)
- Support for octal and binary in expr (thanks Pyroman!)
- Various hexdump correctness fixes
- Ydbg support for live kernel dumps or full dumps (when kernel debugging enabled)
- ps display parent process
- New tool - ymake for efficient parallel compilation of nmake makefiles
1.30 - 18 Jul 2020
- Add support for process times in ps
- Add support for line ending conversions in iconv
- Common Ctrl+key combinations from bash
- Improved completion script capabilities and simple git completion script
- Pushd with no arguments swaps current directory and most recently pushed directory
- Many improvements for NT 3.5 and 3.51
- Fix uninstall option in setup
- New tool - assoc (and ftype) for editing file associations
- New tool - edit for editing files similar to MS-DOS edit
1.21 - 21 Mar 2020
- Uninstall support is optional in ysetup
- Various minor bugfixes and help updates
1.20 - 14 Jan 2020
- Uninstall support in ysetup
- History -u (aliased to F7) to interactively select previous commands
- Add support for bash-style tab completion with YORICOMPLETELISTALL=1
- Add support for trailing backslashes in tab completion with YORICOMPLETEWITHTRAILINGSLASH=1
- Support scroll lock and pause in ymore for suspending display
- Allow mem to group processes with the same name
- New tool - charmap for displaying ranges of characters
- New tool - co for interactively moving, copying and deleting files
- New tool - kill for terminating processes
- New tool - stride for writing input lines periodically
1.11 - 16 Oct 2019
- Fix tail -f
- Use correct color to display directory headers in sdir
- Fix memory leak
- Fix alt+nn handling again
- Fix crash in more on 32 bit systems
- Fix handling of undefined environment variables in set and if
- Fix mouseover handling after completion scripts
- Add new OS build string
- Allow dir to hide hidden and system files
1.10 - 26 Aug 2019
- support spaces between redirect operator and file name
- tab completion of environment variables
- tab completion of intermediate path components
- tab completion of special directory names
- YORICDPATH environment variable for deterministic chdir to common directories
- support for displaying symbolic link target in dir
- strcmp support for matching substrings as well as exact strings
- change recursive copy behavior when given a directory to copy the directory rather than its contents
- heuristically avoid creating selections when clicking inside the console window
- support redirecting stdout to stderr
- YORIPRECMD and YORIPOSTCMD for invoking commands before and after user entered commands
- scut support for removing console properties from shortcuts
- repl support for replacing text with nothing
- date support for returning monotonically increasing clocks
- Improve YORIAUTORESTART to save in a background thread and to cap the size of the saved buffer
- ysetup support for installing from local package directory
- ypm support for downloading entire package repository
- finfo fixes to work with files correctly
- ypm support for displaying version and architecture of installed packages
- copy support for devices that CopyFile does not support natively
- ypm support for manipulating mirrors or sources
- vol support for more volume properties
- type support for displaying line numbers
- sleep command support visual countdown
- fix alt+nn codes for nn values less than 32
- New tool - cpuinfo for displaying processor topology
- New tool - direnv for updating environment when current directory changes
- New tool - env for launching a process with a custom environment
- New tool - err for translating Windows error codes to text
- New tool - mem for displaying memory usage
- New tool - procinfo for displaying counters of process utilization
- New tool - ps for enumerating executing processes
- New tool - shutdn for shutting down or rebooting a system
- New tool - sponge for buffering and replaying output to eliminate temporary files
- New tool - timethis for measuring process execution time
- New tool - vhdtool for creating and manipulating VHD files
- New tool - yui minimal start menu and taskbar for server core
- ...plus plenty of small fixes and performance improvements
1.00 - 01 May 2019
- ~AppDir special directory which contains the shell binary
- Execute ~\YoriInit.d and ~AppDir\YoriInit.d scripts on start
- Support 1> redirection (but still no 1>&2 support)
- Better support for named streams including tab completion
- -- support in more commands
- Support for $+$ in prompt
- Expose the YORIQUICKEDITBREAKCHARS variable so users can see what it's doing
- Support returning the number of elements in a pushd or setlocal stack
- Support repeating in echo
- Fix piping builtin commands
- Fix installer shortcuts on XP
- Performance improvements
0.99 - 26 February 2019
- Ctrl+click to capture output into a new command
- Support for color in the dir command
- Search and highlight text in more
- Copy as RTF as well as HTML
- Distinguish admin and non admin shells via a prompt character by default
- Hexdump can convert hex back into binary streams
- Split can join files back together
- Window titles can be queried as well as modified
- Setlocal supporting saving and restoring window titles and aliases
- Copy supports DOS devices (eg. CON)
- Get can update files only if the server copy is newer
- Tail -f support
- Osver displays human friendly Windows version and architecture
- Support for invoking yori through a pipe without a real console
- Allow for and fscmp commands to select files matching a metadata criteria
- Implement the AltGr key properly for better international support
- Support for cab to capture one archive per source file
- New tool - cal for displaying a calendar
- New tool - df for displaying a volume free space
- New tool - du for calculating disk usage of directories
- New tool - hash for calculating file hashes
- New tool - mount for mounting and unmounting VHDs and ISOs
0.98 - 14 November 2018
- Shift+arrow to navigate commands, Ctrl+A to move to the start, Ctrl+E to move to the end, Ctrl+L to clear the screen
- Ctrl+Del to remove a command from history
- Many fixes and enhancements in more, including ability to select text and copy as rich text
- Enhancements to the start command to allow it to start processes in the background
- Enhancements to the history command to load history from a file or clear history
- Nice command can be used as a builtin for executing builtin commands at low priority
- New tool - hexdump for formatting a text stream as binary
- New tool - lsof for displaying which processes are using a file
- New tool - sync for flushing files to disk
- New tool - wininfo for obtaining information about a window
- New tool - winpos for setting window positions
- New tool - ydbg for generating crash dumps from processes
0.97 - 11 September 2018
- New setup engine, ysetup, which downloads and installs Yori packages of the correct architecture
- $(foo) style backquotes
- URLs entered in the command line will open a browser
- Z command for heuristically jumping to previously used directories
- Copy has been enhanced with exclusion criteria and the ability to compress targets, resulting in less writes and faster copies
- New tool - ypm for installing/upgrading/removing Yori packages. Use "ypm -u" to upgrade an existing Yori install.
- New tool - ymore allowing scroll forward and back with progress status and VT100 color display
- New tool - ycompact for compressing/uncompressing loose files
- New tool - cab for expanding or creating .CAB archives
- New tool - initool for querying or manipulating .INI files
- New tool - repl for replacing text in a stream
- Customizable break characters when double clicking to select text via %YORIQUICKEDITBREAKCHARS%
- Move "for" to be a builtin command so it can manipulate environment, run goto/call etc
- Fix bugs when selecting text from screen buffer when scrolled
0.96 - 6 July 2018
- For people trying to get an overview without following a blow-by-blow of changelogs, there’s a new introductory guide http://www.malsmith.net/yori/guide/ .
- Mouse selection support. If QuickEdit is off, Yori will perform QuickEdit like functionality when at a prompt, as well as click to navigate and select/overwrite any input text.
- If you want QuickEdit on, this is available by setting YORIQUICKEDIT to 1, which will use Yori’s mouse support at the prompt and turn on QuickEdit when launching applications.
- Mouse selection copy/paste supports rich text - http://www.malsmith.net/yori/richcopy.gif .
- Note the Windows clipboard is multi format and the plain text version is still there if you want it/if your app can’t handle rich text
- I haven’t implemented the new Win10 line select mode, can do if there’s demand for it
- Taskbar progress and completion indication for long running background operations - http://www.malsmith.net/yori/taskbar.gif
- Fix bug where YORICOMPLETEPATH has spaces (sorry!)
- Support for Shift+Tab to navigate backwards through matches, or Ctrl+Down to navigate backwards through history matches
- Support for Ctrl+Backspace to delete an entire argument (note this is slightly different to Conhost which deletes words)
- Import CMD aliases after executing CMD scripts
- Fix bugs when evaluating {} or [] operators in existing file names (need to be treated as literal)
- Fix history completion to match whole line not first command
- More fixes to prevent tab completion/suggestion cases interfering with each other
- Allow sdir/finfo to dump out version resource strings
0.95 - 6 June 2018
- Yori can now act as a mini-debugger. This is used when running CMD scripts from Yori, so that it can invoke CMD to execute the script and extract from the CMD process any changes to the environment. This provides behavioral parity with running a CMD script from CMD.
- Setver.exe, a new tool and also a mini-debugger, allows the user to specify a Windows version/build number to report to a child process. This is applied recursively across the process hierarchy.
- Finfo.exe, a new tool built on sdir file metadata logic, allowing file metadata access in a more scriptable way.
- Touch.exe to update timestamps and create files with specified sizes
- Many fixes to auto-completion, preventing it hanging on URLs, displaying short file names correctly, and fixing a regression allowing command history matching to work again (aka Ctrl+Up.)
- Fixes to named pipe handling.
0.94 - 1 May 2018
- Support for suggestions as you type
- Ctrl+C kills all processes that are part of the foreground statement
- Fixed bug launching CMD scripts with spaces in the path
0.93 - 16 April 2018
- Support YORIAUTORESTART=1 to save and restore open shells on crash or Windows Update.
0.92 - 9 April 2018
- Script based tab completion rules
- Fixes for tab completion with backquotes or other complex expressions
0.91 - 5 April 2018
- The installers now default to \Program Files and \Program Files (x86) for amd64 and x86 respectively and disable WOW64 redirection so they install where you tell them.
- Fixed an incorrect memory access when referring to ~Downloads causing AV on Win10
- Changed the input mechanism so hopefully won’t spin on RS4+ builds
- Added a "bare" mode to dir, although since dir /b was taken it’s labelled dir /m (sorry for the inevitable muscle memory pain.) I tried to follow CMD semantics with this, although those seemed odd to me (like, not enumerating named streams or using short names when requested to do so.)
0.90 - 2 April 2018
- Backquote support
- Background job support
- Tab completion improvements
- Executable matches for the first command, file matches thereafter
- Existing arguments are preserved
- File and path expansion improvements
- File.{ext1,ext2} or File[AB] type operators
- Support for file:/// prefixes
- >MAX_PATH support throughout (opt-in for setting current directories beyond >MAX_PATH since many applications explode when they see that)
- ~ as "home", ~Desktop, ~Downloads, etc.
- Alias improvements
- Owned by the shell as opposed to conhost for correct behavior with operators
- Function keys map to aliases
- Prompt improvements
- Prompt expands environment variables and backquotes (my prompt indicates which git branch I’m on by invoking git branch and parsing the output)
- No more mandatory Administrator: prefix
- But you can put it back:
title `if grpcmp Administrators; echo Administrator:`Yori
- Or do something better:
set YORIPROMPT=`if grpcmp Administrators; echo ^`color lightred^`GODMODE: ^`color lightmagenta^``$P$`color gray`$G$
- Command history can be durable (%YORIHISTFILE% and %YORIHISTSIZE% behave like their bash namesakes)
- Modular design allows for custom in-process commands
- Text encoding is UTF8
- Includes an iconv tool for converting this into anything else; note UTF-8 is effectively lossless
- Built in VT100 color (so it works on all OSes/consoles)
- SMB paths can be current directories
- Win32 versions of UNIX favorites including cut, date, expr, fg, iconv, nice, sleep, split, tail, tee, wait and which
- Improvements to CMD commands
- Clip that supports copy and paste as well as HTML
- Erase that can send to the recycle bin
- For that can execute tasks in parallel on multiple processors