Skip to content

Standing: シンジケート2件の追加、WFCDデータの取得日時表示、Releaseページの導線整備 - #6

Merged
MotimotiNotch merged 4 commits into
mainfrom
feat/syndicate-and-wfcd-freshness
Sep 1, 2026
Merged

MotimotiNotch merged 4 commits into
mainfrom
feat/syndicate-and-wfcd-freshness

Conversation

@MotimotiNotch

Copy link
Copy Markdown
Owner

Issue #3 / #4 と、SNSからの導線整備。

Standing: Cavia / The Hex を追加(#3

追跡対象が16→18シンジケートに。ランク名と全ランクの捧げ物は公式Wikiのランク表を生wikitextで取得して転記した(要約を経由すると数値が化けるため)。ランク名は第2ソースでも突き合わせ済み。The Hexのランク4は素材以外の条件を持つのでnoteに入れてあるが、ネタバレ方針に従いクエスト名は出していない。

Necraloidの日本語表記を「ネクラロイド」→「ネクロロイド」に訂正。JA辞書にカビア/ヘックスを追加。

既存のstanding.jsonload()の後方互換バックフィルでそのまま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の手書きを優先し、無ければコミット件名から生成する。

検証

  • typecheck clean / 104 tests green(+6)
  • ローカル実機(bun run dev)で全5ページ・JA/EN・更新ボタン押下後の表示を確認、コンソールエラーなし
  • Release本文のコンポーズを自動生成パス・手書きパス両方でローカル実走

MotimotiNotch and others added 4 commits September 1, 2026 19:12
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
@MotimotiNotch
MotimotiNotch merged commit c51612d into main Sep 1, 2026
1 check passed
@MotimotiNotch
MotimotiNotch deleted the feat/syndicate-and-wfcd-freshness branch September 1, 2026 10:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant