From 59dea811ee82d2d0bece63077cdda5220567af5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Tolga=20Cang=C3=B6z?= Date: Sat, 10 Oct 2026 13:10:05 +0300 Subject: [PATCH 1/7] Add `https` to the docs redirect link --- docs/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.html b/docs/index.html index e12d274c..e9ca7b73 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,6 +5,6 @@ Redirecting... -

If you are not redirected automatically, click here.

+

If you are not redirected automatically, click here.

From a0e4014e8e77bddfadca827eba9944d1c4b88d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Tolga=20Cang=C3=B6z?= Date: Sat, 10 Oct 2026 13:10:05 +0300 Subject: [PATCH 2/7] Point the bug-report template at the live FAQ --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 0ee5a35b..ba169a71 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -35,7 +35,7 @@ Please provide the following version information: **Confirmation** Please confirm the following: -- [ ] I have read the FAQ (https://docs.fastht.ml/explains/faq.html) +- [ ] I have read the FAQ (https://www.fastht.ml/docs/explains/faq.html) - [ ] I have provided a minimal reproducible example - [ ] I have included the versions of fastlite, fastcore, and fasthtml - [ ] I understand that this is a volunteer open source project with no commercial support. From 47c551cf2805b788e443a61cc82798c547de7f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Tolga=20Cang=C3=B6z?= Date: Sat, 10 Oct 2026 13:11:26 +0300 Subject: [PATCH 3/7] Link `dream-html` to its own repository --- README.md | 2 +- nbs/index.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eb804994..fd007690 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,7 @@ If you’re just interested in functional HTML components, rather than a full HT - [hiccl](https://github.com/garlic0x1/hiccl): HTML generation library for Common Lisp inspired by Clojure’s Hiccup - [Falco.Markup](https://github.com/pimbrouwers/Falco): F# HTML DSL and web framework with type-safe HTML generation - [Lucid](https://github.com/chrisdone/lucid): Type-safe HTML generation for Haskell using monad transformers -- [dream-html](https://github.com/aantron/dream): Part of the Dream web framework for OCaml, provides type-safe HTML templating +- [dream-html](https://github.com/yawaramin/dream-html): Type-safe HTML markup rendering for the OCaml Dream web framework For other hypermedia application platforms, not based on HTMX, take a look at: diff --git a/nbs/index.ipynb b/nbs/index.ipynb index cabd98fd..1ff7d765 100644 --- a/nbs/index.ipynb +++ b/nbs/index.ipynb @@ -193,7 +193,7 @@ "- [hiccl](https://github.com/garlic0x1/hiccl): HTML generation library for Common Lisp inspired by Clojure's Hiccup\n", "- [Falco.Markup](https://github.com/pimbrouwers/Falco): F# HTML DSL and web framework with type-safe HTML generation\n", "- [Lucid](https://github.com/chrisdone/lucid): Type-safe HTML generation for Haskell using monad transformers\n", - "- [dream-html](https://github.com/aantron/dream): Part of the Dream web framework for OCaml, provides type-safe HTML templating\n", + "- [dream-html](https://github.com/yawaramin/dream-html): Type-safe HTML markup rendering for the OCaml Dream web framework\n", "\n", "For other hypermedia application platforms, not based on HTMX, take a look at:\n", "\n", From 8fe38fdb0878aca443441333bd5b14310a8bb830 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Tolga=20Cang=C3=B6z?= Date: Sat, 10 Oct 2026 13:11:53 +0300 Subject: [PATCH 4/7] Point index links at their current URLs --- README.md | 6 +++--- nbs/index.ipynb | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index fd007690..3df940a6 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Because FastHTML is newer than most LLMs, AI systems like Cursor, ChatGPT, Claud - [/llms-ctx.txt](https://www.fastht.ml/docs/llms-ctx.txt) -This example is in a format based on recommendations from Anthropic for use with [Claude Projects](https://support.anthropic.com/en/articles/9517075-what-are-projects). This works so well that we’ve actually found that Claude can provide even better information than our own documentation! For instance, read through [this annotated Claude chat](https://gist.github.com/jph00/9559b0a563f6a370029bec1d1cc97b74) for some great getting-started information, entirely generated from a project using the above text file as context. +This example is in a format based on recommendations from Anthropic for use with [Claude Projects](https://support.claude.com/en/articles/9517075-what-are-projects). This works so well that we’ve actually found that Claude can provide even better information than our own documentation! For instance, read through [this annotated Claude chat](https://gist.github.com/jph00/9559b0a563f6a370029bec1d1cc97b74) for some great getting-started information, entirely generated from a project using the above text file as context. If you use Cursor, type `@doc` then choose “*Add new doc*”, and use the /llms-ctx.txt link above. The context file is auto-generated from our [`llms.txt`](https://llmstxt.org/) (our proposed standard for providing AI-friendly information)—you can generate alternative versions suitable for other models as needed. @@ -113,13 +113,13 @@ If you’re just interested in functional HTML components, rather than a full HT - [elm-html](https://package.elm-lang.org/packages/elm/html/latest/): Elm’s built-in HTML library with a type-safe functional approach - [hiccup](https://github.com/weavejester/hiccup): Popular library for representing HTML in Clojure using vectors - [hiccl](https://github.com/garlic0x1/hiccl): HTML generation library for Common Lisp inspired by Clojure’s Hiccup -- [Falco.Markup](https://github.com/pimbrouwers/Falco): F# HTML DSL and web framework with type-safe HTML generation +- [Falco.Markup](https://github.com/falcoframework/Falco): F# HTML DSL and web framework with type-safe HTML generation - [Lucid](https://github.com/chrisdone/lucid): Type-safe HTML generation for Haskell using monad transformers - [dream-html](https://github.com/yawaramin/dream-html): Type-safe HTML markup rendering for the OCaml Dream web framework For other hypermedia application platforms, not based on HTMX, take a look at: - [Hotwire/Turbo](https://turbo.hotwired.dev/): Rails-oriented framework that similarly uses HTML-over-the-wire -- [LiveView](https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html): Phoenix framework’s solution for building interactive web apps with minimal JavaScript +- [LiveView](https://phoenix-live-view.hexdocs.pm/Phoenix.LiveView.html): Phoenix framework’s solution for building interactive web apps with minimal JavaScript - [Unpoly](https://unpoly.com/): Another HTML-over-the-wire framework with progressive enhancement - [Livewire](https://laravel-livewire.com/): Laravel’s take on building dynamic interfaces with minimal JavaScript diff --git a/nbs/index.ipynb b/nbs/index.ipynb index 1ff7d765..95f346d9 100644 --- a/nbs/index.ipynb +++ b/nbs/index.ipynb @@ -123,7 +123,7 @@ "\n", "- [/llms-ctx.txt](https://www.fastht.ml/docs/llms-ctx.txt)\n", "\n", - "This example is in a format based on recommendations from Anthropic for use with [Claude Projects](https://support.anthropic.com/en/articles/9517075-what-are-projects). This works so well that we've actually found that Claude can provide even better information than our own documentation! For instance, read through [this annotated Claude chat](https://gist.github.com/jph00/9559b0a563f6a370029bec1d1cc97b74) for some great getting-started information, entirely generated from a project using the above text file as context.\n", + "This example is in a format based on recommendations from Anthropic for use with [Claude Projects](https://support.claude.com/en/articles/9517075-what-are-projects). This works so well that we've actually found that Claude can provide even better information than our own documentation! For instance, read through [this annotated Claude chat](https://gist.github.com/jph00/9559b0a563f6a370029bec1d1cc97b74) for some great getting-started information, entirely generated from a project using the above text file as context.\n", "\n", "If you use Cursor, type `@doc` then choose \"*Add new doc*\", and use the /llms-ctx.txt link above. The context file is auto-generated from our [`llms.txt`](https://llmstxt.org/) (our proposed standard for providing AI-friendly information)---you can generate alternative versions suitable for other models as needed." ] @@ -191,14 +191,14 @@ "- [elm-html](https://package.elm-lang.org/packages/elm/html/latest/): Elm's built-in HTML library with a type-safe functional approach\n", "- [hiccup](https://github.com/weavejester/hiccup): Popular library for representing HTML in Clojure using vectors\n", "- [hiccl](https://github.com/garlic0x1/hiccl): HTML generation library for Common Lisp inspired by Clojure's Hiccup\n", - "- [Falco.Markup](https://github.com/pimbrouwers/Falco): F# HTML DSL and web framework with type-safe HTML generation\n", + "- [Falco.Markup](https://github.com/falcoframework/Falco): F# HTML DSL and web framework with type-safe HTML generation\n", "- [Lucid](https://github.com/chrisdone/lucid): Type-safe HTML generation for Haskell using monad transformers\n", "- [dream-html](https://github.com/yawaramin/dream-html): Type-safe HTML markup rendering for the OCaml Dream web framework\n", "\n", "For other hypermedia application platforms, not based on HTMX, take a look at:\n", "\n", "- [Hotwire/Turbo](https://turbo.hotwired.dev/): Rails-oriented framework that similarly uses HTML-over-the-wire\n", - "- [LiveView](https://hexdocs.pm/phoenix_live_view/Phoenix.LiveView.html): Phoenix framework's solution for building interactive web apps with minimal JavaScript\n", + "- [LiveView](https://phoenix-live-view.hexdocs.pm/Phoenix.LiveView.html): Phoenix framework's solution for building interactive web apps with minimal JavaScript\n", "- [Unpoly](https://unpoly.com/): Another HTML-over-the-wire framework with progressive enhancement\n", "- [Livewire](https://laravel-livewire.com/): Laravel's take on building dynamic interfaces with minimal JavaScript" ] From 60501202872f32363a74467ac550a792102f380d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Tolga=20Cang=C3=B6z?= Date: Sat, 10 Oct 2026 13:12:22 +0300 Subject: [PATCH 5/7] Use `e.g.` for the gallery examples --- README.md | 2 +- nbs/index.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3df940a6..5016bfa3 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ The capabilities of FastHTML are vast and growing, and not all the features and Then explore the small but growing third-party ecosystem of FastHTML tutorials, notebooks, libraries, and components: -- [FastHTML Gallery](https://gallery.fastht.ml): Learn from minimal examples of components (ie chat bubbles, click-to-edit, infinite scroll, etc) +- [FastHTML Gallery](https://gallery.fastht.ml): Learn from minimal examples of components (e.g. chat bubbles, click-to-edit, infinite scroll, etc.) - [How to Build a Simple Login System in FastHTML](https://blog.mariusvach.com/posts/login-fasthtml) by Marius Vach - Your tutorial here! diff --git a/nbs/index.ipynb b/nbs/index.ipynb index 95f346d9..279ff56c 100644 --- a/nbs/index.ipynb +++ b/nbs/index.ipynb @@ -158,7 +158,7 @@ "\n", "Then explore the small but growing third-party ecosystem of FastHTML tutorials, notebooks, libraries, and components:\n", "\n", - "- [FastHTML Gallery](https://gallery.fastht.ml): Learn from minimal examples of components (ie chat bubbles, click-to-edit, infinite scroll, etc)\n", + "- [FastHTML Gallery](https://gallery.fastht.ml): Learn from minimal examples of components (e.g. chat bubbles, click-to-edit, infinite scroll, etc.)\n", "- [How to Build a Simple Login System in FastHTML](https://blog.mariusvach.com/posts/login-fasthtml) by Marius Vach\n", "- Your tutorial here!\n", "\n", From 3aa037f546bd4150d4b09a55850ae6057a93d524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Tolga=20Cang=C3=B6z?= Date: Sat, 10 Oct 2026 15:45:51 +0300 Subject: [PATCH 6/7] Call it clickable text instead of a link --- README.md | 2 +- nbs/index.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 5016bfa3..6b4e58ce 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ def get(): return P('Nice to be here!') -You now have a page with a clickable element that changes the text when clicked. When clicking on this link, the server will respond with an “HTML partial”—that is, just a snippet of HTML which will be inserted into the existing page. In this case, the returned element will replace the original P element (since that’s the default behavior of HTMX) with the new version returned by the second route. +You now have a page with a clickable element that changes the text when clicked. When clicking on this clickable text, the server will respond with an “HTML partial”—that is, just a snippet of HTML which will be inserted into the existing page. In this case, the returned element will replace the original P element (since that’s the default behavior of HTMX) with the new version returned by the second route. This “hypermedia-based” approach to web development is a powerful way to build web applications. diff --git a/nbs/index.ipynb b/nbs/index.ipynb index 279ff56c..ca8cb67d 100644 --- a/nbs/index.ipynb +++ b/nbs/index.ipynb @@ -101,7 +101,7 @@ "def get(): return P('Nice to be here!')\n", "```\n", "\n", - "You now have a page with a clickable element that changes the text when clicked. When clicking on this link, the server will respond with an \"HTML partial\"---that is, just a snippet of HTML which will be inserted into the existing page. In this case, the returned element will replace the original P element (since that's the default behavior of HTMX) with the new version returned by the second route.\n", + "You now have a page with a clickable element that changes the text when clicked. When clicking on this clickable text, the server will respond with an \"HTML partial\"---that is, just a snippet of HTML which will be inserted into the existing page. In this case, the returned element will replace the original P element (since that's the default behavior of HTMX) with the new version returned by the second route.\n", "\n", "This \"hypermedia-based\" approach to web development is a powerful way to build web applications." ] From 93b7aaf69c580503bc7d8cb0390230af024b868d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=2E=20Tolga=20Cang=C3=B6z?= Date: Sat, 10 Oct 2026 15:29:09 +0300 Subject: [PATCH 7/7] Point the quickstart `UploadFile` links at `starlette.dev` --- nbs/tutorials/quickstart_for_web_devs.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nbs/tutorials/quickstart_for_web_devs.ipynb b/nbs/tutorials/quickstart_for_web_devs.ipynb index d782ff15..92f1a85d 100644 --- a/nbs/tutorials/quickstart_for_web_devs.ipynb +++ b/nbs/tutorials/quickstart_for_web_devs.ipynb @@ -1664,7 +1664,7 @@ "source": [ "1. Every form rendered with the `Form` FT component defaults to `enctype=\"multipart/form-data\"`\n", "2. Don't forget to set the `Input` FT Component's type to `file`\n", - "3. The upload view should receive a [Starlette UploadFile](https://www.starlette.io/requests/#request-files) type. You can add other form variables\n", + "3. The upload view should receive a [Starlette UploadFile](https://starlette.dev/requests/#request-files) type. You can add other form variables\n", "4. We can access the metadata of the card (filename, size, content_type, headers), a quick and safe process. We set that to the card variable\n", "5. In order to access the contents contained within a file we use the `await` method to read() it. As files may be quite large or contain bad data, this is a seperate step from accessing metadata\n", "6. This step shows how to use Python's built-in `pathlib.Path` library to write the file to disk." @@ -1734,7 +1734,7 @@ "source": [ "1. Every form rendered with the `Form` FT component defaults to `enctype=\"multipart/form-data\"`\n", "2. Don't forget to set the `Input` FT Component's type to `file` and assign the multiple attribute to `True`\n", - "3. The upload view should receive a `list` containing the [Starlette UploadFile](https://www.starlette.io/requests/#request-files) type. You can add other form variables\n", + "3. The upload view should receive a `list` containing the [Starlette UploadFile](https://starlette.dev/requests/#request-files) type. You can add other form variables\n", "4. Iterate through the files\n", "5. We can access the metadata of the card (filename, size, content_type, headers), a quick and safe process. We add that to the cards variable\n", "6. In order to access the contents contained within a file we use the `await` method to read() it. As files may be quite large or contain bad data, this is a seperate step from accessing metadata\n",