feat(website): publish the podling site from website/ - #4660
Conversation
maka.apache.org still returns 404, and #4307 settled what the site should say without giving it anywhere to live. This adds website/ as an Astro workspace with the homepage direction the thread voted for (D, Astryx Centered Hero), one English and one Chinese page sharing a single Copy type so neither can drift, a downloads page shaped like OpenDAL's, and the ASF footer with the Incubator disclaimer on every page. Publication follows OpenDAL: website.yml builds the site and force-pushes the output as an orphan commit, to asf-site on main and to site/<name>-staging for release-candidate tags or a dispatched stage name; .asf.yaml carries the matching publish and autostage blocks and is copied into the published branch so its whoami guard matches there and nowhere else. The ASF header policy learns .astro files (frontmatter fence, then the block comment) and records why the footer copy may carry the ASF copyright line. Astro is pinned to 7.2.10 because 7.3.0 imports an internal module its own exports map does not expose, which fails every build that uses astro:assets. Refs #3404, #4307 Generated-by: Claude Code
Adding the website workspace re-resolved zod from 4.4.3 to 4.5.4 in the production closure, and check:release refuses stale notices. Generated-by: Claude Code
Reviewers asked for a switch rather than following the OS alone. The choice is stored per browser and applied before first paint; without one the OS setting still decides. Generated-by: Claude Code
Generated-by: Claude Code
…tibility Revert unintended zod bump from 4.4.3 to 4.5.4 in root package-lock.json. Zod 4.5.4 generates 'additionalItems: false' for z.tuple() schemas, which violates the strict schema keyword allowlist in runtime-host client capability protocol validation and causes native capability tests to fail.
Add an on-page outline with scrollspy, status card block for distribution channels, and numbered verification and build steps with copy buttons.
The brand, language switch, theme toggle and Get Maka button overflowed a 390px viewport by 4px, and the 中文 label wrapped onto two lines. Hero and downloads page carry the same call to action, so the button is dropped from the nav at phone widths, and the switch no longer wraps. Generated-by: Claude Code
b70f53b to
7e66e2f
Compare
The brand reused the language-switch path builder, so on /downloads/ it linked back to the same page and clicking it did nothing. The site test now asserts the brand href on every built page. Generated-by: Claude Code
The top bar already switches language on every page and both switches did the same thing. Generated-by: Claude Code
…Code of Conduct The nav's ASF item linked straight to apache.org while the policy links lived only in the footer. Both now render one list: Foundation, Incubator, License, Events, Privacy, Security, Sponsorship, Thanks and Code of Conduct, and the site test asserts every required URL on every page. Generated-by: Claude Code
The cover was a two-row grid, so the title sat in the top half and the label in the bottom half with a gap between. They now centre together. Generated-by: Claude Code
At phone width the seven event pills wrap to four rows and the absolutely positioned caption overlapped the last one. The caption now sits in normal flow under the pills. Generated-by: Claude Code
… Chinese page The trademark attribution is legal text, like the Incubator disclaimer above it, and the ASF publishes it only in English. The Chinese page now reuses the English line and the site test asserts it on every page. Generated-by: Claude Code
The Incubator branding guide asks podling sites to carry the Incubator logo. The file is the ASF's published logo, unedited, linking to incubator.apache.org above the disclaimer; in dark mode it sits on a white chip because the wordmark is black. Generated-by: Claude Code
The blue bar after the last event chip read as a stray block. The chips now appear in sequence the first time the tile scrolls into view and a thin caret keeps blinking after them, so the tile shows a log being written. Nothing animates under prefers-reduced-motion, and without JavaScript every chip is simply visible. Generated-by: Claude Code
The Chinese copy read like a sentence-by-sentence translation; it is rewritten in natural developer-facing Chinese, with the positioning sentence fixed to the wording agreed in #4307 and technical terms left in English. English edits: the lede loses a comma splice, the leaderboard caption and downloads status heading read plainly, and one tense is fixed. The eyebrow above the headline repeated the nav brand and is removed, and the Chinese headline gets an em-based measure so it breaks in two lines like the English. Generated-by: Claude Code
The tile's height comes from the two tiles beside it and the table was pushed to the bottom, so shorter copy, as in Chinese, left a hole between the link and the table. The rows now share the leftover height. Generated-by: Claude Code
yihanzhu
left a comment
There was a problem hiding this comment.
Took a pass at the homepage as a first-time visitor and it reads as a lot of text for what the data can already show. Screenshots below, PR head on the left, my branch on the right (yihanzhu/maka claude/maka-site-visualization-a5637f, one commit rebased on f252434, diff).
Three changes: the hero steps are named in plain words instead of RuntimeEvent types (Text / FunctionCall means nothing to someone landing here); the claims are drawn instead of described (pass@1 vs cost per pass as a scatter, head-to-head as two bars, plus Maka's pass rate by task difficulty, all computed from docs/eval at build time); and the explanatory paragraphs go where a figure carries them. The reading cards lead with a one-line takeaway instead of a formula or a bare number.
I dropped the Runtime Host and log tiles since the hero scene already shows one recorded turn; that's the part I'd most like your call on, since you just animated it. Happy to send this as a follow-up after merge or you can cherry-pick whatever you want.
Hero:
Bento:
Reports and writing:
Full page, light and dark:
The event type is already coloured by tone, so the dot said the same thing twice. Generated-by: Claude Code
RuntimeEvent type names on the first screen mean nothing to a first-time visitor, a point raised in review on #4660. The hero cards now say what happened (Model says, Runs a command, You approve) and the high-water line reads as what the model still sees; the type names stay in the log tile, where the term is explained. Generated-by: Claude Code
Chinese prose used the type name as a noun. Generic runtime is 运行时 and the event is 运行时事件, with the type name given once in the log tile where the chips show it. Runtime Host stays untranslated: the Chinese docs and README use it as the component's proper name throughout. Generated-by: Claude Code
Host pairs with 客户端 the way the tile already says 瘦客户端, and a visitor reads it without knowing the codebase. The English name is given once in parentheses and the diagram box keeps it, since that is what the docs call the component. Generated-by: Claude Code
|
Thank you for taking the first-time visitor's pass, and for doing it as a working branch with side-by-sides rather than a list of asks. That made it easy to judge each piece on its own. Taken now, in this PR (7aa7743): the hero events are named in plain words in both languages, and the high-water line reads as what the model still sees. You were right that type names have no business on the first screen; they stay in the log tile, where the term is explained. Pushing back on the charts. The direction is right, and computing from Pushing back on dropping the Runtime Host and log tiles. Those two are the architecture the project is built around, and the log is the piece we are investing in most over the coming months. Direction D in #4307 was voted with them below the fold, and the hero shows one turn only as an example of what the log records. They stay. I'd like to merge this PR as the voted direction plus the fixes from review, and take anything further as the follow-up you offered. |





Summary
maka.apache.orgstill returns 404, and #4307 settled what the site should say without giving it anywhere to live. This PR adds the site and the path that publishes it, following the OpenDAL layout described in #3404.website/is an Astro workspace on the root lockfile. One English and one Chinese page share a singleCopytype, so a section, claim or link added to one language fails to type-check until the other has it too;test/site.test.mjschecks the built HTML for the Incubator disclaimer, the ASF footer, the [DISCUSS] Rebuild the Maka website and project narrative #4307 positioning sentence, identical link sets across languages, and no third-party loads.docs/eval/and link there. Tokens are the desktop app's defaults; fonts are Geist and Geist Mono (OFL) self-hosted from the@fontsource-variablepackages the app already depends on; the logo is the README'ssky.png./downloads/is shaped like OpenDAL's and laid out like the Astryx technical-docs template: a status table up top, then Apache releases (none yet, and the page says so), verification steps withKEYS,.ascand SHA-512, Desktop Nightly and building from source, each labelled, with copyable code blocks and a sticky outline that tracks the section in view..github/workflows/website.ymlbuilds the site and force-pushes the output plus.asf.yaml,LICENSEandNOTICEas an orphan commit:asf-siteon a push tomaintouching the site,site/<tag>-stagingon a release-candidate tag, orsite/<name>-stagingfromworkflow_dispatch..asf.yamlgainspublish: whoami: asf-siteandstaging: autostage: site/*. No third-party action is added; the push uses the job token through an extra header..astrofiles (frontmatter fence, then the block comment) and records why the footer copy may carry the ASF copyright line.astro/_internal/logger, which its own exports map does not expose, so every build that usesastro:assetsfails.Nothing is copied from the old
maka-agent.github.iodraft. Docs, Security, Community and Architecture stay where they live; the site links to them.Refs #3404, #4307
Home, light and dark:
Chinese homepage and the downloads page:
Downloads in Chinese, dark, and at phone width:
Phone and tablet widths:
Verification
npm --workspace @maka/website run test:dist: 5 pages built, 5/5 checks pass.npm run check:asf-headers: every source file carries the header or a reviewed exclusion.node --test scripts/ci-workflow-policy.test.mjs scripts/ci-test-plan.test.mjs scripts/asf-license-headers.test.mjs scripts/script-entrypoints.test.mjs: 119/119 pass. The planner selectswebsiteas a standard workspace for changes underwebsite/, so pull requests build the site throughci.yml.npm run formatandnpm run lint: clean.npm run buildthennpm run check:release: pass. The first CI run failed here because adding the workspace re-resolved zod from 4.4.3 to 4.5.4; the third-party notices are regenerated in the second commit.main. After merge I will dispatch the workflow withstage=previewand checkmaka-preview.staged.apache.orgbefore relying onasf-site.AI use
Select exactly one:
Tool(s) and scope: Claude Code drafted the site, the workflow, the tests and this description from the #4307 consensus and the D mock voted on there. I reviewed the copy, the numbers against
docs/eval/, and the publication mechanics against the asfyaml reference.Checklist
Does this PR entail a change in behavior?