Skip to content

Releases: Huseynteymurzade28/pokeductor

Release list

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 20:09

Added

  • CONTRIBUTING.md: the commands CI runs, the MSRV and where it is declared,
    where a change belongs, and the comment, test-naming and commit conventions
    with an example of each from the code. (#30)

  • A full-screen evolution view, on F. Wide branching chains — Eevee's eight
    branches, Tyrogue, Wurmple, the regional-form lines — need more rows than the
    evolution panel can ever offer, so there they degraded to the compact text
    tree; handed the whole terminal they get the sprite cards they were designed
    for. Same cursor and requirement readout as the panel; Enter takes the stage
    under the cursor and collapses back to it, and Esc collapses without
    taking one. (#3)

  • A head-to-head card, on C: pin one species, then press it again on a second
    to compare the two. Base stats as mirrored bars with the margin and winner per
    row, the totals, the hardest same-type hit each side lands on the other, and
    their measurements and abilities. Both sides are records the app already
    holds, so the card costs no request to open. (#20)

  • R loads a random species from the list as currently filtered: type:ghost
    then R is a random Ghost. The one way through the list that does not need
    you to already know what you are looking for. (#28)

  • A second palette, and --theme to pick one. pico8 is the palette the
    interface was designed in and stays the default; dmg is the Game Boy DMG's
    greens, which is a joke worth making and needed no new rendering to make —
    only other numbers. Sprites are quantized to the DMG's four shades the way
    the hardware quantized everything, stat bars carry their scale in brightness
    where there is only one hue, and the choice is kept between runs beside the
    language and the sort order. theme.rs said from its first line that
    centralizing the colours made it trivial to swap palettes later; this is the
    payoff it never collected. (#29)

  • A species' alternate forms, on the info card and behind V. Forms sit in the
    master list as ordinary entries (raichu-alola), so they were reachable only
    by already knowing the name, and nothing on Raichu's card said an Alolan form
    existed. The card now lists the others in a Forms row, and V opens a picker
    over every variety — the one on display marked — that loads the one chosen.
    The mapping is the species record's varieties list, which the bundle
    already fetched and threw away, so none of it costs a request. (#19)

  • The party card has a cursor, and C on it pins the member under the cursor
    or — with another species already pinned — opens the comparison against it.
    The party is six records picked deliberately, so it doubles as the shortlist
    to compare from. (#34)

  • The info card shows a species' breeding and field data: egg groups, gender
    ratio, catch rate with a word for which way it runs, growth curve, base
    happiness and habitat where the games recorded one. All six ride on the
    species record the bundle already fetches, so none costs a request. A
    genderless species says so; a species with no habitat gets no row. (#31)

Changed

  • The sidebar's state — the master list, the search box, the ordering and the
    cursor — is its own browser.rs, holding no client and spawning no tasks, so
    the rules that are easiest to break by accident can be tested directly: the
    highlight surviving a narrowing search or a re-sort, the cursor wrapping, and
    a filter whose roster has not arrived matching nothing rather than
    everything. The panels have TestBackend render tests beside them, covering
    what each says when it is loading, empty or in error, and both sides of the
    evolution graph's card ↔ text-tree threshold. app.rs and ui.rs had no
    tests at all before this. (#21)

  • Chain cards are centred on their canvas and no longer stretch past a readable
    width, so a wide screen draws one connected graph rather than clusters spread
    to its far edges.

  • The sidebar asks PokeAPI for its whole list rather than the 1302 entries
    that were all of it when the limit was written. PokeAPI appends, so the
    newest alternate forms — everything past that count — were being cut off the
    end: absent from the list, and so unreachable by name and unopenable from a
    Forms row. (#19)

  • Cached species bundles are now version 7, so every cached species is
    fetched once more, the first time it is opened, to pick up the field data and
    the species' form list. The flavour blurb now takes a column that fits it
    exactly, where before it needed one spare row.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 10:01

Added

  • A moves card, on M: the learnset for the newest games a species appears in,
    with each move's type, category, power, accuracy and PP, and a description of
    the one under the cursor. The rows come with the species record, so the card
    costs no request to open; the per-move records are fetched as you scroll and
    cached permanently.
  • Two more search filters: ability:levitate narrows the list to everything
    that can have an ability, and egg:dragon to a breeding group. Both combine
    with type: and with each other, and both accept the short forms a: and
    e:. Breeding groups answer to their in-game names as well as PokeAPI's
    older spellings, so egg:grass reaches the group the API files as plant.
  • A command-line interface: pokeductor <name> opens straight on a species,
    --lang picks the interface language, --clear-cache and --cache-dir
    manage the on-disk cache, and --version and --help answer at last. The
    name argument goes through the search box, so pokeductor 25 and
    pokeductor type:ghost work too. (#5)
  • Terminal colour-depth detection. Sprites quantize to the xterm-256 palette on
    terminals without truecolor instead of being dropped, and --color and
    NO_COLOR override what detection concluded. (#4)
  • The party, interface language, sort order and shiny toggle are carried over
    between runs, kept under $XDG_STATE_HOME/pokeductor.

Changed

  • The on-disk cache format is version 5: species records now carry their
    learnset, so entries written by an earlier build are re-fetched once.
  • reqwest now uses rustls-tls rather than the platform's TLS. Release
    binaries link no system OpenSSL and carry their own root certificates, which
    is what lets one Linux build run anywhere.
  • With no colour available, sprites are skipped in favour of the placeholder the
    panels already fall back to, and the list cursor falls back to reverse video.

Fixed

  • The type matchup card ignored the ability immunities the party card already
    accounted for, so the two disagreed about the same species. (#13)

Performance

  • An idle screen no longer redraws eight times a second. The animation tick runs
    only while a request is in flight, which is the only time a spinner is on
    screen: measured idle CPU goes from ~1.1% of a core to 0.00%. (#15)
  • A sprite's crop box is worked out once when it is decoded rather than scanned
    out of all 96×96 pixels on every frame, halving the sprite work in a frame
    that draws a full evolution chain. (#16)