Skip to content

[855] Add the 0.4.0 release blog post and widen the blog layout - #915

Merged
vinishjail97 merged 4 commits into
apache:mainfrom
vinishjail97:855-0.4.0-release-blog
Aug 26, 2026
Merged

[855] Add the 0.4.0 release blog post and widen the blog layout#915
vinishjail97 merged 4 commits into
apache:mainfrom
vinishjail97:855-0.4.0-release-blog

Conversation

@vinishjail97

@vinishjail97 vinishjail97 commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

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

  • Added website/blog/apache-xtable-0.4.0-release.mdx. It covers the three
    headline items, the Spark runtime jar, the Paimon and Parquet sources, and
    Delta Kernel, then links to /releases/release-0.4.0-incubating for the full
    change list rather than duplicating it.
  • Raised --ifm-container-width and --ifm-container-width-xl to 1600px on
    the blog pages. BlogLayout wraps the page in Infima's .container, which
    caps at --ifm-container-width. That defaults to 1140px and nothing overrode
    it, so the blog stopped growing on any monitor wider than that. The override
    sits on a .blogLayoutContainer class that BlogLayout adds to that div, so
    the docs, the release notes and the home page keep the default width.
  • Moved the width: 50% on BlogPostItem/Container out of an inline style and
    into a .blogPostCard class. As an inline style no stylesheet could override
    it, 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 isBlogPostPage is false, and drops to one card per row
    under 996px.
  • Dropped absolute: true from the thumbnail withBaseUrl call in the same
    component. With it, the src resolved against the configured site url, so
    every 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 was
    deployed. The src is 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 start in website/ and
checking, at both wide and narrow viewports:

  • /blog/ renders two cards per row above 996px and one below it.
  • /blog/apache-xtable-0.4.0-release renders at full column width, and its
    release-notes link resolves.
  • The existing blog posts and the /releases/downloads page still render.
  • /docs/setup, /releases/downloads and the home page stay at the default
    1140px width; only /blog/ pages carry the blogLayoutContainer class in
    the npm run build output.

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.

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.
@vinishjail97
vinishjail97 marked this pull request as ready for review August 25, 2026 23:24
…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.
Comment thread website/src/css/custom.css Outdated
src={withBaseUrl(image, {
absolute: true,
})}
src={withBaseUrl(image)}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
@vinishjail97
vinishjail97 merged commit b0b7f8b into apache:main Aug 26, 2026
6 of 7 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.

3 participants