Skip to content

Sequence diagram for post_token CI job interaction with Benchy API #142

@Dargon789

Description

@Dargon789

Reviewer's Guide

This PR overhauls CI and the web site setup while bumping fnm metadata and Rust toolchain configuration: it simplifies GitHub Actions to a single token-posting job with most build/test/docs jobs commented out, upgrades the Rust toolchain configuration and testing profiles, migrates the site directory to a Next.js + TypeScript app with Vercel analytics and static export, and updates package metadata, changelog entries, lockfiles, and changesets for a 1.39.0 release.

Sequence diagram for post_token CI job interaction with Benchy API

sequenceDiagram
  participant GitHub as GitHub
  participant Actions as GitHub_Actions
  participant Runner as Actions_runner_post_token
  participant Benchy as Benchy_API

  GitHub->>Actions: Trigger_workflow_rust_yml
  Actions->>Runner: Start_job_post_token
  Runner->>Runner: Load_GITHUB_TOKEN_from_secrets
  Runner->>Benchy: HTTP_POST_/api/test?token=GITHUB_TOKEN
  Benchy-->>Runner: HTTP_2xx_success
  Runner-->>Actions: Job_completed_successfully
  Actions-->>GitHub: Report_workflow_status
Loading

Class diagram for new Next.js site structure

classDiagram
  class RootLayout {
    +Metadata metadata
    +RootLayout(children ReactNode) JSXElement
  }

  class Home {
    +Home() JSXElement
  }

  class NextConfig {
    +string output
    +bool trailingSlash
  }

  class TsConfig {
    +string target
    +string[] lib
    +bool allowJs
    +bool skipLibCheck
    +bool strict
    +bool noEmit
    +bool esModuleInterop
    +string module
    +string moduleResolution
    +bool resolveJsonModule
    +bool isolatedModules
    +string jsx
    +bool incremental
  }

  RootLayout --> Home : wraps
  NextConfig <.. Home : build_time_configuration
  TsConfig <.. Home : type_checking_configuration
  TsConfig <.. RootLayout : type_checking_configuration
Loading

File-Level Changes

Change Details Files
Simplify GitHub Actions workflow to a single token-posting job and disable all existing build/test/docs/benchmark jobs.
  • Change global RUST_VERSION env from 1.88 to 1.78
  • Replace fmt/clippy/unit_tests/build/e2e/ensure-docs jobs with a new post_token job that calls an external benchy API using GITHUB_TOKEN
  • Comment out the original fmt, clippy, build, test, e2e, docs, and benchmark jobs for future reference
  • Remove the active ensure_commands_markdown_is_up_to_date job definition at the bottom of the workflow
.github/workflows/rust.yml
Update Rust toolchain version and introduce richer testing and timeout configuration.
  • Bump Rust toolchain channel from 1.88 to 1.89
  • Add chisel-serial test group limiting max threads to 1
  • Define default test profile with retries, exponential backoff, jitter, and slow-test timeouts
  • Add per-filter overrides for specific tests and packages to customize slow timeout and retry behavior
rust-toolchain.toml
Bump fnm package metadata to 1.39.0 and enrich npm package information.
  • Update version field from 1.38.1 to 1.39.0
  • Replace shorthand repository string with full git repository object pointing at the fork
  • Add description, bugs URL, homepage, main entry, directories map, and keywords field
  • Keep Prettier config and scripts intact while extending metadata
package.json
Migrate the site to a Next.js + TypeScript application with linting and static export configuration.
  • Replace the simple shell-copy build script with standard Next dev/build/start/lint scripts
  • Add React, React DOM, Next, Vercel analytics, ESLint, TypeScript, and related type/eslint packages as dependencies/devDependencies
  • Create tsconfig configured for strict TS, React JSX, bundler module resolution, and Next plugin, with path aliasing
  • Add Next app router files: a RootLayout that sets metadata and includes Vercel Analytics, and a Home page that renders a simple centered landing message
  • Configure ESLint via a flat config using next/core-web-vitals and next/typescript presets
  • Add Next config enabling static export and trailing slashes, and update site-specific .gitignore and pnpm-lock.yaml
site/package.json
site/tsconfig.json
site/app/layout.tsx
site/app/page.tsx
site/eslint.config.mjs
site/next.config.js
site/.gitignore
site/pnpm-lock.yaml
site/vercel.json
Document the 1.39.0 release and adjust changesets and lockfiles to align with updated dependencies.
  • Add a 1.39.0 section to changelog summarizing new CLI flags, behavior updates, and a prior Rust toolchain bump
  • Add new changeset entries describing Rust dependency updates, dev dependency updates, and a generic main patch
  • Remove obsolete changeset markdown files that have been applied or superseded
  • Update Cargo.lock, pnpm-lock.yaml, and documentation assets such as the fnm SVG to reflect dependency and asset changes
CHANGELOG.md
.changeset/moody-fans-shake.md
.changeset/nine-roses-collect.md
.changeset/wet-donkeys-jump.md
.changeset/grumpy-dingos-turn.md
.changeset/odd-mayflies-poke.md
.changeset/twelve-badgers-happen.md
Cargo.lock
pnpm-lock.yaml
docs/fnm.svg

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Originally posted by @sourcery-ai[bot] in #141 (comment)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingdependenciesPull requests that update a dependency filedocumentationImprovements or additions to documentationduplicateThis issue or pull request already existsenhancementNew feature or requestgithub_actionsPull requests that update GitHub Actions codegood first issueGood for newcomershelp wantedExtra attention is neededinvalidThis doesn't seem rightjavascriptPull requests that update javascript codequestionFurther information is requestedrustPull requests that update Rust codewontfixThis will not be worked on

Projects

Status

Backlog

Status

Todo

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions