Skip to content

Add native Kotlin, Scala and F# API references - #62

Merged
tony merged 2 commits into
mainfrom
feat-language-reference
Oct 1, 2026
Merged

tony merged 2 commits into
mainfrom
feat-language-reference

Conversation

@tony

@tony tony commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Kotlin, Scala and F# currently route readers to guide-only references. This adds 897 native API pages using the existing reference layout, navigation, Markdown export and port switcher.

  • Extract Kotlin declarations and generated coroutine extensions, Scala 3 opaque types, extensions, exported companion fields and Cats Effect/Ox APIs, and F# public signatures through FSharp.Compiler.Service.
  • Preserve overloads, imports, curried parameters, documentation and source locations. Exclude private declarations and stop on malformed public syntax.
  • Refresh the parent Java and .NET models to the same source revisions, including generated Java query fields. Update moved Java command APIs and stale documentation links.
  • Reject inherited object properties such as toString when resolving builtin documentation URLs.
  • Link parent-library types and package generated sources with the selected version. Keep each library's reference separate from its parent's companion products.
  • Record native reference-link baselines after excluding 30 invalid Kotlin toString links; link the parent JUnit context and .NET character types without relaxing their existing limits.
  • Preserve full signatures for standalone type aliases and member cards for Scala opaque types. The Lua link floor remains unchanged.
  • Serve generated JVM source extensions through the CloudFront file rule.
  • Rebuild the model during source-bound publication and install the corresponding JVM or .NET tools.

Verification: all five facade/parent model freshness checks pass; the outer suite passes in 50.63 seconds. Desktop and 390px browser checks cover both themes, API drawer controls, generated source links and F# parent-type links. Native malformed F# input fails, and removing namespace resolution makes the new type-link regression check fail.

The browser suite now renders the production TypeScript reference page in its root fixture instead of starting a third Vite server. The Scala examples index links to complete programs instead of including an excerpt dependent on an undisplayed helper. Concept-page expansion is a separate change. The inherited-property regression fails before the fix and passes after it; none of the 457 rendered Scala pages contains a function serialized as a URL.

@tony
tony force-pushed the feat-language-reference branch 5 times, most recently from 88de8ae to 0ab2354 Compare October 1, 2026 01:36
why: These libraries had guide-only reference pages, so readers could not
browse their native methods, signatures or source with the shared API UI.

what:
- Parse Kotlin and Scala declarations, including generated extensions,
  companions, overloads, exported fields and Scala Cats Effect/Ox APIs.
- Read F# public signature files through FSharp.Compiler.Service,
  retaining curried parameters, union cases and module members.
- Render native API entries with sidebars, Markdown exports, type
  links, versioned generated sources and core-only product boundaries.
- Refresh Java/.NET parent models and generated Java query fields.
- Record link baselines for the native declarations and preserve the
  existing parent thresholds by linking JUnit context and .NET chars.
- Allow generated JVM sources through the CloudFront file rule.
- Exclude inherited object properties from builtin URL lookup.
- Re-extract source-bound publications with their required native SDKs.
- Remove a Scala excerpt that depended on an undisplayed runtime helper.
- Reuse the production reference page in the browser fixture, avoiding
  a third Vite startup while retaining the example ownership check.

verification: Native model freshness checks pass for the three libraries and their Java/.NET parents.
The outer loop passes in 52.08s; reference browser checks cover desktop,
phone widths, source links and both themes. Malformed F# input fails in
its native parser. Concept-page expansion follows separately.
why: Adding Scala opaque types moved every standalone Lua alias into
     an empty member card. Kotlin link baselines also counted 30 invalid
     toString URLs that the builtin resolver now correctly rejects.

what:
- Render memberless aliases in full while keeping opaque type members
- Verify Lua aliases and Scala opaque types keep their intended layout
- Record Kotlin link counts after removing inherited object properties
tony added a commit that referenced this pull request Oct 1, 2026
what:
- Include the reviewed native reference fixes in the concepts branch.
- Retain standalone alias signatures and corrected Kotlin link counts.

why:
- Concept links and publication checks share the API reference renderer.
@tony
tony deployed to docs-preview October 1, 2026 02:30 — with GitHub Actions Active
@tony
tony merged commit 8351d80 into main Oct 1, 2026
3 checks passed
@tony
tony deployed to docs-preview-cleanup October 1, 2026 10:36 — with GitHub Actions Active

This branch was successfully deployed

2 active deployments
docs-preview-cleanup — fc6d0d8d Deployed Oct 1, 2026 by tony via cleanup #55
docs-preview — fc6d0d8d Deployed Oct 1, 2026 by tony via publish-preview / publish #374
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant