Skip to content

Restore the checked web application framework - #33

Merged
softmarshmallow merged 4 commits into
mainfrom
feature/restore-web-app-framework
Jul 22, 2026
Merged

Restore the checked web application framework#33
softmarshmallow merged 4 commits into
mainfrom
feature/restore-web-app-framework

Conversation

@softmarshmallow

Copy link
Copy Markdown
Member

Summary

Restores Uhura's web application meta-framework on top of the 0.4 machine-first language, without adding a compatibility frontend.

  • adds the accepted [framework] web-app profile and one shared project resolver
  • discovers pages, pure UI components, surfaces, and sibling example registrations
  • generates checked, memory-only route and Application modules
  • adds typed, wrapper-free UI composition with exact props/events and acyclic calls
  • wires the CLI, host, Editor, Play, dependency graph, provenance, and annotations through the same resolved project
  • migrates Instagram from the flat UI file to 9 pages, 8 components, and 1 surface while preserving all 91 previews
  • records the contract in RFC 0005 and reconciles current, historical, implementation, widget, and example documentation

Closes #27.

Why

The 0.4 machine rewrite deliberately focused on the kernel and left the previous filesystem application topology behind. Application structure consequently lived in one large authored module, while the CLI and host retained overlapping ideas about project discovery.

This change restores application ergonomics as a checked compilation layer. Authored files remain modular and human-facing; the runtime still receives one deterministic, globally checked program.

Contract

A framework project opts in explicitly:

[framework]
profile = "web-app"
version = 1
machine = "crate::instagram::Instagram"
location = "crate::routing::Location"

The first version deliberately excludes layouts, slots, loaders, component-local state, lifecycle hooks, and a second scheduler. Pure UI components use typed props and emitted events; application state and transitions remain machine-owned.

Validation

  • cargo fmt --all -- --check
  • cargo clippy --locked --workspace --all-targets -- -D warnings
  • cargo test --locked --workspace --all-targets
  • corepack pnpm@10.11.0 -C web check — 283 passed, 2 skipped
  • bash scripts/build-wasm.sh
  • Instagram CLI check — 42 modules and 91 examples, clean
  • A0 application harness check — 4 modules and 12 examples, clean
  • Instagram trace scenario
  • full Spock formatting, Clippy, tests, and Instagram integration check
  • live Editor/Play verification of evidence, annotations, search transitions, static and dynamic routes, and the comments surface; no browser warnings or errors

The Spock integration check continues to report its existing intentional warning for the unchecked provider adapter.

@coderabbitai

coderabbitai Bot commented Jul 22, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 114 files, which is 14 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 552a3dc6-e0ad-4b9f-9175-caf4f63c2d04

📥 Commits

