# Cloudhal: Proposals

- [Proposals (RFCs)](https://cloudhal.dev/docs/rfcs.md): Every proposals (rfcs) in Cloudhal's repository, with its status.
- [RFC-0001: Site Graph contracts v1](https://cloudhal.dev/docs/rfcs/0001-site-graph.md): A site is a graph of typed, individually versioned nodes. Version 1 defines seven contracts — Project, Site, Page, Section, ContentEntry, Snapshot, SkillManifest — as JSON Schema with generated TypeScript and Rust…
- [RFC-0002: Taxonomy (categories, tags) and redirects](https://cloudhal.dev/docs/rfcs/0002-taxonomy-and-redirects.md): Categories, tags and custom taxonomies become graph nodes: a Taxonomy holds the rules (hierarchy, who may add terms, archive and feed settings), a Term is one concept with per-locale names and synonyms, and content…
- [RFC-0003: Navigation (menus)](https://cloudhal.dev/docs/rfcs/0003-navigation.md): A site gets named menus (primary, footer, later sidebar for docs), each a Menu node with rev, CAS and snapshots, holding an ordered tree of items.
- [RFC-0004: Assets and the media library](https://cloudhal.dev/docs/rfcs/0004-assets-and-media.md): Media files become Asset graph nodes (asset): typed (image, video, audio, document, data, other), identified by the SHA-256 of their bytes, stored once per site under a content-addressed blob key, or linked to external…
- [RFC-0005: Staff roles and invites](https://cloudhal.dev/docs/rfcs/0005-roles-and-invites.md): Every signed-in person gets today, so a deployment cannot safely have a second person. This RFC adds five Ghost-like staff roles (Owner, Administrator, Editor, Author, Contributor) that are named sets of the scopes the…
- [RFC-0006: Site analytics](https://cloudhal.dev/docs/rfcs/0006-site-analytics.md): Every Cloudhal site gets cookie-less, first-party analytics that work on Workers Free, on workers.dev and on custom domains, and need no Cloudflare API token.
- [RFC-0007: Reader comments](https://cloudhal.dev/docs/rfcs/0007-reader-comments.md): Cloudhal sites get first-party reader comments that work on Workers Free, on workers.dev and on custom domains, without a third-party script by default.
- [RFC-0008: Schedules — releases, embargoes, scheduled publishing and automations](https://cloudhal.dev/docs/rfcs/0008-schedules.md): Cloudhal gets one scheduling model for content and one for automations, both with D1 as the source of truth and nothing trusted to a timer.
- [RFC-0010: Snapshot bundles — one read to load a published site](https://cloudhal.dev/docs/rfcs/0010-snapshot-bundles.md): A published site is rendered from an immutable snapshot whose node bodies live in R2 as one object per node (nodes/<hash>.json).
- [RFC-0011: Email delivery with Cloudflare Email Service](https://cloudhal.dev/docs/rfcs/0011-email-delivery.md): Cloudhal has had a MailSender interface since RFC-0005 but ships no sender, so invites are copied by hand and a forgotten password needs an Administrator.
- [RFC-0012: Sanitize HTML bodies before they reach a page](https://cloudhal.dev/docs/rfcs/0012-html-body-sanitizer.md): A content body or rich-text section can be markdown or html. Markdown is rendered as data: raw HTML is escaped and URLs are checked. HTML is published exactly as stored.
- [RFC-0013: cloudhal.json settings for observability and placement](https://cloudhal.dev/docs/rfcs/0013-deployment-observability-and-placement.md): Two optional cloudhal.json keys are added. observability sets the log sampling rate and turns on Workers Traces for both Workers. placement: "smart" turns on Smart Placement for the admin Worker.
- [RFC-0014: Body blocks and body operations](https://cloudhal.dev/docs/rfcs/0014-body-blocks-and-operations.md): Bodies stay markdown. Markdown is written by people, agents and cloudhal push alike. Cloudhal adds two things: - a versioned profile, "Cloudhal Markdown v1"; - a block index the store maintains: a stable id, content…
- [RFC-0015: Block registry — typed blocks for page sections and bodies](https://cloudhal.dev/docs/rfcs/0015-block-registry.md): What: one registry of block types, a callout or an embedded video for example. Each type has a name, a props schema, an Astro component and an editor form.
- [RFC-0016: In-editor AI commands and model choice](https://cloudhal.dev/docs/rfcs/0016-ai-commands-and-model-choice.md): Editors get an AI menu on selected blocks: improve, shorten, expand, fix spelling and grammar, change tone, translate, or a short instruction of their own.
- [RFC-0017: Theme and UI generator — design settings, generated pages and Kumo catalog panels](https://cloudhal.dev/docs/rfcs/0017-theme-and-ui-generator.md): What. A generator that writes a site's design and structure as data, from a prompt or by an agent: design settings (colors, type, spacing) in Site.theme.config, pages made of registry blocks, and Studio panels described…
- [RFC-0018: Theme packages and the theme kit — many themes, one engine, generator-ready](https://cloudhal.dev/docs/rfcs/0018-theme-packages-and-theme-kit.md): Where this fits. RFC-0020 makes building a live, streamed conversation that writes generative UI surfaces. This RFC defines what a theme gives that loop: a catalog of components with their renderers, settings, styles,…
- [RFC-0019: Newsroom features — bylines, corrections and search](https://cloudhal.dev/docs/rfcs/0019-newsroom-authors-corrections-search.md): Bylines are an author taxonomy. An author is a term with a bio, a portrait and profile links, and gets the archive, feed, sitemap entry, redirects and Studio screens that categories already have.
- [RFC-0020: Agentic build — generative UI surfaces, streamed build sessions and interactive components](https://cloudhal.dev/docs/rfcs/0020-agentic-build-and-generative-ui.md): Pages and articles can hold generative UI surfaces. A surface is a flat list of catalog components with ids, children and props, plus a data model.
- [RFC-0021: DESIGN.md and the agent design loop](https://cloudhal.dev/docs/rfcs/0021-design-md-and-the-agent-design-loop.md): Agents building Cloudhal sites have no taste to follow and no eyes. They get no design guidance, and previewpage returns HTML with a neutral stylesheet, not the theme.
- [RFC-0022: Surface tools — computed values, inputs, charts and tables](https://cloudhal.dev/docs/rfcs/0022-surface-tools-computed-values-inputs-charts-tables.md): Surfaces can show, switch and reveal, but they cannot compute, take a typed value or draw data. This RFC adds four things to the catalog: - Computed values: arithmetic, choice and aggregate functions in the existing…
- [RFC-0023: Design tokens v2 and surface styles](https://cloudhal.dev/docs/rfcs/0023-design-tokens-v2-and-surface-styles.md): Sites built from the same structure look alike, because a theme exposes four colors, four font stacks and three corner styles, and its CSS hard-codes about a hundred greys.
- [RFC-0024: Motion, scroll and ambient effects](https://cloudhal.dev/docs/rfcs/0024-motion-scroll-and-ambient-effects.md): Cloudhal pages cannot move: there is no transition, animation or reduced-motion rule anywhere in the theme or the renderer.
- [RFC-0025: Site chrome and overlays](https://cloudhal.dev/docs/rfcs/0025-site-chrome-and-overlays.md): Every Cloudhal site has the same top and bottom. The blog theme's Base.astro hard-codes: - a text site name, a menu and a search box; - a "Built with Cloudhal" footer;
- [RFC-0026: Icons](https://cloudhal.dev/docs/rfcs/0026-icons.md): Public sites get one curated icon set: about 90 semantic names (menu, close, arrow-right, mail, github, …) drawn from Phosphor (the family Studio already uses), rendered as inline SVG strings by @cloudhal/core-ts/icons.
- [RFC-0027: Carousel](https://cloudhal.dev/docs/rfcs/0027-carousel.md): A Carousel catalog component: its children are slides, in four variants (hero, rail, gallery, testimonials). It works without JavaScript (a scroll-snap track, markers as real links) and a small first-party module adds…
- [RFC-0028: Image placeholders and fit](https://cloudhal.dev/docs/rfcs/0028-image-placeholders-and-fit.md): Images get a calm placeholder that needs no JavaScript (a tiny blurred LQIP over the image's dominant colour), painted on a wrapper rather than on the <img>.
- [RFC-0029: Search providers and the search UI](https://cloudhal.dev/docs/rfcs/0029-search-providers-and-search-ui.md): Site search gets a provider interface in @cloudhal/core-ts. Today's FTS5 index becomes the default fts5 provider.
- [RFC-0032: ICU plurals and select in Studio messages, compiled at build time](https://cloudhal.dev/docs/rfcs/0032-icu-messages.md): Studio's messages gain the ICU MessageFormat 1 constructs a translation needs and English hides: plural (CLDR categories, exact =n, #), select, selectordinal and number arguments.
- [RFC-0033: Multilingual publishing, language editions and publications](https://cloudhal.dev/docs/rfcs/0033-multilingual-publishing.md): One-language sites stay the default and cost nothing. A site may publish in several languages, and a project may run several publications (sites), each with its own theme, domain, languages and editorial policy.
- [RFC-0034: Multi-site installations: one Studio, many isolated sites](https://cloudhal.dev/docs/rfcs/0034-multi-site-serving-and-projects.md): One self-hosted Cloudhal installation (one Studio, one D1, one R2 in one Cloudflare account) manages any number of sites.
- [RFC-0035: Publishing one page without a release](https://cloudhal.dev/docs/rfcs/0035-page-status-without-a-release.md): A page's own status can be changed directly, like an article's: Studio shows Publish as a draft page's next step and Publish / Unpublish in the Pages list's row menu, and the MCP tool updatepage takes an optional…
- [RFC-0036: Public playground: a disposable Cloudhal per visitor on a SQLite Durable Object](https://cloudhal.dev/docs/rfcs/0036-public-playground.md): try.cloudhal.com gives every visitor their own Cloudhal, with no account: Studio, the API and the rendered site.
- [RFC-0037: cloudhal.dev, the developer site: docs from the repo, a link contract, docs for agents](https://cloudhal.dev/docs/rfcs/0037-cloudhal-dev-docs-site.md): cloudhal.dev becomes an Astro Starlight site in apps/docs, built from the Markdown in the monorepo's docs/ folder and deployed as the cloudhal-dev Worker that already serves the schemas.
