版本发布 8
## Changes * Add deprecation notice to the `deploy` command. #1972 **Full Changelog**: https://github.com/observablehq/framework/compare/v1.13.2...v1.13.3
## Bug fix * Fix [SQLite](https://observablehq.com/framework/lib/sqlite) implicit dependencies. #1907 #1910 **Full Changelog**: https://github.com/observablehq/framework/compare/v1.13.1...v1.13.2
## Bug fixes * Fix import of `npm:react-dom` for React 19. #1866 #1872 * Fix module hash when a referenced file’s modification time changes, but not its contents. #1836 #1837 **Full Changelog**: https://github.com/observablehq/framework/compare/v1.13.0...v1.13.1
## New features * [**DuckDB 1.1.1**](https://duckdb.org/2024/09/09/announcing-duckdb-110.html) and [**DuckDB-Wasm 1.29.0**](https://github.com/duckdb/duckdb-wasm/releases/tag/v1.29.0)! 🐤 #1734 * Support for, and [**self-hosting**](https://observablehq.com/framework/lib/duckdb#self-hosting-of-extensions) of, [**DuckDB extensions**](https://observablehq.com/framework/lib/duckdb#extensions)! 🐤 #1734 * [**Observable Runtime 6.0.0**](https://github.com/observablehq/runtime/releases/tag/v6.0.0) for faster async (_e.g._, DuckDB) reactivity 🏃💨 #1748 * Support [secure sharing](https://observablehq.com/documentation/data-apps/sharing) of private [exported modules](https://observablehq.com/framework/embeds) on [Observable Cloud](https://observablehq.com/platform/cloud) 🔒 #1731 * Support [analytics](https://observablehq.com/documentation/data-apps/analytics) of [parameterized routes](https://observablehq.com/framework/params) & [exported modules](https://observablehq.com/framework/embeds) on [Observable Cloud](https://observablehq.com/platform/cloud) 📊 #1776 * Deprecate **cleanUrls** in favor of [**preserveIndex** and **preserveExtension**](https://observablehq.com/framework/config#preserve-index) to support S3-like hosting #1784 ## Bug fixes and other improvements * Fix automatic cleaning of `dist` when building on Windows #1792 #1804 * Add explicit `<html>`, `<head>`, and `<body>` tags to generated HTML #1656 #1732 * Suppress checkboxes on tables in [SQL code blocks](https://observablehq.com/framework/sql) #1740 * Fix resolution of absolute paths in [SQL front matter](https://observablehq.com/framework/sql) #1796 #1797 * Avoid a top-level await bug on Safari in [SQLite](https://observablehq.com/framework/lib/sqlite) #1750 #1759 * Fix importing of [`npm:sql.js`](https://observablehq.com/framework/lib/sqlite) by adding an ES module export shim #1759 * Fix resolution of absolute global imports #1755 #1758 * Fix deduplication of resolved imports #1718 #1719 * Fix [parameterized routing](https://observablehq.com/framework/params) when a parameter value is its name in brackets #1760 #1767 * Support the `NO_COLOR` environment variable (via [picocolors](https://github.com/alexeyraspopov/picocolors)) #1769 * Remove automatic redirect to strip basic authentication #1733 * Fix updating the app title when [deploying](https://observablehq.com/framework/deploying) to [Observable Cloud](https://observablehq.com/platform/cloud) #1715 * Various documentation improvements #1765 #1722 #1729 #1738 #1736 #1803 #1783 #1785 ## New Contributors * @angrytongan made their first contribution in https://github.com/observablehq/framework/pull/1750 **Full Changelog**: https://github.com/observablehq/framework/compare/v1.12.0...v1.13.0
## New features * [**Exported modules**](https://observablehq.com/framework/embeds) for embedded analytics! 🎉 #1084 #1637 * [**Exported files**](https://observablehq.com/framework/embeds#exported-files) for hotlinking images (and more) 🖼️ #1637 * [**JSR (`jsr:`) imports**](https://observablehq.com/framework/imports#jsr-imports) for the JavaScript Registry 📦 #956 #957 * New [**home** config option](https://observablehq.com/framework/config#home) for more sidebar customization, such as a logo 🏠 #1689 * Redesigned [top-fixed header](https://observablehq.com/framework/config#header) 💅 #1682 * Redesigned center-column layout on wide screens →← #657 #1023 #1682 * Enable CORS on the preview server with `--cors` #1583 #1637 ## Bug fixes and other improvements * Allow [`import.meta.resolve`](https://observablehq.com/framework/imports#import-resolutions) to be used for local files #1008 #1696 * Favor [`observablehq:stdlib`](https://observablehq.com/framework/imports#observable-imports) over `npm:@observablehq/stdlib` #1670 * Detect broken links during build #363 #1683 #1698 * Detect missing files during build #1650 #1651 * Detect file name conflicts during build #1367 #1374 * Fix crash during preview with temporary files (_e.g._, Vim) #1498 #1700 * Fix content hashes for modules that import builtins #1688 * Fix reactivity during preview for data loaders from modules #1661 #1662 * Fix reactivity during preview for parameterized modules 8cb2877c2affc1adb119d3cc7468f48241b167ce #1660 * Use registry.npmjs.org instead of data.jsdelivr.com to resolve npm package versions #1697 **Full Changelog**: https://github.com/observablehq/framework/compare/v1.11.0...v1.12.0
## New features * [**Parameterized routes**](https://observablehq.com/framework/params) for dynamic routing! 🎉 #245 #1523 * [**Page loaders**](https://observablehq.com/framework/page-loaders) for server-side rendering! 🚀 #931 #1216 #1523 * [**TypeScript**](https://observablehq.com/framework/javascript#type-script) fenced code blocks and modules! 🤓 #79 #129 #1632 * [`FileAttachment`](https://observablehq.com/framework/files) now exposes a `file.size` property. #1608 * The new [**globalStylesheets** config option](https://observablehq.com/framework/config#global-stylesheets) gives more control over styling. #1597 ## Bug fixes and other improvements * The `build` command now empties the output root before building. #1568 * The `convert` command now outputs to the source root by default. #1579 * Fix rendering of command-line select prompts with many choices. #1618 * `Inputs.file` now supports the `file.href` property. #1608 * Pages now include a `<meta name="generator">` tag. #1609 * Use `CREATE TABLE` for small Parquet files with `DuckDBClient.of`. #1617 * Fix building when SQL front matter refers to a remote file. #1635 #1636 ## New examples and documentation * New guide on [converting notebooks](https://observablehq.com/framework/convert) and the `convert` command! #1576 #1580 * [`loader-bigquery`](https://observablehq.observablehq.cloud/framework-example-loader-google-bigquery/) - Load data from Google BigQuery (Thanks, @dirkbosman!) #1581 * [`datawrapper-api`](https://observablehq.observablehq.cloud/framework-example-datawrapper-api/) - Embed a Datawrapper chart (Thanks, @palewire!) #1585 #1611 ## New contributors * @vorburger made their first contribution in https://github.com/observablehq/framework/pull/1572 * @CobusT made their first contribution in https://github.com/observablehq/framework/pull/1576 **Full Changelog**: https://github.com/observablehq/framework/compare/v1.10.1...v1.11.0
## New features * Allow opt-out of [link normalization](https://observablehq.com/framework/markdown#links) via `<a href rel="external">`. #1560 ## Bug fixes and other improvements * Fix crash attempting to preserve expanded state. #1559 #1561 * Fix content hashes of global imports in `_observablehq`, `_npm`, and more. #1555 #1557 * Ignore height changes with [`resize`](https://observablehq.com/framework/javascript#resize-render) for unary render functions. #1563 #1564 * Improve [slugify](https://github.com/sindresorhus/slugify) algorithm used for Markdown header anchors. #1552 #1562 **Full Changelog**: https://github.com/observablehq/framework/compare/v1.10.0...v1.10.1
## New features * Add [`FileAttachment.arquero`](https://observablehq.com/framework/lib/arquero) for loading an Arrow, Parquet, CSV, TSV, or JSON file as an Arquero table. #1509 * `Inputs.table` now supports the **select** option to suppress user selection (checkboxes). #1541 * In narrow windows, you can now close the floating sidebar using Escape. #1526 * The inspector now preserves the deep expanded state for dynamic values. #1458 #1475 ## Bug fixes and other improvements * Fix a bug where expanded inspected values would not be cleaned up on invalidation. #1456 #1457 * Fix a crash when expanding inspected values while certain text is selected. #1475 * Fix a spurious error when using Control-C to terminate the preview server. #1459 #1460 * Fix modulepreload for local components during preview. #1537 * Optimize imports of `npm:react-dom`. #1467 * Tweak format of project identifiers in prompts during deploy. #1451 * Fix spinner rendering when not in a TTY. #1446 #1447 #1473 ## New examples New showcase examples: * [`hotel-bookings`](https://observablehq.observablehq.cloud/framework-example-hotel-bookings) - Resort hotel bookings #1337 * [`us-dams`](https://observablehq.observablehq.cloud/framework-example-us-dams/) - U.S. dam conditions #1350 New technique examples: * [`loader-rust-to-json`](https://observablehq.observablehq.cloud/framework-example-loader-rust-to-json/) - Generate JSON from Rust #1452 * [`loader-python-to-csv`](https://observablehq.observablehq.cloud/framework-example-loader-python-to-csv/) - Generate CSV from Python #1461 #1466 * [`loader-airtable`](https://observablehq.observablehq.cloud/framework-example-loader-airtable/) - Load data from Airtable #1477 * [`loader-elasticsearch`](https://observablehq.observablehq.cloud/framework-example-loader-elasticsearch/) - Load data from Elasticsearch #1490 * [`loader-census`](https://observablehq.observablehq.cloud/framework-example-loader-census/) - Load and transform shapefiles from the U.S. Census Bureau #1496 * [`loader-canvas-to-png`](https://observablehq.observablehq.cloud/framework-example-loader-canvas-to-png/) - Generate PNG using node-canvas #1514 * [`loader-python-to-parquet`](https://observablehq.observablehq.cloud/framework-example-loader-python-to-parquet) - Generate Apache Parquet from Python #1422 * [`loader-r-to-zip`](https://observablehq.observablehq.cloud/framework-example-loader-r-to-zip/) - Generate ZIP from R #1423 ## New contributors * @walterra made their first contribution in https://github.com/observablehq/framework/pull/1490 * @taniki made their first contribution in https://github.com/observablehq/framework/pull/1505 * @palewire made their first contribution in https://github.com/observablehq/framework/pull/1516 * @gvanhorne made their first contribution in https://github.com/observablehq/framework/pull/1513 * @juba made their first contribution in https://github.com/observablehq/framework/pull/1530 **Full Changelog**: https://github.com/observablehq/framework/compare/v1.9.0...v1.10.0