Reviewing files that changed from the base of the PR and between 673ff7b and 4005fe2.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (116)
  • .github/workflows/ci.yml
  • Cargo.toml
  • README.md
  • crates/uhura-check/src/checker.rs
  • crates/uhura-check/src/checker_ir.rs
  • crates/uhura-check/src/icon_fonts.rs
  • crates/uhura-check/src/project_manifest.rs
  • crates/uhura-check/src/provenance.rs
  • crates/uhura-check/src/source.rs
  • crates/uhura-check/src/source/references.rs
  • crates/uhura-check/src/source/ui.rs
  • crates/uhura-check/tests/evidence.rs
  • crates/uhura-check/tests/instagram.rs
  • crates/uhura-check/tests/packages.rs
  • crates/uhura-check/tests/project_manifest.rs
  • crates/uhura-check/tests/ui.rs
  • crates/uhura-cli/Cargo.toml
  • crates/uhura-cli/src/cmd/fmt.rs
  • crates/uhura-cli/src/cmd/project.rs
  • crates/uhura-cli/src/fsio.rs
  • crates/uhura-core/src/graph.rs
  • crates/uhura-core/src/ir.rs
  • crates/uhura-core/src/lib.rs
  • crates/uhura-core/src/render.rs
  • crates/uhura-host/Cargo.toml
  • crates/uhura-host/src/lib.rs
  • crates/uhura-host/src/source.rs
  • crates/uhura-port/src/lib.rs
  • crates/uhura-port/src/standard.rs
  • crates/uhura-project/Cargo.toml
  • crates/uhura-project/src/lib.rs
  • crates/uhura-project/src/resolve.rs
  • crates/uhura-project/src/source.rs
  • crates/uhura-project/src/web_app.rs
  • crates/uhura-project/tests/resolution.rs
  • crates/uhura-syntax/src/ast.rs
  • crates/uhura-syntax/src/format.rs
  • crates/uhura-syntax/src/lexer.rs
  • crates/uhura-syntax/src/parser.rs
  • crates/uhura-syntax/src/ui.rs
  • crates/uhura-syntax/tests/annotations.rs
  • crates/uhura-syntax/tests/fixtures/feed-ui.uhura
  • crates/uhura-syntax/tests/parser.rs
  • crates/uhura-syntax/tests/ui.rs
  • crates/uhura-tests/Cargo.toml
  • crates/uhura-tests/README.md
  • crates/uhura-tests/tests/instagram.rs
  • docs/README.md
  • docs/implementation/README.md
  • docs/rfcs/0003-source-comments-docs-and-annotations.md
  • docs/rfcs/0005-web-application-topology-and-ui-composition.md
  • docs/rfcs/README.md
  • docs/spec/README.md
  • docs/spec/drafts/0.4/README.md
  • docs/spec/drafts/0.4/application.md
  • docs/spec/drafts/0.4/conformance.md
  • docs/spec/drafts/0.4/project.md
  • docs/spec/drafts/0.4/source.md
  • docs/studies/escape-hatches-and-foreign-bindings.md
  • docs/studies/instagram-demo-dogfood.md
  • docs/widgets/drafts/0.4/README.md
  • docs/widgets/drafts/v0/elements/button.md
  • docs/widgets/drafts/v0/elements/icon.md
  • docs/widgets/drafts/v0/elements/img.md
  • docs/widgets/drafts/v0/elements/scroll.md
  • docs/widgets/drafts/v0/elements/view.md
  • examples/README.md
  • examples/instagram/README.md
  • examples/instagram/client/README.md
  • examples/instagram/client/app/create/page.examples.uhura
  • examples/instagram/client/app/create/page.uhura
  • examples/instagram/client/app/p/[id]/page.examples.uhura
  • examples/instagram/client/app/p/[id]/page.uhura
  • examples/instagram/client/app/page.examples.uhura
  • examples/instagram/client/app/page.uhura
  • examples/instagram/client/app/profile/[user]/followers/page.examples.uhura
  • examples/instagram/client/app/profile/[user]/followers/page.uhura
  • examples/instagram/client/app/profile/[user]/following/page.examples.uhura
  • examples/instagram/client/app/profile/[user]/following/page.uhura
  • examples/instagram/client/app/profile/[user]/page.examples.uhura
  • examples/instagram/client/app/profile/[user]/page.uhura
  • examples/instagram/client/app/reels/page.examples.uhura
  • examples/instagram/client/app/reels/page.uhura
  • examples/instagram/client/app/search/page.examples.uhura
  • examples/instagram/client/app/search/page.uhura
  • examples/instagram/client/app/stories/[id]/page.examples.uhura
  • examples/instagram/client/app/stories/[id]/page.uhura
  • examples/instagram/client/components/bottom-nav.examples.uhura
  • examples/instagram/client/components/bottom-nav.uhura
  • examples/instagram/client/components/comment-row.examples.uhura
  • examples/instagram/client/components/comment-row.uhura
  • examples/instagram/client/components/connection-row.examples.uhura
  • examples/instagram/client/components/connection-row.uhura
  • examples/instagram/client/components/notice-bar.examples.uhura
  • examples/instagram/client/components/notice-bar.uhura
  • examples/instagram/client/components/post-card.examples.uhura
  • examples/instagram/client/components/post-card.uhura
  • examples/instagram/client/components/profile-header.examples.uhura
  • examples/instagram/client/components/profile-header.uhura
  • examples/instagram/client/components/reel-card.examples.uhura
  • examples/instagram/client/components/reel-card.uhura
  • examples/instagram/client/components/stories-tray.examples.uhura
  • examples/instagram/client/components/stories-tray.uhura
  • examples/instagram/client/evidence/scenarios.uhura
  • examples/instagram/client/example-values.uhura
  • examples/instagram/client/host.toml
  • examples/instagram/client/machine.uhura
  • examples/instagram/client/presentation.uhura
  • examples/instagram/client/routing.uhura
  • examples/instagram/client/styles/theme.css
  • examples/instagram/client/surfaces/comments-sheet.examples.uhura
  • examples/instagram/client/surfaces/comments-sheet.uhura
  • examples/instagram/client/uhura.toml
  • examples/instagram/client/ui.uhura
  • web/src/editor/editor-state.ts
  • web/src/editor/tests/editor-state.test.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Review on demand using usage pricing
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/restore-web-app-framework

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@softmarshmallow
softmarshmallow marked this pull request as ready for review July 22, 2026 16:40
@softmarshmallow
softmarshmallow merged commit b53d0e6 into main Jul 22, 2026
2 checks passed
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.

Study: restore application framework topology above Uhura 0.4

1 participant