Standing: シンジケート2件の追加、WFCDデータの取得日時表示、Releaseページの導線整備 - #6
Merged
Merged
Conversation
The Standing page listed 16 of the 18 trackable syndicates: Cavia and The Hex were never added. Ranks and per-rank offerings come from the official wiki's own rank tables (read as raw wikitext so the numbers are the table's, not a summary's); rank titles cross-checked against a second source. The Hex rank 4 has a non-material requirement too, kept in the note field and worded without naming the quest. Existing save files pick both up through the load-time backfill that already handles a syndicate added after the file was written. Also corrects the Japanese reading of Necraloid and updates the "16 syndicates / the other 10" copy in the help popover (JA+EN), the in-app manual and both READMEs. A new roster test pins those counts so the next addition fails here instead of shipping with stale copy. Closes #3 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R63fyZ4HdqdsQfMKr2DZ8i
Staleness in this cache doesn't look like missing data, it looks like wrong data: relic Vault status is inferred from a relic being *absent* from the drop tables, so a cache that predates a rotation reports a farmable relic as vaulted with nothing on screen to suggest otherwise. Every page now shows the fetch date next to its refresh button, with the detail (oldest/newest/file count, and why it matters) in the tooltip and a manual entry. The date comes from the cache's own mtimes — each file is fetched on first use, so the oldest one bounds the set. A refresh empties the directory, which would leave nothing to report at the moment it matters most, so refreshCache now leaves a marker behind and cacheStatus falls back to it: right after a refresh the reading is "as of now", which is what the next lazy fetch will actually deliver. The refresh button itself was copy-pasted across five pages (identical apart from the extra reload Stats and Loadouts do), so it moves into ts/web/wfcd-refresh.ts alongside the new reading; each page still passes its own tooltip text, since Stats' differs. Also points the two warframe-drop-data files at drops.warframestat.us, WFCD's own delivery host, instead of GitHub raw — verified byte-identical by sha256 over the full responses first. warframe-items stays on GitHub raw: warframestat.us serves a merged item API in a different shape, not the per-category files this code reads. Closes #4 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R63fyZ4HdqdsQfMKr2DZ8i
Links posted to SNS point at Releases, not the Code page: someone arriving from a post wants the download, and only the minority who want the details should have to travel on to the README. That splits the two pages by role — README explains the project, a Release distributes one version — and the Release body has to be short enough that Download is the first thing reached. So the body is now composed from .github/release-body.md (one-line description, Download, what changed, link to the README) instead of being whatever generate_release_notes produced — which for this repo was a bare "Full Changelog" line, since GitHub builds that list from merged PRs and releases here are cut from direct pushes to main. "What's new" prefers a hand-written .github/release-notes/<tag>.md and falls back to the feat/fix/perf commit subjects between tags. The fallback exists so a release is never blank, but commit subjects are English and written for developers, so the hand-written file is the intended path. Both READMEs get a download link above the fold for the same reason, and the policy is written down in CONTRIBUTING so the next release doesn't quietly drift back into being a copy of the README. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R63fyZ4HdqdsQfMKr2DZ8i
The commit-subject fallback would render this release's user-facing changes as English subjects behind Japanese labels. This is the path the fallback exists to avoid. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R63fyZ4HdqdsQfMKr2DZ8i
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue #3 / #4 と、SNSからの導線整備。
Standing: Cavia / The Hex を追加(#3)
追跡対象が16→18シンジケートに。ランク名と全ランクの捧げ物は公式Wikiのランク表を生wikitextで取得して転記した(要約を経由すると数値が化けるため)。ランク名は第2ソースでも突き合わせ済み。The Hexのランク4は素材以外の条件を持つので
noteに入れてあるが、ネタバレ方針に従いクエスト名は出していない。Necraloidの日本語表記を「ネクラロイド」→「ネクロロイド」に訂正。JA辞書にカビア/ヘックスを追加。既存の
standing.jsonはload()の後方互換バックフィルでそのまま18件に拡張される(旧形式の実ファイルを作って確認済み:新規2件はRank 0、既存ランクは無傷、highestRankReachedの補完も従来通り)。UI文言の「全16シンジケート/他の10」をヘルプ(JA+EN)・マニュアル・README両言語で更新し、その数字を固定するロースターテストを追加した。次にシンジケートを足す時、文言更新を忘れるとテストが落ちる。
WFCDデータの取得日時表示(#4)
このキャッシュの古さは「情報が無い」ではなく「間違った答え」として出る——レリックのVault判定はドロップ表に載っていないことを根拠にしているので、ローテーションより前のキャッシュは入手可能なレリックをVault済みと報告し、画面上に手がかりが何も出ない。全5ページの更新ボタンの左に取得日時を出し、ツールチップに最古/最新/件数とこの理由を書いた。
日付はキャッシュ各ファイルのmtimeから出す(各ファイルは初回利用時に取得されるので、最古がセット全体の下限)。更新するとディレクトリが空になり、まさに一番知りたい瞬間に出せる値が無くなるため、
refreshCache()がマーカーを残してcacheStatus()がそこへフォールバックする——更新直後の表示は「今の時点」になり、それは次の遅延取得が実際に持ってくるものと一致する。更新ボタン自体は5ページにコピペされていた(Stats/Loadoutsの追加リロード以外は同一)ので、新しい表示と一緒に
ts/web/wfcd-refresh.tsへ集約した。ツールチップ文言はStatsだけ違うので各ページから渡す形。warframe-drop-dataの2ファイルをdrops.warframestat.us(WFCD自身の配信ホスト)へ変更。切替前に全レスポンスのsha256を取ってバイト一致を確認した。warframe-itemsはGitHub rawのまま——warframestat.us側はマージ済みの別形式APIで、このコードが読む per-category ファイルの代替にならない。Releaseページの導線整備
SNSからのリンク先はCodeページではなくRelease。投稿から来た人が欲しいのはダウンロードで、詳細を知りたい少数だけがREADMEへ進めばいい。Release本文は
.github/release-body.mdから組み立てる(1行説明→ダウンロード→今回の変更点→READMEリンク)。generate_release_notesだけではFull Changelog1行しか出ていなかった(GitHubはマージ済みPRから一覧を作るが、ここのリリースはmainへの直pushから切られている)。「今回の変更点」は.github/release-notes/<tag>.mdの手書きを優先し、無ければコミット件名から生成する。検証
bun run dev)で全5ページ・JA/EN・更新ボタン押下後の表示を確認、コンソールエラーなし