github runkids/skillshare v0.17.2

latest releases: v0.19.5, v0.19.4, v0.19.3...
one month ago

🛠️ skillshare v0.17.2 Release Notes

Release date: 2026-03-14

TL;DR

v0.17.2 brings Git Sync page enhancements, TUI/UI polish, and a restore TUI performance fix for large backups:

  1. Git Sync repo info + branch switcher — see repo details and switch branches from the web dashboard
  2. Trash TUI split panel — trash list now uses the standard left-right layout with detail panel
  3. Backup UX improvements — spinner during CLI backup, better restore flow in web UI
  4. Restore TUI async sizing — no more freezing when browsing large backup versions

No breaking changes. Drop-in upgrade from v0.17.1.


Web UI Git Sync Enhancements

The problem

The Git Sync page showed push/pull actions but lacked context — users couldn't see which repo or branch they were working with, and switching branches required leaving the web dashboard to use the CLI.

Solution

Two new components on the Git Sync page:

  • Repository Info Card — displays the current remote URL, active branch, and latest commit hash at the top of the page, giving immediate context before performing sync operations
  • Branch switcher — dropdown to switch between local branches directly from the web UI. The page refreshes to show the new branch's sync status

Trash TUI Split Panel

The problem

The trash TUI used a simple vertical list without a detail panel, inconsistent with the list/log/search/restore TUIs that all use left-right split layouts.

Solution

Converted the trash TUI to the standard split panel layout: list on the left, detail panel on the right showing item metadata (name, deleted date, expiry, size). Uses the same newPrefixDelegate bar style as all other TUIs.


Backup & Sidebar UX

The problem

  • skillshare backup appeared frozen during backup operations — no visual feedback
  • The web UI Backup page restore flow had unclear action placement
  • Sidebar tool sections took up vertical space even when not needed

Solution

  • CLI spinnerskillshare backup now shows a spinner while the backup is running
  • Restore UX — improved button placement and confirmation dialogs in the web UI Backup page
  • Collapsible sidebar — tool sections in the sidebar can now be collapsed/expanded
  • Footer pinning — Push/Pull action footers on the Git Sync page are pinned to the bottom, preventing layout shifts

Restore TUI Performance

The problem

When a backup contained many versions with large file trees, the restore TUI would freeze:

  1. ListBackupVersions() called dirSize() (full filepath.Walk) for every version — N versions × thousands of files
  2. renderTargetDetail() re-called ListBackupVersions() on every cursor hover (redundant + expensive)
  3. renderVersionDetail() ran readSkillDescription() + listSkillFiles() for every skill with no cap

All of this happened synchronously in the bubbletea event loop, blocking rendering.

Solution

Three-layer fix:

Layer Before After
Version list ListBackupVersions() with dirSize() for all ListBackupVersionsLite() — skips dirSize(), TotalSize = -1
Size display Synchronous DirSize() in refreshDetailCache() Async tea.Cmd — shows "calculating..." then updates when ready
Detail I/O Unbounded per-skill file reads Capped at 20 skills with full detail, rest show name only

Design decisions

  • TotalSize = -1 sentinel — simpler than *int64 pointer, no struct change needed
  • versionSizeCache map[string]int64 — per-target lifecycle, reset when switching targets
  • computeVersionSizeCmd — standard bubbletea async pattern: dispatch tea.Cmd, receive versionSizeMsg, update cache, re-render
  • Direct os.ReadDir in renderTargetDetail — replaced full ListBackupVersions() call with a single directory read of the latest backup, avoiding the N-version scan entirely

Bug Fixes

  • Backup spinnerskillshare backup now shows a progress spinner instead of appearing frozen during backup operations
  • Git Sync footer — Push/Pull action buttons are pinned to the bottom of the page, preventing layout shift when content changes

Changelog

  • 04b248a feat(tui): convert trash TUI to left-right split panel layout
  • d842d7a feat(ui): add Repository Info Card to Git Sync page
  • 7d0952b feat(ui): add branch switcher to Git Sync page
  • d572d1b feat: add branch switcher to Git Sync page
  • ad34a5b fix(cli): add spinner to backup command and remove list indent
  • 3d58765 fix(git): propagate error from GetRemoteURL instead of swallowing it
  • 4726465 fix(ui): improve Backup page restore UX and add collapsible sidebar tools
  • 5fa5a78 fix(ui): pin Push/Pull action footers to bottom and warm playful sidebar
  • 4cbaa5f perf(tui): async dirSize and lazy loading in restore TUI
  • f9a49c1 refactor(tui): unify all list delegates to prefix bar style

Don't miss a new skillshare release

NewReleases is sending notifications on new releases.