Skip to content

Releases: ChaseFranz/fretwork

fretladder v1.8.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 01:57

fretladder v1.8.0: 18,807 charts, 15,235 official; deployed 2026-09-19 20:55 -0500

Every song page now stands on a ladder: where the song ranks, and the songs beside it.

  • Under the table on a song page: its rank among the site's songs and among its source's on its primary Expert part, the notes and the length, the two songs just above and just below on each, and the artist's other songs, every name a link to its page. Every word is a number from the chart files; nothing is written by hand
  • The picture on a song page and on the lists is declared at its real size, so the page no longer shifts when it loads

Underneath: the first Search Console report said the site was discovered and not crawled, with every song page a leaf off two hubs; the ladder turns the song folder into a graph a crawler walks. A review panel scored the alternatives: a split sitemap carries no crawl priority, generated prose is scaled content, and a noindex on the long tail has no signal to act on yet.

fretladder v1.7.1

Choose a tag to compare

@github-actions github-actions released this 20 Sep 01:05

fretladder v1.7.1: 18,807 charts, 15,235 official; deployed 2026-09-19 20:03 -0500

A correction of words: the site said "game" for every source, and not every source is one.

  • What a chart came in is a source: a game, a game's DLC (Guitar Hero III DLC is not a game), or a custom pack (BITCRUSHER, the CSC quarterlies, CHARTS 2). The front page's guide, the source pages, the lists' Source column and the line on every song page say so now; "setlist" is gone
  • Nothing else moved: the numbers, the pages and their addresses are v1.7.0's

fretladder v1.7.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 00:52

The site as a search engine reads it: a guide on the front page, page titles in the words people type, and the plumbing that gets the pages indexed.

  • The charts page carries a site guide above the footer, one line that opens: what the ratings are, the hardest Expert charts per instrument, every source (the games, their DLC and the custom packs), every list and every page, all linked. It is on the page for everyone, scripts or not, so a crawler and a reader mode get a page rather than an empty table
  • Song pages are titled with their source ("Through The Fire & Flames by Dragonforce: Guitar Hero III chart difficulty"), headed with the artist, described from the question people type, and the same custom in two packs is told apart by its pack. Source pages are "song list ranked by difficulty" and link every other source and list; the lists open with how they are computed and the top three songs' graphs
  • Every number on a song, source, list or library page still opens that chart's graph, now by a link a crawler does not mistake for another page, so the front page has one address rather than eighteen thousand
  • The sitemap dates each page by the day it last changed, so an update moves only what moved; a list needs at least two songs
  • Underneath: breadcrumb, list, website and dataset structured data for the search features that read them; every deploy tells Bing, Yandex and the engines that read them which pages changed (IndexNow); the live-site check reads the guide and the key file

Underneath: the change was reviewed before it went live, and the review found the first design wrong: the guide was removed at boot, which left the page Google renders with no heading and one link. It is now a details block that stays in the DOM, the same content for every reader.

fretladder v1.6.0

Choose a tag to compare

@github-actions github-actions released this 19 Sep 23:30

fretladder v1.6.0: 18,807 charts, 15,235 official; deployed 2026-09-19 18:28 -0500

Drums and vocals join the site, and every guitar, bass and keys rating is rescored by the engine's formula v2.

  • Two more sheets: Drums (3,789 charts at every level) and Vocals (879, one level each, read as Expert), with the level chips, filters, search, percentiles and Calc Tiers working the same way on them
  • Drums are rated at the single-pedal reading; a chart with double-pedal kicks shows its D (2x) beside it
  • Every chart's graph draws the lines its instrument has: notes and fret changes for guitar, bass and keys; hands, travel and kicks for drums; pitch movement, syllables and percussion for vocals. The readout, legend and PNG export follow
  • The song grid in the details pane and every song page carry the drums and vocals parts; every game page has a column for each; the library page has lists of the hardest and easiest for both
  • Every D on the guitar, bass and keys sheets changed: formula v2 adds a stamina term for the chart's length and takes its medians over active windows only, so tiers and percentiles from before this release are not comparable to these

