[855] Add the 0.4.0 release blog post and widen the blog layout - #915
Conversation
Add website/blog/apache-xtable-0.4.0-release.mdx, announcing 0.4.0-incubating. It covers the three headline items, the Spark runtime jar, the Paimon and Parquet sources, and Delta Kernel, and links to the release notes page for the full change list rather than repeating it. Also widen the blog layout, which two separate caps were constraining: - BlogLayout wraps the page in Infima's .container, which caps at --ifm-container-width. That defaults to 1140px and nothing overrode it, so the page stopped growing on any monitor wider than that. Raise both --ifm-container-width and --ifm-container-width-xl to 1600px. - BlogPostItem/Container set width:50% as an inline style. Being inline, no stylesheet could override it, it held at every breakpoint, and it applied to the single-post page as well as the list, since both views render the same container. Move it to a .blogPostCard class, apply it only when isBlogPostPage is false, and drop to one card per row under 996px.
…home page Blog post: * Drop the repeated project name from the opening. The title and the author line already carry it, so the first sentence now starts "We are pleased to announce". * Give each feature its own `###` heading, so Spark runtime, Apache Paimon, Apache Parquet and Delta Kernel all appear in the table of contents. The "New source formats" heading held two bullets and is gone. * Name the entry points in the Spark section. "a sync" was ambiguous, so the text now points at `XTableSyncService` for an existing job and at `XTableSparkSync` for `spark-submit`. * Reword the Delta Kernel section against `delta-core`. The Spark dependency comes from `DeltaLog` and `OptimisticTransaction`, which the older Delta source and target call directly. * Use `xtable-write-anywhere.png` as the cover, which is already in the repo. Home page: * The hero named only Hudi, Delta Lake and Iceberg. Paimon and Parquet are read-only, so they get their own sentence with "Sync from" rather than joining the "interoperate between" list. Blog list: * Cap thumbnails at 365px. Most covers are 2:1 and fill the column at about that height, so a near-square cover no longer pushes its title far below the title of the card beside it. * Resolve the thumbnail `src` relative to the site root. `withBaseUrl` with `absolute: true` resolved it against the configured `url`, so every thumbnail loaded from the production site and a new image could not be previewed locally.
…il cap The post set `excerpt`, which Docusaurus does not read. The page description fell back to the first line of the body and was cut mid-sentence, so both the meta and og:description tags read "... which lands 45 commits from". Rename the key to `description`. `.blog-image` capped every thumbnail at 365px so the list cards line up. The same image is the hero on the single-post page, where there is no neighbour to line up with, and the cap held it to 416px wide. Scope the rule to `.blogPostCard`, which is set on list cards only. Also drop the home page hero change. The sentence goes back to naming Apache Hudi, Delta Lake and Apache Iceberg only.
| src={withBaseUrl(image, { | ||
| absolute: true, | ||
| })} | ||
| src={withBaseUrl(image)} |
There was a problem hiding this comment.
This also drops absolute: true from the card image URL, which isn't in the change log. Intentional, or incidental to the class move? The cards render either way — just confirming it's deliberate and not a stray edit.
There was a problem hiding this comment.
Deliberate, but I should have listed it, sorry. With absolute: true, withBaseUrl resolved the thumbnail against the configured site url, so every card image loaded from xtable.apache.org even under a local npm run start, and a newly added cover image could not be previewed before it was deployed. Dropping the option resolves the src relative to the site root, which works the same on production and locally. I have added it to the change log in the PR description.
The two --ifm-container-width variables were set on :root, so every page that Infima wraps in .container grew to 1600px, including the docs, the release notes and the home page. Set them on a blogLayoutContainer class instead and apply that class to the .container div in BlogLayout, which only the blog list and the single-post page render. Infima reads the variable on the element, so the override takes effect there and nowhere else.
Part of #855.
What is the purpose of the pull request
Add the 0.4.0-incubating release blog post to the website, and fix two layout
caps that were keeping the blog pages narrow.
The post is the last website piece of the 0.4.0 release. The release notes page
and the downloads entries already landed in #913, so this is what remains before
the announcement mail goes out.
Brief change log
website/blog/apache-xtable-0.4.0-release.mdx. It covers the threeheadline items, the Spark runtime jar, the Paimon and Parquet sources, and
Delta Kernel, then links to
/releases/release-0.4.0-incubatingfor the fullchange list rather than duplicating it.
--ifm-container-widthand--ifm-container-width-xlto 1600px onthe blog pages.
BlogLayoutwraps the page in Infima's.container, whichcaps at
--ifm-container-width. That defaults to 1140px and nothing overrodeit, so the blog stopped growing on any monitor wider than that. The override
sits on a
.blogLayoutContainerclass thatBlogLayoutadds to that div, sothe docs, the release notes and the home page keep the default width.
width: 50%onBlogPostItem/Containerout of an inline style andinto a
.blogPostCardclass. As an inline style no stylesheet could overrideit, it held at every breakpoint, and it applied to the single-post page as
well as the list, because both views render the same container. It is now
applied only when
isBlogPostPageis false, and drops to one card per rowunder 996px.
absolute: truefrom the thumbnailwithBaseUrlcall in the samecomponent. With it, the
srcresolved against the configured siteurl, soevery card image loaded from the production site even under a local
npm run start, and a new cover image could not be previewed before it wasdeployed. The
srcis now relative to the site root.The single-post page being squeezed to half width was the more visible of the
two, and it is fixed as a side effect of the second change.
Verify this pull request
This pull request is a website-only change with no test coverage.
Verified by running the site locally with
npm run startinwebsite/andchecking, at both wide and narrow viewports:
/blog/renders two cards per row above 996px and one below it./blog/apache-xtable-0.4.0-releaserenders at full column width, and itsrelease-notes link resolves.
/releases/downloadspage still render./docs/setup,/releases/downloadsand the home page stay at the default1140px width; only
/blog/pages carry theblogLayoutContainerclass inthe
npm run buildoutput.Note for reviewers
This carries two separable things: the release post, which belongs to #855, and
the layout fix, which does not. I kept them in one PR because both are
website-only and the layout problem is most visible on the new post. If you
would rather review them apart, say so and I will split the layout change into
its own
[MINOR]PR.