# Veikart

> Det som står igjen å lage i Fristil, og hva som alt er levert av den opprinnelige planen.

Fristil er før 1.0. Denne siden viser hva som står igjen, og hva som alt er levert av den opprinnelige planen. Endringer en konsument merker, står som før i [versjonsloggen](/versjonslogg.md), med brytende endringer under «Brytende».

## Retningen

> Én kontrakt, skrevet av Fristil. Lukkede typer der språket har dem. Én sjekk overalt ellers. Det du overtar, eier du.

Stavekontrollen, det som leser markupen din og sier fra om klasser som ikke finnes, felt uten ledetekst og id-er som ikke peker på noe, er én kjerne skrevet i Rust og bygget til WebAssembly. Den samme fila kjører i Node, på JVM-en og i hvert språk som har en kjøretid for WebAssembly, og gir det samme svaret overalt.

Alt leveres gjennom kanalene språket ditt allerede bruker: npm og Maven Central, og kildekoden for `cargo install`. Utvidelsene ligger på editorenes egne markedsplasser, og `fristil.jar` og `fristil.wasm` ved hver utgivelse på GitHub. Ingenting krever at du stoler på en tredjeparts pakkekilde, og ingenting du laster ned, krever et sertifikat for å kjøre.

## Det som står igjen

- **Fullføring og forklaring i språkserveren.** `fristil lsp` gir i dag funn og rettelser. Fullføringen og forklaringen kommer fortsatt fra utvidelsen for VS Code og fra `web-types.json` i JetBrains, og flyttes til serveren, så de andre editorene får det samme.
- **En utvidelse for Zed.** Zed starter bare språkservere en Zed-utvidelse har meldt inn.
- **Kommandolinja på crates.io.** I dag installeres den med `cargo install --git`.
- **Stegindikator.** En flerstegs søknad trenger å vise hvor brukeren er. Det er `aria-current="step"` og ren CSS, og det hører sammen med framdriftsstolpen.

## Det som er levert

Det meste ble gitt ut i 0.32.0, og resten i 0.34.0, på npm og på Maven Central, og i IntelliJ-pluginen 0.3.0:

- **Kontrakten** er én fil, `manifest.json`, skrevet av Fristil fra koden: klassene og elementene, de lovlige verdiene og hva hver byggefunksjon svarer, og fra 0.34.0 hva hver klasse tar som innhold, hvilke deler den består av, og tokenene. Alle verktøyene leser den.
- **Fristil for Kotlin** på Maven Central fra 0.33.0, med byggefunksjonene som `enum`-er, `assertFristil(html)` i vanlige tester, manifestet med typer, utvidelser for kotlinx.html og CSS-en som WebJar, og fra 0.34.0 temaet som funksjoner og byggefunksjonene i manifestet. Se [Kotlin og Java](/kotlin.md).
- **Én stavekontroll** i Rust for `fristil sjekk`, `@fristil/designsystem/diagnostics`, VS Code og IntelliJ-pluginen fra 0.3.0, med linje, kolonne, regelnavn og undertrykking med en kommentar. Regelen for en del som står to ganger kom i 0.34.0.
- **Temaene** bygges og sjekkes av den samme kjernen, fra npm og fra en Gradle-oppgave, og fra 0.34.0 fra Maven-pakken.
- **Kommandolinja** kjører med `npx`, `java -jar fristil.jar`, wasmtime og `cargo install`. `fristil overta` gir kopien et eget navn, og Gradle-pluginen sjekker maler som en del av bygget. Se [Kommandolinjen](/kommandolinjen.md).
- **Språkserveren**, `fristil lsp`, for VS Code, Neovim og Helix. Se [Editoren](/editoren.md#spr%C3%A5kserveren).
- **Sjekk av den ferdige siden:** `--css` sammenligner stilarkene med kontrakten, og `diagnoseRendered(page)` og `assertFristilRendered` sjekker siden slik nettleseren har rendret den.
