Kita Company

Changelog

Release Notes

What changed on this website in each version, newest first.

Last updated:

Release 1.4.3

kita.company is now the home page of Karolina Kita and Mateusz Kita.

  • A new split page: Karolina’s half leads to her portfolio at karolina.kita.company, and Mateusz’s half says his own site is still in progress and links to his GitHub and LinkedIn.
  • Light and Dark mode, picked with the switch at the top or taken from your system, in the KitaBranding design of Karolina’s portfolio.
  • New pages: a privacy notice, an accessibility statement and these release notes, linked from the footer next to the site’s version.
  • The site aims at WCAG 2.2 AA: it works with a keyboard, at large text sizes and in high-contrast modes, and nothing moves when your system asks for less motion.
  • Better search results and link previews, with a new preview image and the site icon from Karolina’s portfolio.
  • The old placeholder pages are gone.

Versions: 0.1.1 - 1.4.3.

Version 1.4.3

Added

  • Screen readers hear “opens your email app” after the email address on the privacy notice and the accessibility statement, as Karolina’s site says it, and the statement’s Screen readers point says so.
  • Tests: every page’s headings form an outline that matches the page (Karolina’s heading-outline.ts: a single h1 first, no skipped level, each heading inside the part it belongs to), every mail link names the email app, both text pages say “Last updated”, and e2e/figma-sizes.e2e.ts measures the badges and the breadcrumb in Chromium, Firefox and WebKit.

Changed

  • Badges are 22px tall in every tone, as in Karolina’s Figma file: the “Test Environment” badge was 20px. Its border is transparent, so Windows contrast themes show its outline too.
  • The breadcrumb on the text pages has a 16px chevron with 8px on each side and a 16px house on Home, as in Figma (they were 14px, 4px apart).
  • @kita/ui follows Karolina’s portfolio 5.16.3 (1964922): her Badge and Breadcrumb sizes, the new EmailAppNote in EmailLink, and a container width in theme.css that this site does not use.

Version 1.4.2

Fixed

  • The e2e check in real Chromium tabs moves the focus off the theme switch with a click on the site name, not in Karolina’s half: her link covers the half, so that click started the exit and, on a busy machine, took the tab to her live site before the last check. Each focus check now waits for the focus to settle and shows where it went, and the tabs reach no site but the one under test.
  • The e2e check for a stalled exit allows for timers that run late on a busy machine: the page is still covered shortly before the stall time and is given back within 2 seconds of it.

Version 1.4.1

Changed

  • Before a release, the last CI run and the Vercel Preview have to belong to the newest commit on develop, and the commit routine checks the CI run after each push.
  • The docs say where Karolina’s sameAs links come from and name every part the unit tests cover. The release steps say when to press Verify in Google Search Console, and the manual checks add the focus ring after a pick in another tab in Firefox and Safari.

Fixed

  • The e2e check in real Chromium tabs starts the browser without its sandbox, as Playwright does, so it also runs on GitHub’s Ubuntu runner, and removes its temporary profile when Chromium does not start.
  • The release notes tests also pass right after a release, when the changelog has no Unreleased block.
  • The sitemap dates a page by the release that holds the version that changed it, so a change made after a release on the same day gets the next release’s date. Each page records that version next to its date.

Version 1.4.0

Added

  • /llms.txt for AI assistants, after Karolina’s: the site, Karolina and Mateusz as the home page presents them, and every page with its address and description, built from the pages’ own copy at build time. Tests check that it links every page of the sitemap and says only what the pages say.
  • The architecture doc records the Lighthouse scores of the production build (100 for Performance, Accessibility, Best Practices and SEO on the home page and the privacy notice, on a phone and a desktop) and what is outside the site’s control.

Changed

  • The README, CLAUDE.md, the architecture doc and the docs review agent name /llms.txt.

Version 1.3.10

