npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tabby-better-sidebar-miller

v1.0.40

Published

Enhanced connection sidebar for Tabby: a contextual SFTP browser inside the sidebar itself, pinned favorites, live connection status, active sessions, workspaces, SSH tunnels, drag & drop (including dragging remote files out to the OS), a transfer manager

Readme

tabby-better-sidebar-miller

Personal fork of TooMuhtsh/tabby-better-sidebar, licensed under MIT.

Miller additions

  • Tab bar buttons (Settings → Better Sidebar → General): Tabby places one icon group before its drag spacer and one after, so the left group eats into the strip. Grouped on the right (the default) collects every plugin's button at the far right in two rows, handing that width back to the tabs; Tabby default restores the two-sided layout.

  • Tab width (Settings → Better Sidebar → General): Tabby hands every tab 200px, which fits three on a wide window. Compact (the default) and Very compact narrow that budget, so many more fit, and the strip scrolls with its own ‹ › buttons. Overflowed tabs also scroll into view when selected or opened, and header updates pause during native dragging so previews cannot scramble tags or workspace visibility.

  • The sidebar branding/version footer is removed to give the list and session dock more room; plugin settings remain available in Tabby Settings.

  • Active sessions are docked at the bottom of the sidebar, beneath the independently scrolling profiles/SFTP area. The dock is collapsible, capped to a quarter of the sidebar, and scrolls internally for longer lists. When workspace terminal switching is enabled, the list and its count follow the selected workspace; All and disabling the switch show every active session.

  • Terminal tab tags (optional, off by default): enable Settings → Better Sidebar → General → Show tags on terminal tabs to show native terminal tabs as two-line cards, with the server title above all its colored tags. Tags wrap naturally without an inner scrollbar, and each card sizes itself to its content between 140 and 210px so short servers do not waste strip space. Split tabs show the unique tags from all their panes. Tag display is independent of workspace tab switching.

  • Compact single-line server rows: smaller indentation, status dots instead of default computer icons, and soft colored tags aligned to the right. All tags are rendered without count folding. When space is limited, scroll the tag rail horizontally; hover to see the full tag list. Custom profile icons are retained. Profile rows stay on one line even when folder name wrapping is enabled.

  • Workspace terminal tabs (optional, off by default): turn on Settings → Better Sidebar → Features → Workspaces → Switch terminal tabs with workspace. Only the selected workspace terminal headers are shown; hidden sessions stay connected and remain registered with Tabby for recovery and shutdown. All, disabling this option, disabling workspaces or disabling the plugin restores every header. Settings and other tool tabs stay shared. A split tab belongs to one workspace as a whole; mixed-workspace panes are not separated. Terminal tabs use their profile/folder ownership when available, otherwise the workspace where they were opened. That per-session association is stored on this machine in localStorage.sidebarPlusSessionOwners as an ordered list matching the tab order, and it survives restarting Tabby: two sessions of the same profile, or several local shells, each come back to their own workspace instead of adopting whichever one is selected. A session opened while All is selected stays visible in every workspace. Sessions restored without a record (those opened before this version, or a tab that could not be recovered) fall back to the workspace selected at start and are recorded from then on; reopening the profile in the right workspace re-records it.

  • Tags get stable, varied colors automatically.

  • Drag workspace tabs or dropdown entries to reorder them. All stays fixed.

  • Folders, profiles and duplicated profiles created through this sidebar belong to the selected workspace. Other workspaces do not show or search them; All shows everything. Existing entries and entries created in All remain shared. Removing a workspace makes its entries shared again.

  • Hide the Imported from .ssh/config folder by default, including its search results. Restore it in Settings → Better Sidebar → General → Hide imported SSH folder. This only affects this sidebar, and does not remove SSH configuration or stop active sessions.

  • Right-click a server → Manage → Edit tags…. Separate multiple tags with commas or new lines. Tags appear next to server names in the profile tree, favorites and search results, and can be searched. Clear the field to remove them.

  • Tags are stored by profile ID under sidebarPlus.profileTags in Tabby's configuration and survive restarting. A duplicated profile has a new ID and starts without tags.

