You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: RELEASE_NOTES.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,8 @@
2
2
3
3
## [Unreleased]
4
4
5
+
## 22.0.0-alpha.2 - 2026-03-13
6
+
5
7
### Added
6
8
* Add `--root` option to `fsdocs watch` to override the root URL for generated pages. Useful for serving docs via GitHub Codespaces, reverse proxies, or other remote hosting where `localhost` URLs are inaccessible. E.g. `fsdocs watch --root /` or `fsdocs watch --root https://example.com/docs/`. When not set, defaults to `http://localhost:<port>/` as before. [#924](https://github.com/fsprojects/FSharp.Formatting/issues/924)
7
9
* Fix `fsdocs watch` hot-reload WebSocket to connect using the page's actual host (`window.location.host`) instead of a hardcoded `localhost:<port>`, so hot-reload works correctly in GitHub Codespaces, behind reverse proxies, and over HTTPS. [#924](https://github.com/fsprojects/FSharp.Formatting/issues/924)
@@ -10,12 +12,18 @@
10
12
*`fsdocs convert` now accepts the input file as a positional argument (e.g. `fsdocs convert notebook.ipynb -o notebook.html`). [#1019](https://github.com/fsprojects/FSharp.Formatting/pull/1019)
11
13
*`fsdocs convert` infers the output format from the output file extension when `--outputformat` is not specified (e.g. `-o out.md` implies `--outputformat markdown`). [#1019](https://github.com/fsprojects/FSharp.Formatting/pull/1019)
12
14
*`fsdocs convert` now accepts `-o` as a shorthand for `--output`. [#1019](https://github.com/fsprojects/FSharp.Formatting/pull/1019)
15
+
* Added full XML doc comments (`<summary>`, `<param>`) to `Literate.ParseAndCheckScriptFile` and `Literate.ParseScriptString` to match the documentation style of the other `Literate.Parse*` methods.
16
+
17
+
### Fixed
18
+
*`Literate.ParseScriptString` and `Literate.ParsePynbString` used a hardcoded Windows path (`C:\script.fsx`) as the fallback script filename when neither `path` nor `rootInputFolder` is supplied. The fallback is now a simple platform-neutral `script.fsx`.
19
+
* Add regression tests for cross-assembly tooltip resolution (issue [#1085](https://github.com/fsprojects/FSharp.Formatting/issues/1085)): verify that hover tooltips for types whose fields reference types from other assemblies show the correct type names (not `obj`) when `#r` paths resolve correctly.
13
20
14
21
### Changed
15
22
* Tooltip elements (`div.fsdocs-tip`) now use the [Popover API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API) (Baseline 2024: Chrome 114+, Firefox 125+, Safari 17+). Tooltips are placed in the browser's top layer — no `z-index` needed, always above all other content. Fixes a positioning bug where tooltips appeared offset when the page was scrolled. The previous `display`-toggle fallback has been removed. Tooltips also fade in with a subtle animation. [#422](https://github.com/fsprojects/FSharp.Formatting/issues/422), [#1061](https://github.com/fsprojects/FSharp.Formatting/pull/1061)
16
23
* Generated code tokens no longer use inline `onmouseover`/`onmouseout` event handlers. Tooltips are now triggered via `data-fsdocs-tip` / `data-fsdocs-tip-unique` attributes and a delegated event listener in `fsdocs-tips.js`. The `popover` attribute is also added to API-doc tooltip divs so they use the same top-layer path. [#1061](https://github.com/fsprojects/FSharp.Formatting/pull/1061)
17
24
* Changed `range` fields in `MarkdownSpan` and `MarkdownParagraph` DU cases from `MarkdownRange option` to `MarkdownRange`, using `MarkdownRange.zero` as the default/placeholder value instead of `None`.
18
25
* When no template is provided (e.g. `fsdocs convert` without `--template`), `fsdocs-tip` tooltip divs are no longer included in the output. Tooltips require JavaScript/CSS from a template to function, so omitting them produces cleaner raw output. [#1019](https://github.com/fsprojects/FSharp.Formatting/pull/1019)
26
+
* Use [`scrollbar-gutter: stable`](https://developer.mozilla.org/en-US/docs/Web/CSS/scrollbar-gutter) (Baseline 2024) on scroll containers (`main`, `#fsdocs-main-menu`, mobile menu, search dialog) to reserve scrollbar space and prevent layout shifts when content changes height. Also adds the missing `overflow-y: auto` to `main` so pages that exceed the viewport height are independently scrollable. [#1087](https://github.com/fsprojects/FSharp.Formatting/issues/1087), [#1088](https://github.com/fsprojects/FSharp.Formatting/pull/1088)
Copy file name to clipboardExpand all lines: src/FSharp.Formatting.Literate/Literate.fs
+28-4Lines changed: 28 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -98,7 +98,18 @@ type Literate private () =
98
98
99
99
doc.With(paragraphs = pars)
100
100
101
-
/// Parse F# Script file to LiterateDocument
101
+
/// <summary>
102
+
/// Parse an F# script file (<c>.fsx</c>) to a <seecref="T:FSharp.Formatting.Literate.LiterateDocument"/>,
103
+
/// type-checking it via the F# Compiler Service.
104
+
/// </summary>
105
+
/// <paramname="path">The path to the <c>.fsx</c> script file to parse.</param>
106
+
/// <paramname="fscOptions">Additional F# compiler options (e.g. extra <c>-r:</c> references).</param>
107
+
/// <paramname="definedSymbols">Conditional-compilation symbols to define.</param>
108
+
/// <paramname="references">A map of reference labels to URLs, used to resolve Markdown-style links.</param>
109
+
/// <paramname="fsiEvaluator">An optional FSI evaluator; when supplied, code snippets are executed and their output included.</param>
110
+
/// <paramname="parseOptions">Markdown parse options. Defaults to <seecref="F:FSharp.Formatting.Markdown.MarkdownParseOptions.AllowYamlFrontMatter"/>.</param>
111
+
/// <paramname="rootInputFolder">The root folder used to resolve relative paths within the script. Defaults to the directory containing <paramrefname="path"/>.</param>
112
+
/// <paramname="onError">A callback invoked with each error/warning message encountered during parsing or type-checking. Defaults to <c>ignore</c>.</param>
102
113
static memberParseAndCheckScriptFile
103
114
(
104
115
path:string,
@@ -120,7 +131,20 @@ type Literate private () =
120
131
|> Transformations.formatCodeSnippets path ctx
121
132
|> Transformations.evaluateCodeSnippets ctx
122
133
123
-
/// Parse string as F# Script to LiterateDocument
134
+
/// <summary>
135
+
/// Parse a string containing F# script source code (<c>.fsx</c> syntax) to a
/// <paramname="content">The F# script source code to parse.</param>
140
+
/// <paramname="path">An optional file path used in diagnostics and to resolve relative references. When not supplied, defaults to <c>script.fsx</c> in <paramrefname="rootInputFolder"/> (or just <c>script.fsx</c>).</param>
141
+
/// <paramname="fscOptions">Additional F# compiler options (e.g. extra <c>-r:</c> references).</param>
142
+
/// <paramname="definedSymbols">Conditional-compilation symbols to define.</param>
143
+
/// <paramname="references">A map of reference labels to URLs, used to resolve Markdown-style links.</param>
144
+
/// <paramname="fsiEvaluator">An optional FSI evaluator; when supplied, code snippets are executed and their output included.</param>
145
+
/// <paramname="parseOptions">Markdown parse options. Defaults to <seecref="F:FSharp.Formatting.Markdown.MarkdownParseOptions.AllowYamlFrontMatter"/>.</param>
146
+
/// <paramname="rootInputFolder">The root folder used to resolve relative paths within the script.</param>
147
+
/// <paramname="onError">A callback invoked with each error/warning message encountered during parsing or type-checking. Defaults to <c>ignore</c>.</param>
0 commit comments