Added

  • Structured data on every page for search engines: each page as part of Kita Company, the home page about Karolina and Mateusz, and each text page with the breadcrumb and “Last updated” date it shows.
  • Tests that keep the search data true: each page’s title (at most 60 characters) and description, one robots tag, the canonical address, the headings, the link names and the structured data against the page as it renders, and a fingerprint of each page’s content that fails when the content changes without its date. A new e2e spec, seo.e2e.ts, checks them on the build, with robots.txt and the sitemap.

Changed

  • The sitemap dates each page by its content on the day of the release that put it live, never by the build, and lists no change frequency or priority, which Google ignores. The home page has a date of its own for this.
  • The README, CLAUDE.md, the architecture doc and the docs review agent describe the search data, the canonical address and the redirect from kita.company.

Fixed

  • The 404 page has one robots tag, noindex, instead of 2.
  • On test builds the sitemap dates the release notes as the page does, by their newest entry.

Version 1.3.9

Added

  • Tests: the theme switch gives a keyboard user’s focus ring back after a pick in another tab while the page was in the background, and a clicked option stays without one. The e2e check drives real Chromium tabs without Playwright’s focus emulation, which reports every tab as focused.

Fixed

  • A keyboard user who picks a theme in another tab and comes back to a page left in the background finds the focused option with its focus ring again. Browsers show no focus ring in a background tab, and the theme switch was built again there without it.

Version 1.3.8

Added

  • e2e in 3 browsers for section links on the text pages, after Karolina’s 5.14.26 - 5.14.31: a link to a section opens the page at it, before and after the app starts, with its heading in sight and nothing over it; the first Tab goes on from that section (in Chromium and Firefox); a link to another section of the open page lands there, and an unknown one leaves the page at its top. The browser’s own jump passes them all, so nothing else was needed.

Changed

  • @kita/ui follows Karolina’s portfolio 5.15.6: a comment in the pill styles, the savesData helper (Save-Data or a 2G connection) and the pointer-capture stand-in in the package’s test setup. Nothing on the page changes.
  • The UI, docs and accessibility review agents follow hers: the UI review checks motion against docs/motion.md, the docs review reads it and checks Google Search Console’s file, and the accessibility review checks the focus after a section link.

Version 1.3.7

Added

  • e2e in 3 browsers: following the link to Karolina’s portfolio, the request that reaches her (stubbed) site keeps ?ref=kita-company, and its referrer is this site’s address alone, without the page or its query.

Changed

  • The link to Karolina’s portfolio opens https://karolina.kita.company/?ref=kita-company, her tag for visits from here, so her statistics can show which visits came from this website. The early connection still goes to her site’s address alone, and the link still sends only this site’s address as the referrer.
  • The privacy notice says so under Links to Other Websites, and the design doc tells Karolina what her reports will show.

Version 1.3.6

Added

  • Google Search Console’s ownership file for the site (google7e5d090ac999e530.html), served byte for byte as Google issued it, with noindex and outside the sitemap. A test fails if it is removed or changed, and an e2e check confirms that the build serves it.

Changed

  • CLAUDE.md, the README, the architecture doc and CONTRIBUTING.md name the file and say never to remove, rename or edit it; .prettierignore, .editorconfig and .gitattributes keep tools off it.

Version 1.3.5

Added

  • The release notes check stops the build when a version lists its groups out of order (Added, Changed, Fixed, Removed) or names one twice.
  • Tests: the theme switch keeps its focus after Back, Forward and a pick in another tab, and no colour trails the page after Back. e2e in 3 browsers for 2 tabs, and in Chromium with its back/forward cache on for Back and Forward.

Changed

  • docs/motion.md lists the theme change that Back, Forward or another tab brings under the same-frame colour change, and the docs say when the theme switch is built again.

Fixed

  • Back, Forward or a theme pick in another tab no longer moves the keyboard focus from the theme switch to the page: the same option keeps it, with its focus ring if it had one. The switch is built again only when the theme or the pick it should show has changed.
  • After Back, Forward or a pick in another tab, the button colours change with the page instead of fading in over 150ms.
  • The 1.3.4 entry lists its groups in the order Added, Changed, Fixed.