Underneath: the engine is Staycation44's fretwork at ff14725 (drum and vocal parsing, density and formulas; the fret formula's v2), merged unchanged. The curve files are version 2, one shape for the three families, and every graph file and picture was rewritten. The methodology page now says where the engine's document lags its code (the Guitar remap bins and the drums Calc Tier step), since the code is what scored the charts.

fretladder v1.5.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 15:23

fretladder v1.5.0: 11,904 charts, 10,873 official; deployed 2026-09-12 10:22 -0500

The site as a search engine sees it: every song, game and list has a page that says what the table says.

  • A page per song that reads as a page: what it scores in words, its graph as a picture, every level of every part, the facts, the game it came in, and a link into the table; a shared link still opens the exact chart
  • A page per game: the setlist ranked by Expert guitar difficulty, with the tier and the bass and keys charts beside
  • The lists: the 100 hardest Guitar Hero and Rock Band songs, the 100 hardest Clone Hero customs and the 100 easiest, per instrument
  • Songs in the footer, every song A to Z; the library page links every pack and every list
  • Titles that say what each page is, and a tab that names the open chart
  • www.fretladder.com redirects to fretladder.com

Underneath: game/ and list/ join song/ in the week cache class (eleven deploy commands); publish draws one PNG per song, 1,748, through the preview's manifest; robots.txt lets crawlers read data/ and the pictures; a sitemap of every page; a thirteenth live check on the tool; the CloudFront Function and Route 53 records in tools/www_redirect.sh.

fretladder v1.4.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 05:26

fretladder v1.4.0: 11,904 charts, 10,873 official; deployed 2026-09-12 00:18 -0500