Install this fork from npm

After publication, close Tabby and run these commands in its plugin directory (%APPDATA%\tabby\plugins on Windows):

npm uninstall tabby-better-sidebar
npm install tabby-better-sidebar-miller

Restart Tabby completely. Install only one of the original plugin and this fork, since both provide the same sidebar.

Publish

The npm release is produced by GitHub Actions from a v* tag: build, tests, packing and the publication all happen in CI, which publishes through npm trusted publishing (OIDC) with a SLSA provenance attestation and without any npm token or one-time password.

npm version 1.0.17 --no-git-tag-version
# update CHANGELOG.md, then commit
git tag -a v1.0.17 -m "1.0.17"
git push origin master && git push origin v1.0.17

The tag must match the package.json version. Do not run npm publish locally: it demands a one-time password and cannot attach provenance. RELEASING.md documents the OIDC mechanism, the workflow jobs, the guards that make re-runs and late GitHub Releases harmless, and how to fix a failed publication.

Build and publish on GitHub

.github/workflows/publish.yml builds and uploads an installable npm tarball on pushes and pull requests. The publish job needs this package's Trusted Publisher configured on npmjs.com:

  • GitHub owner: miller806
  • Repository: tabby-better-sidebar-miller
  • Workflow filename: publish.yml
  • Environment: none

See the npm trusted publishing documentation for the npm-side setup.


The original upstream documentation follows.

📁 tabby-better-sidebar

Enhanced connection sidebar for Tabby — pinned favourites, live connection status, drag & drop, and a contextual SFTP browser living inside the sidebar rather than in a separate docked panel.

English · Français

License: MIT Part of Better Tabby


Tabby ships a native profile sidebar, but it is not exported for third-party plugins to reuse. This plugin rebuilds it and adds pinned favourites, live connection status, drag & drop across folders, named workspaces, SSH tunnel management, snippets, notes, and a full SFTP browser that lives in the sidebar's own space and follows whichever SSH tab has focus.

Every block is independent, and each one can be switched off from the plugin's settings tab — if you never use SSH tunnels or workspaces, turn those two off and the sidebar gets that much lighter. Nothing is deleted when you do: your favourites, workspaces and snippets stay exactly where they are, they just stop being displayed.

🧩 Better Tabby, the plugin family

This plugin is one half of Better Tabby, a small family of independent plugins that happen to share one settings tab instead of scattering several:

| | Plugin | Adds | |---|---|---| | 📁 | tabby-better-sidebar (this repo) | Pinned favourites, live connection status, drag & drop, workspaces, contextual SFTP browser | | 🔐 | tabby-better-vault | Automatic vault unlock via your OS keychain |

Neither plugin requires the other. Install just this one and it behaves exactly as if the other didn't exist — its own settings tab, nothing shared. Install both, and they elect one of themselves to host a single Better Tabby tab, each still rendering its own page inside it. No npm dependency between the two repos, no shared code: just a small string contract (BetterPanelContribution:<id>) each plugin recognises independently.