Version 1.3.4

Added

  • The accessibility statement tells Safari users how to reach every link with the keyboard: Option-Tab, or the “Press Tab to highlight each item on a webpage” setting.
  • Structured data on the home page (JSON-LD) for search engines: the site, Kita Company, in British English, and Karolina and Mateusz with their roles and profiles.
  • e2e: each trailing arrow nudges the way it points with the pointer on it, in 3 browsers, but not with keyboard focus alone or reduced motion; a theme pick shows in a second tab, and after Back and Forward with Chromium’s back/forward cache on; the home page’s structured data.

Changed

  • The docs say where the contact address sits on the text pages and that their column is centred wider than 1312 px, with 2 notes for Karolina (the theme hook and that column). The design system is copied from her develop, and motion.css is not trimmed.
  • The README, CLAUDE.md, the architecture doc, 2 skills and the review agents are brought up to date: the scripts test project, the manifest, the preconnect, the text pages. So is the 1.1.0 entry: privacy.e2e.ts checks the notice’s claims about the build, not every claim.

Fixed

  • A theme picked on one page now shows after Back and Forward, when the browser brings a page back from its back/forward cache, and at once in another tab of the site. Before, that page kept the old theme until a reload.
  • The privacy notice no longer says the site works without any of your data: you do not have to send an email or pick a theme, but opening a page sends the details the host logs. It now lists the right to data portability, gives the reply time as “1 month”, spaces the paragraphs under Your Rights evenly, and says that only the home page may connect to Karolina’s portfolio in advance.
  • The 404 page’s heading is the PageTitle from @kita/ui, as on the text pages.

Version 1.3.3

Fixed

  • On phones the footer’s copyright line ended in a lone bar before the version wrapped to the next line. Below 30rem the version now starts its own line and the bar is hidden; wider screens keep the one line.

Version 1.3.2

Added

  • Tests on every rendered page: each link leads to a page of the site, a section that exists on that page, the contact address or a secure website; other websites open in a new tab with noopener noreferrer and say so, except Karolina’s portfolio; no page links mateusz.kita.company yet; no id repeats; and the header and footer are the same on every page.
  • Tests for the document head: the theme script, then the view-fade script, inline before the content. The theme script follows the system setting over an unknown stored value and sets the colour scheme in Light and Dark mode.

Version 1.3.1

Added

  • e2e: on every page the header holds only the theme switch before the main content, so screen reader users jump past it by its landmark and keyboard users pass it in 2 Tab stops (WCAG 2.4.1). The test fails if the header gains a link without a skip link.

Changed

  • docs/design.md records the WCAG 2.2 review of the 4 pages and the 404 page: why there is no skip link, the same header, footer and contact on every page, and the room around the breadcrumb’s Home link. CLAUDE.md and the accessibility reviewer carry the skip-link rule.

Version 1.3.0

Added

  • A web app manifest (/manifest.webmanifest): the site’s name and the duck on its gold tile at 192 and 512px for a phone’s home screen, also as maskable icons. The site still opens as a page in the browser.
  • yarn favicons: Karolina’s script, with sharp, that makes every icon file from favicon.svg. It writes her 3 files byte for byte and adds the 2 manifest icons.
  • Tests for the icon files: their sizes, no transparency on the home-screen icons, the duck inside the maskable safe zone, and one cache rule for all of them. The manifest is tested too.
  • e2e, on every page: each icon and the manifest answer with their type and size, the link-preview fields that Facebook, LinkedIn, X, Slack and WhatsApp read are all there with absolute addresses, the preview image stays under 300 KB, and the browser bar follows Light and Dark mode.

Changed

  • The manifest icons are cached for a day, like the favicon set.

Version 1.2.0

