🛠️ 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:
- Git Sync repo info + branch switcher — see repo details and switch branches from the web dashboard
- Trash TUI split panel — trash list now uses the standard left-right layout with detail panel
- Backup UX improvements — spinner during CLI backup, better restore flow in web UI
- 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 backupappeared 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 spinner —
skillshare backupnow 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:
ListBackupVersions()calleddirSize()(fullfilepath.Walk) for every version — N versions × thousands of filesrenderTargetDetail()re-calledListBackupVersions()on every cursor hover (redundant + expensive)renderVersionDetail()ranreadSkillDescription()+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 = -1sentinel — simpler than*int64pointer, no struct change neededversionSizeCache map[string]int64— per-target lifecycle, reset when switching targetscomputeVersionSizeCmd— standard bubbletea async pattern: dispatchtea.Cmd, receiveversionSizeMsg, update cache, re-render- Direct
os.ReadDirinrenderTargetDetail— replaced fullListBackupVersions()call with a single directory read of the latest backup, avoiding the N-version scan entirely
Bug Fixes
- Backup spinner —
skillshare backupnow 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