✨ The profile tree

  • Pinned favourites, for both profiles and folders
  • Live connection status per profile, with an optional latency indicator — a timed SFTP round trip on the session's own channel, not an ICMP ping, so it measures the delay you actually feel when typing
  • Active sessions section at the top, one row per pane rather than per tab, with uptime, a click to focus and a shortcut to that session's SFTP view
  • Recent profiles — the five most recently launched, all types together (off by default)
  • Drag & drop reordering — profiles and folders, including moving a profile between folders and re-parenting a folder
  • Workspaces: hide profiles and folders per workspace (personal / work / project), each with its own favourites, its own sibling order, its own icon and an optional contextual colour; a tabs-or-dropdown selector, and one-click JSON export/import
  • "Active" tab: narrows the list to the profiles with an open tab (disconnected ones included), within the selected workspace — on "All" or with the workspaces off, every open session
  • Multiple selection, for acting on several profiles at once
  • SSH tunnels: a panel of what Tabby is currently forwarding, badges on the profiles that declare tunnels, and a modal to add, edit or remove them — including a memory of tunnels a dropped session failed to bring back
  • Quick filter bar, searching name, description, host and username, including inside what a workspace currently hides. Exact text by default, name matches listed first; approximate search is a setting
  • Collapse all / expand all in one click, from the button next to the filter field or the right click on the tree's empty space: every folder at every depth, plus the active sessions, recent profiles and tunnels blocks
  • Right-click menus, grouped into Manage and More submenus so they stay short: create and delete folders and profiles, clone a profile, rename, pick an icon, attach snippets and notes, share a folder, hide it in the current workspace

🎨 Icons

The icon picker searches three sources at once, entirely offline — no network call is ever made:

  • Font Awesome, the set Tabby itself uses
  • Iconify Material Design Icons and Tabler, for generic glyphs
  • dashboard-icons — around 2 400 logos of self-hosted services (Proxmox, Pi-hole, Nextcloud and the like), far more telling than a generic glyph for naming a real estate of machines. Icons that ship several palettes offer them as small dots on their tile, so a dark logo can be swapped for its light variant on a dark theme.

Recently used icons stay at hand, any icon can be pinned as a favourite with a right click, and custom SVGs can be imported (sanitised with DOMPurify).

The two large icon collections are loaded on the first search only, in a separate bundle, so they cost nothing at startup.

📂 SFTP

The browser is a full-height panel on the right of the window by default, so the profile tree on the left and the terminal in the middle both stay where they are, and the file table gets the width its columns need. A toggle in Tabby's tab bar and one in the sidebar show and hide it; the narrow rail on its left edge resizes it, and the chevron at the top of that rail collapses it. Settings → Better Sidebar → SFTP view → Position moves it back into the sidebar, where it replaces the profile tree as earlier versions did.

It follows whichever SSH tab has focus — each tab remembers where it was, and the view can be frozen on one session so it stops following the focused tab.

  • Configurable columns (size, date, octal and long permissions, type, extension), folders-first sorting, hidden files toggle, zebra striping
  • Date format of your choice: Tabby's language, day/month/year (08/10/2026) or ISO 8601 (2026-10-08)
  • Favorite folders, per profile — the star button lists them and adds or removes the current folder; one click jumps to a saved path
  • Sort by name, date or size — click a column header to sort on it, click again to flip the direction; date and size start with the newest and the biggest at the top. Also in the header's right-click menu, for a column that is hidden. The choice is remembered
  • Multiple selection, files and folders, for bulk delete and copy, cut or move
  • Copy, cut and paste with Ctrl-C / Ctrl-X / Ctrl-V (⌘ on macOS), or from the context menu. A cut pasted back into the same server is a rename, so nothing transits; a copy downloads to a temporary folder and uploads back, with each file on its own line of the transfer manager. An existing name is refused rather than overwritten, and a folder cannot be pasted into itself
  • Names that are already taken are a question, not a refusal: uploading, dropping or copying onto an existing name offers Keep both (renames the incoming file the Explorer way, report (2).pdf), Overwrite, or Skip, with "do this for the remaining files" for a batch. Enter keeps both; Esc skips.
  • Pasting files copied in your OS file manager: copy in Explorer, Finder or a Linux file manager, then Ctrl-V in the panel to upload them into the folder on screen — files and whole folders. A freshly copied OS selection takes precedence over the panel's own clipboard, which keeps working after it. (macOS exposes multi-file selections in a format Electron cannot read; single files and folders work there)
  • Keyboard navigation: Enter opens the selected entry — folders navigate into them, files take the same edit round-trip as a double-click — and Backspace goes up one level. Clicking in the panel moves the keyboard into it, and every one of those keys is released again as soon as you work somewhere else, so typing in a terminal never moves the listing and Ctrl-C there still reaches the shell
  • Chunked loading of large directory listings
  • Double-click opens a file in a code editor, never through the OS file association — so double-clicking an executable edits it instead of running it. Saving sends the file back automatically, checking first that the remote copy has not changed in the meantime, and restoring its permissions afterwards. Symbolic links are resolved, so it is the target that gets edited, not the link
  • "Open with…" stays available, but only from the context menu
  • Create, rename and delete entries — Delete key included, with an HTML confirmation whose default button you choose in the settings
  • Move entries by dragging them onto a folder — a server-side rename, nothing transits
  • Drag a file out to the OS: the download starts when you drop it, wherever you dropped it
  • Transfer manager at the bottom of the sidebar — progress, speed, ETA and elapsed time per transfer, an arrival check that flags a copy that did not land whole, cancel confirmation, visible from both views, hidden when empty
  • Optional auto-refresh of the listing, off by default
  • Auto-return to the profile view once no tab has an active SFTP session