Added

  • Karolina’s view fade: a page opened by a link from another page of the site fades its content in with an 8px rise (240ms), while the header and the footer stay still. The first page you open, a reload, Back and a link to a section stay still, and with reduced motion nothing moves.
  • e2e: motion-details.e2e.ts checks the view fade in 3 browsers for every kind of link between the pages, a reload, Back, a section link and reduced motion, and that the exit to Karolina’s site still covers the whole window when it starts during a fade.

Changed

  • The exit to Karolina’s site ends a view fade that is still running before it starts, so its overlay covers the whole window.
  • docs/motion.md follows Karolina’s 5.15.1 guide and describes the view fade; the accessibility statement says that pages appear without fading in when you ask for reduced motion.

Version 1.1.0

Added

  • A Privacy page (/privacy): the privacy notice of kita.company, true to the code and the host. No cookies and no analytics, the theme pick kept in the browser, the host’s server logs, the visitor’s rights and the contact.
  • An Accessibility page (/accessibility): the accessibility statement. WCAG 2.2 AA, what works, how it is tested, the known limits and how to report a problem.
  • A Release Notes page (/release-notes): this changelog, newest first, built from the file. The Unreleased block shows on test builds only.
  • The footer of every page links the version to the release notes, with Privacy and Accessibility on the line below; the link to the page you are on is marked as the current page.
  • The text pages have Karolina’s layout: a breadcrumb from Home, an eyebrow, the heading, the last-updated date, and a copy-link icon beside each section heading.
  • @kita/ui: Karolina’s Breadcrumb, PageTitle, Section, ProseSection, HeadingAnchor, EmailLink, Lang, Strong and lead, her clipboard and address helpers, and the Check, ChevronRight, House and Link icons, with tests.
  • The sitemap lists the 4 pages, each with the date its content last changed.
  • e2e: privacy.e2e.ts checks the privacy notice’s claims about the build (only the site’s own requests, the fonts included; the preconnect to Karolina’s site the only other origin; no cookies; only kb-theme stored, after a pick; no forms), and text-pages.e2e.ts the footer and breadcrumb links, the copy-link anchors and the release notes. The axe, keyboard, reflow, text size, hydration and motion checks cover the new pages.

Changed

  • The changelog follows the site’s copy rules where it did not: “4 commits” and “a switch for Light and Dark mode”.
  • CLAUDE.md, the README, CONTRIBUTING.md, the docs, the skills and the review agents describe the new pages. CLAUDE.md says to keep the privacy notice and the accessibility statement true whenever what they describe changes.

Removed

  • RELEASE_NOTES_URL: the version links to the site’s own release notes instead of the private repo.

Version 1.0.4

Added

  • Karolina’s copy rules as tests (src/test/copy-rules.ts, ported from her portfolio with fixture tests): British spelling, curly apostrophes and quotes, Title Case for headings, eyebrows, badges and button labels, “frontend”, “Light and Dark mode” and counts as digits, on the copy, the components’ own strings and every rendered page.
  • e2e: React adopts the home page and the 404 page as prerendered, in Light and Dark mode from the system or from a stored pick, with no hydration error and the same <main> (e2e/hydration.e2e.ts).
  • e2e: each page’s title and description are its own and match its link-preview and X fields, and every image in the first HTML carries its file’s width and height.
  • docs/motion.md lists every motion on the site with the test that guards it.
  • @kita/ui: Karolina’s animations.test.ts (each named animation ends within 5 s, entrances fill backwards) and her motion-token and relative-units checks for looping animations and motion offsets.
  • The app’s styles guard also rejects an animation the theme does not name, an animation written into a class and anything that loops forever.
  • CONTRIBUTING.md has an Editor section. VS Code does not watch or search .claude/worktrees/, and TypeScript leaves .claude/ out.

