Changelog
Release Notes
What changed on this website in each version, newest first.
Last updated:
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.
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 singleh1first, no skipped level, each heading inside the part it belongs to), every mail link names the email app, both text pages say “Last updated”, ande2e/figma-sizes.e2e.tsmeasures 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): herBadgeandBreadcrumbsizes, the newEmailAppNoteinEmailLink, and a container width intheme.cssthat this site does not use.
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.
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
sameAslinks 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.
Added
/llms.txtfor 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.
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.
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.
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/uifollows Karolina’s portfolio 5.15.6: a comment in the pill styles, thesavesDatahelper (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.
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.
Added
- Google Search Console’s ownership file for the site (
google7e5d090ac999e530.html), served byte for byte as Google issued it, withnoindexand 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,.editorconfigand.gitattributeskeep tools off it.
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.
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, andmotion.cssis not trimmed. - The README, CLAUDE.md, the architecture doc, 2 skills and the review agents are brought up to date: the
scriptstest project, the manifest, the preconnect, the text pages. So is the 1.1.0 entry:privacy.e2e.tschecks 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
PageTitlefrom@kita/ui, as on the text pages.
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.
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 noreferrerand 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.
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.
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 fromfavicon.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.
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.tschecks 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.
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,Strongandlead, 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.tschecks 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; onlykb-themestored, after a pick; no forms), andtext-pages.e2e.tsthe 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.
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">andog:localeen_GB. - The footer’s year comes from the build (
APP_BUILD_YEARin 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.
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.
Changed
- When the version guard compares an amend with the commit before HEAD, its message says so and names
--amendand-c/-C HEAD.
Fixed
- CONTRIBUTING.md, CLAUDE.md and the
prepare-commit-msgcomment say thatgit commit -c HEADand-C HEADare 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.
Added
- A
prepare-commit-msghook that marksgit commit --amendfor the version guard, andscripts/check-commit-version.test.ts, which runs the guard in a throwaway repo (Vitest projectscripts, 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-lgin 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(wasleave-transition.utils.ts), named after their component as in Karolina’s repo. - ESLint lets the
@kita/uisource 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.tsgives 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.
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, notailwind.config); styles only through KitaBranding tokens. - Stricter quality gates: TypeScript with
noUncheckedIndexedAccessand 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-a11ystrict, Vitest, Testing Library, jest-dom and Playwright rules, a 200-line file limit, class names only in*.styles.tsand 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-requestson 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()andcva(), 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.jpgand 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_LOGGERfrom.env.example(nothing reads it any more).
Added
src/app/sitemap.tsandsrc/app/robots.tsserve/sitemap.xmland/robots.txtfor the canonical address https://www.kita.company, set once asSITE_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 (
reactCompilerwithbabel-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 testwatches,yarn test:runruns once and is part ofyarn verify. package.jsonhas"type": "module"and every config file is TypeScript:next.config.ts,eslint.config.ts(loaded throughjiti),prettier.config.ts,lint-staged.config.ts(was a key inpackage.json),postcss.config.tsandvitest.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.jsontonext.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.jsandjest.setup.js. - next-sitemap, its config and the
postbuildstep, and the files it wrote topublic/, which would hide the new routes. vercel.json, and the Node warning flag in thecommit-msghook that"type": "module"makes unnecessary.
Added
- This changelog and semver versions: every commit on
developbumpsversioninpackage.jsonand adds its entry here. - A version guard in the
commit-msghook (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-systemandrecord-rule, and the report-only agentsa11y-reviewer,ui-reviewer,copy-reviewer,docs-seo-reviewerandpattern-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 todevelopandmainand 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
.gitignorepatterns 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-conventionaland allows an optional scope from a fixed list incommitlint.config.ts(wascommitlint.config.js). - ESLint checks the whole repo, not only
src, with zero warnings;yarn typecheckgenerates Next’s types first, so it also works on a fresh clone. - The
pre-commithook runs ESLint and Prettier on staged files only;post-mergeinstalls packages only when a pull or merge changedyarn.lock. .gitignorekeeps 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 customverceltype. - The Deno workflow, which could not build this project and never ran.
.nvmrcand thevoltafield (replaced by.node-version), the starter’s VS Code snippets, and the tracked.idea/folder (the files stay on disk, ignored).