From 37dfdee7c7dd8c5471eae1720f87f18b433db3ab Mon Sep 17 00:00:00 2001 From: PJ Doland Date: Sat, 23 May 2026 14:28:34 -0400 Subject: [PATCH 1/2] site: refresh GitHub org URL after rename to plmbr The notebook-intelligence org was renamed to plmbr, and the npm package scope renamed from @notebook-intelligence/notebook-intelligence to @plmbr/notebook-intelligence (#342). GitHub redirects the old URLs, but every page on plmbr.dev still rendered with the pre-rename org name in headers, footers, layouts, posts, and content pages, and the install checklist still pointed at the old npm scope. This points 22 files at the new canonical `github.com/plmbr/notebook-intelligence` shape and updates the labextension checklist entry to match the live npm name. Scope intentionally excludes `_config.yml`'s url / baseurl / domain block and CNAME, both already updated upstream in the recent domain-cutover commits. --- 404.html | 2 +- Gemfile | 2 +- _config.yml | 2 +- _includes/footer.html | 12 +++++----- _includes/header.html | 2 +- _layouts/post.html | 2 +- ...introducing-notebook-intelligence.markdown | 4 ++-- ...ding-ai-extensions-for-jupyterlab.markdown | 4 ++-- ...building-ai-agents-for-jupyterlab.markdown | 4 ++-- ...3-05-support-for-any-llm-provider.markdown | 4 ++-- _posts/2026-04-29-v4-6-0.markdown | 18 +++++++-------- _posts/2026-05-07-v4-7-0.markdown | 4 ++-- _posts/2026-05-12-v4-8-0.markdown | 2 +- about.markdown | 2 +- admin.markdown | 6 ++--- blog/archive.markdown | 2 +- docs.markdown | 22 +++++++++---------- features/claude-code.markdown | 4 ++-- features/skills-plugins.markdown | 2 +- index.markdown | 2 +- install.markdown | 4 ++-- robots.txt | 2 +- 22 files changed, 54 insertions(+), 54 deletions(-) diff --git a/404.html b/404.html index 778cb46d..210ba245 100644 --- a/404.html +++ b/404.html @@ -16,7 +16,7 @@

This page wandere Home Install Features - Report an issue + Report an issue diff --git a/Gemfile b/Gemfile index fd6dc25b..c5193c48 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source "https://rubygems.org" -# Jekyll site for notebook-intelligence.github.io. +# Jekyll site for plmbr.dev. # # Build locally: # bundle install diff --git a/_config.yml b/_config.yml index 99312b34..4c2c326b 100644 --- a/_config.yml +++ b/_config.yml @@ -18,7 +18,7 @@ author: social: name: Notebook Intelligence links: - - https://github.com/notebook-intelligence/notebook-intelligence + - https://github.com/plmbr/notebook-intelligence - https://twitter.com/mbektash # Default Open Graph image. Per-post overrides via front-matter `image:`. diff --git a/_includes/footer.html b/_includes/footer.html index ed1c89b6..bb358924 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -19,10 +19,10 @@

Product

@@ -31,7 +31,7 @@

Resources

@@ -39,7 +39,7 @@

Resources

diff --git a/_includes/header.html b/_includes/header.html index 8fb34692..90d3e6ed 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -18,7 +18,7 @@
{% include theme-toggle.html %} - + diff --git a/_layouts/post.html b/_layouts/post.html index f8082234..72388010 100644 --- a/_layouts/post.html +++ b/_layouts/post.html @@ -6,7 +6,7 @@
{% if page.archived %}
- Archived post. Written {{ page.date | date: "%B %Y" }}. NBI has changed since this was written — see the current site or the changelog for today's product. + Archived post. Written {{ page.date | date: "%B %Y" }}. NBI has changed since this was written — see the current site or the changelog for today's product.
{% endif %} diff --git a/_posts/2025-01-07-introducing-notebook-intelligence.markdown b/_posts/2025-01-07-introducing-notebook-intelligence.markdown index 5d7f430d..3e210a36 100644 --- a/_posts/2025-01-07-introducing-notebook-intelligence.markdown +++ b/_posts/2025-01-07-introducing-notebook-intelligence.markdown @@ -8,7 +8,7 @@ redirect_from: - /blog/2025/01/07/introducing-notebook-intelligence.html - /blog/introducing-notebook-intelligence/ --- -I am thrilled to announce the release of [Notebook Intelligence](https://github.com/notebook-intelligence/notebook-intelligence){:target="_blank"} (NBI)! NBI is an AI coding assistant and extensible AI framework for JupyterLab. It uses [GitHub Copilot](https://github.com/features/copilot){:target="_blank"} under the hood and is inspired by its design principles. NBI greatly boosts the productivity of JupyterLab users with AI assistance powered by GitHub Copilot. +I am thrilled to announce the release of [Notebook Intelligence](https://github.com/plmbr/notebook-intelligence){:target="_blank"} (NBI)! NBI is an AI coding assistant and extensible AI framework for JupyterLab. It uses [GitHub Copilot](https://github.com/features/copilot){:target="_blank"} under the hood and is inspired by its design principles. NBI greatly boosts the productivity of JupyterLab users with AI assistance powered by GitHub Copilot. ![Generate code](/notebook-intelligence/assets/images/generate-code.gif) @@ -93,7 +93,7 @@ Notebook Intelligence provides APIs to let developers extend its capabilities. Y ## Try it out and share your feedback! -[Notebook Intelligence](https://github.com/notebook-intelligence/notebook-intelligence){:target="_blank"} is currently in beta and designed for Python (support for more languages coming soon). Please try it out and share your feedback and any feature requests using project's [GitHub issues](https://github.com/notebook-intelligence/notebook-intelligence/issues){:target="_blank"}. User feedback from the community will shape the project's roadmap. +[Notebook Intelligence](https://github.com/plmbr/notebook-intelligence){:target="_blank"} is currently in beta and designed for Python (support for more languages coming soon). Please try it out and share your feedback and any feature requests using project's [GitHub issues](https://github.com/plmbr/notebook-intelligence/issues){:target="_blank"}. User feedback from the community will shape the project's roadmap. ## About the Author diff --git a/_posts/2025-02-04-building-ai-extensions-for-jupyterlab.markdown b/_posts/2025-02-04-building-ai-extensions-for-jupyterlab.markdown index 3e28fdf6..b9e07826 100644 --- a/_posts/2025-02-04-building-ai-extensions-for-jupyterlab.markdown +++ b/_posts/2025-02-04-building-ai-extensions-for-jupyterlab.markdown @@ -9,7 +9,7 @@ redirect_from: - /blog/building-ai-extensions-for-jupyterlab/ --- -[Notebook Intelligence](https://github.com/notebook-intelligence/notebook-intelligence) (NBI) is an AI coding assistant and extensible AI framework for JupyterLab. For an introduction to NBI see [Introducing Notebook Intelligence blog post]({{site.baseurl}}{% post_url 2025-01-07-introducing-notebook-intelligence %}) first. +[Notebook Intelligence](https://github.com/plmbr/notebook-intelligence) (NBI) is an AI coding assistant and extensible AI framework for JupyterLab. For an introduction to NBI see [Introducing Notebook Intelligence blog post]({{site.baseurl}}{% post_url 2025-01-07-introducing-notebook-intelligence %}) first. GitHub Copilot and other AI coding assistants generate chat responses based on publicly available knowledge and they do not have access to your workspace, tools and services. NBI provides Extension APIs to build AI extensions for JupyterLab. By extending NBI, you can build custom chat interactions and provide access to proprietary or external data, tools and services. This lets you build custom, AI powered chat experiences, natural language interface to JupyterLab and your tools. @@ -261,7 +261,7 @@ async def handle_chat_request(self, request: ChatRequest, response: ChatResponse ## Try it out and share your feedback! -I am looking forward to seeing the extensions built by the community. Please try the extension APIs and share your feedback using project's [GitHub issues](https://github.com/notebook-intelligence/notebook-intelligence/issues)! User feedback from the community will shape the project's roadmap. +I am looking forward to seeing the extensions built by the community. Please try the extension APIs and share your feedback using project's [GitHub issues](https://github.com/plmbr/notebook-intelligence/issues)! User feedback from the community will shape the project's roadmap. ## About the Author diff --git a/_posts/2025-02-05-building-ai-agents-for-jupyterlab.markdown b/_posts/2025-02-05-building-ai-agents-for-jupyterlab.markdown index 0e972e99..0e434eb4 100644 --- a/_posts/2025-02-05-building-ai-agents-for-jupyterlab.markdown +++ b/_posts/2025-02-05-building-ai-agents-for-jupyterlab.markdown @@ -9,7 +9,7 @@ redirect_from: - /blog/building-ai-agents-for-jupyterlab/ --- -[Notebook Intelligence](https://github.com/notebook-intelligence/notebook-intelligence) (NBI) is an AI coding assistant and extensible AI framework for JupyterLab. (*For an introduction to NBI see [Introducing Notebook Intelligence]({{site.baseurl}}{% post_url 2025-01-07-introducing-notebook-intelligence %}) and for basics of extending NBI see [Building AI Extensions for JupyterLab]({{site.baseurl}}{% post_url 2025-02-04-building-ai-extensions-for-jupyterlab %}) blog posts.*) +[Notebook Intelligence](https://github.com/plmbr/notebook-intelligence) (NBI) is an AI coding assistant and extensible AI framework for JupyterLab. (*For an introduction to NBI see [Introducing Notebook Intelligence]({{site.baseurl}}{% post_url 2025-01-07-introducing-notebook-intelligence %}) and for basics of extending NBI see [Building AI Extensions for JupyterLab]({{site.baseurl}}{% post_url 2025-02-04-building-ai-extensions-for-jupyterlab %}) blog posts.*) GitHub Copilot and other AI coding assistants are great at generating code and answering coding related questions. But they can do a lot more than generating text and code thanks to LLM features such as tool calling and AI agents. NBI provides an extensible AI framework to integrate tool calling and AI agents into JupyterLab Copilot Chat. @@ -255,7 +255,7 @@ That is all there is to create an AI Agent for JupyterLab using Notebook Intelli ## Try it out and share your feedback! -I am looking forward to seeing the AI Agents built by the community. Please try the extension APIs and share your feedback using project's [GitHub issues](https://github.com/notebook-intelligence/notebook-intelligence/issues)! User feedback from the community will shape the project's roadmap. +I am looking forward to seeing the AI Agents built by the community. Please try the extension APIs and share your feedback using project's [GitHub issues](https://github.com/plmbr/notebook-intelligence/issues)! User feedback from the community will shape the project's roadmap. ## About the Author diff --git a/_posts/2025-03-05-support-for-any-llm-provider.markdown b/_posts/2025-03-05-support-for-any-llm-provider.markdown index 49778a80..19a9a7c7 100644 --- a/_posts/2025-03-05-support-for-any-llm-provider.markdown +++ b/_posts/2025-03-05-support-for-any-llm-provider.markdown @@ -9,7 +9,7 @@ redirect_from: - /blog/support-for-any-llm-provider/ --- -[Notebook Intelligence](https://github.com/notebook-intelligence/notebook-intelligence) (NBI) is an AI coding assistant and extensible AI framework for JupyterLab. (*For an introduction to NBI see [Introducing Notebook Intelligence]({{site.baseurl}}{% post_url 2025-01-07-introducing-notebook-intelligence %}) and for basics of extending NBI see [Building AI Extensions for JupyterLab]({{site.baseurl}}{% post_url 2025-02-04-building-ai-extensions-for-jupyterlab %}) blog posts.*) +[Notebook Intelligence](https://github.com/plmbr/notebook-intelligence) (NBI) is an AI coding assistant and extensible AI framework for JupyterLab. (*For an introduction to NBI see [Introducing Notebook Intelligence]({{site.baseurl}}{% post_url 2025-01-07-introducing-notebook-intelligence %}) and for basics of extending NBI see [Building AI Extensions for JupyterLab]({{site.baseurl}}{% post_url 2025-02-04-building-ai-extensions-for-jupyterlab %}) blog posts.*) Notebook Intelligence now supports any LLM Provider and compatible model for chat and auto-complete. Chat model is used for Copilot Chat in the sidebar and inline chat popups that are accessible from notebook and file editors. Auto-complete model is used for providing completion suggestions as you type in a notebook or file editor (as ghost text). Your chat model and auto-complete model don't have to be from the same provider for use with NBI. @@ -75,7 +75,7 @@ For building NBI extensions see [Building AI Extensions for JupyterLab]({{site.b ## Try it out and share your feedback! -Please try the LLM provider and model options and share your feedback using project's [GitHub issues](https://github.com/notebook-intelligence/notebook-intelligence/issues)! User feedback from the community will shape the project's roadmap. +Please try the LLM provider and model options and share your feedback using project's [GitHub issues](https://github.com/plmbr/notebook-intelligence/issues)! User feedback from the community will shape the project's roadmap. ## About the Author diff --git a/_posts/2026-04-29-v4-6-0.markdown b/_posts/2026-04-29-v4-6-0.markdown index d3b3a69c..9c168a5c 100644 --- a/_posts/2026-04-29-v4-6-0.markdown +++ b/_posts/2026-04-29-v4-6-0.markdown @@ -29,20 +29,20 @@ skills: Point `NBI_SKILLS_MANIFEST` at the manifest's URL or filesystem path. NBI's reconciler installs every Skill at startup and re-syncs every 24h (`NBI_SKILLS_MANIFEST_INTERVAL` overrides). Managed Skills are read-only in the UI — users can't edit, rename, or delete them, and the reconciler restores any that disappear from disk. -Full reference: [docs/skills.md](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/skills.md). +Full reference: [docs/skills.md](https://github.com/plmbr/notebook-intelligence/blob/main/docs/skills.md). ## Restructured documentation The README has been rewritten with a table of contents and a concept glossary. Reference content moved out of the README and into focused docs: -- [`SECURITY.md`](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/SECURITY.md) — private disclosure, threat model, supply-chain posture. -- [`PRIVACY.md`](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/PRIVACY.md) — what NBI sends where. -- [`docs/admin-guide.md`](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/admin-guide.md) — every `NBI_*` env var and policy. -- [`docs/rulesets.md`](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/rulesets.md) — markdown-based prompt injection. -- [`docs/skills.md`](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/skills.md) — Skills authoring, importing, and the manifest reconciler. -- [`docs/troubleshooting.md`](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/troubleshooting.md) — common issues with copy-pasteable fixes. +- [`SECURITY.md`](https://github.com/plmbr/notebook-intelligence/blob/main/SECURITY.md) — private disclosure, threat model, supply-chain posture. +- [`PRIVACY.md`](https://github.com/plmbr/notebook-intelligence/blob/main/PRIVACY.md) — what NBI sends where. +- [`docs/admin-guide.md`](https://github.com/plmbr/notebook-intelligence/blob/main/docs/admin-guide.md) — every `NBI_*` env var and policy. +- [`docs/rulesets.md`](https://github.com/plmbr/notebook-intelligence/blob/main/docs/rulesets.md) — markdown-based prompt injection. +- [`docs/skills.md`](https://github.com/plmbr/notebook-intelligence/blob/main/docs/skills.md) — Skills authoring, importing, and the manifest reconciler. +- [`docs/troubleshooting.md`](https://github.com/plmbr/notebook-intelligence/blob/main/docs/troubleshooting.md) — common issues with copy-pasteable fixes. -If you've been linking deep into the README from internal wikis, the new home for each section is documented in the [migration table at the top of the README](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/README.md). +If you've been linking deep into the README from internal wikis, the new home for each section is documented in the [migration table at the top of the README](https://github.com/plmbr/notebook-intelligence/blob/main/README.md). ## Windows Claude mode reliability @@ -69,4 +69,4 @@ Skill imports from GitHub reject tarball entries containing absolute paths or `. pip install --upgrade notebook-intelligence ``` -Then restart JupyterLab. Full changes in the [CHANGELOG](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/CHANGELOG.md#460--2026-04-29). +Then restart JupyterLab. Full changes in the [CHANGELOG](https://github.com/plmbr/notebook-intelligence/blob/main/CHANGELOG.md#460--2026-04-29). diff --git a/_posts/2026-05-07-v4-7-0.markdown b/_posts/2026-05-07-v4-7-0.markdown index 345f2fb6..c6cafa3a 100644 --- a/_posts/2026-05-07-v4-7-0.markdown +++ b/_posts/2026-05-07-v4-7-0.markdown @@ -65,7 +65,7 @@ New value-presence locks (set the env var to a value to pin it; the UI control b The `/claude-sessions` HTTP route also accepts `?scope=cwd` to filter to sessions whose recorded `cwd` matches the lab's working directory. -Full env-var reference: [docs/admin-guide.md](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/admin-guide.md). +Full env-var reference: [docs/admin-guide.md](https://github.com/plmbr/notebook-intelligence/blob/main/docs/admin-guide.md). ## Internal @@ -89,4 +89,4 @@ Full env-var reference: [docs/admin-guide.md](https://github.com/notebook-intell pip install --upgrade notebook-intelligence ``` -Then restart JupyterLab. Full changes in the [CHANGELOG](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/CHANGELOG.md#470--2026-05-07). +Then restart JupyterLab. Full changes in the [CHANGELOG](https://github.com/plmbr/notebook-intelligence/blob/main/CHANGELOG.md#470--2026-05-07). diff --git a/_posts/2026-05-12-v4-8-0.markdown b/_posts/2026-05-12-v4-8-0.markdown index 48bf32be..d37165f9 100644 --- a/_posts/2026-05-12-v4-8-0.markdown +++ b/_posts/2026-05-12-v4-8-0.markdown @@ -67,4 +67,4 @@ Beyond the workspace scan, the `@`-mention context picker also now skips dot-pre pip install --upgrade notebook-intelligence ``` -Then restart JupyterLab. Full set of changes in the [v4.8.0 release notes](https://github.com/notebook-intelligence/notebook-intelligence/releases/tag/v4.8.0). +Then restart JupyterLab. Full set of changes in the [v4.8.0 release notes](https://github.com/plmbr/notebook-intelligence/releases/tag/v4.8.0). diff --git a/about.markdown b/about.markdown index 01b8b6e9..b434b1b9 100644 --- a/about.markdown +++ b/about.markdown @@ -13,4 +13,4 @@ The extension is built to be extended. Connect [Model Context Protocol](https:// For administrators, NBI ships policy controls that lock specific providers, models, and endpoints via environment variables. A platform team can decide what a managed JupyterHub allows before anyone signs in — each capability has a `force-on` / `force-off` / `user-choice` triad with a matching `NBI_*_POLICY` env var. -NBI is open source and BSD-licensed. It is maintained by [Mehmet Bektaş](https://github.com/mbektas) and a growing group of contributors from the Jupyter community. The codebase lives at [github.com/notebook-intelligence/notebook-intelligence](https://github.com/notebook-intelligence/notebook-intelligence). +NBI is open source and BSD-licensed. It is maintained by [Mehmet Bektaş](https://github.com/mbektas) and a growing group of contributors from the Jupyter community. The codebase lives at [github.com/plmbr/notebook-intelligence](https://github.com/plmbr/notebook-intelligence). diff --git a/admin.markdown b/admin.markdown index 04770458..1d2d3859 100644 --- a/admin.markdown +++ b/admin.markdown @@ -47,8 +47,8 @@ Set `NBI_SKILLS_MANIFEST=https://your-org/skills.yaml` (or a filesystem path). N ## Reference -- [Full admin guide](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/admin-guide.md) — every env var, every default, every interaction. -- [Security policy](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/SECURITY.md) — disclosure, threat model, supply-chain posture. -- [Privacy](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/PRIVACY.md) — what NBI sends where. +- [Full admin guide](https://github.com/plmbr/notebook-intelligence/blob/main/docs/admin-guide.md) — every env var, every default, every interaction. +- [Security policy](https://github.com/plmbr/notebook-intelligence/blob/main/SECURITY.md) — disclosure, threat model, supply-chain posture. +- [Privacy](https://github.com/plmbr/notebook-intelligence/blob/main/PRIVACY.md) — what NBI sends where.

Install NBI

diff --git a/blog/archive.markdown b/blog/archive.markdown index cb0c6569..a8511673 100644 --- a/blog/archive.markdown +++ b/blog/archive.markdown @@ -7,7 +7,7 @@ permalink: /blog/archive/

These posts are historical.

-

The product they describe — single-provider, Copilot-only NBI — is several major releases behind. For current information, see the home page or the CHANGELOG.

+

The product they describe — single-provider, Copilot-only NBI — is several major releases behind. For current information, see the home page or the CHANGELOG.

    diff --git a/docs.markdown b/docs.markdown index b1b27f68..931c4045 100644 --- a/docs.markdown +++ b/docs.markdown @@ -5,17 +5,17 @@ subtitle: The deep docs live in the repo. This page is a router. permalink: /docs/ --- -NBI's reference documentation is maintained alongside the code in the [main repository](https://github.com/notebook-intelligence/notebook-intelligence). Keeping one source of truth means the docs and the code can't drift. +NBI's reference documentation is maintained alongside the code in the [main repository](https://github.com/plmbr/notebook-intelligence). Keeping one source of truth means the docs and the code can't drift. ## Reference -- [README](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/README.md) — install, quick start, concept glossary. -- [Admin guide](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/admin-guide.md) — every `NBI_*` env var, every policy. -- [Rulesets](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/rulesets.md) — markdown-based prompt injection. -- [Skills](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/skills.md) — authoring, importing, and org-managed Skills. -- [Troubleshooting](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/troubleshooting.md) — common issues and fixes. -- [CHANGELOG](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/CHANGELOG.md) — release notes. -- [Security policy](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/SECURITY.md) — disclosure address and threat model. -- [Privacy](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/PRIVACY.md) — what data leaves your machine. -- [Contributing](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/CONTRIBUTING.md) — how to file a bug, propose a feature, or send a PR. -- [Release process](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/RELEASE.md) — for maintainers. +- [README](https://github.com/plmbr/notebook-intelligence/blob/main/README.md) — install, quick start, concept glossary. +- [Admin guide](https://github.com/plmbr/notebook-intelligence/blob/main/docs/admin-guide.md) — every `NBI_*` env var, every policy. +- [Rulesets](https://github.com/plmbr/notebook-intelligence/blob/main/docs/rulesets.md) — markdown-based prompt injection. +- [Skills](https://github.com/plmbr/notebook-intelligence/blob/main/docs/skills.md) — authoring, importing, and org-managed Skills. +- [Troubleshooting](https://github.com/plmbr/notebook-intelligence/blob/main/docs/troubleshooting.md) — common issues and fixes. +- [CHANGELOG](https://github.com/plmbr/notebook-intelligence/blob/main/CHANGELOG.md) — release notes. +- [Security policy](https://github.com/plmbr/notebook-intelligence/blob/main/SECURITY.md) — disclosure address and threat model. +- [Privacy](https://github.com/plmbr/notebook-intelligence/blob/main/PRIVACY.md) — what data leaves your machine. +- [Contributing](https://github.com/plmbr/notebook-intelligence/blob/main/CONTRIBUTING.md) — how to file a bug, propose a feature, or send a PR. +- [Release process](https://github.com/plmbr/notebook-intelligence/blob/main/RELEASE.md) — for maintainers. diff --git a/features/claude-code.markdown b/features/claude-code.markdown index 01c82ee8..cb44317d 100644 --- a/features/claude-code.markdown +++ b/features/claude-code.markdown @@ -44,7 +44,7 @@ Or via environment variables for managed deployments — see [admin policies]({{ ## Reference - [Claude Code documentation](https://docs.claude.com/en/docs/claude-code) (Anthropic) -- [NBI Claude mode reference](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/README.md#claude-mode) -- [Skills documentation](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/skills.md) +- [NBI Claude mode reference](https://github.com/plmbr/notebook-intelligence/blob/main/README.md#claude-mode) +- [Skills documentation](https://github.com/plmbr/notebook-intelligence/blob/main/docs/skills.md)

    Install NBI

    diff --git a/features/skills-plugins.markdown b/features/skills-plugins.markdown index d231ac75..c40a158e 100644 --- a/features/skills-plugins.markdown +++ b/features/skills-plugins.markdown @@ -34,7 +34,7 @@ skills: ## Reference -- [NBI Skills documentation](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/skills.md) +- [NBI Skills documentation](https://github.com/plmbr/notebook-intelligence/blob/main/docs/skills.md) - [Claude Skills SDK](https://docs.claude.com/en/docs/claude-code/skills) - [Claude Plugins](https://docs.claude.com/en/docs/claude-code/plugins) diff --git a/index.markdown b/index.markdown index fc081436..3ebca72a 100644 --- a/index.markdown +++ b/index.markdown @@ -16,7 +16,7 @@ description: A JupyterLab extension for Claude Code, GitHub Copilot, Ollama, and

diff --git a/install.markdown b/install.markdown index 60727e50..86f5e658 100644 --- a/install.markdown +++ b/install.markdown @@ -87,7 +87,7 @@ The base URL must speak the Chat Completions API. vLLM, LiteLLM, TGI, and llama. If something doesn't work, check: - `jupyter server extension list` — `notebook_intelligence` should appear under "OK". -- `jupyter labextension list` — `@notebook-intelligence/notebook-intelligence` should be listed as enabled. +- `jupyter labextension list` — `@plmbr/notebook-intelligence` should be listed as enabled. - The JupyterLab terminal output where you ran `jupyter lab`. NBI logs server-side errors there. -For deeper issues, see the [troubleshooting guide](https://github.com/notebook-intelligence/notebook-intelligence/blob/main/docs/troubleshooting.md) in the repo or [open an issue](https://github.com/notebook-intelligence/notebook-intelligence/issues). +For deeper issues, see the [troubleshooting guide](https://github.com/plmbr/notebook-intelligence/blob/main/docs/troubleshooting.md) in the repo or [open an issue](https://github.com/plmbr/notebook-intelligence/issues). diff --git a/robots.txt b/robots.txt index c5c3d72b..00f50bc0 100644 --- a/robots.txt +++ b/robots.txt @@ -1,4 +1,4 @@ User-agent: * Allow: / -Sitemap: https://notebook-intelligence.github.io/notebook-intelligence/sitemap.xml +Sitemap: https://plmbr.dev/sitemap.xml From 1d09440a1d766a9d75fc466250cd6199984afe69 Mon Sep 17 00:00:00 2001 From: PJ Doland Date: Sat, 23 May 2026 14:36:20 -0400 Subject: [PATCH 2/2] site: 5.0.0 release post and feature-page refresh Add the v5.0.0 release post and pull forward the most user-visible 5.0.0 surface into the admin and feature pages. - _posts/2026-05-22-v5-0-0.markdown: three new Settings tabs, coding-agent launcher tiles, real progress feedback, refresh-open-files-on-disk-change, workspace @-mention pointers in Claude mode, terminal drag-drop, a11y pass, security hardening, fastmcp -> official mcp SDK, dynamic Copilot model discovery. Mirrors the section structure of the v4.6 / v4.7 / v4.8 posts. - admin.markdown: extend the policy-categories list with the new Settings-tab policies (skills/MCP/plugins management), the user-toggle policies that landed in 5.0.0 (refresh open files, terminal drag-drop, Claude setting-source user/project), the coding-agent launcher block-list, the upload-staging tunables, and the skill archive cap. - features/skills-plugins.markdown: mention Skills is now a top-level tab, tracks-upstream import flag, multi-manifest support, the new Claude MCP Servers tab (per-workspace toggle + JSON-paste path), the marketplace picker and per-plugin Update button. - features/claude-code.markdown: real progress feedback, refresh-on-disk, workspace @-mention pointers, terminal drag-drop, new chat session button, launcher tile no longer gated by Claude mode. --- _posts/2026-05-22-v5-0-0.markdown | 112 ++++++++++++++++++++++++++++++ admin.markdown | 7 +- features/claude-code.markdown | 7 +- features/skills-plugins.markdown | 19 +++-- 4 files changed, 138 insertions(+), 7 deletions(-) create mode 100644 _posts/2026-05-22-v5-0-0.markdown diff --git a/_posts/2026-05-22-v5-0-0.markdown b/_posts/2026-05-22-v5-0-0.markdown new file mode 100644 index 00000000..4cca5e26 --- /dev/null +++ b/_posts/2026-05-22-v5-0-0.markdown @@ -0,0 +1,112 @@ +--- +layout: post +title: "NBI 5.0.0 — three new Settings tabs, agent-aware UX, and a wide admin-policy surface" +date: 2026-05-22 06:00:00 -0700 +permalink: /blog/v5-0-0/ +description: "Skills, Claude MCP, and Plugins each get their own Settings tab with admin policies. Five coding-agent launcher tiles. Real progress feedback. Terminal drag-drop. Wide accessibility and security passes. The official mcp SDK replaces fastmcp." +--- + +NBI 5.0.0 is a broad release. It promotes Skills out of the Claude-mode sub-tab into its own top-level Settings tab, adds two more (Claude MCP Servers, Claude Plugins), surfaces five coding-agent launcher tiles, hardens the chat sidebar's agent-aware UX, lands an accessibility pass across every NBI panel, swaps `fastmcp` for the official `mcp` SDK, and ships a stack of security work. Most existing config keeps working — the version bump reflects the size of the new admin-policy / env-var surface that operators will want to review. + +If you just want the upgrade command, jump to [Install](#install). The migration notes worth reading before upgrading are in the [release notes](https://github.com/plmbr/notebook-intelligence/blob/main/CHANGELOG.md#500---2026-05-22). + +## Three new Settings tabs + +The Settings dialog gains three top-level tabs. Each ships with an admin-policy gate. + +- **Skills.** Promoted from a Claude-mode sub-tab; visible in any mode, with a hint banner when Claude mode is off. New policy `NBI_SKILLS_MANAGEMENT_POLICY`. `force-off` hides the tab, 403s every `/notebook-intelligence/skills/*` route, and suppresses the managed-skills reconciler. +- **Claude MCP Servers.** Manages the user, project, and local-scope MCP entries Claude Code reads from `~/.claude.json` and `/.mcp.json`. Independent of the existing NBI MCP tab — the two never appear at the same time. New policy `NBI_CLAUDE_MCP_MANAGEMENT_POLICY`. Per-workspace toggle on/off without removing an entry. A JSON-paste path accepts Claude / Cursor / VS Code MCP config blobs. +- **Claude Plugins.** Wraps `claude plugin` for install / uninstall / enable / disable / marketplace add. Marketplace picker shows source repo, version, and description. Per-plugin **Update** button when a newer version is available. New policies `NBI_CLAUDE_PLUGINS_MANAGEMENT_POLICY` (whole tab) and `NBI_ALLOW_GITHUB_PLUGIN_IMPORT` (marketplace sources, mirroring 4.8.0's `NBI_ALLOW_GITHUB_SKILL_IMPORT`). + +GitHub-sourced marketplace adds reuse the Skills `GITHUB_TOKEN` / `GH_TOKEN` / `gh auth token` precedence; tokens go through the subprocess env, never argv. + +## Coding-agent launcher tiles + +The JupyterLab launcher gains tiles for every coding-agent CLI on `PATH`: + +- Claude Code (no longer gated by Claude chat mode being on) +- opencode (`NBI_OPENCODE_CLI_PATH` override) +- Pi (`NBI_PI_CLI_PATH`) +- GitHub Copilot CLI (`NBI_GITHUB_COPILOT_CLI_PATH`) +- OpenAI Codex (`NBI_CODEX_CLI_PATH`) + +Clicking a tile opens a terminal at the file-browser's current directory. The Claude tile additionally exposes a session picker for `~/.claude/projects/` transcripts. Each tile only appears when the corresponding binary is on `PATH`. + +Admins can hide tiles via `disabled_coding_agent_launchers` (traitlet, list-valued). Per-pod re-enable is available via `NBI_ENABLED_CODING_AGENT_LAUNCHERS` when `allow_enabling_coding_agent_launchers_with_env` is on, so a base image can disable launchers globally and specific pods can opt back in. + +## Agent-aware chat UX + +Long Claude turns no longer feel hung. The sidebar surfaces: + +- An elapsed-time counter that starts on first request and updates per second. +- A heartbeat-driven pulse with a "may be slow" copy flip after 30 seconds. +- Inline tool-call narration as the agent works. +- A **New chat session** button next to the gear that restarts the SDK client — same effect as typing `/clear`, without typing. + +A first-run **chat-sidebar tour** highlights the gear, file-attach button, chat-mode dropdown, and (when available) the Claude session history icon. Replays from the command palette via "Show NBI tour". The tour is capability-aware: steps for unavailable CLIs are skipped automatically. + +## Refresh open files when changed on disk + +When Claude (or any external process) edits a file you have open, the tab reverts to the on-disk version automatically. Tabs with unsaved local edits are skipped so your work is never clobbered. Default on; toggle in the **NBI Settings dialog → External changes**. Admin pin via `NBI_REFRESH_OPEN_FILES_ON_DISK_CHANGE_POLICY` or the matching traitlet. + +This closes the "Claude edited the file but my tab still shows the old version" gap that was the most visible rough edge in agent-mode notebook work. + +## Workspace files attach as @-mention pointers in Claude mode + +In Claude mode, attaching a workspace file no longer reads its contents client-side and injects them as a fenced code block. Instead the backend emits an `@` pointer and Claude's Read tool fetches what it needs. This unblocks three categories that the content-injection path couldn't handle: + +- **Images.** Previously truncated to ASCII garbage. +- **Large files.** Previously hit the prompt-token ceiling and got silently dropped. +- **Notebooks.** Previously serialized as raw JSON; now cell-aware, so the agent reads cells one at a time. + +Notebook cell-pointer prose and text-selection line ranges are preserved so deictic references ("explain this cell", "why is this broken") still have a referent. + +## Terminal drag-drop file attach + +Drop a file onto a JupyterLab terminal to insert either an `@`-mention path (for chat consumption) or a shell-escaped raw path. A per-terminal toolbar toggle switches modes; Shift inverts for one drop. New admin policy `NBI_TERMINAL_DRAG_DROP_POLICY` (`force-off` for regulated tenants). Tunables `NBI_UPLOAD_MAX_MB` (default `50`) and `NBI_UPLOAD_RETENTION_HOURS` (default `24`) govern the shared upload-staging endpoint used by both terminal drops and chat-sidebar attachments. + +## Settings dialog gains a Workspace section + +Beyond the three new tabs, the General tab grows an **External changes** section with the open-files refresh toggle described above, and a **Choose start directory** picker on each coding-agent tile (and "New Session" on the Claude resume dialog). + +## Accessibility pass + +A multi-PR accessibility pass landed across most NBI surfaces: + +- Keyboard navigation works end-to-end in the chat sidebar, popovers, and Settings tabs. +- Tab order is logical, focus traps inside dialogs, Escape closes correctly. +- Screen-reader landmarks and live regions added for streaming chat output. +- Audited under JupyterLab's light, dark, and high-contrast themes. +- The "open notebook" link in chat responses is keyboard-reachable (was previously click-only). + +## Security hardening + +5.0.0 ships a stack of security work. The migration-impacting items: + +- **Shell tool's `working_directory` is sandboxed to `jupyter_root`.** An agent-supplied absolute path or `..` traversal is rejected. +- **Claude UI-bridge tool paths sandboxed to `jupyter_root`.** `open_file_in_jupyter_ui` and `run_command_in_jupyter_terminal` route through `safe_jupyter_path`. The Claude Agent SDK subprocess is itself rooted at `jupyter_root` via its `cwd` option. +- **Encrypted GitHub token file enforces mode 0o600 on every save.** An out-of-band `chmod` that widens permissions is undone on the next write. +- **Process-env secrets scrubbed from shell-tool output.** The shell tool no longer leaks `API_KEY` / `TOKEN` / `SECRET`-like env values into captured stdout/stderr returned to the model. +- **MCP user config shape validated before persisting.** Malformed JSON-paste entries are rejected server-side. +- **Anchor URIs in chat messages filtered against an XSS allowlist.** `javascript:`, `data:`, `vbscript:`, and tab/NEL/bidi-override codepoint smuggling are blocked at render time. +- **Copilot WebSocket upgrades authenticated and origin-checked.** Cross-origin and unauthenticated upgrade attempts are refused. Affects any custom client hitting `WebsocketCopilotHandler` directly. +- **GitHub Enterprise host detection hardened** for marketplace add — `git.acme.example.com` correctly routes through the GHE token / API path instead of being misclassified as public GitHub. +- **Runtime kill switch for the managed-skills reconciler** (`POST /notebook-intelligence/skills/reconciler/stop`) provides per-pod incident response without a server restart. + +## fastmcp → official mcp SDK + +NBI now uses the official Anthropic `mcp` SDK via a thin internal shim. `fastmcp` is no longer a dependency. The swap was driven by a `python-dotenv` pin conflict between `fastmcp>=1.1.0` and `litellm==1.0.1` that blocked installs on Python 3.14, plus CVE fixes via `urllib3>=2.7.0` (CVE-2026-44431 / CVE-2026-44432). + +**If your image pinned `fastmcp`** because prior docs recommended it, drop the pin. **If you have downstream Python code that imported `fastmcp` transitively via NBI,** declare it as a direct dependency in your own image — the transitive path no longer exists. + +## Dynamic GitHub Copilot model discovery + +NBI now queries `https://api.githubcopilot.com/models` on each Copilot token refresh and rebuilds the chat-model dropdown from the live response. Newer Copilot chat models appear in the dropdown as soon as GitHub publishes them; the hardcoded fallback list is used only on a transient `/models` fetch failure. + +## Install + +```bash +pip install --upgrade notebook-intelligence +``` + +Then restart JupyterLab. Full release notes — including the migration note for shell-tool sandboxing, the Claude session inventory move, and the WebSocket origin-check — in the [v5.0.0 CHANGELOG](https://github.com/plmbr/notebook-intelligence/blob/main/CHANGELOG.md#500---2026-05-22). diff --git a/admin.markdown b/admin.markdown index 1d2d3859..eff43b7e 100644 --- a/admin.markdown +++ b/admin.markdown @@ -21,10 +21,13 @@ For string-valued settings (provider, model, endpoint) the env var sets the valu ## Policy categories -- **Mode and feature flags.** `NBI_CLAUDE_MODE_POLICY`, `NBI_CLAUDE_CONTINUE_CONVERSATION_POLICY`, `NBI_CLAUDE_CODE_TOOLS_POLICY`, `NBI_CLAUDE_JUPYTER_UI_TOOLS_POLICY`, `NBI_EXPLAIN_ERROR_POLICY`, `NBI_OUTPUT_FOLLOWUP_POLICY`, `NBI_OUTPUT_TOOLBAR_POLICY`, `NBI_STORE_GITHUB_ACCESS_TOKEN_POLICY`. +- **Mode and feature flags.** `NBI_CLAUDE_MODE_POLICY`, `NBI_CLAUDE_CONTINUE_CONVERSATION_POLICY`, `NBI_CLAUDE_CODE_TOOLS_POLICY`, `NBI_CLAUDE_JUPYTER_UI_TOOLS_POLICY`, `NBI_CLAUDE_SETTING_SOURCE_USER_POLICY`, `NBI_CLAUDE_SETTING_SOURCE_PROJECT_POLICY`, `NBI_EXPLAIN_ERROR_POLICY`, `NBI_OUTPUT_FOLLOWUP_POLICY`, `NBI_OUTPUT_TOOLBAR_POLICY`, `NBI_REFRESH_OPEN_FILES_ON_DISK_CHANGE_POLICY`, `NBI_TERMINAL_DRAG_DROP_POLICY`, `NBI_STORE_GITHUB_ACCESS_TOKEN_POLICY`. - **Provider locks.** `NBI_CHAT_MODEL_PROVIDER`, `NBI_CHAT_MODEL_ID`, `NBI_INLINE_COMPLETION_MODEL_PROVIDER`, `NBI_INLINE_COMPLETION_MODEL_ID`, `NBI_CLAUDE_CHAT_MODEL`, `NBI_CLAUDE_INLINE_COMPLETION_MODEL`. - **Anthropic endpoint pinning.** `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL` (read by the Claude SDK directly, propagated by NBI). -- **Skills and Plugins management.** `NBI_SKILLS_MANIFEST` (org-managed YAML manifest URL or path), `NBI_SKILLS_MANIFEST_INTERVAL`, `NBI_SKILLS_MANIFEST_TOKEN`, `NBI_ALLOW_GITHUB_SKILL_IMPORT`, `NBI_CLAUDE_PLUGINS_MANAGEMENT_POLICY`. +- **Settings tabs.** `NBI_SKILLS_MANAGEMENT_POLICY` (whole Skills tab), `NBI_CLAUDE_MCP_MANAGEMENT_POLICY` (Claude MCP Servers tab), `NBI_CLAUDE_PLUGINS_MANAGEMENT_POLICY` (Claude Plugins tab). Each `force-off` hides the tab and 403s its REST routes. +- **Skills and Plugins management.** `NBI_SKILLS_MANIFEST` (org-managed YAML manifest URL or path), `NBI_SKILLS_MANIFEST_INTERVAL`, `NBI_SKILLS_MANIFEST_TOKEN`, `NBI_ALLOW_GITHUB_SKILL_IMPORT`, `NBI_ALLOW_GITHUB_PLUGIN_IMPORT`, `NBI_SKILL_MAX_ARCHIVE_MB`. +- **Coding-agent launchers.** `disabled_coding_agent_launchers` (traitlet, list of `claude-code` / `opencode` / `pi` / `github-copilot-cli` / `codex`), with `allow_enabling_coding_agent_launchers_with_env` + `NBI_ENABLED_CODING_AGENT_LAUNCHERS` for per-pod re-enable. +- **Upload staging.** `NBI_UPLOAD_MAX_MB` (default `50`), `NBI_UPLOAD_RETENTION_HOURS` (default `24`) govern the staging endpoint used by terminal drag-drop and chat-sidebar attachments. - **Provider gating.** `NBI_DISABLED_PROVIDERS` (comma-separated list). ## Fail-loud resolvers diff --git a/features/claude-code.markdown b/features/claude-code.markdown index cb44317d..a31e64f7 100644 --- a/features/claude-code.markdown +++ b/features/claude-code.markdown @@ -9,10 +9,15 @@ NBI's deepest integration is with [Claude Code](https://docs.claude.com/en/docs/ ## What you get -- **Session resume.** A Claude Code tile on the JupyterLab launcher opens a picker listing every session in `~/.claude/projects/`. Resume a transcript or start a new session scoped to the file browser's current directory. +- **Session resume.** A Claude Code tile on the JupyterLab launcher opens a picker listing every session in `~/.claude/projects/`. Resume a transcript or start a new session scoped to a directory you pick. The tile is no longer gated by Claude chat mode — it appears whenever the `claude` CLI is on `PATH`. - **Agent-mode notebook editing.** The agent can create notebooks, add and edit cells, run them, read the output, and fix errors without leaving the document. +- **Real progress feedback** during long Claude turns. An elapsed-time counter, a heartbeat-driven pulse with a "may be slow" copy flip after 30 seconds, and inline tool-call narration so the sidebar reflects what the agent is doing. +- **Open files refresh on disk change.** When Claude edits a file you have open, the tab reverts to the disk version automatically. Tabs with unsaved local edits are skipped. Toggle in **NBI Settings → External changes**. +- **Workspace files as @-mention pointers.** Attaching a file ships an `@` pointer instead of inlining contents, so images, large files, and notebooks (cell-aware) all work where the older path silently truncated them. - **Tools, Skills, Plugins, MCP.** Everything the standalone Claude CLI can use is available from inside JupyterLab — see [Skills & Plugins]({{ '/features/skills-plugins/' | relative_url }}) and [MCP servers]({{ '/features/mcp/' | relative_url }}). - **Cell output actions.** Right-click a cell output for **Explain**, **Ask**, or **Troubleshoot** quick actions that open the chat with the output already attached as context. +- **Terminal drag-drop file attach** with `@`-mention or shell-escaped raw modes. Shift inverts the mode for one drop. +- **New chat session** button next to the gear restarts the SDK client without typing `/clear`. - **AGENTS.md support.** When a project root contains an `AGENTS.md`, NBI appends it under the system prompt's "Additional Guidelines" alongside the existing ruleset injection. ## Setup diff --git a/features/skills-plugins.markdown b/features/skills-plugins.markdown index c40a158e..3463a955 100644 --- a/features/skills-plugins.markdown +++ b/features/skills-plugins.markdown @@ -7,19 +7,30 @@ permalink: /features/skills-plugins/ ## Claude Skills -A Claude Skill is a bundle of instructions, allowed tools, and helper files that an agent can invoke. NBI manages them from a Skills tab in Settings. +A Claude Skill is a bundle of instructions, allowed tools, and helper files that an agent can invoke. As of 5.0.0, NBI's Skills tab is a top-level Settings tab visible in any mode (with a hint banner when Claude mode is off). - **Author inline.** Create a new Skill, edit its `SKILL.md` and helper files without leaving the lab. -- **Import from GitHub.** Drop a `github.com/owner/repo/tree/main/skills/` URL into the import dialog; NBI fetches the tarball, validates the bundle, and installs it under `~/.jupyter/skills/`. -- **Org-managed manifest.** Point `NBI_SKILLS_MANIFEST` at a YAML manifest file or URL. NBI's reconciler installs every Skill in the manifest at startup and re-checks every 24h. Managed Skills are read-only in the UI — users can't edit, rename, or delete them, and the reconciler restores any that get removed. +- **Import from GitHub.** Drop a `github.com/owner/repo/tree/main/skills/` URL into the import dialog; NBI fetches the tarball, validates the bundle, and installs it under `~/.jupyter/skills/`. Optional **Track upstream** checkbox surfaces a per-skill Sync button and a panel-level "Sync tracking skills". +- **Org-managed manifest.** Point `NBI_SKILLS_MANIFEST` at one or more YAML manifest files or URLs (comma-separated for multiple). NBI's reconciler installs every Skill at startup and re-checks every 24h. Managed Skills are read-only in the UI — users can't edit, rename, or delete them, and the reconciler restores any that get removed. + +## Claude MCP Servers + +A separate top-level tab in 5.0.0 manages the user, project, and local-scope MCP entries Claude Code reads from `~/.claude.json` and `/.mcp.json`. Independent of the existing NBI MCP tab; the two never appear at the same time. + +- **Per-workspace enable / disable.** Toggle individual MCP entries on / off without removing them. +- **JSON-paste path.** Paste a Claude / Cursor / VS Code MCP config blob; NBI parses, validates, and pre-fills the form. +- **Admin policy.** `NBI_CLAUDE_MCP_MANAGEMENT_POLICY=force-off` hides the tab and 403s `/claude-mcp/*` routes. ## Claude Plugins Claude Plugins are install-and-go bundles published to marketplaces. NBI's Plugins panel wraps the `claude plugin` CLI: - **Install, uninstall, enable, disable.** From a marketplace URL or a GitHub repo. -- **Marketplace add/remove.** Manage which marketplaces are visible to Claude. +- **Marketplace add / remove.** Manage which marketplaces are visible to Claude. +- **Marketplace picker.** Browse the configured marketplaces inline; entries show source repo, version, and description. +- **Per-plugin Update button.** Surfaces when a newer version is available upstream. - **Project vs user scope.** Plugins installed to a project root are isolated to that workspace. +- **Admin policies.** `NBI_CLAUDE_PLUGINS_MANAGEMENT_POLICY` for the whole tab; `NBI_ALLOW_GITHUB_PLUGIN_IMPORT` for marketplace sources resolving as GitHub URLs. ## Manifest example