Changed

  • @kita/ui is synced with Karolina’s portfolio 5.14.25 (b25fb51; was 5.14.16): a Button’s trailing arrow nudges the way it points, so the GitHub and LinkedIn arrows now move up and right, and theme.css resets Tailwind’s looping animations and lets entrances fill backwards.
  • The copy follows her rules: “Visit Karolina’s Portfolio”, “Product Design”, “Frontend Development”, “In Progress”, “Test Environment”, “Page Not Found” and “Go to the Home Page”.
  • The site is marked as British English: <html lang="en-GB"> and og:locale en_GB.
  • The footer’s year comes from the build (APP_BUILD_YEAR in next.config.ts), like the version.
  • CLAUDE.md, docs/design.md, the copy-reviewer agent and the sync-design-system skill take on her rules: Figma is the design source, section-closing actions sit at the end of the row, the copy rules, and “Light and Dark mode” in the docs.

Fixed

  • The 404 page has its own description, and its link-preview and X fields describe it instead of the home page.

Version 1.0.3

Added

  • package.json says what the repo is: a description, Mateusz as the author, Karolina as a contributor, the home page, the repository, where to report issues, and the licence UNLICENSED (private, all rights reserved).
  • packages/kita-ui/package.json names Karolina as the author and Mateusz as a contributor, with the licence, its home page and the repository with its directory.
  • The README says the repo has no open-source licence.

Version 1.0.2

Changed

  • When the version guard compares an amend with the commit before HEAD, its message says so and names --amend and -c/-C HEAD.

Fixed

  • CONTRIBUTING.md, CLAUDE.md and the prepare-commit-msg comment say that git commit -c HEAD and -C HEAD are checked as an amend: git reports them to the hooks the same way, so a new commit made with them can keep the last version.

Version 1.0.1

Added

  • A prepare-commit-msg hook that marks git commit --amend for the version guard, and scripts/check-commit-version.test.ts, which runs the guard in a throwaway repo (Vitest project scripts, in Node).
  • e2e: the reflow, 200% text and text-spacing runs also fail on text that runs over other text, not only on text that is cut off.
  • e2e: the Tab order and focus check covers the 404 page too, also in forced colours, where the gold Button must keep a visible edge.
  • Tests for the exit while the tab is hidden and when the link unmounts mid-exit, for the shared Open Graph fields, and for the link-preview shadow against --elevation-lg in tokens.css.
  • CI jobs stop after 15 minutes (verify) and 30 minutes (e2e).

Changed

  • @kita/ui is synced with Karolina’s portfolio 5.14.16 (97254cb): the theme switch says “Light mode” and “Dark mode” in a group named “Colour theme”, and a wrapped Button label is centred.
  • The line under each name, the status note and “Until it is ready, you can find me here:” no longer end with one word on the last line, where the browser supports text-wrap: pretty.
  • The exit helpers are PortfolioLink.utils.ts (was leave-transition.utils.ts), named after their component as in Karolina’s repo.
  • ESLint lets the @kita/ui source import only the packages its package.json declares.
  • The root package.json declares class-variance-authority, which the app imports itself; it came only through @kita/ui before.
  • VS Code: Prettier is the default formatter, saving applies ESLint fixes, the workspace TypeScript is offered, and CSS files open as Tailwind CSS instead of turning CSS checks off.
  • Docs: the README says the axe audit runs in Chromium; the transition notes say a theme picked here does not carry over to karolina.kita.company; docs/design.md lists what kita.company needs from KitaBranding (Notes for Karolina).
  • Claude Code helpers: the update-dependencies skill names the expected jsx-a11y peer warning and how axe-core is pinned, the release skill checks the footer as React writes it, the agents drop their pre-redesign lines, and the copy-reviewer quotes Mateusz’s facts as the page shows them.
  • The ESLint exception in src/test/setup.ts gives its reason after --.

Fixed

  • The home page sends og:type, og:site_name and og:locale again: its own openGraph replaced the layout’s whole object, so both now use one OPEN_GRAPH.
  • In forced colours, “Visit Karolina’s portfolio” and “Go to the home page” keep a visible edge instead of showing as bare, indented link text; they are now as tall as the secondary buttons.
  • The version guard no longer accepts a commit that kept the last commit’s version. It took every commit after a versioned one for an amend and compared it with the commit before; now only a real amend is.
  • The 1.0.0 entry below no longer says the 404 page says noindex once: Next.js adds a noindex tag of its own.