📝 Snippets, notes and sharing

  • Snippets — a command written once, attached to a profile, a folder, or everything, and reusable wherever it is attached. Supports {{name}} placeholders (required) and {{name=default}} (pre-filled), inherits down the folder tree, and can be set to write into the terminal, write and press Enter, or launch the session first
  • Notes — a free-form memo per profile or folder, with a badge in the tree
  • Share a folder through the clipboard, as JSON, at two levels: with connection details for your own machines, or without credentials for someone else. Passwords, login scripts, proxy commands and vault key references never travel, at either level; what was removed is stated in the notice, and the JSON is re-checked field by field when pasted back

🌍 Languages

The interface follows Tabby's language — English, plus French, Spanish, German and Simplified Chinese, covering the whole plugin: profile tree, context menus, active sessions and tunnels, SFTP browser, dialogs, transfers and the settings tab. Any other locale falls back to English.

Elsewhere

  • Ctrl+Enter inserts a line break in the terminal instead of submitting
  • In the search field, the arrows move through the results and Enter opens the highlighted one in a new tab; Shift+Enter opens it in a split of the active tab
  • Alt+B hides the sidebar and brings it back, without closing anything — open SFTP views, the filter and the selection are still there. The binding can be changed in Settings → Hotkeys
  • A dedicated settings tab under Tabby's own settings (shared as Better Tabby when the vault plugin is also installed)

📦 Installation

Requires Tabby 1.0.231 or newer. Developed and tested against Tabby 1.0.238, the current stable release.

In Tabby, open Settings → Plugins, search for better-sidebar and install it, then restart Tabby completely.

# In Tabby's plugin directory: %APPDATA%\tabby\plugins on Windows,
# ~/.config/tabby/plugins on macOS/Linux
npm install tabby-better-sidebar

Then restart Tabby completely.

⚙️ Configuration

Everything lives in Settings → Better Sidebar (or Better Tabby → 📁 Sidebar if tabby-better-vault is also installed), split into General, Features and Snippets. On disk, the settings sit under sidebarPlus in Tabby's own config.yaml.

Blocks — each one switches on independently:

