Repository navigation
Releases: ImperialBower/bowery
Release list
v0.3.0
Changed
-
Breaking:
odds::computeis nowOdds::compute. Same arguments, same
result; a callodds::compute(…)becomesOdds::compute(…)with
use bowery::odds::Odds;. The module's private helpers moved ontoOdds
andOutsBaras well, sosrc/odds.rshas no free functions. These
renames are why this release is0.3.0, not0.2.1. -
Breaking:
frame::format_chipsis nowFrame::format_chips. Same
argument, same text.frame.rs's private helpers (occupied,status,
faces,last_action,street_name,caption) moved ontoFrametoo. -
Breaking (
wasmfeature):element::problems_jsonand
element::versionare nowelement::Table::problems_jsonand
element::Table::version. Same results. The JavaScript surface does not
change:BoweryTable.version()and the JSON a bad config returns are as
before. -
Breaking: the rest of the public free functions moved onto types. Same
arguments, same results:Was Now check::check(&config)check::Checked::new(&config)draw::svg(frame, layout, width, theme)draw::Renderer::svg(frame, layout, width, theme)draw::geometry::plan(…)draw::geometry::Plan::new(…)draw::geometry::outs_per_row(width)draw::geometry::Plan::outs_per_row(width)draw::geometry::strip_lines(folded, width)draw::geometry::Plan::strip_lines(folded, width)bowery::version()bowery::Bowery::version()RendererandBoweryare new unit structs. Every private helper sits on
its type too (Checked,Game,Plan,Renderer), and every test file's
helpers on a test-onlyFixture, so the crate has no free functions apart
frommainin the example. Nothing downstream calls the old names: bower
does not depend on bowery yet, and the JavaScript surface is unchanged. -
Odds percents now treat a folded seat's known cards as dead. pkcore
0.18.0addedEquityRequest::dead(pkcore EPIC-123); bowery passes each
folded seat's known hole cards through it, so they can no longer come back
as a runout card for a live seat's win percent. Percents move slightly
(closer to correct) wherever a seat has folded with known cards: at The
Hand's turn Negreanu reads 3%, not 2%. -
The outs bar asks pkcore to leave folded cards out. pkcore
0.19.0
addedGame::with_dead(pkcore DEFECT_042), so the river enumeration no
longer deals a card a folded seat holds. bowery passes those cards in and
no longer removes them from the result by hand. The bar's cards are the
same as before.pkcorebumped to0.20.0.
v0.2.0
Added
- Odds on the plates and an outs bar. Every live seat shows its win
percent (a whole number), from pkcore's equity engine, and when two seats
are left with one card to come, a bar under the pot lists the river cards
that win the trailing seat the pot alone (drawing deadwhen there are
none). Nothing shows in theseatview, when any live seat's card is face
down, with fewer than two live seats, or after the payout. The numbers are
seeded, so a replay shows the same figures each time on one target; a
preflop percent is sampled, and 32-bit wasm and 64-bit native differ, so a
still's preflop figure may differ from the browser's.- New public API: the
oddsmodule (Odds,OutsBar,compute);
Frame.oddsandFrame::with_odds;Game::seedand
Game::frame_with_odds;set_oddson the element and the wasm face;
controls.oddsin the config; a%button;bowery-still --odds. - Odds start on in replay and interactive mode when the view is
all, and
off in play mode: bots run on a timer, and a nine-way preflop step is a
25,000-sample Monte Carlo, about a second of the browser's one thread.
The reader turns them on with%.controls: { odds: false }drops the
button only, not the odds. - Folded cards: pkcore 0.17 has no dead-cards input, so a folded seat's
cards still count as live in the percents. The outs bar removes a folded
seat's cards by hand. pkcore's
EPIC-123
(pkcore 0.18.0) addsEquityRequest::dead; bowery will pass the folded
cards then. - 12 new golden files; the guides explain the
%button and
controls.odds. - The wasm grows from 1,295,901 to 1,313,728 bytes (
make size:
bowery_wasm_bg.wasm: 1313728 bytes (gate 1425491)).
- New public API: the
- The demo on GitHub Pages, at https://imperialbower.github.io/bowery/,
linked from the README..github/workflows/pages.yamlpublishessite/
frommainafter the browser proof passes, without the proof's own pages. - A theme switch on the demo page: system, paper or night. It sets
mdBook's theme class on<html>(light,coal), which every
<bowery-table>already reads and watches, so the tables redraw at once. - A guide page for each demo table, at
guide/replay.html,
guide/interactive.html,guide/play.htmlandguide/nine.htmlon the
demo site (demo/guide/), linked from each table. Each shows the table
live and the setup step by step: the script line, the config, the element,
serving it, the settings and the events. A browser test keeps the configs
shown equal to the configs the tables run, andscripts/dist.shchecks
their CDN links name the crate version, as it does the README's.
Changed
- A colour theme in
bowery.css. Light is warm paper, dark is slate
"night": light card faces, red pips, patterned backs, the seat to act in a
hue nothing else uses (amber on light, teal on dark), folded seats faded,
a bet or raise as a warm pill, the pot in gold. Every colour is a
--bowery-*custom property on:host, so a page can override any of
them. The SVG the renderer emits is unchanged: the rules select its
classes and win over its own fill and stroke attributes.
v0.1.1
Changed
- Releases need no stored tokens. The release workflow publishes to
crates.io and npm by trusted publishing (OIDC): each registry trusts this
repository'srelease.yml, and the tokens it uses last one job. - README. The CDN example names 0.1.1, and a note says how to check a
release:npm audit signaturesfor the npm package's provenance,
MANIFEST.sha256for the tarball.
v0.1.0
The first release: bower's EPIC-20, as bowery's EPIC-110
(docs/EPIC-110_Bowery.md).
Added
Configandcheck. A table is a YAML config: the mode (replay,
interactive, play), view, layout, an inline recorded hand, the players,
stakes, deck, seed and controls.checkreturns every problem at once; the
recorded hand is checked by pkcore'sHandHistory::validate.Game. Replay is pkcore's replay cursor, one moment per event.
Interactive takes a seat and goes off the record at the first action that
differs, with the hand's own deck still to come. Play deals hands against
pkcore's bots, seeded. Every hand ends in its own moments: each street,
any chips returned, the showdown, each pot share won (the eight defects of
bower EPIC-19's table, D1–D5, fixed in the kernel).Frameanddraw::svg. What is on screen, with the view applied while
the frame is built, drawn as SVG in three layouts (ring, spotlight,
ledger), light and dark: no script, no CSS, every box placed and checked
for overlap before anything is drawn (D6–D7). The pot shown counts the
bets in front of the seats (D8).<bowery-table>. Thewasmfeature'sBoweryTableand
js/bowery.js: lazy, one module shared by every table on a page, the
fallback picture kept on any failure, keyboard and screen-reader controls,
five events. The wasm is 1,295,945 bytes, under a 1,425,491-byte gate.- Proof. Golden SVGs of The Hand, a disjoint-boxes proptest, and a
Playwright suite for D1–D8, three tables on one page, a single origin and
the fallback. bowery-still, an example that turns a config or a hand history into
one SVG.