Skip to content

[v1.23.0] Space templates, CLI extension updates & smoother Xet downloads

Latest

Choose a tag to compare

@github-actions github-actions released this 09 Jul 13:50

🚀 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")
  • Support creating a Space from a template by @moon-bot-app[bot] in #4504

🔌 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

  • [Sandbox] Optimize parallel file transfer constants for better throughput by @Wauplin in #4490
  • Expose snapshot_path on IncompleteSnapshotError by @moon-bot-app[bot] in #4500docs
  • [Utils] Add get_cached_repo_tree utility by @Wauplin in #4513docs

📖 Documentation

  • [i18n-HI] Add Hindi translation for guides/search by @Yash4616 in #4428
  • [i18n-HI] Add Hindi translation for download guide by @Mr-Abhinav-Pandey in #4450
  • [i18n-HI] Add Hindi translation for guides/upload by @Yash4616 in #4463
  • [i18n-HI] Add Hindi translation for guides/repository by @Yash4616 in #4464
  • docs: drop /new from Inference Endpoints web interface links by @moon-bot-app[bot] in #4509

🐛 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

  • [Xet] Remove dead connection info helpers by @Wauplin in #4482
  • [CI] Fix Transformers RC testing by @Wauplin in #4481
  • [CI] Rename transformers-test-ci to transformers-ci by @ydshieh in #4495
  • [CI] Fix expand property type tests by @Wauplin in #4510
  • Make doc builds faster by @mishig25 in #4489
  • Keep doc-builder pin comment dependabot-compatible by @mishig25 in #4491
  • Post-release: bump version to 1.23.0.dev0 by @huggingface-hub-bot[bot] in #4480