← Back to latest updates
RELEASE ARCHIVE

Earlier public releases.

160 earlier updates, newest first. Showing 81–100 on page 5 of 8.

  1. Released
    Marketing siteH5Backend

    Website reading hierarchy and membership campaign upgrades improve

    The marketing blog now highlights the latest story and a focused recent selection, while Product Updates shows current releases with complete history available in dedicated archives. The backend also keeps resumable membership-campaign extension logic in a new migration while restoring the original checksum of the previously deployed migration: existing membership time remains protected and a queued gift is not treated as active Max time early.

    • The blog index replaces the full feed with a latest story, recent selection, and dedicated archive.
    • Product Updates now loads the 10 most recent releases, with older records preserved in the release archive.
    • Campaign gifts append after an existing Max term, with protected migration validation and rollback paths.
  2. Released
    Marketing site

    Engineering blog improves desktop reading and technical clarity

    The marketing blog now uses a wider article and index layout on desktop. Three engineering posts were also revised: the WebSocket optimization post now separates production facts, local measurements, and inference; the rate-limiting and Git worktree posts use clearer native Chinese; and the worktree post now reflects Codex's built-in managed worktrees. Gameplay, accounts, memberships, and payments are unchanged.

    • Article and index widths increase on desktop while the mobile layout stays unchanged.
    • The WebSocket post adds evidence levels and measurement comparisons so local results are not presented as production conclusions.
    • The rate-limiting and worktree posts receive native Chinese rewrites, and the outdated Codex worktree description is corrected.
  3. Released
    H5BackendMarketing site

    Table WebSocket egress reduced by 22.3%

    H5 tables now explicitly negotiate a compact WebSocket response profile that omits deterministically recoverable defaults, repeated static fields, and no-op messages without changing the protocol used by older H5 builds or mobile clients. Under the same local 1,000-table, 20-second steady window, application JSON egress fell from 10.18 MB to 7.91 MB while action p99 remained 1.2 ms and early closes remained zero. The marketing site also publishes the complete bottleneck, implementation, and verification write-up; these local results do not claim 1,000-table production capacity.

    • Only the current H5 opts into compact-v1; Flutter, older H5 builds, and unknown clients continue to receive full JSON.
    • Under the same load, raw bytes fell 22.3%, bytes per completed hand fell 23.3%, and WebSocket frames fell 18.2%.
    • The new engineering article separates local 1,000-table stability from production capacity that remains unverified on the 2 Mbps link.
  4. Released
    Marketing site

    Blog catalog titles reviewed for clarity

    All 20 bilingual engineering posts on the marketing site have completed a title review. Twelve titles that relied on slogans, metaphors, or internal terminology now state the technical subject and article outcome directly. Article URLs, bodies, publication dates, and technical conclusions are unchanged, and the latest post on fairness information architecture is included in this website release.

    • Every existing slug and inbound link remains valid; no blog URL migration is introduced.
    • Twelve bilingual titles now explain their subject without depending on the dek.
    • The blog workflow now makes title clarity part of the opposite-vendor review gate.
  5. Released
    Marketing site

    Removing the white halo from the website icon

    The marketing-site icon now uses a full-bleed blue-black background before browsers, search surfaces, or operating systems apply their own circular or rounded masks. This prevents the old export's white canvas or transparent safety edge from appearing as a silver-white halo. The green BK mark, site content, accounts, games, memberships, and payment behavior are unchanged.

    • The 512px and Apple icons no longer contain an opaque white canvas.
    • The favicon now carries dark full-bleed images at 16, 32, 48, and 64px.
    • The green BK mark is unchanged; only the outer canvas exposed by platform masks is corrected.
  6. Released
    H5Marketing site

    More reliable navigation and error reporting in embedded browsers

    This H5 update fixes two compatibility issues limited to mobile-app embedded browsers. Older Android WebViews no longer raise an unhandled error after successful navigation when a newer array API is unavailable. On iOS Flutter WebView, a precisely matched host console-forwarding rejection during page transitions or teardown is no longer misreported as a BluffKing failure when app functionality is unaffected. Poker rules, chips, accounts, membership entitlements, and payment behavior are unchanged.

    • Android WebViews still running Chromium 90 can record completed navigation without throwing an error.
    • Only the exact known iOS Flutter host console-forwarding signature is filtered; genuine app bridge failures remain reportable.
    • The change is limited to H5 compatibility and error telemetry; game, chip, account, membership, and payment outcomes are unchanged.
  7. Released
    Backend

    Returning to the table no longer raises a false timeout-leave error

    When a player returns during the 30-second leave countdown after repeated timeouts and chooses to stay seated, the server now identifies and ignores the canceled timer message before checking the active-hand invariant. This removes false production error alerts while preserving the guard for genuine violations; the live hand, pot, chips, and seat outcome remain unchanged.

    • Canceled timer messages, including generations replaced by a newer countdown, no longer trigger table error alerts.
    • Only a message that still matches the current seat and timer generation can reach the active-hand safety check.
    • Genuine violations remain fail-closed and cannot rewrite the live hand, pot, or chips.
  8. Released
    H5BackendMarketing site

    Android 1.1.6 is live, with Table 2 as the single table

    Android public-version references now align on BluffKing 1.1.6 build 386 and its Google Play listing. H5 also completes the live-table convergence: every existing table entry route for the web and mobile WebView now renders Table 2, while the retired V6 renderer and surface toggle have been removed. iOS 1.1.6 remains waiting for App Store review and is not marked as released early. Poker rules, chips, accounts, and payment behavior are unchanged.

    • The backend mobile-version catalog now records Android 1.1.6 build 386.
    • Marketing product facts and Google Play labels now show 1.1.6.
    • Every existing web and mobile-WebView table entry now renders Table 2; the retired V6 renderer and surface toggle are removed.
    • iOS 1.1.6 remains waiting for App Store review and is not announced early.
    • Poker rules, chips, accounts, and payment behavior remain unchanged.
  9. Released
    Android

    Android 1.1.6: table recovery, session details, and membership fixes

    Android 1.1.6 build 386 is now public on the Google Play production track. Resume returns you to your real seat, leaving a code-joined public table releases the chair correctly, and an old private-room code no longer follows you into a public table. Session details now use the server ledger, while unrevealed cards from Advanced encrypted dealing remain card backs. The membership sheet no longer describes gifted access as a renewing subscription. Games still use practice chips only.

    • Resume returns you to your real seat so you can act immediately.
    • Leaving a code-joined public table releases the chair, and stale private-room codes do not carry into public tables.
    • Session details use the server ledger for real hand counts and rebuy-inclusive buy-ins.
    • Unrevealed cards in Advanced encrypted dealing hands remain card backs with an explanation.
    • Gifted membership no longer shows renewal or cancellation claims that do not apply.
  10. Released
    Marketing site

    Making capacity validation use one measurement window

    This marketing-site update records a validation-tool-only improvement: parallel load generators must now sample the same wall-clock window, reports retain each generator's actual opening time, and a missed or mismatched window stops the test. Diagnostics also separate app-thread activity, host resources, and service events from one absolute time range, reducing the risk of treating connection bursts or generator delay as steady-load behavior. H5 and backend runtime behavior, poker rules, chips, and payments are unchanged.

    • Parallel generators automatically align on one measurement window and retain requested time, actual time, lateness, and cross-process skew.
    • A missed or mismatched window, or any safety-rail breach, stops the ladder from applying more load.
    • New app-thread sampling and a one-point diagnostic entry use one absolute start time for service events.
    • Ramp, hold, and steady measurement phases are labeled so connection bursts are not reported as steady capacity.
    • Poker rules, chips, and payment behavior remain unchanged.
  11. Released
    H5BackendMarketing site

    Fixes for table signals and replay display

    This patch applies targeted UI refinements: action signals are more precise, the golden avatar ring is now shown only on the active or winner seat, replay displays stay consistent across state transitions, and missing follow-up community cards now use a filled-in simulation path. Core hand logic, chips, and payment behavior are unchanged.

    • The golden avatar ring now marks only the active or winner seat, so the hero seat no longer stays highlighted incorrectly.
    • Replay displays stay more consistent across state transitions, reducing stale visuals from prior hands.
    • Replay simulation now fills in missing follow-up community cards.
    • A reused signal path was clarified so action cues are less likely to fire incorrectly.
    • Poker rules, chip flow, and payment behavior remain unchanged.
  12. Released
    H5BackendMarketing site

    Publishing the production load-test numbers and capacity boundary

    The capacity post now publishes the test machine and measured boundary: a Tencent Cloud SA2.MEDIUM4 with 2 vCPU, 3.6 GiB of memory, and 2 Mbps fixed public egress. In the solo-table model, 150 concurrent players stayed within budget, 200 exceeded the latency budget, and 300 collapsed; in the six-player model, two runs at 60 players across 10 tables straddled the budget (69 ms and 157 ms server p99), while 120 players across 20 tables clearly exceeded it. The post also states that public-egress utilization was not sampled, so the collapse cannot be attributed solely to CPU, scheduling, or bandwidth. The H5 and backend also fix membership-status error handling: a failed lookup stays unknown instead of turning a database error into a false “does not auto-renew” message. Poker rules, chips, and payment prices are unchanged.

    • Publishes the production host: 2 vCPU, 3.6 GiB memory, a 3 GiB app-container limit, 2 Mbps fixed public egress, with Postgres and Caddy on the same machine.
    • Publishes the solo-table boundary: 150 players passed the latency budget, 200 exceeded it, and 300 collapsed.
    • Publishes the six-player-table boundary: two 60-player, 10-table runs straddled the budget at 69 ms and 157 ms server p99; 120 players across 20 tables clearly exceeded it.
    • A failed membership-status lookup stays unknown; H5 says “does not auto-renew” only when the absence of a manageable recurring subscription is explicit.
    • Labels the connection and table guards as a 2026-08-21 deployment snapshot and states that public-egress utilization was not sampled.
  13. Released
    H5BackendMarketing site

    Staged membership rollout, clearer subscription status, and refreshed product media

    The Max welcome campaign can now grant to one eligible canary account while pausing automatic grants to new registrations, then open the remaining rollout only after the membership and in-app message are verified. The H5 membership sheet now always presents the actual entitlement expiry date and shows management controls only when a manageable recurring subscription exists; members without one see that the membership does not auto-renew, instead of gifts or one-time purchases being described as an upcoming renewal. The marketing site's bilingual table, review, stats, and solver product scenes and sharing images are regenerated from the current H5 interface. Poker rules, chips, and payment prices are unchanged.

    • Campaign operators can restrict a batch to one eligible account; registration, guest upgrade, email verification, and OAuth linking cannot bypass that canary boundary during verification.
    • Removing the staged restriction and opening grants to later registrations happen in the same campaign-state update, while existing membership and notification grants remain idempotent.
    • The H5 membership sheet labels every date as “Valid until” rather than promising a next renewal from store state the service cannot confirm locally.
    • Auto-renew controls or store-management links appear only when a manageable recurring subscription exists; gifted and one-time membership no longer exposes a dead-end control.
    • The site's bilingual table, review, stats, and solver product scenes and sharing images are regenerated from one current H5 source baseline and pinned by hash.
  14. Released
    iOS

    iOS 1.1.3: in-app memberships, a sign-in fix, and working legal links

    iOS 1.1.3 build 353 is now live on the App Store. This update brings BluffKing memberships inside the iOS app for the first time: Pro and Max monthly and yearly plans are purchased directly through the App Store and managed or cancelled in the system subscription settings — the previous public build, 1.1.1, shipped no in-app purchases at all. It also adds six-digit email-code registration with a clearer account-recovery flow, fixes the create-account screen staying stuck loading after a failed sign-in, and makes the Terms of Use (EULA) and Privacy Policy open from both the membership purchase screen and the Legal & privacy screen. The Privacy Policy and App Support links on the App Store listing now resolve; they previously pointed at a retired address. Membership does not affect dealing, practice-chip settlement, or game outcomes.

    • iOS gains in-app Pro and Max memberships for the first time: monthly and yearly plans are purchased through the App Store and managed or cancelled in the system subscription settings.
    • Adds six-digit email-code registration with a clearer sign-in and account-recovery flow.
    • Fixed the create-account screen staying stuck loading after a failed sign-in.
    • Terms of Use (EULA) and Privacy Policy open directly from both the membership purchase screen and the Legal & privacy screen.
    • The App Store listing's Privacy Policy and App Support links now resolve; they previously pointed at a retired address.
  15. Released
    H5BackendMarketing site

    Registered-user Max gift and in-app notifications

    BluffKing can now use an auditable, idempotent membership campaign to grant 30 days of Max to every eligible registered user and send a bilingual H5 in-app message inviting suggestions and bug reports through the official X (Twitter) or Telegram channels. Activation covers existing accounts; new registrations and upgraded guest accounts receive the grant automatically after email verification or OAuth identity linking while the campaign remains active. An existing Max term is extended from its current end rather than overwritten or shortened. Guest, staff, test, and deleted accounts are excluded, and reactivation cannot duplicate either the entitlement or notification. This release creates no orders, changes no payment price, and adds no new redemption entry to the Flutter embed or Telegram client.

    • A staff writer explicitly activates the campaign and the actor is recorded; applying the database migration alone never starts the bulk grant.
    • Each eligible registered user receives exactly one 30-day Max entitlement and one in-app message, protected by unique constraints, row locking, and an idempotency key.
    • The H5 Home bell shows an unread dot; the message follows the selected language and exposes only the official X (Twitter) and Telegram feedback links.
    • New registrations and upgraded guest accounts receive the gift after email verification or OAuth identity linking while the campaign is active; deactivation stops later grants without revoking anything already issued.
    • The gift extends an existing Max term through the entitlement ledger without creating payment orders or rewriting historical order and revenue data.
  16. Released
    H5BackendMarketing site

    Measured capacity, service-wide rate limits, and two new bilingual engineering posts

    We measured what the production server actually holds and used that number to add the capacity controls the backend was missing: an in-flight request bound, a request deadline, live connection and table ceilings, and per-caller limits on the endpoints that previously had none. Overload now returns an explicit retry-later response with Retry-After instead of slowing everyone down; health checks and static assets are unaffected, and the table ceiling never refuses a join — though when every connection slot is taken the server is full for new connections of any kind. The marketing site also adds two bilingual engineering posts: how to measure your own service's ceiling, and how to rate-limit properly. Poker rules, accounts, membership, and payments are unchanged.

    • Measured what the production server actually holds and set the operating point at 80 % of that ceiling instead of estimating it.
    • Added the backend's missing global capacity controls: in-flight request bound, request deadline, live connection and table ceilings, with an explicit Retry-After response under overload.
    • Added per-caller limits to the endpoints that previously had none, and unified the 429/503 response shape.
    • Health checks and static assets are exempt by design, and the table ceiling refuses only the creation of a new table, never a join — the connection ceiling is global and applies to every new connection.
    • The site adds two bilingual engineering posts: measuring your service's ceiling, and rate limiting properly.
  17. Released
    H5BackendMarketing site

    H5 Max membership redemption and iOS WebView stability

    Registered users can now redeem BluffKing-issued Max membership codes from the H5 profile, while the entry remains hidden in the Flutter embed and Telegram. Staff can issue codes in batches, bind them to a recipient, set expiry, revoke unused codes, and atomically grant a 30-day Max reward when accepting feedback. Codes are stored only as digests, with single-use redemption, idempotent retry, and a membership entitlement ledger preventing duplicate or unauthorized claims. This release also contains iOS WebView focus-access failures within the host boundary and improves their diagnostics, re-captures marketing product scenes from the current H5 UI, and regenerates sharing images from the deterministic site template; poker rules and practice chips are unchanged.

    • Registered H5 users can open redemption from the profile or the /me?redeem=1 deep link; Flutter-embedded and Telegram hosts do not expose the entry.
    • Staff can batch-issue 30-day Max codes, bind recipients, set expiry, revoke unused codes, and copy plaintext that is shown only once.
    • Feedback acceptance and reward-code creation commit in one database transaction, with at most one live reward code per feedback item.
    • The database stores only SHA-256 code digests and trailing hints; single-use redemption, row locks, idempotent retries, rate limits, and a source-neutral entitlement ledger protect membership grants.
    • iOS WebView focus-access failures are contained at the host boundary with additional stage and DOM-context diagnostics for aggregation.
    • Four bilingual product scenes are re-captured from the current H5 UI, while both sharing images are regenerated from the deterministic site template.
  18. Released
    Marketing site

    New bilingual article: What FDEs actually do

    The marketing site adds a bilingual public guide to FDE work, directly answering what the role does, which day-to-day problems it solves, and which skills matter, using AI agents entering established customer-service, logistics, and restaurant workflows as the central example. This release only updates marketing content; it does not change H5, backend, gameplay, accounts, memberships, or payments.

    • Adds the Chinese and English article “What FDEs Actually Do: AI Agents in Traditional Industries,” combining public sources, employee accounts, and the author's own comparison in one practical answer.
  19. Released
    H5BackendMarketing site

    Human-table action-window and reconnect fixes, accessibility and site updates

    This H5/backend release gives every human decision window a server-issued epoch that the client returns with bet, check, fold and other actions. A delayed action from an expired or disconnected window can no longer land on that seat's later decision; reconnect snapshots restore a window only when it is still provable, otherwise the client clears the stale epoch. H5 and the marketing site also improve small-text contrast and key touch-target sizes, while the advanced encrypted-dealing disclosure now states its operating boundaries more precisely. A bilingual engineering article corrects the historical account of engine-blind dealing, and four bilingual product scenes are re-captured from the current H5. Poker rules, practice chips, memberships and payment behavior are unchanged.

    • The backend issues a decision_epoch for every human action window; the updated H5 echoes it so an expired or in-flight action cannot spill into the same seat's later decision.
    • Reconnect snapshots carry both the live action deadline and epoch: the client restores a provably current window and clears an unprovable epoch, so a valid post-reconnect action is not silently discarded.
    • H5 language, password-recovery, OAuth and empty-state actions, plus marketing navigation, legal pages, footer and pricing links, gain stronger text contrast or touch targets of at least 44px.
    • The advanced encrypted-dealing disclosure now states its full-human practice-chip scope, that the server holds no unrevealed hole-card plaintext, and the operator-trust, remote-binary-verification and disconnect-reveal boundaries.
    • A bilingual engineering article corrects the engine-blind release history to ADR-101, and the table, review, solver and stats product scenes are re-captured in English and Chinese from the current H5.
  20. Released
    H5BackendMarketing site

    Outs-calculator, classic-table spectating, coach-verdict and hand-history fixes, localized errors and UI copy, lobby/room/account reliability fixes

    This release folds in the fixes from three quality loops. Table and tools: the free outs calculator no longer counts a flush or straight draw that lives entirely on the board as yours; the classic table no longer shows a phantom seat or seated-only controls while you are spectating; your stack is no longer briefly double-counted when a stack update arrives as a hand settles; the quick calculators and the fairness-verify page localize server-side errors. Coach and review: the post-hand coach never grades the big blind's free option as a fold, recognises the hand-level aggressor, and describes preflop spots by starting hand rather than a postflop made-hand band; hand history shows showdown ranks in your language, labels uncontested pots clearly, and adds ranks for revealed opponents. Lobby, rooms, accounts: backing out of a public table joined by code frees the seat, the legacy join-by-code endpoint enforces the block list and reports host status correctly, room preview returns an explicit error on database failure, room-code digits are exactly uniform, nicknames at sign-up / guest upgrade are checked against the same character allowlist, and email change returns 500 rather than "expired" on database failure. UI: hardcoded English copy across drills, review, setup, lobby, quick-bet chips and accessibility labels is localized; calling-station AI opponents no longer stack off while drawing near-dead. Backend reliability fixes (closing back-pressure-evicted connections, export/stats error codes, refund-queue cascade on account erasure) ship too, and the AGPL §13 corresponding-source subset is republished with this release. The marketing site's product screenshots are refreshed to this UI. None of this changes memberships or payment behavior.

    • The outs calculator (/tools and POST /api/tools/poker/outs) now requires at least one of your hole cards to take part in a flush or straight draw, so outs are never overcounted.
    • Classic-table spectating hides the hero zone, start-hand, bust and take-a-seat prompts, makes empty seats inert, and shows a read-only spectator banner.
    • When a stack update arrives as a hand settles, the client drops that seat’s staged pot payout first and adopts the server value.
    • Post-hand coach: a preflop free option is never graded as a fold, and the coach reads the hand-level aggressor (not just the current street), so continuation-bet / semi-bluff barrel rules are reachable.
    • Quick calculators and the /fairness verify page localize server-side 400 errors by reason_code instead of echoing raw English.
    • The spectator-roster name separator is localized, and Home / Lobby player entries no longer keep a stale “spectator” badge.
    • Backend: back-pressure-evicted WebSocket connections are closed and detached; export and stats endpoints return 500 on database failure; account erasure cascades refund-queue rows (migration 0072).
    • Hand history: showdown ranks are localized (no more raw enums like high_card), uncontested pots read "won pot (no showdown)", and revealed opponents get a rank label too.
    • Post-hand coach describes preflop spots by starting hand (AKs, JJ+ …) instead of postflop "weak pair / overpair" bands.
    • Lobby/rooms: backing out of a public table joined by code frees the seat; the legacy join-by-code endpoint enforces the block list and reports host status correctly; room preview returns an explicit error on database failure; room-code digits are exactly uniform.
    • Accounts: nicknames at sign-up / guest upgrade use the same character allowlist as the profile page; email change returns 500 instead of "expired" on database failure.
    • UI copy: drill title / board / hint captions, review timeline, setup persona strip, lobby VPIP, classic-table quick-bet POT prefix and accessibility labels are all localized.
    • AI opponents: calling-station personas no longer stack off while drawing near-dead for most of their chips.
    • Backend source and tests pass strict formatting and all-target Clippy checks; trusted-QA self-tests no longer depend on implicit temp files in sandbox-denied locations.
    • The AGPL §13 corresponding-source subset is republished with this release (public tag solver-src-2026-08-19-2); the postflop solver’s source link points at the new tag.
    • Marketing site: product screenshots and OG images re-captured from this release's H5 UI (four scenes × EN/ZH).