Releases: SteveTheKiller/KillerShell
Release list
KillerShell v1.0.2
1.0.2 is a small bug fix release - the results scrollbar takes clicks again, Ctrl+N opens a genuinely new window instead of your last session, F7 with nothing selected opens a blank document, and the Update button's label no longer disappears when you hover it.
Fixed
- The results scrollbar can be clicked and dragged again. The press handler treated anything that was not a row as empty space, started the rubber-band selection and captured the mouse - so a click on the scrollbar was swallowed before the scrollbar ever saw it, and dragging the thumb did nothing at all. A press that lands inside the scrollbar now returns before the marquee branch. The scrollbar is not empty space, it is the one piece of chrome inside that control that owns its own clicks.
- Ctrl+N opens a new window, not a copy of your last session. A second window runs as its own process, and that process was reading the same saved tab list the first one did, so a new window came up carrying every tab from last time. It now launches with a
--new-windowflag that skips the session restore, giving one fresh tab pointed at the folder you were in, or Home if there was not one. Both windows still write the same saved session on exit, so whichever you close last is the one that is remembered. - F7 with nothing selected opens a blank document instead of doing nothing. The key only ever acted on a selection, and an empty one set a status line and returned, which from the outside was indistinguishable from a dead key. It now opens an untitled document, the same one the rail's pencil gives you. With a file selected it still opens that file, and the Edit row on the context menu is unchanged, since it is always seeded by whatever is under the pointer.
- The Update button's label is readable on hover. Hovering fills the button with the accent, but the label was painted in that same accent and had its own explicit
Foreground, so it vanished into the fill. The caption now inherits its color from the button's border viaTextElement.Foregroundand the hover trigger swaps it toOnPrimaryBrush, which every theme already defines as white. A trigger cannot reach the button's Content by name - it sits outside the template's namescope - which is why the color is carried down by inheritance rather than set on the TextBlock.
KillerShell v1.0.1
1.0.1 is a bug fix release - a delete no longer walks the pane up a folder, a restored tab comes back as the folder it was instead of an empty search form, a refused delete asks in KillerShell's own dialog rather than Windows', a file operation stops throwing the listing back to the top of the folder, and the toolbar stops hiding a lone button behind an overflow chevron. The selected file's full path also lands in the footer, where a trimmed name cannot hide it.
Added
- The selected file's full path shows in the footer. Every view has to trim a name that will not fit - the icon grid worst of all, where a tile is as wide as the icon - and the part it trims is the tail, which is the part that tells two files apart. Selecting a row or a tile now puts its full path on the footer status line, which is the one place in the window sized for an unbounded string and which already elides from the front, so a narrow window costs you the drive letter rather than the file name. More than one selected shows a count instead. Clearing a selection leaves the line alone rather than wiping whatever a file operation just reported.
Fixed
- Deleting a file no longer moves you up a folder. Deleting something in Documents left you sitting in your home folder. Refreshing the folder tree after any file operation rebuilt each node's children by clearing the collection and refilling it, which threw away the container holding the tree's selection - and WPF answers a lost selection by selecting the PARENT node, which the tree then followed by navigating there. The refresh now reconciles in place, removing only entries that actually left the disk and inserting only new ones, so the selected folder and its container survive and nothing re-selects behind you. It affected every file operation that refreshes the tree, not just delete: a rename, a paste or a new folder could move you the same way.
- A restored tab comes back as the folder it was, not an empty search form. The session format was still KillerFind's and had no field for browse state, so every folder tab was written out as a search scoped at that folder and restored as one: the location box showed the path, the listing was empty, and the first-run Home navigation was skipped because it only ran for a tab with no search root. The saved line now carries the current folder and a browsing flag, appended after the original nine fields so a session written by an older build still loads, and a restored folder tab is re-listed on startup. A session saved before those fields existed has no folder to resume, so the test is now whether the tab has a pattern to run at all: one with nothing to search browses its scope instead of showing an empty pane, and a scope that has since been deleted or unmounted falls back to Home. A real search tab with terms in it still comes back as a search form, untouched.
- A refused delete asks in KillerShell's own dialog instead of Windows'. When the shell would not recycle a file on permissions - Controlled Folder Access, a locked-down ACL, a file owned by another account - it drew its own "You'll need to provide administrator permission" box, the one piece of UI in the app that was never ours.
FOF_NOERRORUIsuppresses it, the refusal comes back as a return code, and the answer is a themed prompt offering the one thing that can still do it: an elevated retry, which starts a second instance with--recycle, does the delete and exits without a window. Declining leaves everything where it was. The shell's progress dialog is untouched in the interactive path, since a long recycle still needs to show something, but the headless helper suppresses it as well - it has no message pump to draw one with. The dialog also says out loud that elevation will not defeat Controlled Folder Access, which blocks by binary rather than by token, and that the fix there is adding KillerShell to the allowed apps list in Windows Security. The helper's exit code is now checked, so an elevated retry that gets refused says so in the status bar instead of looking exactly like one that worked: a UAC prompt, then nothing, and the file still sitting there. - The toolbar no longer hides a single button behind the overflow chevron. In a pane narrow enough to shed exactly one button - which in practice meant Export, first in the shed order - you got a chevron that opened onto one icon. The chevron is about as wide as the narrowest button it can hide, so the trade bought no room and cost a click. Overflow now appears only when two or more buttons have been shed; below that the button stays on the strip where you can reach it.
- A file operation no longer throws the listing back to the top of the folder. Deleting one file out of a long folder scrolled you to the top and left you hunting for your place. The refresh after a file operation was re-listing the whole folder, clearing and refilling the collection, which resets the scroll position by definition - while the folder watcher was sitting right there patching the same listing entry by entry, which is what it exists for. The re-list now runs only where there is no watcher to do the job: This PC, demo mode, and a share that refused a watch. Everywhere else the row disappears where it stands and nothing else moves.
KillerShell v1.0.0
KillerShell 1.0.0 is KillerFind 2.0.0 under the name it should have had. The 1.x line was a search box that happened to list files. This release is a shell for power users: a file browser, a terminal and a text editor sharing one window, one keyboard and one tab strip, still a single portable exe with nothing to install. Search became one of the things it does rather than the whole of it, so the name went with it. Nothing is removed and no setting moves - it is the same codebase, renamed, versioned from 1.0.0 because the product it describes starts here.
Added
- Windows knows what KillerShell is now. A File associations card under the theme flyout registers the app with the shell: a ProgID, an entry in the Open With list for the 19 text types the editor handles, "Open in KillerShell" and "Open KillerShell terminal here" on any folder, drive and folder background, and the Capabilities block that puts KillerShell in Settings under Default apps. Per-user by default, all-users when the window is elevated, and taken back out by both uninstall paths so a ProgID never outlives the exe it points at. Registering is all it does: since Windows 8 the
UserChoicekey has been protected by a signed hash, so an app that sets itself as the default is either forging that hash or lying about it. The card says so and hands you to Settings, which is the only place the switch can honestly be thrown..bat,.cmdand.regget an "Edit with KillerShell" row rather than the open verb, because their double-click runs or merges them and quietly changing what that means is how someone loses an afternoon. - A path on the command line opens.
KillerShell.exe "C:\some\folder"browses it andKillerShell.exe "C:\some\file.log"opens it in an editor tab, which is what makes the shell verbs and the associations above actually do something. Without it every one of them would have launched the app on Home and ignored what it was asked for.--shelland--cwdtake a value, so their value is skipped rather than opened a second time as a tab. - A text editor, in a tab. Open any file with F7, the results menu's Edit row, or a double-click on the prompt script. It is AvalonEdit, vendored as source into
third_party/AvalonEditand compiled into the exe, so KillerShell is still one portable file with no runtime to install - it costs about 640 KB. Syntax highlighting, line numbers, undo, Ctrl+F find, Ctrl+G go to line, Ctrl+S save, and a right-click menu (AvalonEdit ships with none at all). Word wrap is on by default. The whole vendored tree was audited to zero compiler warnings on the way in, without suppressing any. - A blank document from the rail. The pencil above the terminal button opens an untitled document in a new tab in the focused pane, for the note or the throwaway script that has nowhere to live yet. Nothing is written to disk until you save it - the first Ctrl+S is the one that asks where, and naming it is also what gives it highlighting, so a scratch buffer saved as
.ps1comes back colored. It follows the same BOM rule as any other new file, so a script Windows PowerShell has to read gets one and a.txtdoes not. - Encoding is preserved, never invented. A file is read by inspecting its bytes rather than through AvalonEdit's own loader, which hands back a UTF-8 encoding that writes a BOM - so a plain
.txtor.batwould have silently grown three bytes at the front the first time it was saved. A BOM present is kept, a BOM absent stays absent, and bytes that are not valid UTF-8 fall back to the system ANSI codepage instead of being replaced with U+FFFD. The document bar shows the encoding and the line ending, because a script PowerShell 5.1 will read depends on both and neither is visible in the text. - Edit your PowerShell
$PROFILEfrom the rail menu, a shell's right-click menu, or Ctrl+comma. The submenu lists the hosts actually installed, because PowerShell 7 and Windows PowerShell do not share a profile and editing the wrong one is most of the "why is my profile not loading" in the world. The path is obtained by asking the shell binary for$PROFILE.CurrentUserCurrentHostrather than assumingDocuments\PowerShell\- on a machine where OneDrive has redirected Documents, which on a managed fleet is most of them, the assumed path is a file the shell will never load. A missing profile is created. - Syntax highlighting for the formats a field tech actually opens:
.bat/.cmd,.reg,.ini/.conf/.cfg/.inf,.yml/.yaml,.logand.csv/.tsv. AvalonEdit ships none of these, so they are hand-written and embedded. The registry one colors a key deletion and a value deletion in the danger color, since both are one character away from the line that merely sets something. The log one lights severity words, timestamps, GUIDs, error codes and paths, and leaves everything else as body text on purpose. - Three toolbars, one per kind of tab. A folder tab keeps the location row; a shell tab gets its own bar with the live working directory (tracked from OSC 7, click it to open that folder as a tab) plus new shell, elevate, open folder here, clear and fonts; a document tab gets save, undo, redo, find, go to line, wrap, a settings flyout, the full path and the encoding readouts. The location row is hidden on the latter two, where back, forward, up, the star and the sort and view buttons all act on a listing that is not on screen.
- Editor settings behind the gear: line numbers, highlight current line, show spaces and tabs, spaces vs tabs, and indent width. All app-wide and applied to every open document at once, because they describe how you read code rather than what one file is.
- An editor font slot in the Fonts dialog beside the app and terminal ones, filtered to fixed-width faces, with its own size slider. Ctrl+wheel over a document moves the same value.
- The prompt renders on a machine with no Nerd Font. No monospaced font Windows ships has the powerline separators or the git branch mark, and Consolas does not even have the prompt's chevron, so on a fresh machine the shipped prompt was a row of boxes. The exe now carries
Fonts/KillerGlyphs.ttf- 26 glyphs, 2,928 bytes - and the terminal draws a cell from it only when the font the user actually chose has no glyph for that codepoint. Their font choice is untouched; it just stops being able to fail on those glyphs. The fallback glyph is stretched to the chosen face's cell width, because a powerline separator is a solid triangle that has to butt against the next cell and the two faces have different advances. It also covers↑and↓, which the prompt draws for git ahead/behind and which ProFont IIx is missing. Bundling a whole Nerd Font would have cost 2.6 MB, 99% of it icons no prompt draws. KillerGlyphs is a subset of Terminess Nerd Font (SIL OFL 1.1, renamed as the licence requires of a modified version) - seeFonts/KillerGlyphs-NOTICE.txt. - File operations. Cut, copy, paste, rename, delete and new folder, from the keyboard, the context menu or a drag. Copy and move run off the UI thread with a themed progress card showing the current file and a real byte count, and a collision stops to ask - showing both files' size and date - with Replace, Skip or Keep both, and a "do the same for the rest" checkbox. The worker genuinely waits on that answer, so nothing is copied while the question is on screen. A move within one volume is a rename, so it is instant at any size; across volumes it copies then deletes, and only once the copy has landed. Delete sends to the Recycle Bin and Shift+Delete destroys, which is the one that asks first. Recycling is the single call that goes to the shell, because there is no other way into the Recycle Bin - and it is also what puts the operation on Explorer's undo stack, so Ctrl+Z there brings the files back.
- Drag and drop both ways. Dragging out of KillerShell now offers move as well as copy, so a Shift-drag into Explorer moves instead of silently copying. Dropping onto a browsed folder does real file work with Explorer's modifier rules: Shift moves, Ctrl copies, and neither means move within a drive and copy across drives. Files already in the target folder are ignored rather than prompting about a collision with themselves, and a folder cannot be dropped into its own child. On a search tab a drop still sets the scope or pipes the files, since there is no folder to drop into.
- A visual keyboard on the shortcuts card. F1 now opens on a LIST / KEYBOARD toggle, remembered between sessions. The keyboard draws a full board with every bound key lit in its category color, the action printed on the cap, and a caption that scrolls when it does not fit; hovering prints "CATEGORY :: action" underneath. Layer buttons switch between the base, Ctrl, Ctrl+Shift, Shift and Alt maps, and holding a real modifier previews that layer, so a chord can be found by pressing Ctrl rather than by reading. The list view is grouped under colored headings in two columns instead of one twenty-row wall. Both views are generated from one table, so a new binding shows up in both rather than being hand-copied into the card.
- Explorer's keyboard conventions. Alt+Left and Alt+Right go back and forward, Alt+Up goes up a folder, and Backspace goes back - none of which had a binding before, so Back and Forward were reachable only by clicking. F4 joins Ctrl+L for the address bar, Ctrl+A selects every result, F2 renames, Delete recycles, Shift+Delete destroys, Ctrl+Shift+N makes a folder, and Ctrl+X / C / V move files around.
- F12 opens the About card, matching KillerPDF. It was previously reachable only by clicking the version in the footer, which nobody finds by accident.
- A "?" on the rail above the globe, where KillerNotes and KillerScan put theirs.
- Browse mode. A tab opens at Home and lists what is there; double-click enters a folder or opens a fi...