Skip to content

Releases: Twil3akine/atcoder-random-picker

Release Note v1.2.0

31 Aug 12:26
96a903e

Choose a tag to compare

🚀 v1.2.0 - 2025-08-31

概要

  • 入力キャッシュ機能の追加によるユーザビリティ向上

新機能・改善点

フロントエンド

  • 入力キャッシュ機能の追加
    • 直前に入力した Diff 範囲をキャッシュし、再訪時やページ更新時に復元可能に
    • ユーザが繰り返し同じ範囲で問題を探す際の利便性が向上
  • 不正入力判定の改善
    • 不正な範囲指定に対して即座にエラーフィードバックを返却

注意事項

  • 入力キャッシュはローカル環境に保存されるため、環境が変わるとリセットされます
  • 不正入力判定の強化により、従来許容されていた一部入力が弾かれる場合があります

What's Changed

  • 前回の入力をキャッシュする程度の機能 by @TrueRyoB in #37

New Contributors

Full Changelog: v1.1.0...v1.2.0

Release Note v1.1.0

27 Aug 13:20
f61be8f

Choose a tag to compare

🚀 v1.1.0 - 2025-08-27

概要

  • フロントエンド・バックエンド双方のユーザビリティ向上と API エラー処理の改善

新機能・改善点

フロントエンド

  • エラーメッセージの改善

    • HTTP 404 エラー時に JSON 形式で理由を明示的に返却
    • errorMessage に表示される内容を分かりやすく変更
  • UI改善

    • 「Pick」ボタンに固定幅を設定
    • loading 時のスピナー表示を最適化
    • 不正入力時のフィードバック表示を改善
  • バグ修正

    • Fetch API での 404 JSON パース時のエラー (JSON.parse: unexpected character) を修正

バックエンド

  • 404 レスポンス改善

    • 指定した Diff 範囲内で問題が存在しない場合に、JSON 形式で理由を返却
    • 従来のプレーンテキストより API 利用者に分かりやすく
  • テスト更新

    • フロントエンドや API クライアント向けのテストを更新
    • 404 レスポンスの JSON 検証を追加

注意事項

  • 404 エラー時は JSON { "message": "指定Diff範囲に該当する問題がありませんでした" } が返却されます
  • API 利用時は 1 秒レート制限が適用されます

What's Changed

Full Changelog: v1.0.0...v1.1.0

Release Note v1.0.0

19 Aug 15:09
eafbdf9

Choose a tag to compare

🚀 v1.0.0 - 2025-08-19

概要

AtCoder Random Picker(atrp) v1.0.0 は、AtCoder の未解決または未提出問題の中から、指定した難易度範囲に合致する問題をランダムに提示する初期リリースです。
「次にどの問題を解くか迷う」ときに、手軽にランダム問題を取得できるサービスです。


新機能

フロントエンド

  • 難易度範囲(最低 Diff / 最高 Diff)の入力フォームを実装
    • 負の値や範囲不正時にエラーメッセージを表示
  • 「Pick」ボタン押下でランダムに問題を取得
    • ボタン押下時に 2 秒間の loading 表示(Loader 回転 + ボタン無効化)
    • loading が解除されるまで問題の表示を待機
  • 取得した問題の表示
    • 問題記号・名前・URL を表示
    • 「Show Difficulty」ボタンで Diff を確認可能
  • エラー表示対応(APIエラーなど)

バックエンド

  • 単一エンドポイント API / を提供
    • クエリパラメータ: under / over
    • JSON 形式で問題情報 (Problem 型) を返却
  • IP ごとの 1 秒レート制限を実装
    • HashMap + Mutex による簡易制限
    • 古い IP 情報を TTL に基づき自動削除
  • 単一サーバー運用で安定稼働確認済み

注意事項

  • 1 IP につき 1 秒 1 回のリクエスト制限があります
  • 入力値のバリデーションに違反した場合は問題を取得できません
  • 複数サーバーでの分散運用は未対応(将来の v1.x.x 以降で検討予定)

技術スタック

  • フロントエンド: Svelte + Rabee UI + TypeScript
  • バックエンド: Rust + Hyper
  • デプロイ: Frontend → Cloudflare Pages / Backend → Fly.io

使用方法

  1. ブラウザでアプリにアクセス
  2. 難易度範囲を入力
  3. 「Pick」ボタンを押下
  4. 表示された問題の URL から AtCoder にアクセス

What's Changed

Full Changelog: https://github.com/Twil3akine/atcoder-random-picker/commits/v1.0.0