Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Changelog

## [v1.6.1](https://github.com/janosh/svelte-widgets/compare/v1.6.0...v1.6.1)

> 25 August 2026

- Add `svelte-widgets/source-links`: a Vite plugin indexes a project's source files and exported definitions into `virtual:source-symbols`, and `create_source_links` turns inline code mentions of them into GitHub links pinned to the build commit, via `source_href` or the `link_source_mentions` attachment [`#449`](https://github.com/janosh/svelte-widgets/pull/449)
- Add 493 icons from the installed Iconify sets with new transport, maps & GIS, shapes & math and accessibility blocks [`#449`](https://github.com/janosh/svelte-widgets/pull/449)
- `tooltip`: re-entering during the close delay keeps it open, top-layer mode falls back to absolute positioning without the Popover API instead of throwing, Escape passes through when nothing is open and `on_open_change(true)` always precedes a close; `portal` no longer re-inserts nodes Svelte already removed; `draggable` no longer jumps `position: relative` nodes and moves static ones [`#449`](https://github.com/janosh/svelte-widgets/pull/449)
- `CodeEditor`: `transact` without a selection maps it through the edits instead of throwing, Shift+Tab on an unindented line keeps focus, highlight resyncs snapshot at enqueue time and unchanged DOM selections are left alone so IME composition survives [`#449`](https://github.com/janosh/svelte-widgets/pull/449)
- `Nav` submenu arrow keys work from links (wrapping, with Home/End) and Escape returns focus to the toggle; `MultiSelect` only auto-activates while open and stops Escape/Tab propagation only while open; `Dialog` backdrop clicks close without native `closedby`; global `CopyButton` instances coexist, release removed blocks and copy live content; `Toast` no longer stays paused after dismissing a focused toast; `FileDetails` highlights each file once; `DraggablePane` and `Toc` hand Escape and focus back correctly; `Popover` chains a consumer's `ontoggle`; build-time heading ids decode HTML entities [`#449`](https://github.com/janosh/svelte-widgets/pull/449)

## [v1.6.0](https://github.com/janosh/svelte-widgets/compare/v1.5.0...v1.6.0)

> 19 August 2026
Expand Down
31 changes: 21 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "svelte-widgets",
"version": "1.6.0",
"version": "1.6.1",
"description": "Accessible, keyboard-friendly Svelte components and attachments",
"keywords": [
"accessibility",
Expand Down Expand Up @@ -84,6 +84,17 @@
"types": "./dist/live-examples/create-highlighter.d.ts",
"default": "./dist/live-examples/create-highlighter.js"
},
"./source-links": {
"types": "./dist/source-links/index.d.ts",
"default": "./dist/source-links/index.js"
},
"./source-links/vite-plugin": {
"types": "./dist/source-links/vite-plugin.d.ts",
"default": "./dist/source-links/vite-plugin.js"
},
"./source-links/virtual": {
"types": "./dist/source-links/virtual.d.ts"
},
"./clipboard": {
"types": "./dist/clipboard.svelte.d.ts",
"default": "./dist/clipboard.svelte.js"
Expand Down Expand Up @@ -154,8 +165,8 @@
"@iconify-json/file-icons": "^1.2.2",
"@iconify-json/gis": "^1.2.5",
"@iconify-json/iconoir": "^1.2.11",
"@iconify-json/lucide": "^1.2.123",
"@iconify-json/material-symbols": "^1.2.88",
"@iconify-json/lucide": "^1.2.126",
"@iconify-json/material-symbols": "^1.2.89",
"@iconify-json/mdi": "^1.2.3",
"@iconify-json/octicon": "^1.2.32",
"@iconify-json/ri": "^1.2.10",
Expand All @@ -165,21 +176,21 @@
"@iconify/utils": "^3.1.4",
"@playwright/test": "^1.62.1",
"@sveltejs/adapter-static": "^3.0.10",
"@sveltejs/kit": "^2.70.2",
"@sveltejs/kit": "^2.70.3",
"@sveltejs/package": "2.5.8",
"@sveltejs/vite-plugin-svelte": "^7.3.0",
"@types/node": "^26.2.0",
"@types/node": "^26.3.0",
"@typescript/native-preview": "7.0.0-dev.20260707.2",
"@vitest/coverage-v8": "4.1.10",
"@vitest/coverage-v8": "4.1.11",
"@wooorm/starry-night": "^3.10.0",
"happy-dom": "^20.11.2",
"happy-dom": "^20.11.6",
"katex": "^0.18.4",
"mdsvex": "^0.12.8",
"pagefind": "^1.5.2",
"svelte": "^5.56.8",
"svelte": "^5.56.10",
"typescript": "^6.0.3",
"vite": "^8.2.1",
"vite-plus": "0.2.9"
"vite": "^8.2.2",
"vite-plus": "0.3.0"
},
"peerDependencies": {
"@wooorm/starry-night": "^3.0.0",
Expand Down
25 changes: 25 additions & 0 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,9 @@ import { heading_anchors } from 'svelte-widgets/heading-anchors'
| `/live-examples` | mdsvex live-example transform, Vite plugin and highlighter |
| `/live-examples/create-highlighter` | Lightweight custom grammar highlighter factory |
| `/print` | Element printing |
| `/source-links` | Link inline code mentions of your source to GitHub |
| `/source-links/vite-plugin` | Vite plugin emitting the file/export index those links use |
| `/source-links/virtual` | Types for the plugin's `virtual:source-symbols` module |
| `/storage` | Non-throwing localStorage, persisted choices and MRU lists |
| `/text-search` | Text ranges, highlighting and search-jump helpers |
| `/theme` | Headless light/dark/system state |
Expand Down Expand Up @@ -212,6 +215,28 @@ Import `katex/dist/katex.min.css` once in the app so the generated markup is sty

See [src/lib/live-examples/readme.md](https://github.com/janosh/svelte-widgets/blob/-/src/lib/live-examples/readme.md) for optional live-example helpers.

Docs that mention source files or exports in inline code (`` `Footer` ``, `` `make_config` ``) can link them to the GitHub line they live on, pinned to the commit the site was built from. Add the plugin to `vite.config.ts`, reference its virtual-module types from `src/app.d.ts` and attach the linker to the element that wraps your pages:

```ts
// vite.config.ts
import source_links from 'svelte-widgets/source-links/vite-plugin'
export default { plugins: [sveltekit(), source_links()] } // indexes src/lib by default

// src/app.d.ts
/// <reference types="svelte-widgets/source-links/virtual" />

// src/site/source-links.ts
import { create_source_links } from 'svelte-widgets/source-links'
import * as source_symbols from 'virtual:source-symbols'
export const { link_source_mentions, source_href } = create_source_links(source_symbols)
```

```svelte
<main {@attach link_source_mentions}>{@render children()}</main>
```

Only exact, unambiguous names link: a file name or bare component name (`Footer`, `utils.ts`) points at the file, an exported definition (`make_config`) at its line, and names defined in several files (`index.ts`) or that aren't source (`label`) are left alone. `source_href(name)` gives the same URL for use in your own markup.

## 🆕 &thinsp; Changelog

[View the changelog](changelog.md).
Expand Down
Loading
Loading