Links that preview as the song they point at, and a table that paints only what is on screen.

  • Copy link in the details pane puts a link on the clipboard that previews as the song when pasted in Discord or a chat (title, artist, each part's Expert difficulty, tier and percentile) and opens exactly that chart and comparison; a link whose chart has moved folders opens the song instead
  • The table holds only the rows near the screen, so a sheet of 60,000 charts scrolls like one of 600; the arrow keys, Page Up and Down, Home, End and a shared link reach rows that are not on screen, and the open chart's row stays in sight through a sort or a filter
  • A sitemap, so search engines find every song

Underneath: a page per song under song/ (1,748 pages, about 2 KB each, the week cache class synced like graph/), sitemap.xml named from robots.txt, deploy.plan at nine commands; the table's view computed once and painted as a window between two spacer rows at a measured height, with a scroll-driven paint keeping the row under the screen's top in place; two new suites (share, window) and every suite counting from the header rather than the DOM.

fretladder v1.3.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 04:45

fretladder v1.3.0: 11,904 charts, 10,873 official; deployed 2026-09-11 23:39 -0500

The site's colours become roles with a light theme, filters carry across instruments, and a page says what the library is.

  • A light theme: the page follows your system's setting, and the button at the top right switches it, remembered in your browser; the graph, the compare colours, About, the changelog, the methodology and the 404 page follow
  • Every colour means one thing: magenta is only "on" (an active chip, a pressed button, the sorted column, the open row's edge), links are one blue, the graph's three curves and the three compare series are separate trios so blue is always Notes, and the four level colours read as four
  • One ground: the graph is painted on the page rather than in a darker box
  • Switching instrument keeps your levels, filters, search and sort; only a filter no row on the new sheet could match is dropped
  • The library page, from the footer: charts per instrument and level with distinct counts, the Expert charts per tier, official against custom, the ten hardest per instrument and every pack, from the same numbers the table shows
  • The footer lists only the pages the site has

Underneath: the stylesheet is a token layer with two values per role and a Bootstrap bridge; the canvas reads its colours from the tokens at each paint; the contrast audit runs in both themes (137 pairs); three new suites (theme, sheets, the library page) and the sheet-switch rule in query.carryFilters.

fretladder v1.2.0

Choose a tag to compare

@ChaseFranz ChaseFranz released this 12 Sep 03:20

fretladder v1.2.0: 11,904 charts, 10,873 official; deployed 2026-09-11 21:58 -0500

The details pane, from the maintainer's first evening with the live site.

  • Clicking a row opens the chart's details in a pane under the table instead of a dialog: the graph beside every chart of the song, the row highlighted, the arrow keys moving from chart to chart with the pane following, a draggable height and a collapse caret. The two stacked dialogs, the title pip and the focus trap are gone
  • A Chart page column right after Artist with the arrow in the cell, general over a host table so a second host is one entry, and the same links leading the pane's tool row
  • Comparisons are built in the pane and shown everywhere: a row click always shows one chart; grid cells toggle charts on and off the graph, Compare all levels is a pressed toggle, Compare with a row picks from the table and is disabled at three; while a comparison is up, every chart on the graph wears its series colour and letter on its grid cell and its table row, and the legend names only what tells the charts apart

fretladder v1.1.0

Choose a tag to compare

@ChaseFranz ChaseFranz released this 12 Sep 03:20

fretladder v1.1.0: 11,904 charts, 10,873 official; deployed 2026-09-11 18:53 -0500

The day the plan in docs/spec landed: twelve of its fourteen sections, taken live in one deploy after seven interim ones.

On the page

  • A Percentile column beside D, per sheet and level, and "at or above N%" wherever a chart is named
  • Album, Year and Genre from song.ini (hidden by default), and Copies: how many charts share exactly these notes, with percentiles counting a chart once
  • Graphs drawn in the browser on a canvas from each chart's curve file, with a readout under the cursor or the arrow keys, up to three charts overlaid (?code=A&vs=B,C) and Save as PNG
  • Every chart of a song in one view: instruments down, levels across, the tier per instrument, and the other folders carrying the same charts
  • A methodology page: upstream's Methodology.md rendered at publish (MathML, no CDN), its calibration tables checked against formula.py every time
  • Where each chart is published: a Chorus Encore link per song, resolved offline (1,709 of 1,748 songs); the page never contacts the service
  • A changelog page listing every pack and when it was added, linked from the strapline

Underneath

  • packs.toml, the committed registry of the 26 packs, and tools/ingest_pack.py to add one
  • Data model v2: the rows out of index.html (1.78 MB to 17 KB) into hashed immutable files fetched on demand, one JS bundle, SongKey and NotesHash as chart identities, a curve file per chart, and a deploy in three cache classes with a deferred delete; six requests per cold view, one on a repeat visit
  • The 11,903 pre-rendered PNGs retired; one social preview kept
  • A test tree (a synthetic library, a pipeline test with a stub aws, twenty headless-Chrome page suites) and CI on every push; tools/check_site.py for the live site
  • serve.py serves what publish.py writes, with a real 404; publish refuses a mismatched spreadsheet and cache

fretladder v1.0.0

Choose a tag to compare

@ChaseFranz ChaseFranz released this 12 Sep 03:12

The first public release of the hosted viewer, deployed to https://fretladder.com on 2026-09-10: 11,904 charts (10,873 official) from Guitar Hero, Rock Band and Clone Hero libraries.

What this fork adds to fretwork v0.8

  • serve.py: browse the metrics spreadsheet in a browser, with a graph on demand
  • publish.py: write that viewer as a static site, graphs pre-rendered
  • deploy.py: publish and sync to S3 behind CloudFront, headers verified

The site: a sortable, filterable table with per-viewer column visibility, order and widths; shareable URLs; full keyboard access and AA contrast throughout; an in-page explainer and an about page stating that this is an independent fork, not affiliated with Staycation44.

The difficulty engine is fretwork's and unmodified; the only change outside new files lifts the shared difficulty block out of render.py into functions/difficulty.py so the web side can reuse it.