Version 1.0.0

Added

  • The split landing page: a header with the Kita duck, the site name “Kita Company” as the page’s h1 and a switch for Light and Dark mode, then one half for each of us, side by side from 768 px and stacked on phones, and a footer with the site’s version.
  • Karolina’s half: her role and work, and one gold link, “Visit Karolina’s portfolio”, that covers the whole half and opens https://karolina.kita.company in the same tab after a calm 300 ms exit. The exit runs only on a plain left click with motion allowed; reduced motion and forced colours go at once, Ctrl/Cmd and middle clicks open a tab as usual, and Back or a stalled navigation gives the page back.
  • Mateusz’s half: his role and stack, a status block saying that mateusz.kita.company is still in progress, so it is not available yet (a roadwork icon and an “In progress” badge, no link and no disabled button), then his GitHub and LinkedIn.
  • The @kita/ui workspace package (packages/kita-ui): Karolina’s KitaBranding tokens, Tailwind v4 theme, base and motion styles, Button, Badge, Eyebrow, TextLink, VisuallyHidden, NewTabNote, icons, the theme switch and its hooks, copied from her portfolio with her permission and tested against her Figma export.
  • Inter and Zilla Slab through next/font, Karolina’s favicon set, and a link-preview image (1200 x 630, built with next/og in the style of her portfolio cover, with the duck).
  • A “Test environment” badge in the header on every build but production (NEXT_PUBLIC_IS_PRODUCTION).
  • A new 404 page with the same header and footer and a way home.
  • Playwright end-to-end tests in Chromium, Firefox and WebKit (yarn e2e, also in CI): smoke, the exit, the theme switch, keyboard order and focus, motion, more contrast, the 404 page, the link-preview image and icons, and an axe audit at 320, 768 and 1280 px in light, dark and more contrast (yarn a11y).
  • Unit tests for every component, the exit’s logic, the copy rules, the page’s colour pairs and the design-token rules.

Changed

  • Tailwind CSS 3 to 4 (@tailwindcss/postcss, no tailwind.config); styles only through KitaBranding tokens.
  • Stricter quality gates: TypeScript with noUncheckedIndexedAccess and the erasable-syntax flags; ESLint with typescript-eslint strict and stylistic type-checked rules, the Next.js plugin directly, React Hooks (React Compiler), @eslint-react, jsx-a11y strict, Vitest, Testing Library, jest-dom and Playwright rules, a 200-line file limit, class names only in *.styles.ts and import boundaries; Karolina’s Prettier settings (double quotes, 120 columns, import and class sorting).
  • The page metadata: title, description, canonical address, robots, theme colours and lang="en". The author link points at Mateusz’s GitHub until his site is live.
  • The Content Security Policy sends upgrade-insecure-requests on Vercel builds only, so local production builds work in Safari and WebKit.
  • The 404 page no longer inherits the home page’s index rule: its robots tags all say noindex.
  • VS Code: Tailwind IntelliSense reads the classes inside clsx() and cva(), and imports are no longer forced to the @/ alias (files in one folder import each other with ./).

Removed

  • The starter’s pages: /components (the demo page) and /api/hello. Both URLs now answer 404.
  • The starter’s components, utilities, logger, starter styles, tailwind.config.ts, the self-hosted Inter file, the old favicons and web manifest, og.jpg and the empty SVG logos.
  • lucide-react, react-icons, tailwind-merge, @svgr/webpack, @tailwindcss/forms, autoprefixer, encoding, eslint-config-next, eslint-plugin-simple-import-sort and eslint-plugin-unused-imports.
  • NEXT_PUBLIC_SHOW_LOGGER from .env.example (nothing reads it any more).

Version 0.1.2

