Restructure the blog for the incoming project archives (#60)

* Upgrade Docusaurus 3.0.1 -> 3.10.2

Needed for the blog work: year-grouped sidebar and blog/tags.yml
descriptions only exist in later 3.x.

Fixes the one swizzle that broke: useSidebarBreadcrumbs/useDocsSidebar
moved from @docusaurus/theme-common/internal to
@docusaurus/plugin-content-docs/client.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit dd63d337c154dbbe9065fa9917f6c0b4ab58192d)

* Restructure the blog for the incoming project archives

Three changes, all aimed at a blog that stays navigable once the
historical Drools/jBPM/OptaPlanner posts land in it:

- Sidebar grouped by year, collapsible. Year grouping is stock 3.10
  behaviour, but upstream renders each year as a plain div; swizzle
  BlogSidebar/Content to wrap them in <details>. Open by default: the
  most recent year, plus the year holding the post being read.

- Tags as sections. blog/tags.yml defines a curated taxonomy — one
  family for components, one for post kinds — each with a description
  that renders on its landing page. onInlineTags/throw makes an
  undeclared tag a build failure, so the set stays curated. Retag the
  four existing posts off the old ad-hoc keywords (apache, 10, kie).

- Excerpt-only post list. None of the posts had a truncation marker, so
  the list rendered every post in full. Add <!-- truncate --> after the
  opening paragraph and drop the H1 that duplicated the frontmatter
  title. onUntruncatedBlogPosts/throw keeps it that way.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit c4cc434bef52e448c38d71a399fa850c3c2d56f7)

* Blog sidebar title: 'All posts', linking to the blog index

Swizzle BlogSidebar/Desktop, where upstream renders the title as a plain
div. With collapsible year groups you can be several years down the list
with no obvious way back, so the heading becomes that way back.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit e6b21703064cb3da7a0b029fd1af368fe383185b)

* Link the blog sidebar to the tags index

Docusaurus has no built-in tag-filter widget, and the blog plugin
registers no global data, so there is no supported way to enumerate tags
from /blog. The native surface is the auto-generated /blog/tags index;
this just makes it reachable from the blog list instead of only from a
post's tag chips.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 50763e7e8f09d83f8338831be86a2e69f5d3f3c4)

* Sentence case for the remaining headings in the 10.2 editors post

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit bd3f2e1f85746ae23261c741688bbd861ec3d54c)

* Move 'Browse by tag' to the blog's right-hand rail

Swizzle BlogLayout to render the right column unconditionally. Upstream
only renders it when a toc is passed, so /blog had a two-column gap on
the right and nowhere to put the link. Column widths are unchanged — the
rail fills space the grid was already reserving.

Suppressed on the tag pages themselves, where it points at where you
already are, and desktop-only, matching the sidebar and the toc.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 86226226a87882befae1bb1971e8c664075a363e)

* Address review feedback on the blog restructure

- Year groups: sync open state on client-side navigation. The sidebar
  survives navigation and the groups are keyed by year, so initial state
  alone left the active post hidden inside a collapsed year. The effect
  only ever opens, so a group collapsed by hand stays that way until the
  current post moves into it.
- Tags link: hide it on individual tag pages too, not just the index.
  Keep the link target site-relative — @docusaurus/Link applies baseUrl
  itself, so passing the resolved path would risk prefixing it twice.
- Author link comment: attribute the hover underline to Infima's
  --ifm-link-hover-decoration rather than implying these rules set it.
- Post title: 'Next-generation editors', for consistent sentence case.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
16 files changed
tree: ea963c9aef0d143656e7a9fd65257af91f6e3eaf
  1. .github/
  2. blog/
  3. docs/
  4. src/
  5. static/
  6. .asf.yaml
  7. .gitignore
  8. babel.config.js
  9. devbox.json
  10. devbox.lock
  11. docusaurus.config.ts
  12. LICENSE
  13. NOTICE
  14. package.json
  15. README.md
  16. sidebars.ts
  17. tsconfig.json
  18. yarn.lock
README.md

Apache KIE (incubating) Website

The source repository of static website for Apache KIE (incubating).

[!IMPORTANT] Apache KIE (incubating) is an effort undergoing incubation at the Apache Software Foundation (ASF), sponsored by the Apache Incubator PMC.

Please read the DISCLAIMER and a full explanation of “incubating”.

Installation

$ yarn

Local Development

$ yarn start

This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.

Build

$ yarn build

This command generates static content into the build directory and can be served using any static contents hosting service.

Contribute

Contributions are welcome, any pull request that is merged will be automatically deployed to live website.

LICENSE

Apache License 2.0