releases.shpreview

Space templates; CLI extensions auto-update; Xet shows transfer + reconstruction progress

v1.23.0

4 features6 enhancements3 fixesThis release4 featuresNew capabilities6 enhancementsImprovements to existing features3 fixesBug fixesAI-tallied from the release notes
From the original release noteView original ↗

🚀 Create Spaces from templates

You can now seed a new Space from one of the official Hub templates (JupyterLab, a Gradio chatbot, a Streamlit app, etc.) instead of starting from an empty repo. List what's available with the new list_space_templates() API or the hf spaces templates CLI command, then pass a template's repo_id (or its short name) to create_repo(..., space_template=...) or hf repos create --type space --template. The Space SDK is inferred from the template, and templates recommended as private (like JupyterLab) are created privately by default unless you explicitly choose a visibility.

# List available templates
$ hf spaces templates
NAME        REPO_ID                             SDK     PREFERRED_PRIVATE
----------- ----------------------------------- ------- -----------------
Streamlit   streamlit/streamlit-template-space  docker
JupyterLab  SpacesExamples/jupyterlab           docker

# Create a Space from a template
$ hf repos create my-jupyterlab --type space --template jupyterlab
 Repo created
  repo_id: Wauplin/my-jupyterlab
  url: https://huggingface.co/spaces/Wauplin/my-jupyterlab
>>> from huggingface_hub import create_repo
>>> create_repo("my-jupyterlab", repo_type="space", space_template="jupyterlab")

🔌 Update installed CLI extensions

A new hf extensions update command brings your installed CLI extensions to their latest published version on GitHub. Pass a name to update a single extension, or run it with no argument to check every installed extension and update the ones that are behind. Updates are applied in place — Python extensions reuse their existing venv and binary extensions are overwritten — so a failed update no longer leaves the extension uninstalled, and extensions that are already up to date are simply skipped.

# Update a single extension (accepts <name>, hf-<name> or OWNER/hf-<name>)
hf extensions update hf-claude

# Check every installed extension and update the outdated ones
hf extensions update

📶 Smoother Xet download progress with dual bars

Xet downloads now show two progress bars so you can tell a transfer is alive even on a slow connection. The transfer bar advances as bytes arrive over the network, while the reconstruction bar tracks real progress as buffered chunks are written to disk — previously the single bar could sit at 0% for a long time while data was actually arriving. The dual bars are wired into single-file downloads (hf_hub_download), snapshot_download (where parallel file downloads feed the repo-level transfer and reconstruction bars), the hf download CLI, and bucket downloads.

big.bin: downloading bytes:   |  52.4MB     1.2MB/s
big.bin: reconstructing file: |  52.4MB / 105MB     800kB/s
  • Smoother Xet download progress with dual bars by @seanses in #4400

🤖 Always up-to-date, offline hf-cli skill

hf skills add and hf skills update now generate the built-in hf-cli skill locally from your installed CLI version instead of downloading it from the marketplace bucket. The installed SKILL.md is therefore always in sync with the CLI you're running, and installing or updating the hf-cli skill works fully offline — the marketplace is only contacted when you install another managed skill. As defense-in-depth against path traversal, skill names coming from the marketplace payload are now validated before any filesystem work.

# Works fully offline, and always matches your installed CLI version
$ HF_HUB_OFFLINE=1 hf skills add --dest ./skills
Installed 'hf-cli' to ./skills/hf-cli
  • [CLI] Generate hf-cli skill locally instead of downloading from bucket by @hanouticelina in #4199

🖥️ CLI

  • [CLI] Filter hf models ls by inference provider by @moon-bot-app[bot] in #4497docs
  • [CLI] Add --pipeline-tag, --gated, --apps filters to hf models ls by @Wauplin in #4512docs
  • [CLI] --sdk instead of --space-sdk in CLI for consistency by @Wauplin in #4505docs
  • Correct hf jobs/spaces --timeout help: durations are int, not int/float by @Sreekant13 in #4477

🔧 Other QoL Improvements

📖 Documentation

🐛 Bug and typo fixes

  • [Utils] Treat backslashes as path separators in filter_repo_objects by @Wauplin in #4506 — fixes a v1.22 regression where snapshot_download silently skipped files on Windows
  • [CLI] Coerce enum member defaults to their value when building click params by @dhruv7477 in #4494 — fixes a v1.22 regression where commands using an enum option default failed at runtime
  • Update install.ps1 by @ufocia in #4501 — fixes false install verification failures on Windows

🏗️ Internal

Fetched July 9, 2026

Space templates; CLI extensions auto-update; Xet shows… — releases.sh