Added

  • src/app/sitemap.ts and src/app/robots.ts serve /sitemap.xml and /robots.txt for the canonical address https://www.kita.company, set once as SITE_URL.
  • Security headers on every response from next.config.ts: a Content Security Policy in production builds, nosniff, Referrer-Policy, X-Frame-Options, Permissions-Policy and Cross-Origin-Opener-Policy.
  • The React Compiler (reactCompiler with babel-plugin-react-compiler).

Changed

  • Unit tests run on Vitest 5 with jsdom and Testing Library (vitest.config.ts, src/test/setup.ts) and sit next to the code. yarn test watches, yarn test:run runs once and is part of yarn verify.
  • package.json has "type": "module" and every config file is TypeScript: next.config.ts, eslint.config.ts (loaded through jiti), prettier.config.ts, lint-staged.config.ts (was a key in package.json), postcss.config.ts and vitest.config.ts. The ESLint and Prettier rules are unchanged.
  • The page metadata points at https://www.kita.company, where https://kita.company redirects.
  • The cache header for the self-hosted font moved from vercel.json to next.config.ts.
  • The starter’s “Deploy with Vercel” badge, an image from vercel.com, is blocked by the new policy in production builds; the starter page goes with the redesign.

Removed

  • Jest, jest-environment-jsdom, @types/jest and next-router-mock, with jest.config.js and jest.setup.js.
  • next-sitemap, its config and the postbuild step, and the files it wrote to public/, which would hide the new routes.
  • vercel.json, and the Node warning flag in the commit-msg hook that "type": "module" makes unnecessary.

Version 0.1.1

Added

  • This changelog and semver versions: every commit on develop bumps version in package.json and adds its entry here.
  • A version guard in the commit-msg hook (scripts/check-commit-version.ts): the subject ends with the staged version, which is higher than the last commit’s, and the changelog has its entry.
  • CONTRIBUTING.md (branches, every commit, version rules, releases on Vercel), CLAUDE.md (the process, commands and conventions; the architecture follows with the redesign), a first README and docs/claude-code.md.
  • Claude Code skills release, ship-change, update-dependencies, sync-design-system and record-rule, and the report-only agents a11y-reviewer, ui-reviewer, copy-reviewer, docs-seo-reviewer and pattern-sweeper, adapted from Karolina Kita’s portfolio with her permission.
  • yarn verify (typecheck, lint with zero warnings, Prettier check, tests, build) and a GitHub Actions workflow that runs it on every push to develop and main and on pull requests.
  • .editorconfig, .gitattributes (LF line endings) and .node-version (Node 24).

Changed

  • Upgraded to Node 24, Next.js 16.4 (Turbopack), React 19.3, TypeScript 6, ESLint 10 with a flat config, Jest 30, Prettier 3, husky 9, lint-staged and commitlint, fixed the .gitignore patterns for env files and generated sitemaps, updated the VS Code settings, resolved the lint warnings and formatted the code with Prettier 3. Made in the 4 commits before versioning started (24783d9, 9b92f4c, b7c7d4d, e166474), so their subjects carry no version.
  • commitlint keeps the Conventional Commits types of config-conventional and allows an optional scope from a fixed list in commitlint.config.ts (was commitlint.config.js).
  • ESLint checks the whole repo, not only src, with zero warnings; yarn typecheck generates Next’s types first, so it also works on a fresh clone.
  • The pre-commit hook runs ESLint and Prettier on staged files only; post-merge installs packages only when a pull or merge changed yarn.lock.
  • .gitignore keeps personal Claude Code files, docs/_* notes, tool caches and Windows thumbnails out of git; the VS Code recommendations list Claude Code, Prettier, ESLint, Tailwind CSS, Vitest and Playwright.

Removed

  • The starter’s commitlint scope list (tab, space), which rejected every real scope, and its custom vercel type.
  • The Deno workflow, which could not build this project and never ran.
  • .nvmrc and the volta field (replaced by .node-version), the starter’s VS Code snippets, and the tracked .idea/ folder (the files stay on disk, ignored).

Release 0.1.0

The starter placeholder page, live at kita.company until the split landing page. Versions before 0.1.1 were not recorded.