Repository navigation
feat: add newcomer onboarding and Wave browser playground - #483
Merged
Merged
Conversation
LunaStev
marked this pull request as ready for review
October 10, 2026 02:51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Newcomers can edit and run their first Wave program directly on the homepage, open
/playground, or edit and run explicitly marked examples directly inside the documentation. The existing onboarding links and visual layout are retained.The HTTP/compiler service is implemented in Wave. Playground and Translation share the reusable
http/library for framing, bounded I/O, responses, and connection cleanup. Each service keeps its own routes and process lifecycle; the Go host remains a single application. A minimal Vue/browser bridge executes the generated WASI module in a disposable Worker. Compilation runs in an isolated, unprivileged container; source, time, memory, output, and process limits are enforced. Programs have no filesystem or network host functions.All platform Wave toolchains are pinned to
v0.2.1-pre-beta, including native modules, WaveEditor, public installers, and the translation foundation. Translation bootstrap now verifies and retains the fixed release archive instead of resolving Nightly.Wave syntax highlighting now follows the pinned compiler in Markdown, source views, and the editable playground. It covers async/await, variants, visibility, explicit memory types, numeric literals, nested comments, and complete Unicode identifiers. Prism automatic DOM rewriting is disabled so highlighting survives direct navigation and refresh.
Documentation uses
wave playgroundfences for embedded editors with Run, Stop, Reset, and inline output. Ordinary Wave fences stay read-only; there is no execution popup or automatic execution. Existing example IDs supply initial stdin; expected output stays in automated test data. The editor displays only actual execution output. A compact toolbar groups Run, Reset, and input settings; input help and execution limits stay collapsed until needed. Idle status stays visually hidden while announcements remain available to assistive technology. After execution starts, a dark terminal panel displays actual output, execution status and exit codes, with distinct error text and keyboard-scrollable output. Seven verified browser-compatible examples are enabled across their translations; live CI checks each with the real Wasm compiler and host.Validation:
go test ./internal/web ./internal/platform; whitespace checks.go test ./...still has three existing failures ininternal/document: the Chinese explicit-memory model wording check and two installer-command expectations. The same failures reproduce at the previous PR headb44a4e1; they are not introduced by this change. CI now also builds the playground container and executes the real Wasm output with the browser host. Windows installer validation runs in the existing CI matrix.Scope: single-file programs with pre-supplied stdin. Incomplete documentation fragments need their surrounding declarations; native/OS-specific examples require a local toolchain. Stop cancels the browser request/Worker; an already accepted server compilation finishes within its own time limit.