| Setting | Default | Effect | |---|---|---| | enabled | true | Shows the sidebar. Off, it disappears without uninstalling anything; this settings page stays reachable | | showActiveSessions | true | Open SSH connections, at the top of the sidebar | | showRecentProfiles | false | The five most recently launched profiles | | showTunnels | true | Port forwarding panel and badges on the profiles | | showWorkspaces | true | Workspace bar above the list | | showFilter | true | Search field and its shortcut | | searchSplitSide | r | Side of the split opened by Shift+Enter from the search: r, b, l or t | | searchClearOnLaunch | false | Clear the search after a result is opened from the keyboard | | searchFuzzy | false | Approximate search, which also finds the letters in order even far apart. Off, the exact text whatever the case | | showActiveToggle | true | "Active" tab: only the profiles with an open tab | | wrapNames | false | Long names on up to two lines instead of one cut-off line | | wrapNamesUnlimited | false | With wrapNames on, no line limit. The whole name shows, however long | | showSftp | true | The SFTP tab of the sidebar and its panel | | showTransfers | true | Transfer manager at the bottom of the sidebar | | showSnippets | true | The Snippets entry of the right click and its tab | | showNotes | true | The note entry of the right click and its badge |

Turning a block off also stops its background work — no tab scanning, no latency probe, no transfer tracking for a panel nobody is looking at.

Behaviour:

| Setting | Default | Effect | |---|---|---| | hideNativeTransfersMenu | true | Hides Tabby's own transfers menu, which shows the same transfers | | workspaceSelectorMode | tabs | Workspace bar as tabs, or as a dropdown list | | pingIntervalSeconds | 0 | Latency probe interval; 0 disables it | | sftpAutoRefreshSeconds | 0 | Re-reads the current folder on a cycle; 0 disables it | | sftpAutoReturnToProfiles | true | Returns to the profile view when no SSH session is open any more | | sftpEditorPath | (empty) | Program opened on double-click. Empty, Windows decides | | sftpDeleteDefaultButton | cancel | Which button Enter activates in the SFTP delete confirmation | | sftpDragOutFolders | false | Allows dragging a folder out to the OS, not just a file | | sftpColumns | size, date, mode | Columns shown in the SFTP listing | | sftpFoldersFirst | true | Sorts folders before files | | sftpFavorites | (empty) | Favorite remote folders, keyed by profile id | | sftpSortKey | name | Column the listing is sorted on: name, date or size | | sftpSortDescending | false | Sort direction | | sftpDateFormat | locale | How dates are written in the listing: locale (Tabby's language), dmy (08/10/2026) or iso (2026-10-08); the tooltip adds the time | | sftpShowHidden | true | Shows dot-files | | sftpColumnBorders | true | Column separators in the listing | | sftpZebra | true | Alternating row background |

Your favourites, workspaces, snippets, notes, custom icons and orderings are stored under the same key. They are data, not settings, and nothing here deletes them.

⚠️ Known limitations

  • Remote editing has no locking. The plugin checks that the remote file has not changed before sending your edit back, and refuses to overwrite if it has — but two people editing the same file at the same time is still last one wins.
  • Dragging out to a target that does not understand a deferred file offer (Windows Terminal, MobaXterm) does nothing at all, silently. The source cannot detect it.
  • A profile shared through the clipboard keeps its host and port. That is deliberate — it is what makes the folder useful — but it means the JSON describes your network. Use Copy without credentials when that matters.
  • Local shell profiles are never shared: their options are a command to execute, which is precisely what should not arrive through a clipboard.

🛠️ Development

git clone https://github.com/TooMuhtsh/tabby-better-sidebar
cd tabby-better-sidebar
npm install --ignore-scripts   # avoids postinstall steps that build native code needlessly here
npm run watch

Then, with Tabby closed, link the folder into Tabby's plugin directory. Do not use the TABBY_PLUGINS environment variable — it is broken on Windows:

New-Item -ItemType Junction -Path "$env:APPDATA\tabby\plugins\node_modules\tabby-better-sidebar" -Target "<path-to-this-folder>"

Restart Tabby completely after any rebuild — reloading the window is not enough, since Tabby's plugin loader state is global to the process.

Related

tabby-better-vault — the sibling plugin, see Better Tabby above.

AI governance docs — this plugin is developed with an AI assistant under a written governance charter, and the full working dossier is public: invariants and numbered pitfalls, development journal, roadmap and a register of everything delivered, browsable as a small static site.

Credits

License

MIT — see LICENSE.