Staaaay Fresh!

月: 2026年10月

stat.ink: Modernizing the Codebase

English follows Japanese.

最近、AI を活用して stat.ink のシステムを更新しています。

stat.ink のソースコードには 10 年以上の歴史があり、古い書き方や、当時の事情に合わせて設計された構造が数多く残っています。

現在、こうしたコードを近代化するとともに、静的解析を活用してコードの品質を向上させる作業を進めています。目指しているのは、意図しないエラーや、潜在的な不具合が発生しにくいコードにすることです。

今回の作業では、非常に多くのソースコードを書き換えています。通常の利用で動作が変わらないよう注意して進めていますが、変更範囲が広いため、あらゆる利用状況で問題がないことまでは確認できていません。

また、作業を進める中で、何年も前から存在していた潜在的な問題が AI によって発見され、修正されたケースもあります。その結果、これまでエラーが発生していた機能が、正常に動作するようになっている場合もあります。

もし不自然な動作やエラーに気づいたら、ぜひお知らせください。

連絡には Discord をおすすめしますが、GitHub の Issue や、このブログのコメントでも構いません。どのページで、どのような操作をしたときに、何が起きたのかを具体的に書いていただけると、原因の調査がスムーズになります。

I’ve recently been using AI to help update the stat.ink system.
Oh wait, I’m supposed to call it “SI” now, aren’t I? Super Intelligence. Heh.

The stat.ink codebase has more than 10 years of history, and much of it still reflects old coding styles and the circumstances of its time.
I’m now modernizing it and using static analysis to improve code quality.
The goal is a structure where unintended errors and latent bugs are less likely to occur.

This work involves rewriting a very large amount of code.
I’m being careful not to change behavior in normal use, but because of the sheer volume of changes, I haven’t been able to confirm that everything works in every real-world use case.

Along the way, the AI has also found and fixed latent problems that had existed for years.
As a result, some features that used to fail with an error may now work correctly.

If you notice anything strange or run into an error, please let me know.
Discord is preferred, but GitHub issues or comments on this blog are fine too.
It helps a lot if you can include which page you were on, what you did, and what happened.

stat.ink: Sign Up Without a Password

English follows Japanese.

数日前より、stat.ink でパスキーのみで会員登録ができるようになりました。

4月にパスキーを導入した時点では、パスワードを設定せずに会員登録することはできませんでした。
先日のリリースでパスワードを無効にできるようになりましたが、その場合も、登録時には一度パスワードを設定する必要がありました。

今回の変更により、最初からパスワードを設定せず、パスキーだけで会員登録できるようになりました。

これまでどおり、パスワードでログインしたい方は、パスワードを設定して登録することもできます。
また、パスキーのみで登録したあとから、パスワードを追加することも可能です。
その場合は、プロフィールページからパスキーで本人確認を行い、設定してください。

なお、パスキーのみで登録したアカウントは、パスワードを無効にしたアカウントと同じ扱いになります。

パスワードが設定されていない間は、最後に残ったパスキーを削除することはできず、API キーを使ったパスワードの再設定もできません。

すべてのパスキーを失ってしまうと、リカバリキーがない限りログインできなくなります。
会員登録が完了したら、忘れずにリカバリキーを作成し、安全な場所に保管しておいてください。

As of a few days ago, you can sign up for stat.ink with only a passkey.

When I added passkey support in April, you couldn’t create an account without a password.
The recent release let you disable your password, but you still had to set one when you first signed up.
With this change, you can sign up without a password from the start.

If you prefer to log in with a password, you can still set one when you sign up, just as before.
You can also add a password later, even if you signed up with only a passkey.
Just open your profile page, verify with your passkey, and set your password.

Note that an account created with only a passkey is treated the same as an account with its password disabled.
While you have no password, you cannot delete your last remaining passkey, and you cannot reset your password with your API key.
If you lose all your passkeys, you will no longer be able to log in unless you have a recovery key.
Don’t forget to create recovery keys once you’ve signed up.

stat.ink: Disable Your Password

English follows Japanese.

パスワードを削除できるようになりました

パスキーを登録しているユーザーは、パスワードを削除してパスキーだけでログインする設定ができるようになりました。

プロフィールページから「パスワードを無効にする」を選び、パスキーで本人確認をすると、パスワードはサーバーから消去されます。それ以降のログインはパスキーだけになります。

セキュリティ上のメリット

パスワードがあると、パスキーを設定していても、パスワードを知っている人ならログインできてしまいます。他のサービスで漏れたパスワードを使い回していた場合や、フィッシングサイトにパスワードを入力してしまった場合が、その典型です。

パスワードを削除すると、ログインの手段がパスキーだけになります。パスキーはお使いの端末に保存され、正規の stat.ink 以外では使えません。そのため、パスワードの漏洩、使い回し、フィッシングによる不正ログインを根本から防げます。また、サーバーにパスワードの情報が残らないので、万一の情報漏洩でもパスワードが流出することはありません。

ご注意ください

  • パスワードを無効にしている間は、最後の 1 つのパスキーを削除できません。
  • すべてのパスキーを失うと、リカバリキーがなければ新しいパスワードを設定できません。パスワードを無効にする前に、リカバリキーを作成しておくことを強くおすすめします。
    • パスワードを無効にしている間は、API キーを使ったパスワードの再設定はできません。
  • パスキーで本人確認をすれば、プロフィールページからいつでもパスワードを設定し直せます。

翻訳の改善

各言語の翻訳を見直しました。ゲーム内の公式用語に合わせ、足りなかった訳文を追加しています。

その他

  • Google パスワードマネージャなど、一部のパスキー管理ツールでパスキーを登録しようとするとエラーになり、登録できなかった問題を修正しました。

Sign in with passkeys only

If you have registered a passkey, you can now delete your password and sign in with your passkey only.

Open your profile page, choose “Disable Password”, and verify with your passkey. Your password is then erased from the server, and from then on you can sign in only with your passkey.

Why this is more secure

As long as your account has a password, anyone who knows it can sign in, even if you have also set up a passkey. This typically happens when you reuse a password that leaked from another service, or when you type your password into a phishing site.

When you delete your password, a passkey becomes the only way to sign in. Passkeys are stored on your device and cannot be used anywhere except the real stat.ink. This stops sign-ins that rely on leaked or reused passwords or on phishing. Also, no password data is kept on our server, so a data breach on our side cannot expose your password.

Before you disable your password

  • While your password is disabled, you cannot delete your last remaining passkey.
  • If you lose all your passkeys, you can set a new password only with a recovery key. We strongly recommend creating recovery keys before you disable your password.
    • While your password is disabled, you cannot reset it with your API key.
  • You can set a password again from your profile page at any time after verifying with your passkey.

Translation improvements

We reviewed the translations in each language, matched them to the official in-game terms, and added missing translations.

Other changes

  • Fixed an issue where registering a passkey failed with an error for some passkey providers, such as Google Password Manager.

stat.ink: Upgraded to PHP 8.5

Thank you for using stat.ink.

At around 18:45 JST on October 8, 2026 (09:45 UTC / 5:45 AM EDT / 2:45 AM PDT), I updated the systems that stat.ink runs on:

  • Upgraded to PHP 8.5
  • Restarted the server

If you accessed the site during the upgrade or restart and saw a Cloudflare error page, I apologize for the inconvenience.

Development has already been running on PHP 8.5, so I’m confident there shouldn’t be any issues.
That said, if you run into any errors or notice behavior that differs from before, please let me know via Discord or another channel.