Skip to content

Release notes

What’s New

Every release, newest first. Download the current build.

  1. 5.1.39

    Latest

    Online entries: the three AKC fields are kept now

    • Sire, dam and breeder arrive from an online entry. 5.1.38 added all three to the entry form and said plainly that they would go nowhere until the server was deployed — "the form will ask; the answers will not arrive". The server was deployed on 31 October 2026, so an entry submitted after that carries all three through to the club's list. Nothing in the app changed for this. If you are already running 5.1.38 the form was always asking; what was missing was on the server, and it is not missing now.
    • An online entry submitted before that deployment does not have them. The form collected the three answers and the server dropped them, which is exactly what 5.1.38's note warned about. Nothing was lost that had been stored — it was never stored — so there is nothing to recover: a club that took online entries in that window and needs a sire, dam or breeder has to ask the owner. Entries taken at the desk were never affected, and no other field was.
  2. 5.1.38

    Fees and money: three figures the screen could not take

    • A returned cheque or a fine goes in the ledger now. GateKeeper worked them into the bottom line and had nowhere to enter one, so the figure a treasurer read was short by every cheque that bounced. Record the amount, say whether it is a returned cheque, a fine named in the premium or something else, and add a note — the cheque number, or the rule. These are money the club gets BACK, so they add to the bottom line; a refund still goes on the refund form.
    • The club's card surcharge is a figure you can enter, per run, and the bottom line takes it off. It is what the club passes on for taking a card on its own reader (CSKC charges $1.50), collected and then owed to the processor, so it is not the club's money and the screen says so. GateKeeper still takes nothing. You do not have to count the runs: it counts the ones paid on the club's own reader from the desk ledger, so the two figures cannot disagree. Leave it empty if the club adds no surcharge — empty is "not said", which reads differently from $0.00.
    • The desk's entries are listed by what each one paid, dearest first, with a count and a total for each price. Your premium's own band names (Advance, Day-of, Puppy) are not written against a hound anywhere in GateKeeper, so the price stands in for the name and you read your own names off it. Desk entries only, like every figure above it: entries taken by post or online do not come through the desk.

    ASFA per capita: the amounts, and three figures that were missing

    • GateKeeper now knows what ASFA charges. $4.00 a club-trial entry, $3.50 if your records go electronically within a week; $5.00 and $4.50 at a Regional; $6.00 at the International Invitational, where there is no discount. From the fee table printed in both Records 101 and REC 26, so the Fees and money panel works the bill out instead of asking you to type the rate. You can still type one, and it wins.
    • The $15 Records Fee is in the figures. It is due per trial whatever the entry, and it was in nothing GateKeeper showed you — so a club with twelve hounds was reading a bill $15 short of the cheque it had to write. The $10 for each LCI number requested is there too.
    • Kennel, Breeder and Bench are their own line now, at $1.00. They were counted with the breed entries at the breed rate, which charged a club $4.00 a head for a ribbon notation. The line is shown with its count, and it is not in the total: ASFA prices it "for Invitational events only" in both fee tables and charges it unqualified on the per capita sheet, so the figure is yours to settle with the Records Coordinator.
    • LCI entries are counted at the breed rate. They were left out of the count altogether. The per capita sheet has the three LCI classes as rows in its breed table, and the LCI rules send "Per Capita Fee as set by the ASFA Board" — the same fee.
    • A refund now names the hound it is for, picked from your roster. Until now the refund form never recorded which hound, so ticking "this gave back the whole entry fee" removed nothing: every refunded entry stayed in the per-capita count and clubs paid ASFA for hounds they had refunded. If you tick the box without picking a hound, the screen says so.
    • A full refund comes off the count whatever the reason, which is what the rulebook says. Records 101 is narrower — it excuses a hound excused lame or in season at roll call and says the rest "will count toward per-capita" — so the screen tells you the Records Coordinator may ask for the fee on a refund given for another reason.
    • The records packet prints the amount owed instead of "the per-capita fee is not set", and the late fine is a figure rather than "we need the fee first".
    • "Left with the club" now says what it is: "Desk takings less what is recorded". It never was the club's profit — entries taken by post or online never touch the walk-in desk, while the registry's fee is charged on every hound entered.
    • An AKC event in 2027 shows no total. The $5.50 comes from the Secretary's Pages rather than the regulations, and GateKeeper will not put a figure it cannot source into a number you budget from. The figure is named so you can check it and type it in.

    ASFA: the whole day's packet, in the order ASFA asks for

    • Print ASFA sheets now writes the whole day in REC 26's order: the Field Trial Secretary Report, the per capita sheet, then a record sheet for every breed and stake in alphabetical order by breed, with the Best in Field sheet last. One PDF per trial day, which is what ASFA wants scanned. REC 26 is blunt about why the order matters: "if the following format is not met the club will be directed to pay the full per capita."
    • The FTS Report's six questions are answered for you from what you have already recorded — judge changes, other changes to the premium, first time entrants in Open or Veteran, first time entrants in Singles, hounds working off a dismissal, and changes of information. Where GateKeeper genuinely does not know, it circles nothing and prints "not recorded — circle one" beside the question instead of guessing a No on your behalf.
    • There is now a Field Clerk box, and the records packet will not export without a name in it. That is ASFA's rule, not ours: the clerk goes on every record sheet, "even if the FTS is the clerk", and a missing one is one of the six things ASFA says it sends packets back for most often.
    • The per capita sheet follows REC 25 as revised 10/26. It gained a Magyar Agar row, Peruvian Inca Orchid moved above Pharaoh Hounds, and the LCI rows are now broken down across Open, EXC. and VETS instead of just a row total — ASFA's own newer form settles where those go. There is also a line for the $10 LCI number requests.
    • A list of what ASFA would send this packet back for, under the buttons, updating as you score. Each line quotes the error by REC 26's own number, so you can look it up: a line with no registration number, a Best of Breed forfeit that no sheet marks, a placement under 50% of the possible combined score, a hound that did not run with no reason other than "pulled", and the two per capita figures in the packet disagreeing with each other.
    • A list of what to scan in, and which record sheet each goes behind — the registration, certification and entry forms for a first time entry, the entry form for a hound working off a dismissal, and a new registration when the ownership changed.
    • Singles sheets carry the breed beside each call name, which the Records Coordinator asks for twice in writing. We print the breed rather than initials: ASFA publishes no list of breed initials, and the obvious guesses collide — Basenji and Borzoi both start with B, Saluki and Sloughi with S.
    • A fully refunded entry now comes off the per capita grid. Ch. VI §1(c) excuses the fee only for an entry refunded in full, so a refunded hound is no longer counted on the sheet you pay from. A forfeited fee still counts, since the club kept the money.

    ASFA judges' sheets, filled in from your draw

    • On Field Sheets → Steward, two new buttons at an ASFA trial. Judges' sheets (PDF) writes ASFA Sec 02 — one form per course per judge, two to a page, as ASFA prints them. Blank writes four empty ones for hand use.
    • Each form comes out with the host club, the date, and a circle round the breed, the stake or LCI class, the flight, prelim or final, the course number and the judge's number. Each hound's call name sits in its own blanket's column, above Yellow, Pink or Blue.
    • The courses and their numbers are your draw, exactly as the steward sheet shows them — gaps and all, because the number you drew is the one the huntmaster calls.
    • Judge 1 and Judge 2 are in alphabetical order by surname, the same as on the record sheet, so a judge's sheet and their score column always agree.
    • Nothing is circled on a guess. A Kennel, Breeder or Bench stake, a stake that mixes breeds, a breed Sec 02 has no code for, a course numbered above 8, or a hound whose blanket nobody recorded — each is left for a pen, and the Steward tab lists what, before you print.
    • The run-off row is never circled: Best of Breed, Best in Field and Best in Event are decided after the course, and the field clerk marks them.

    ASFA: the record sheets and the per capita sheet, printed

    • Print ASFA sheets on the Trial Day screen writes a PDF of the forms ASFA actually asks for: a Sec 01 record sheet for every breed and stake, then the per capita sheet. The record sheet is drawn to ASFA's own size and spacing, twenty hounds to a page, with a continuation page when a stake runs longer. Judge 1 and Judge 2 are put in alphabetical order by surname, so the two score columns line up with the two names.
    • Hounds that never ran are on the sheet as well, with the reason and whether the fee went back. ASFA asks for the notation either way, and a fully refunded entry is the one thing that comes off the per capita count.
    • The per capita grid is counted for you, breed by breed and stake by stake, from the same entries as the record sheets — so the two per capita figures in your packet agree, which is one of the mistakes ASFA sees most.
    • The money lines are left blank for you to fill in. Whether you owe $4.00 or $3.50 an entry depends on filing electronically within seven days, and Records 101 states the $1.00 non-regular stake charge two different ways. We are asking the Records Coordinator which it is rather than printing a figure you pay from.
    • If an entry has no row on ASFA's sheet — a Portuguese Podengo, a Norrbottenspets, or anything entered in Limited — the sheet says so on the page instead of quietly adding it somewhere. Those entries are not in the totals: add them by hand, and tell the Records Coordinator.
    • Field Clerk and Club Initials print blank, because GateKeeper has nowhere to record them yet. The boxes are there to write in.
    • Export records packet is unchanged and still beside it: the results CSV, the cover summary, and the LCI file when there is one.
    • You can print the sheets at any point in the day, including while the packet still has something blocking it, so you can see whether a hound's row reads right before twenty more are scored on top of it.

    What's due: deadlines, fines and where results go

    • A new What's Due tab in the Operations Console, for both ASFA and AKC clubs. For each trial day it lists what has to go to the registry, what is in it, the date it has to be there by, what being late costs, and the address or email it goes to.
    • ASFA. Fourteen days to reach the Records Coordinator, or ten days postmarked — the second date is the one you can actually act on, and GateKeeper has never shown it before. The screen also counts the seven-day electronic deadline that drops your per capita from $4.00 to $3.50 ($5.00 to $4.50 at a Regional), and shows when it has gone. One file per trial day, so a Saturday and a Sunday have two deadlines a day apart.
    • AKC. Seven days from the close of the whole event, not from each day, and the fine is worked out for you: $25.00 plus $5.00 for every day past it. Results go to [email protected], which is printed on the Secretary's Report itself. Your entry forms do not go to AKC.
    • Printed, Sent and Fee paid tick boxes on each line, dated. They are kept with the event, so they are still there tomorrow, in the saved file and on the other laptop. Ticking an ASFA packet as sent is the same tick as the one on the Trial Day screen, so the two can never disagree about whether you are late.
    • Every date, fine and address on the screen names the rule it comes from, so you can check it against your own rulebook.
    • If your event is recorded as one trial across two days, the screen says so and tells you that ASFA would rather have a trial a day — with one a day, each gets its own deadline.
    • The International Invitational is not worked out. It has twenty days and fifteen postmarked, and GateKeeper cannot tell that an event is one, so the screen shows an ordinary trial's dates and says to check by hand.

    Online entry: what AKC's own entry form asks

    • An AKC event now shows AKC's AGREEMENT, word for word, instead of GateKeeper's own wording. AKC's agreement is a condition of its entry form — premiums are refused over it — so an exhibitor who ticked our waiver had not agreed to AKC's, and a club submitting those entries had the wrong consent on every one of them. The text comes from AKC's own lure coursing entry form (ALR999), arbitration paragraph and all, and what each exhibitor agreed to is recorded with their entry, so you can answer the question years later. An ASFA or LCI event keeps the wording it has always shown.
    • The registry list now offers AKC PAL/ILP and AKC Foundation Stock Service (FSS). The lure coursing regulations accept a dog by any of three routes — registered with AKC, recorded with the FSS, or holding a PAL/ILP — and the list had only the first, so an owner with a PAL dog had to pick "Other" and the hound arrived looking like one from a registry nobody knows. The country box still appears for FCI and Other only: a PAL number and an FSS record are AKC's own.
    • The form asks for the sire, the dam and the breeder. All three are on AKC's entry form and GateKeeper asked for none of them, so a club filling AKC paperwork from its entries had three blanks to chase by phone after everyone had gone home. None is required, and the form says so — an owner may simply not know the breeder.
    • These three need a functions deploy before an online entry keeps them. The server stores a record field by field, and until it is deployed it will drop anything it does not know about. The form will ask; the answers will not arrive. firebase deploy --only functions is already on the owner's list.

    Fast CAT: the figures AKC's Secretary's Report asks for

    • The pre-flight screen now shows the figures for AKC's Secretary's Report beside each Fast CAT file: the event number, the date, the club, total entries, total qualifiers and the scratches. AKC's own results template carries that block above the dog rows, the CSV has no room for it, and its note beside the entry total reads "(Total entries should be the same as what is listed on the Secretary Report)" — which is a warning about counting the same hounds twice by hand at the end of a day and getting two answers. These come from the same runs the file is made of, so they cannot disagree with it.
    • Each scratch says what it was actually recorded as — absent, excused, disqualified, dismissed, or entered with nothing recorded at all. AKC's form has the one word; a hound a judge disqualified is not a hound that failed to turn up, and you can see which line of the form each one belongs on.
    • Three fields are named as yours to fill in: Event Secretary, Secretary Email and AM or PM. GateKeeper holds no secretary name, and a test carries a date rather than a half of one. They are named rather than left blank so you are not left wondering whether the export already did them. Set a secretary email in the online entry settings and it fills that one.
    • Nothing about the results file itself changed. Its columns are already exactly AKC's template's columns, in the same order — now checked against the template rather than taken on trust.

    AKC lure coursing: ties and Best of Breed

    • At an AKC trial, a hound entered under an ASFA stake — FCH, Limited, a Provisional stake, Kennel, Breeder, Bench or an LCI stake, which is what you get when a roster is copied over from an ASFA event — is now named on the leaderboard and on the AKC results file. It is still scored in Open, as it always was, and nothing is held back: the file still downloads. The note asks you to check which stake the hound entered, because an ASFA or Canadian field champion may run AKC Open and has to send a copy of its title certificate in with your results, while a hound with an AKC field championship runs Specials and may not enter Open.
    • When you settle a tie by typing the run-off result in the placement box, the hound you type as 1st now goes to Best of Breed and Best in Field. Before, it was whichever tied hound was higher on the entry list, and a second hound could also show 1st. Typing 1, 2, 3 in the Rank box now works the same as 1st, 2nd, 3rd.
    • While first place in an Open, Specials or Veteran stake is still tied, the breed's Best of Breed waits for the run-off, and so does Best in Field. Before, Best of Breed went straight to the other stake's winner.
    • A Best of Breed or Best in Field you recorded is marked "not counted" once its hound is no longer in the run-off, for example after a score is corrected or a hound is ruled not qualified, so you can record the run again. Before, it stuck to that hound.
    • In the Rank box, "First", "Second" and "1st place" now count as 1st and 2nd. A rank GateKeeper cannot read, such as "Winner", is flagged and the computed placing kept. Before, the hound dropped out of its tie and the other hound took 1st.
    • You can record that the judges refused a hound a qualifying score (Ch. IV §7, the Junior Courser rule) even when its scores would qualify: press "Judges refused it" under the qualifying check in Stake & Title Data. The hound then gets no placement, and the AKC file says Qualified: No.

    AKC lure coursing: championship points worked out for you

    • GateKeeper now works out AKC championship points itself, from the Schedule of Points by Breed and Region in the lure coursing regulations. The leaderboard shows what each placement is worth, whether it is a major, and the number of starters the figure was read against — so you can check the arithmetic instead of doing it. Before, you counted the starters, found the breed's row on a printed page and typed the number into Race Control, and nothing could tell you if it was wrong.
    • Second and third place are worked out from first place, the way the schedule writes it, so correcting a starter count moves all three together.
    • You can record that a judge dismissed or disqualified a hound. At an AKC lure coursing trial the only outcomes on offer were Ran, Absent and Excused, so a club that had a dismissal wrote "excused", which is a different thing with different consequences. The row is there now, with what each judge called, and GateKeeper applies the rule: where two judges are officiating and only one of them disqualifies, the hound is dismissed, not disqualified, and keeps its privilege to compete. A second dismissal disqualifies it from further lure coursing. A disqualification by the Event Committee is recorded separately, because it bars the dog from every AKC event rather than from lure coursing stakes — and it counts differently below.
    • The starters are counted the way the regulations count them, which is not the same as the hounds on the board. A hound a judge dismissed, or disqualified, is a starter and is counted — so a Saluki Open of six with one dismissal is worth five points to its winner, not four, and that is the difference between a major and not. A hound the Event Committee disqualified is not counted, nor is one absent, nor one that scored zero in the preliminary.
    • A hound excused or disqualified in the Best in Field run keeps the placement and points it won in its own stake. Before, it dropped off the board altogether: the stake lost a starter, the hound lost its placing and its major, and every hound below it moved up. You are asked where a removal happened so this can be told apart. For a tie run-off or a Best of Breed run the regulations do not say whether the placement stands, so GateKeeper keeps its existing reading and says on screen that it is unsettled rather than pretending to know; it is on the list of questions for AKC.
    • When a judge excuses a hound, whether it counts depends on why — and Race Control now asks. Four of the regulation's eight reasons count the hound as a starter and four do not, so the answer changes the points of every other hound in the stake. The eight are offered in the regulation's own order, in two groups headed by what each one costs, with "not recorded yet" as a real answer: the judge has to state the reason on the score sheet, and that sheet may not have reached the desk yet. Left unrecorded, a stake has two possible sizes, and where they pay different points the leaderboard shows both readings and asks you to check rather than guessing. Where both readings pay the same, it says nothing and shows the figure. Excusals recorded before this release have no reason saved, so they read that way too.
    • The run-entry screen also says what each answer costs, in RELURE's words rather than ASFA's. At an AKC trial it used to quote ASFA's Chapter VII at you, which is the wrong rulebook and, for an excusal, the wrong answer. A Fast CAT or Coursing Ability run says none of this: those have no stake and no starters.
    • A Best of Breed is read against the starters of every stake whose winner ran in the Best of Breed course. You can now record a Best of Breed won because the other stake's winner forfeited, and who actually ran when three or more hounds were in it — the choices the ASFA board already had. A stake whose winner forfeited, or whose hound scratched on the starting line, is left out of the count, which is the rule: a Whippet Open of six whose Specials winner forfeits is worth two points, not the five it would have been worth with the run.
    • Best in Field pays the winner the most any hound that ran in that course earned, and pays nothing extra if it ran against only one other hound. You can record who ran in it, and a hound that wins Best in Field keeps the major it already won in its stake or its breed.
    • GateKeeper says when a stake's entry should have been split, which it is whenever the entry would hold two or more five-point majors — twelve Salukis, or twenty-two Whippets in the South Central region. It does not divide the stake, so the placements and points shown are one stake's; the note names the stake and the numbers so you can see what the rule wanted.
    • A hound's title progress now counts the points GateKeeper worked out. It counted the Champ. Points box instead, so a hound that won a Saluki Open of six read "0/15 pts · 0/2 majors" under AKC Title Progress on the very screen that said, three panels up, that the win was worth five points and a major. Nothing had to be typed for the figure to be right, and nothing was.
    • On a two-day event, Saturday's points keep counting while Sunday is on screen. They did not before.
    • The Champ. Points box in Race Control is now an override. Leave it empty and the figure comes from the Schedule of Points. Type one and it wins — a secretary with the printed page in hand is the last word — and the box asks why, so the reason is on the record with the figure. The leaderboard then says which figure is going on the record: "Race Control has 4 typed in, and an override wins: 4 points is what goes on the record and counts toward the title. The schedule says 5." Where no reason was typed, it says that too.
    • Every figure you have already typed into an event still counts, exactly as it did. Nothing you have scored changes under this.
    • Whippets, Borzois and Rhodesian Ridgebacks have a different points row in each of AKC's six regions, so GateKeeper reads the region from your event's location ("Hollister, CA"). If it cannot tell which state you are in, it says so and names no figure for those three breeds rather than guessing — the other thirteen breeds share one national row and are unaffected. Put the state in the event location and the points appear. A location written with dots is read properly now: "Washington, D.C." is the District of Columbia (region 1), where it used to be read as Washington state (region 5).
    • Singles earns no championship points, and nor do the Junior and Qualified Courser tests. Open points count toward a Field Championship, Specials points toward a Lure Courser Excellent, and Veteran points toward either.

    Reading the screen outdoors, and errors that tell you what to do

    • A text size setting: Normal, Large or Extra large, from one button in the header next to the theme. It makes everything bigger — type, buttons and the spaces between them — so the app is easier to read and easier to hit with cold hands. It is remembered on this computer.
    • It does not change your printouts. Large and Extra large made the gate and check-in sheets, roll call, the race sheet, the printable report and the QC certificate print 15% or 30% bigger too: at Extra large a certificate that fits on one page came out on two, and a full-width sheet was shrunk back by the printer instead. They now print at normal size whatever the screen is set to, which matters because turning the text up is exactly what you do on a bright day in a field — and those sheets have to match the clipboard.
    • The labels on the phone's bottom bar are bigger, 12 px instead of 9. To make room, two of them are shorter: Race Control reads "Race" and Walk-In reads "Walk". The full names are unchanged everywhere else, and a screen reader still says the whole thing.
    • Error messages say what to do. Several said only that something had failed — "Failed to archive event." Each one now tells you what happened, that your event has not been changed, and what to try. Words that meant something to the program and nothing to you have gone.
    • Buttons on the scoring and entry-desk screens are easier to hit. Seventeen of them were smaller than a fingertip on a phone — among them Print Race Sheet, "Import hounds from a CSV", the share and background buttons on a run card, and most of the desk's payment controls: Take payment, Show, Undo, Keep it, the reason box, the check and receipt numbers and the name of whoever took the money. They are all at least 44 pixels now, which is the size a glove can find. Nothing changed what it does; a few of the rows they sit in are taller.

    Fees and money: what you owe, and what you are left with

    • A new Fees and money panel on the Trial Day screen adds the weekend up: what was taken at the desk and by what method, what was refunded, the registry's fee, and what is left with the club.
    • GateKeeper now counts the entries the registry charges you for. You used to work that out from the entry list by hand. ASFA's own records report puts per-capita cheques that do not match the count among the commonest errors, so this is the number the app is now sure of — and it shows its working.
    • At an AKC event the whole fee is worked out for you. The recording fee is in the regulations: $4.50 an entry for an event in 2026. Note that Chapter IX of the printed regulations still says $3.50 — the 2026 rise is in a green insert at the front — so if you have copied $3.50 into a premium from the rulebook, that is where it came from. GateKeeper uses the fee that was in force on your event's own date, so a December event still gets December's fee.
    • At an ASFA event you still type the per-capita rate, because the rulebook does not carry it — it points at the schedule of fees on asfa.org. The app counts the hounds; you supply the rate. Until you do, the "left with the club" line is blank rather than a number that quietly leaves the per capita out.
    • Both registries charge for a hound that was entered and paid for and never ran, and neither charges for one whose entry fee was refunded in full. A part refund does not remove the fee, so there is a tick box for "this gave back the whole entry fee" rather than the app guessing from the amount.
    • A refund ledger, with the rulebook's own reasons: a breed disqualification at roll call, lame at roll call, a bitch in season, a hound ruled ineligible. Picking a reason shows you the rule, including the two that only apply if the exhibitor told you before or during roll call, and the 90 days you have to send an ASFA refund cheque in. The app reminds you as those 90 days run out.
    • A hound withdrawn lame in the meet is in the same list and is owed nothing — the rulebook is explicit, and it is the case most easily confused with a hound found lame at roll call, which is owed a full refund.
    • A countdown to the records deadline: 7 days after the close for AKC, 14 for ASFA, and for AKC the penalty if it is missed ($25, then $5 a day).

    ASFA trials: ties, Best of Breed and the records packet

    • Update GateKeeper on every computer at an ASFA or LCI event before the event. Version 5.1.32 opens an event file or backup saved by this version but scores some of it differently, without saying so: a hound removed in a run-off, Best of Breed or Best in Field loses its placing there, a list of who ran is ignored, and an LCI tie's recorded run-off is ignored.
    • While a stake's tie for first has no result recorded, Best of Breed and Best in Field wait for it, and the records packet says "Cannot be submitted yet" and names the hounds. Before, the packet went out with two 2nds and no 1st.
    • Recording a tie as "No run-off — tie stands" now clears its "run-off required" prompt. The option used to read "Not awarded"; it records a shared placement and shared points, and now says so.
    • Typing NBQ in a hound's Rank box now makes it the NBQ, and the hounds behind it move up on the ribbons, the packet and Best of Breed. A rank GateKeeper cannot read, such as "First", is now flagged instead of quietly ignored.
    • A Best of Breed whose other hounds withdrew can be recorded as "won by forfeit". It stays that breed's Best of Breed but adds no Best of Breed points, because ASFA pays those only for winning a run.
    • If you record a Best of Breed or Best in Field winner and then correct a score so that hound is no longer in the run-off, the result is marked "not counted" and the run-off is asked for again.
    • A breed missing from the AKC breed list and typed in two ways ("Silken Windhound", "Silken windhound") now gets one Best of Breed, not two.
    • Championship points ASFA has not confirmed how to count (a Best of Breed total over 40, and Best in Field points) are now shown on the awards bar and in the packet notes, by hound, so you can check them before you send it.
    • The trial day screen has a "Records sent to ASFA on" date. Fill it in when the packet goes, and the overdue warning and growing late fine stop. The date stays put when the event is opened on a computer not yet updated.
    • At an AB/LCI trial, LCI hounds no longer appear on the ASFA records sheet or in the per-capita count, and the Entry Desk no longer refuses them.
    • The LCI results sheet says "Disqualified", "Dismissed", "Excused" or "Under the placement floor" for an LCI dog that did not place, instead of "NBQ". Those dogs no longer get a qualifying score toward an LCI title either.
    • Race Control no longer says a dog entered in LCI Excellent or Sighthound Mix is in the wrong stake. It asks you to confirm its LCC title or its sighthound background instead.
    • The premium builder checks the whole course against the 500-yard minimum, not each leg, so a normal course plan no longer blocks Print and Save.
    • Draw Entry now catches a Singles course with more than one hound in it.
    • After a Singles run-off is recorded, High Scoring Singles goes to the winner instead of staying tied on the awards bar.
    • If you correct a score after recording a stake run-off and the hounds are no longer tied, the run-off says "not counted: no longer a tie" instead of looking as if it decided the placings. You can still clear it.
    • When a Best of Breed run-off or Best in Field had three or more hounds, GateKeeper now asks who actually ran once you choose the winner, and pays Best of Breed and Best in Field points only on the hounds that ran (Ch. V §7, §11(e)). Every hound starts ticked; untick any that went home or withdrew. The recorded result names any hound that did not run. A result recorded before this version still counts every hound and keeps its warning note: clear it and record it again to make the figure exact.
    • Kennel, Breeder and Bench stakes no longer get championship points on the awards bar or in the packet. ASFA awards none in these stakes.
    • In an LCI stake, a hound dismissed or disqualified in the preliminary with no score on its card now counts in the stake size, so the placing dogs get the right LCI points.
    • A hound's ASFA title progress now counts Best of Breed and Best in Field: the extra points, the first with competition a single entry earns by winning Best of Breed, and the placement credited to the Best in Field winner.
    • The draw check stops you when a split stake has a flight of fewer than 10 hounds (21 split 12 and 9, say). ASFA requires at least 10 in each flight.
    • Each LCI stake, such as Large Open, is drawn as one stake whatever breed each dog is recorded as. Before, it was drawn separately for each breed, each starting at Course 1, and mixed breeds in a course were flagged. An LCI draw typed in Draw Entry before this version was entered one breed at a time: check it, and enter it again as one stake, before you reprint its steward sheet.
    • LCI entry warns when a dog's height puts it in the other height class, even when the dog has no date of birth on record.
    • A standalone LCI trial can export its records packet. It was always refused with "No results have been recorded".
    • The records packet no longer says "Per-capita owed: $0" for entries imported from a spreadsheet or added by hand. It says how many entries have no fee recorded and leaves the amount blank, so count the paid entries from your own records.
    • The LCI results sheet puts NBQ on the fifth-placed hound only, not on the sixth and lower.
    • On the cover sheet, each breed's "entered" count includes hounds scratched at roll call or turned away at inspection, so it matches the "Entered, did not run" list.
    • An LCI event run as its own trial shows each dog's score, the LCI placements and points on the Leaderboard and in the dog's record, and publishing posts them. Before, every dog showed PENDING at 0.00.
    • A hound excused, dismissed or disqualified in a run-off, the Best of Breed run or the Best in Field run now keeps the placing and points it earned in its stake that day (Ch. V §7, §11(g)). Before, it lost its placing and the next hound moved up. Race Control asks where a dismissal or disqualification happened; one saved before this version asks again when you open it. It still counts on the hound's record, and the records packet says where it happened.
    • In a tie run-off between two hounds where one is dismissed or disqualified, the other hound wins (Ch. V §6(g)). There is nothing to record.
    • The records packet now gives the judge's reason for every excusal, dismissal and disqualification.
    • LCI ties can now be recorded (LCI rules Ch. IV §7). The LCI Results panel asks for each tie's run-off: who won, who forfeited, or that the tie stands. A tie that stands puts each dog at the lowest placement it could have won and shares the points, with fractions dropped. Ties for NBQ are run off too. The panel used to say the LCI rules have no tie rule; they do.
    • The records packet no longer stays stuck on an LCI tie once its run-off is recorded. Until then it names the tied dogs and says to record the run-off on the LCI Results panel.
    • An LCI dog dismissed or disqualified in a tie run-off keeps the placing and points it earned in its two courses, and in a two-dog run-off the other dog wins. Race Control asks where an LCI removal happened.

    ASFA Provisional stakes: new, check by hand

    • Provisional Open, Provisional Field Champion and Provisional Veteran are now three stakes, each placed on its own with its own stake size and points (Ch. V §10). Before, every Provisional hound of a breed was placed in one stake. Provisional Veteran has the Veteran age minimum.
    • Their winners run off for Best of Breed and take Best of Breed points (Ch. V §7). A Provisional breed's Best of Breed does not go to Best in Field (§10.4). The points are recorded but count toward no title until ASFA recognises the breed.
    • These stakes are new and have not been used at a trial yet. Check every Provisional placement, Best of Breed and their points by hand before you send the records. GateKeeper reminds you wherever they appear.
    • Update GateKeeper on every computer at the event before you use them. Version 5.1.32 and older cannot open an event file or a backup that uses them.
    • A hound entered as "Provisional" in an earlier version is placed in Provisional Open until you choose its stake on the roll call or in Race Control. GateKeeper names each one. A breed with hounds in both a regular stake and a Provisional stake is flagged, so you can check which stake each hound entered.

    Race Control and the results screen

    • A hound marked Absent, Excused or Dismissed can be changed back to "Ran" and saved. Before, it stayed scratched and was left out of the placements and the AKC file.
    • A Coursing Ability time typed as the stopwatch shows it, such as 1:25.30, is saved as 1 minute 25.30 seconds. Before, it was saved as 125.30 seconds, which could fail a dog that passed.
    • The Preliminary/Final question for an excused hound starts blank for each new hound, instead of carrying over the last hound's answer.
    • Two changes in a row to a dog's record from the results screen (say its date of birth, then its height) now both stick. The second used to undo the first.
    • Dogs placed 21st, 22nd, 23rd, 31st and so on show their placing as a number, not the 1st to 3rd medals.
    • At lure coursing trials a hound's Run Log shows each course's score instead of "No Data".
    • The shareable result card names the right association at ASFA trials.
    • Adding a test to an event set up without any now moves the runs already scored into that test. Before, they disappeared from every screen and file.
    • The "Same handler as …, which ran a moment ago" warning no longer names a dog that has only been registered or was marked absent.
    • Coursing Ability: Save Run stops a Pass recorded for a run over the course time limit and says so. Check the time, or press Fail.
    • Coursing Ability: Fail can be pressed for a dog that quit with no time, and it shows as FAIL everywhere, including the printed results. A dog saved with nothing entered is no longer sent to AKC as a FAIL.
    • The pre-flight check stops you when a Fast CAT dog's height was changed after its run was scored, because its points no longer match its handicap. Open the run in Run Entry and save it again.
    • Leaderboard: after you set a placement by hand (after a run-off, or a DQ), the dogs below it are ranked correctly. Before, the next dog could repeat the rank above it, sometimes a gold 1st, and the CSV export copied it.
    • Walk-ins: the Height box says it is in inches and refuses a height over 45 (155 typed for 15.5, say), as the dog's record does. A wrong height gave the wrong Fast CAT handicap.
    • At ASFA trials, Race Control no longer shows "Run 1 / Run 2 Qualified" ticks, and a hound's Run Log no longer shows "Qualified: Yes" from them. ASFA qualifying comes from the scores.
    • Fast CAT timer: leaving Race Control closes the timer connection, so Connect Timer works when you come back, without restarting. If the cable comes out, the button stops saying Connected and asks you to reconnect.
    • Chute Timer: Delete asks first, so a stray tap no longer loses a delay's timing, the judges' penalties and the note.
    • Opening an event file of another kind from Operations > Data (an ASFA trial while a Fast CAT was open, say) now switches Race Control, the printouts and the AKC file to it. Before, they kept the previous kind until the event was closed and resumed.

    Coursing Ability: the veteran distance

    • AKC lets a dog older than 7 run two-thirds of the course (200 of the 300 yards, or 400 of the 600) if the owner declares it before the start (CAT Regulations Ch. 3 §3). Record the declaration at the Walk-In desk, on Roll Call or in Race Control. It is kept on the dog's entry for that test, so a two-day event can differ by day.
    • The Run Order / Gate Sheet shows the declaration before the dog runs, and warns if the date of birth says the dog is not older than 7.
    • The distance is saved with each run when it is scored, and shows in the run log. The time limit is the course's own. A pass at the veteran distance counts toward titles like any other. The file you send AKC is unchanged.
    • The CAT premium now states the rule in AKC's words: dogs "older than 7 years of age". It used to say "7 years and over".

    AKC and ASFA files

    • The AKC lure coursing file no longer says "Qualified: No" for hounds placed as qualified, leaves off withdrawn and refunded entries, and shows the stake each hound actually ran.
    • A Coursing Ability dog recorded as absent no longer goes on the AKC file as a FAIL.
    • On the AKC Running Order, Junior Courser hounds are checked as running alone.
    • On an ASFA trial, the printed Official Results list disqualified and dismissed hounds with their status and count them in Total Starters.

    Printouts and labels

    • Ribbon, LCI ribbon and Best of Breed / Best in Field labels carry the date of the trial being printed. Sunday's labels used to print Saturday's date.
    • The Roll Call & Inspection log lists only the hounds in the trial being printed, under that trial's date and association. It no longer prints "AKC" against every hound at ASFA trials.
    • At a Fast CAT or CAT, the printed Run Order / Gate Sheet, Copy Text and Email follow the order saved in Manage Queue, numbered straight down. They re-sorted by breed, which undid handler conflicts you had moved apart. Lure coursing sheets are unchanged.
    • The check-in sheet no longer flags every dog "No owner signature recorded" at events that do not use the ASFA entry desk, which includes every AKC event.
    • The steward sheet marks a hound turned away at inspection instead of printing it as a runner with an empty box.

    Online entry

    • The Online Entry screen opens at the fees your event already carries, including ones read off your premium, instead of at $0.00 for you to type again. Still editable, and leaving the late fee empty still means one price all weekend.
    • The late fee no longer starts on the evening before your "Late fee starts" date. It starts early on the morning of that day.
    • An exhibitor whose entry you withdraw now sees "Entry withdrawn" on their entry page, not a request to send the fee and the club's PayPal address.
    • An exhibitor who enters one dog, presses Back and changes the form for a second dog now gets the second dog entered. One who presses Back only to fix a typo goes back to the same entry and its payment page.
    • If the payment page fails to open, the exhibitor is told the entry is recorded, with a link to it and a button to try paying again.
    • Each test shows its real price before anything is ticked, instead of $0.00.
    • A waitlisted exhibitor who tries again is told the dog is on the waitlist, not that it is already entered. If you have since added the hound to your running order, they are told it is entered; if you took it off the waitlist, they are told so and asked to contact you.
    • "Mark paid" stays on an unpaid entry after you add its hound to the event.
    • "Mark paid", "Withdraw entry" and "Disconnect" now say why when they do not go through, and withdrawing a hound already on your running order no longer claims a place was freed.
    • After you change an entry limit on the Tests tab, Online Entry says the form still uses the old limit until you press Save changes.
    • If the signal drops just after Submit, the form no longer says "Nothing has been submitted". It says the entry may have been recorded and that pressing Submit again is safe.
    • If the security check fails to load on a weak signal, pressing Submit again works. Before, the button stuck on "Submitting" and the exhibitor had to start again.
    • A hound you already entered at the desk or by mail, whose owner then enters it online for the same limited test, is told it is already entered. It is no longer waitlisted against its own place or charged twice.
    • An exhibitor who tries again after an unpaid entry's 48-hour hold ran out, in a test that has filled since, is told the hound is not entered and to contact you before paying, not that it is already entered.
    • An exhibitor's entry page shows when you have added a waitlisted hound at the desk or taken it off the waitlist, instead of saying you will be in touch if a place opens.
    • Clearing the "Late fee starts" date no longer stops Save changes and Close entries from working, and it takes the date off the form.
    • A test renamed on the Tests tab shows its new name on the form once you save Online Entry, and a removed test closes at the next save. An online entry for only a removed test is no longer added to every other trial.
    • A trial still open to online entry cannot be removed. Untick it under Online Entry and save first.
    • Export CSV under Online Entry names the tests each entry is for (Saturday, Sunday) instead of codes, so payments can be matched to days.
    • Online entries added to the running order keep the cents of the fee, so the check-in sheet shows $27.50, not $28.
    • Opening an event from the cloud brings its online entry settings, so a second laptop sees that entries are open and can close them.
    • Online entry opened from an event you are only viewing (before using a pass) is remembered on this computer, so Close entries and the counts work. An archived event's online entry can still be closed, but not opened again or changed.
    • A dog entered with no registration number yet (PENDING, N/A, TBD, "AKC Pending" and the like) is now its own entry. A second exhibitor's dog is no longer turned away as already entered, the dogs no longer share one place against an entry limit, and Import brings each one in as its own hound. If you imported such entries before this update, remove the old combined hound, then run Import again. Until you do, Import does not add that hound's own dog a second time, and a dog taken off the waitlist stays off.
    • Sending the same unregistered dog again with another test added enters and charges only the new test.
    • When a place comes free, a waitlisted hound has an "add to running order" button. Use it rather than typing the hound in at the desk.

    Starting an event, the free event and licences

    • A premium that caps the whole day — "250 runs per day", shared by the tests running that day — is now read as one limit for the day instead of being put on each test, where four tests would have read as a cap of 1,000. It is shown as not checked until you confirm it, and it does not stop entries yet.
    • A premium that disagrees with itself about its own dates is flagged on the review screen instead of being taken. A trial labelled Sunday on a date that is a Saturday, or a cover year that none of the trial dates agree with, is named for you to check against the paper. GateKeeper changes neither: it cannot tell which half is wrong.
    • An event opened "view, print & export" unlocks as soon as you use your free event or a pass. It used to stay locked, with every save saying "This event is archived". Events in The Vault stay read-only.
    • Resume Event now offers the free event when you have one, instead of doing nothing, and the banner's "Use my free event" uses it instead of opening the price list.
    • "Use free event" in the Cloud Dashboard only appears on the event open on this computer, so it can no longer be spent on a different or blank event.
    • The free event is no longer used up on an event more than six weeks away, where it would run out before the trial. It stays on your account.
    • A free event used with no signal is recorded on the account that used it, the next time that account signs in with signal while the event is still on. It is never taken from someone else who signs in on the same computer. A free event we give back reappears.
    • Creating an event after viewing an archived one keeps the tests, AKC event numbers, judges and venue read from the premium.
    • A new event starts with blank entry fees and closing date, not the last event's.
    • The start screen shows AKC prices for an AKC event.
    • A Club Licence pasted in the pricing window unlocks scoring straight away, without a restart. Settings now checks it against Organization Name, which is the name it tells you to correct.
    • A Club Licence holder can buy Pro Secretary from "See Pro Secretary".
    • Signing out on a shared laptop removes a beta tester's or admin's access.
    • Pressing Save in Settings no longer undoes a pass used while Settings was open.
    • Changing the event date in the sidebar moves the last day and each trial day with it, so a postponed event no longer shows as over.
    • A pass used on an event on one computer now unlocks that event on a second computer signed in to the same account. Nothing is charged twice.
    • Opening an event file or restoring a cloud backup no longer removes a pass used on this computer, or copies another computer's plan onto this one.
    • An event you bought a pass for no longer locks again, saying the pass has ended, when your free event had earlier been used on it.
    • After you pay on the website, GateKeeper checks for the pass for about a minute and says so, so nobody buys the same pass twice.
    • After buying a pass from the start screen, Resume Event offers to use it on your event instead of showing the prices again.
    • The pass notes in the pricing window and in Settings say how a waiting pass is used: open the event, press Activate, then "Use it on" that event, with a connection, before the trial. They said it was used by itself, which only happens to a pass bought from that event's own pricing window.
    • The free event is no longer offered on an event that is already over, or on a past event opened from The Vault. Viewing, printing and exporting stay free.
    • An event opened "view, print & export" says "View only — … until this event is activated" when you try to change something, instead of "This event is archived". Events in The Vault still say archived.
    • The new-event screen will not create an event that ends before it starts.
    • Recording a postponement in Changes moves the event's own dates too, so a pass bought for the new date can be used on it.
    • Beta testers and admins keep unlimited scoring while a pass of theirs is running.
    • Settings tells Pro Secretary subscribers and Club Licence buyers that their plan is active, not that an access code was redeemed.
    • A Day Pass, and the All-Breed Day Pass, now covers one day of your event: the day you choose. It used to cover both days of a two-day event. For a two-day event, use one for each day before the trial, with a connection, or use the Event Weekend. A day no pass covers is view only, and a notice at the top names it.
    • A Day Pass now runs to midnight at your club on its day, and switches over at midnight even with the screen left open. On a one-day trial, or the last day of an event, it still keeps the next day for paperwork. A pass used for a day already unlocked is not spent.
    • Reading a premium with GateKeeper's AI now needs you to be signed in (email or Google), and reads up to 25 premiums per account per day. You can always fill an event in by hand. The AI critique and dog portraits on the leaderboard also need you to be signed in.
    • Reopening this event's Premium List keeps the dates and judges you typed. If the event changes afterwards (a new date, a substitute judge, a closing date set in Settings), the premium takes the change, and the note at the top says what changed. A substitute replaces only that judge's name; the rest of the line stays. The note also lists where the premium and the event disagree. Last year's premium still never brings back its dates or judges.

    Saving and backups

    • Event files and cloud backups open again after a spreadsheet import with a hand-typed Stake ("Special", "Jr Courser"), or after a hound's height was cleared. Restore from cloud now says when it could not restore.
    • Desktop app: if the database stops taking saves mid-trial (a USB stick pulled or full), the red "not saving to disk" banner and its Export button appear.
    • Desktop app: opening GateKeeper while it is already running brings the open window forward instead of starting a second copy that could overwrite runs.
    • Automatic cloud backup no longer replaces a fuller backup with the empty copy you get by re-creating an event or opening it on another laptop.
    • A USB backup folder linked while setting up an event stays linked.
    • "Backup Active" shows only when GateKeeper can write to the USB folder. After the browser is reopened it says "USB backup paused — tap to reconnect".
    • On an iPad, the save-a-copy reminder comes back when cloud backups stop getting through, and Save .KPR, Export now and Backup All Data open the share sheet or say that nothing was saved.
    • Automatic cloud backup also leaves alone a backup that holds the day's results when this copy holds only the entries, such as a second laptop that opened the morning's file. The Cloud backup panel shows how many runs have a result.
    • After the app is reopened, a hound's run is no longer put back to an older copy kept on this computer, and a run from last month's event no longer appears on a hound entered again.
    • Runs reach the cloud even when a hound has only one run entered or no placement, and a corrected run updates its cloud record instead of adding a second one.
    • On an iPhone or iPad, the save-a-copy reminder stays on unless the event's runs are really reaching the cloud.
    • Desktop app: if the event database cannot be opened, a red banner says so and what to do, instead of the app opening on what looks like an empty event.

    Trial day and field changes

    • Setting a hound's inspection back to blank clears it, instead of blanking the whole screen.
    • ASFA roll call has an Undo for a Here or Scratch tapped by mistake. Undo also clears the hound's inspection result.
    • Clicking through the veteran age boxes no longer saves the built-in default as this event's age.
    • Cancelling, postponing or moving a day saves even with no signal. If closing online entry has to wait for signal, GateKeeper says it is still trying and shows online entry closed once it goes through.
    • At an event with no trial days, "Record a substitute" keeps the judge chosen in "Replacing", and "Fix the spelling" no longer puts an absent judge back.
    • The refunds list for one cancelled day of a two-day entry shows that day's share, and hounds with no registration number are never paired with another exhibitor's payment.
    • A negative label calibration offset such as -2 can be typed.
    • Fixing the spelling of Judge A or B no longer cancels a substitute judge recorded for one day.
    • At a single-trial event, cancelling after some courses are scored shows the reminder to ask the ASFA Scheduling Committee Chair before sending the records.
    • Recording a substitute official warns when they own a hound entered in that trial, including one entered online.
    • Cancelling a day before importing online entries puts the online payers on the refunds list, with what they paid for that day.
    • The refunds list no longer asks you to refund money already returned through PayPal or Stripe. A fully refunded or charged-back entry is still listed, with no amount, and after a partial refund only what is left is shown.
    • The Entry Desk checks certification against this trial's closing date, not one from another trial's premium.
    • Opening Trial Day on an archived ASFA event no longer warns "event details are locked" every time. Roll call, inspection, the draw and the entry desk are locked there.

    Importing a spreadsheet

    • Importing the same spreadsheet again updates the hounds already there instead of adding them all a second time, and keeps details the sheet leaves blank. Hounds are matched by registration number first, then by call name and owner. A row that could be more than one hound is added as new and listed in the preview for you to check, never merged into another hound.
    • A Breeder column no longer fills in Breed, a blank Handler column no longer wipes the Owner, and a sire's or dam's name no longer replaces the registered name. "Owner Last Name" and "Last Name" columns are read as the owner.
    • Hounds imported with no owner are no longer all treated as one handler.
    • Stakes written in words, such as "Field Champion", "Special", "Single" or "Jr Courser", are read as the right stake. Before, those hounds were drawn and scored in Open. A stake the event does not run is listed on the import screen so you can fix it before the draw.
    • The hound's name is found under "Dog Name", "Dog's Name" or "Hound", the registration number under "AKC Number" or "Registration No.", and the height under "Height (in)", including in GateKeeper's own Emergency Export. A file with no hound names says so instead of reporting success.
    • The "has no height and cannot be scored" warning appears only for Fast CAT, CAT and LCI hounds, not for every lure coursing hound.
    • Tools > JSON Roster accepts a GateKeeper backup file.
    • An owner who entered one hound online and another at the desk is treated as one handler by the draw check, the running-order warning, the chute warning and the ASFA same-owner checks.
    • On a weekend with more than one trial, Run Order checks same-handler spacing day by day.

    The public pages

    • Published results name the trial and use its own date, and the publish panel warns before Trial 2's results replace Trial 1's.
    • At ASFA trials, a stake split into flights shows each flight, and Singles shows as one stake.
    • Cancelling one of two tests on a day no longer marks the whole day cancelled.
    • The forecast keeps a trial day's afternoon when the forecast switches to six-hour steps partway through that day.
    • The offer to reuse a club's details lists only what it fills in.
    • At AKC trials, a hound that ran in a different stake from its entry (moved up to Specials or Veteran, say) is listed under the stake it ran in, not as a second 1st.
    • At ASFA trials with LCI, the results page lists the LCI dogs under their LCI stake with their placements.
    • Publishing results with no signal no longer leaves the button spinning. GateKeeper says the results will go up (or come down) once there is signal.
    • On poor signal, the results page says it could not reach the results instead of showing "Loading results…" for ever.
    • At an event with no separate trial days, a whole-event cancellation shows the day as Cancelled on the event page and the Weather panel.
    • The Weather tab says the alert service did not answer when the US weather service is down, including for a field placed from the device's location.
    • The GateKeeper speed standings at gatekeeperlc.com now show an event only after its club presses Publish, and drop it on "Take it down". While it is published, runs that sync later join the standings; the words beside Publish now say so. Absent, excused, disqualified and dismissed runs are not ranked.
    • Published ASFA results now show the Best in Field winner and each Best of Breed winner. A Best of Breed won without a run-off appears once that breed's stakes are finished.

    Settings and tools

    • Tools > Data > Export CSV saves a spreadsheet of the runs, or says why it could not. Before, nothing came.
    • In Start New Event, "Start from the premium" works from the keyboard.

    Walk-in desk payments

    • A walk-in entered in more than one trial now owes the fee for each of them. Tick Saturday and Sunday at a weekend event and the hound owes two day-of fees, which is what your premium publishes and what online entry has always charged. Before, it owed one fee however many trials were ticked, so the same hound read $30 at the desk and $60 online on the same check-in sheet. Tick one trial and it owes one fee, as before.
    • After Add walk-in, the hound is saved at once, as before, owing the walk-in fee. GateKeeper then asks how they are paying: Cash, Check, Card on the club's own reader (type the receipt number; GateKeeper does not charge the card), or Pay later. One payment can cover several of an owner's walk-ins.
    • The walk-in screen shows in red who still owes, and anything paid twice. Take a payment later, or undo one recorded by mistake, giving a reason.
    • The ASFA Entry Desk has a Walk-in fee column. The check-in sheet's Collected box shows recorded payments. Field Sheets has a new Desk takings sheet with totals for cash, checks and the club's reader. The refunds list for a cancelled day says how each walk-in paid.
    • GateKeeper does not stop an unpaid walk-in from running; the club decides.
    • The walk-in payment section is back in Settings, with your saved settings, and says what the desk does today. Charging cards inside GateKeeper comes once a club can connect its Stripe account.
  3. 5.1.32

    Entry limits you can see, check and correct

    The Tests tab (Trials at an ASFA event) now shows how full each one is against its entry limit, counted one way everywhere: your running order, plus online entries not on it yet, plus any correction you make by hand. An online entry you have already added to the running order is counted once, not twice.

    An online entry that has not been paid holds its place for 48 hours, then is not counted until it is paid. Unpaid entries are listed by name with when their hold ends. They are not entries until paid, and both rulebooks say to decline unpaid entries, so mark them paid or withdraw them by the time entries close. The exhibitor's confirmation page now says when to pay by.

    • Change a limit after the event is set up. Before, it could only be typed in the new-event wizard.
    • Check a limit the premium list reader filled in. Until you do, it is marked as not checked and is not sent to your online entry settings.
    • Correct the count by hand, with a reason: mail entries not typed in yet, entries taken somewhere else, a hound entered twice.

    The same count appears beside each test on the Online Entry screen and beside each day at the walk-in desk. When a test with a checked limit is full, the desk asks you to tick "Enter anyway" before adding one more, which is only for an entry that reached you before it filled. If the online entries cannot be read (no signal), every count says so instead of leaving them out quietly.

    Online entry can stop at the limit, with a waitlist

    On the Online Entry screen, a test whose limit you have checked has a new box: Waitlist at the limit. It starts off. With it on, entries past the limit go on the waitlist and are not charged. An exhibitor whose entry is partly waitlisted is told so, with the new amount, before the payment page.

    The count it uses is the same one you see. GateKeeper sends your running order (walk-ins, mail entries, entries already added) to the online form by itself whenever your computer is online, and before it saves the box ticked. It sends the list itself, not a number, so a hold running out overnight cannot put the online count wrong. Registration numbers go as scrambled codes, not as numbers. Every computer with the event open keeps the list current, for every test. If a second computer's list is different, GateKeeper does not overwrite either one; the Tests tab asks which computer's list to use.

    A new entry goes behind the waitlist: while anyone is waiting, a place that opens is not taken online. The Tests tab lists the waitlist in the order people entered, with their email, tells you when a place is free and whom to contact first, and says when your list was last sent. Someone who says no to a place can be taken off the waitlist there (and put back), so nobody waits behind them.

    "Add the unpaid entries too" leaves out an unpaid entry whose 48-hour hold has ended when its test has no place free, and says which.

    An exhibitor whose 48-hour hold has ended can still pay, unless the test has filled in the meantime. Then a card or PayPal checkout is refused before any money moves, and the confirmation page for a manual PayPal entry stops showing where to send money and asks them to contact you. Marking such an entry paid by hand asks you once more.

    Without the box ticked, online entry does not stop at the limit, and the screens say so.

    An online entry that is only on the waitlist is no longer added to the running order by "Add to the event". It used to be added as entered in every day.

    Roll call at ASFA trials, the way it is run

    The five-minute countdown is gone from ASFA roll call. ASFA's rules have no grace period: hounds not present are scratched. Mark each hound Here or Not here as you read the names. A hound that is not here is called again after the last name, and GateKeeper offers the scratch only then. AKC events keep their five minutes, which AKC's rules set.

    Passes wait on your account

    A Day Pass or Event Weekend you buy now stays on your account until you use it, on any computer you sign in on. Before, it had to be used on the same computer within three days of paying, and it went to whatever event happened to be open.

    • Buy a pass from an event's own pricing window and that event unlocks as soon as the payment goes through.
    • Any other pass waits. The pricing window lists it, with a button to use it on the event that is open.
    • A pass is never used on an event with no date, one that is already over, or one more than six weeks away; it waits until you are nearer the time.
    • Manage billing in Settings opens Stripe's billing page for a Pro Secretary subscription: change the card, see invoices, or cancel.
  4. 5.1.30

    Weather at the field

    A new Weather tab in the Operations console. Tell it where the field is (the town is enough, or paste coordinates for a field with no address) and it shows official weather alerts from the US National Weather Service or Environment Canada, the forecast for trial hours on each day of your event, sunrise and sunset, and plain advice when it matters: thunder, heat, strong wind, heavy rain or freezing ground. Set it up at home the night before. The last forecast stays on your computer, with the time it was fetched, for a field with no signal.

    The tab also has a lightning hold timer. Press it when thunder is heard; it counts 30 minutes from the last thunder, restarts if you hear more, and needs no signal at all.

    Tick "Show this forecast on your event's public page" and exhibitors see the same forecast and alerts on your event page, the one owners already open for results.

    When the day changes: a judge who does not arrive, a day lost to weather

    A new Changes tab:

    • An official can't make it. Record a substitute judge, Lure Operator or Huntmaster for one day or the whole event. The substitute goes on the score cards, the chute timer and the records. Beside the form, GateKeeper shows what your rulebook says with the chapter and section: announce the substitute before the draw, post the change, and, where the rules give it, the exhibitor's right to withdraw before the draw for a refund. It warns if the substitute judge is also your Huntmaster or Lure Operator, or may own a hound entered.
    • Cancel, postpone or move a day. Record it, close online entry for that day, and see the rulebook's steps (for ASFA, the emergency rule and who authorizes a new date; for AKC, notifying the AKC and refunds). Print the list of who is owed a refund and copy the online exhibitors' email addresses.
    • Notice to exhibitors. GateKeeper writes the notice for you after each change. Post it to the top of your event page and entry form, and print it as a sign for the field.
    • Fix the spelling of an official's name. Judges A and B could not be edited at all after the event was created.

    For ASFA trials, the records packet now names the judges who actually judged that day, including a judge replaced partway through, whose scores stand. The changes you record are listed on the cover summary, ready for the letter of explanation ASFA asks for with the premium list when a judge changes (Ch. VI §1(a)).

    A postponed trial keeps its licence

    Changing the date of an event kept only on your computer could make GateKeeper lose track of its licence and lock scoring. The licence now stays with the event when its date or club name changes, up to the date it was always going to expire.

    Smaller fixes

    • The online entry setup no longer says "cap 50" as if entries stop at 50. They do not stop on their own; it now says to untick the test when it fills.
    • The "share results" link in the desktop app pointed at a file on your own computer. It now points at the web app, like the entry link does.
  5. 5.1.29

    The draw no longer calls a hound the wrong breed over capital letters

    5.1.27 taught the draw to group "silken windhound" with "Silken Windhound". But the check that runs once the order is typed in still compared the two spellings letter for letter, so that hound was flagged as the wrong breed for her own stake and the draw could never be marked ready. It now compares them the same way the grouping does. Walk-In already fixes the spelling; this matters for hounds that came in from a CSV or an online entry.

    A hound scratched at roll call stays on that day's list

    "Who is entered in Saturday" would not take a hound off a day where she had a score, but it let you untick one who had been scratched at roll call or turned away at inspection. Doing that took her off Saturday's records packet, along with the scratch notation and the forfeited fee. She's now locked on that day, the same as a hound with a score.

    AKC files leave off a hound on the days he isn't entered

    A dog entered on Sunday only still got a row on Saturday's AKC results file, with blanks where a result would be, so the upload told AKC he was entered in an event number he never entered. It happened on the Fast CAT, Coursing Ability and lure coursing files alike. Each day's file now lists the dogs entered that day, plus any dog with something recorded that day. The pre-flight check no longer says "Nothing recorded in Saturday" about him either.

    Bringing in online entries again picks up a day someone added

    An exhibitor who entered Saturday online, was brought into the event, and then came back to add Sunday used to show as "already in this event. Nothing to add." He stayed entered on Saturday only, so Sunday's roll call, draw and records packet never had him. Online Entry now shows him as adding Sunday, and "Add to the event" puts Sunday on the same hound without making a second copy. If Sunday isn't paid for yet, it asks you first, as it does for any unpaid entry.

    Removing a trial no longer moves its one-day hounds into the other days

    A hound entered on Saturday only had nowhere to go when Saturday was removed, and GateKeeper read that as "entered in every trial". He then showed up on Sunday's roll call, draw and records packet. Removing a trial that some hounds are entered in and nowhere else is now refused, and the message names them. Enter them in another trial first, or withdraw them, and then remove it.

    Premium List keeps the venue and fees you corrected

    If you changed the location, the entry fee, the day-of fee or the closing time in the Premium List, closing it and opening it again put the event's value back over your change. Your change now stays for this event. A new year's event still starts from its own venue and fees, not last year's.

    The online entry form asks "flat-faced?" at ASFA trials with LCI

    At a regular ASFA trial the entry form didn't ask whether the dog is brachycephalic (flat-faced). But most ASFA trials also run LCI stakes, and at LCI that answer decides the dog's height class. The form now asks at any ASFA lure coursing trial, and says it only matters for LCI stakes. AKC lure coursing still doesn't ask.

    The walk-in desk and the hound record now ask it too: at the desk once an LCI stake is picked, and on the hound record for an LCI hound or one with no stake yet. Before, a flat-faced LCI dog entered at the table was measured into the wrong height class and nobody could correct it.

    Opening an event from the cloud no longer brings the last event's fee along

    Cloud Load kept the entry fee, day-of fee and closing date from whatever event was open before, so a second event's Premium List, walk-in fee and revenue total started from the first event's numbers. They're now cleared when a different event is opened. Check them in Settings.

    An older event opened from the cloud is no longer published as AKC

    An event made before GateKeeper recorded the association was published to the online entry form as AKC, and the form then stayed AKC for good. It now publishes no association, as it always meant to.

    Fees typed with a comma

    Typing 25,50 in the online entry fee or in Premium List now means $25.50. It used to become $2,550. 1,025 still means one thousand and twenty-five.

    Small fixes

    • Best in Event (AKC lure coursing) counts every hound in the event again, whichever day is on screen. Looking at Sunday used to drop Saturday-only hounds from it.
    • Walk-In's day ticks go by the trials' dates, so a Saturday trial added after Sunday's is no longer ticked for a Sunday walk-in.
    • On an archived event, "Who is entered" says the event is locked instead of saying the change was made.
    • GateKeeper opens a little faster: Operations, Settings and the printouts now load the first time you open them rather than at startup. They still work offline.

    The contact form and Report a Problem are harder to flood

    Switching between internet addresses on one connection no longer gets a fresh daily allowance. When the system is swamped it turns extra messages away instead of letting them all through. Each message emails support once, never twice. A report from an app with an odd install id no longer fails outright, and a club with brackets in its name, like "[ASFA] Hounds", can be answered from the inbox.

  6. 5.1.27

    Report a Problem sends it for you

    Report a Problem (Field Office, Data Tools) used to open your email program, or give you the text to copy. On a computer with no email program set up, the first button did nothing at all. It now has a Send it button that sends the report straight to support, with the build details the panel already showed you, and gives you a reference number once it has arrived. Add your email address if you would like a reply. With no connection, Open my email and Copy it instead still work exactly as before.

    ASFA scores are saved again

    At an ASFA trial, pressing Save Run in Race Control said "Run saved" and kept nothing. The last check before a run is stored still held every judge's card to AKC's maximum of 10 a category, and an ASFA card scores Speed and Agility out of 25, Endurance out of 20, and Follow and Enthusiasm out of 15. So every real ASFA card was quietly refused, and the screen reported a save anyway.

    Each card is now checked against its own association's limits, the same ones the score boxes already use, and the screen only says "Run saved" when the run was actually stored. If a run is ever refused, it says so in red and the scores stay on screen.

    Found by running a whole practice trial day through the app. Fourteen hounds showed "Run saved" and none of the fourteen scores had been kept.

    Each day of a two-day event has its own entries

    A weekend with a Saturday trial and a Sunday trial had one list of hounds, and every screen used all of it for whichever day was showing. A hound entered on Sunday only was on Saturday's roll call waiting to be called. It stopped Saturday's draw from being finished. It also went to ASFA on Saturday's records packet as a paid entry with no scores, counted in the per-capita.

    GateKeeper now records which days each hound is entered in:

    • Walk-In asks, with a tick box for each day. On Saturday both days start ticked. On Sunday only Sunday does.
    • Operations → Trial Day has a new Who is entered in Saturday list, where you can tick a hound on or off for the day you're looking at. It won't take a hound off a day where it already has a score or a scratch recorded, or off the only day it's entered in.
    • Online entries keep the days the exhibitor chose.

    Roll call, the entry desk, the draw, Race Control, the standings, labels, check-in sheets, the records packet and the progress bar all go by the day you're looking at. Events set up before this change are unchanged: every hound is entered in every day until you say otherwise.

    Walk-In asks for the stake and the registered name

    Walk-In had no stake box, so every walk-in went into Open. An ASFA Field Champion or Veteran entered at the table was drawn into the Open stake. There's now a Stake box at lure coursing events. It starts at Open.

    There's also an optional Registered Name box, because the ASFA results sheet has a Registered Name column and a walk-in's was always blank.

    A breed typed in lower case no longer makes its own stake

    "silken windhound" typed at Walk-In, at a trial full of "Silken Windhound" entries, was drawn as a separate Field Champion stake of one. Walk-In now uses the spelling the event already has for a breed, and the draw groups breeds the same way the placements do, whatever the capitals.

    The records packet names every hound properly

    • The Registered Name column was blank for every hound. It's filled in now.
    • A hound that didn't run (scratched at roll call, or turned away at inspection) was listed with its call name only. It now has its registration number, registered name and owner, like every other row.
    • The cover sheet printed the Best of Breed and Best in Field winners as a long code of letters and numbers. It now prints their names.

    The progress bar moves at lure coursing trials

    At an ASFA trial the progress bar stayed at 0% however many hounds were scored, because it only counted a hound as run once it had a time, and a judged course has no time. It now counts a scored card. A hound scratched at roll call or turned away at inspection now counts as done too, so the bar can reach 100% on a day with a lame hound.

    The score cards say who the judge is

    Race Control now shows the judge's name on each card. At a one-judge trial, the second card says that no second judge is named and it can be left blank. It no longer looks like a card that still needs filling in.

    The ASFA per-capita fee can be entered

    The records packet said "The per-capita fee is not set … Enter it before mailing the packet", and there was nowhere to enter it. There's now a box for it under Records packet on the Trial Day screen. Type the fee from the schedule of fees on asfa.org. It's kept for your club's next trial, and the cover sheet works out the amount owed.

    An ASFA event opened from the cloud now stays an ASFA event

    Opening an event through Cloud Load brought across its name, date and event type, but not which association it belongs to. GateKeeper treats an event with no association as AKC, because that is what every event was before ASFA support existed. So an ASFA trial opened from the cloud turned into an AKC one on the secretary's screen: AKC's wording, AKC's draw options, AKC's export files.

    The association now comes across with everything else. Events created before the association was recorded still open as AKC, exactly as before.

    Fees can be typed into Online Entry

    Typing 25 into the entry fee box came out as 2.01, and 30 as 3.00. The box rewrote itself after every key, so the second digit landed after a decimal point. It now keeps exactly what you type and tidies it to 25.00 when you move on. A dollar sign is fine too.

    The grey example amounts in the empty boxes now start with "e.g.", so an empty box no longer looks like it already has a fee in it.

    An ASFA premium now makes its trials

    Importing an ASFA premium created the event with no trials at all. The premium reader only knew AKC's numbered tests, and an ASFA premium has no AKC event numbers. Online Entry then said the event had nothing to enter.

    When the reader finds no trials in an ASFA premium, GateKeeper now makes one per day from the dates it did find (a Saturday and Sunday trial becomes "Saturday" and "Sunday") and shows them to be checked before the event is created. The premium reader has also been taught how ASFA trials work.

    An event with nobody entered yet no longer disappears

    The start screen only offered Resume Event once at least one dog was entered. An event set up from a premium, with fees and online entry ready but no entries yet, looked like it was gone. "Start new event" would then clear it without asking.

    It now shows up to resume from the moment it has a name, and "Start new event" asks first.

    Premium List starts from what the event already knows

    After importing a premium, Premium List still said the premium had no location, no AKC event number, no closing date and no entry fee. The event knew all four. It now fills them in, along with the end date and closing time, and this year's venue and fees replace last year's saved ones.

    Online Entry says why it can't publish

    For an event that exists only on this computer, the Online Entry screen told you to "claim or activate" it, which is about licences and doesn't help, and Open entries did nothing at all. It now says plainly that online entry needs the event in your club's cloud account, and the button stays off until it is. If a save fails for any other reason, the screen now says so.

    In the desktop app, the exhibitor link pointed at a file on the computer instead of the web. It now always points at the web app.

    The online entry form now knows which event it is for

    The public entry form, the one an exhibitor opens from a link in a premium or a club's post, could not tell which event it was serving. So it headed itself "Event Entry", and it asked every exhibitor the same questions whether or not they meant anything at that event.

    It now shows:

    • the event's name, date and venue at the top of the page, so an exhibitor can see they are entering the right weekend
    • the flat-faced (brachycephalic) question only at an AKC Coursing Ability Test and an ASFA LCI trial, the two events where it changes anything, with what it changes there: the 300-yard course at a CAT, the Small height class at LCI
    • the Veteran question only where the event has a Veteran category, which is lure coursing and LCI, and not Fast CAT or CAT
    • at an ASFA event, the registries ASFA accepts, under the registration number

    The flat-faced tick matters. It goes onto the dog's record and decides which course the dog runs at a CAT. An owner who did not know what it meant could have their dog sent down the wrong one.

    How it works: when you save the Online Entry settings, GateKeeper now also publishes the event's name, date, venue, event type and association alongside them. For an event whose entry link is already live, open Online Entry and save once. Until you do, that form shows the general explanations it shows today, which still work.

    An event created before GateKeeper recorded associations does not publish one, rather than have the app guess. Once published, an event's type and association cannot change, so a guess would be permanent.

    Every printed page now says who produced it

    GateKeeper prints a line at the bottom of a page saying the software produced it, giving the version, and stating plainly that GateKeeper is not affiliated with, endorsed by, certified or approved by ASFA, AKC or any sanctioning body.

    That line was on the results report and nowhere else. Not on the race sheet, the roll call sheet, the field sheets, either premium list, the running order, the staff roster — or the Qualified Courser certificate.

    The certificate is the one that mattered. It is an AKC form, a judge signs it, an owner signs it, and the club hands it in with a hound's first entry in an Open stake. It was leaving the club with nothing on it to say where it came from.

    This is not a small point for this product. ASFA's rulebook requires IT Committee and Board approval before a club may use a computer-generated running order, and GateKeeper ships that switched off because it does not have that approval. Software careful enough to do that should not then hand a registry a signed form that says nothing about what produced it.

    The line sits at the foot of the page, never beside a signature line or an entered value. Label sheets do not get one — the paper's own geometry is the layout, and a footer would push every label off its backing.

    Two export files could be made to run a command when opened

    Nothing has gone wrong, and nothing here is known to have been exploited. This is a hole being closed.

    A spreadsheet treats a cell starting with =, +, - or @ as a formula, so every file GateKeeper writes puts a guard character in front of one. That is not new. What was new is that the guard was written out three separate times, and two of the three were weaker than the one they said they copied — both with a comment claiming they matched.

    The two weak ones missed the full-width versions of those characters, which a spreadsheet also treats as formulas, and they used a mark that a spreadsheet throws away when it saves the file back out — so a file that looked safe became unsafe the second time it was opened.

    The two files are the ASFA records packet, which goes to the Records Coordinator, and the entries and payments sheet. The second is the one that matters most: every other export contains what a club typed, and that one contains what the public typed into the online entry form.

    All three now use one guard, and a test fails the build if a fourth is ever written.

    AKC lure coursing never checked whether a hound was old enough

    AKC lure coursing is open to hounds one year of age or older — tests and trials, Ch. I §3, and Ch. VIII §1 says it again for the Junior Courser and Qualified Courser tests. GateKeeper did not check it. Not a wrong warning: no warning, no setting, nothing.

    Every other event type already did. An ASFA trial checks it, a Coursing Ability test checks it, an LCI stake checks it. An AKC lure coursing trial fell between the two: the ASFA check is skipped because the club is AKC, and the Coursing Ability check is skipped because it is not a CAT.

    So a hound under a year could be entered, run, scored, and given championship points or a Junior or Qualified Courser pass toward a title it cannot hold — and a Qualified Courser certificate would print for it, for a judge to sign.

    It now warns at the moment of saving, the same way the others do, and says where the rule comes from so you can check it. It warns rather than refuses: eligibility is the club's call, and the app's job is to make sure nobody finds out months later.

    It says nothing about a hound with no date of birth on record. A club whose hounds were entered before GateKeeper had that field would get a warning on every single save, and a warning that always fires is one nobody reads.

    Fast CAT is now checked too. It was the one event type left, and for a few hours it stayed that way on purpose: twelve months was the obvious answer and no source here actually said so for Fast CAT, and guessing at a rule is how the Chapter XV mess happened. Brian found AKC's own page, which gives it as "at least 12 months of age", and that is what it now uses. All four event types gate on age.

    The Qualified Courser certificate certified less than the rules require

    Ch. XII §1.B asks the judge to certify four things. The certificate printed two. It said the hound completed the course with enthusiasm and without interruption and ran clean alongside the testing hound, and left out that it must sufficiently course the lure and must not appear to present a hazard to the other hound. A hound that ran clean beside another but ignored the lure does not qualify, and the judge signing was being asked for less than the regulation asks.

    The course is also two numbers, not one: 600 yards and a minimum of four turns. Only the yardage was there.

    And it said the certificate was needed for the "Open or Open Veteran stake". AKC has no Open Veteran stake — its stakes are Open, Specials, Veteran and Singles. That is ASFA's shape of words on an AKC form. The Veteran stake does need the certificate, but because it admits only hounds already eligible for Open or Specials, which is now what it says.

    Printing a Qualified Courser certificate printed the whole app with it

    The QC certificate is the form a judge signs, an owner signs, and the club hands in with a hound's first entry in an Open stake. Pressing Print on it sent the printer the entire application — sidebar, header, the leaderboard behind it — across however many pages that took, with the certificate laid over page one.

    Nothing about the preview showed it. The certificate looked right on screen and right on the first page of the print dialog. You would find out at the printer.

    Fixed, and the same check now covers every printable view in the app, so the next one cannot be added without it.

    The certificate said to email the AKC. It goes to the club.

    The footer read "submit the completed certificate ... to [email protected]". An owner who did that would leave the club's results packet without the certificate, which is the one place the regulation requires it to be — and that packet is what makes the hound's Open stake entry valid.

    It now says to hand the certificate to the host club with the hound's first Open stake entry, and that the club includes it when the trial's results go to the AKC. It also names the two things a secretary gets asked at the desk: an ASFA Certification Course certificate may be used instead, and a hound with an ASFA or CKC Field Championship does not need one but must give the club a copy of that title certificate. AKC Lure Coursing Regulations Ch. XII §1.B.

  7. 5.1.20

    The website shipped 82 icons to draw three

    Nothing a visitor sees changes. The landing page downloads 35 KB less to draw it — 307.60 KB instead of 342.45 KB, or 97.94 KB instead of 110.73 KB over the wire — and that is on every page, on the connections this product is sold to people for having.

    The icon set is Font Awesome Pro, inlined as path data so there is no render-blocking request and no flash of unstyled icons. It was held as three big objects and looked up by name at the moment of drawing. That last part is what cost the 35 KB: a bundler cannot drop part of an object that is looked up by a variable, because it cannot tell which parts are ever asked for. So all 82 shipped, and the site draws three.

    Each icon is now its own item, which makes the question trivial: one nobody asks for is not in the build. Same icons available, same code to use one.

    Two things that sound like the fix and were not, measured rather than assumed: deleting a leftover import saved 0.11 KB, and a build-config flag saved 0.56 KB.

    Every Coursing Ability citation pointed at a chapter that no longer exists

    The app cited AKC's Coursing Ability rules as Chapter XV in twenty-two places, two of which a secretary actually reads: the refusal when a dog is under twelve months, and the note beside the flat-faced box explaining the 300-yard course.

    Chapter XV is the numbering from when CAT was one chapter of a larger combined book. The current "Coursing Ability Test (CAT) and Fast CAT Regulations" is its own document of eight chapters and has no Chapter XV in it. Anyone who went looking for the rule behind one of those messages would not have found it.

    The rules have not changed and were re-checked against the current text; only the numbers pointing at them moved:

    • The minimum age, twelve months: Ch. XV §3 is now Ch. 1 §2.
    • The 300-yard course: Ch. XV §9 is now Ch. 3 §3.
    • What counts as a qualifying run: Ch. XV §11 is now Ch. 3 §4.
    • The CA / CAA / CAX ladder: Ch. XV §13 is now Ch. 3 §5.

    Two corrections to what 5.1.18 said about roll call

    The 5.1.18 note below said the five-minute grace was "what both rulebooks say (AKC Ch. V §6.4)". Two things were wrong with that and both are fixed here and in the note itself.

    The chapter. It is Chapter VIII, not Chapter V — Section 6, "The following applies to all stakes", is in "Running the Meet, Trial and Test Programs". Nothing behaved differently, but a secretary who went to check would not have found it.

    "Both rulebooks." The 2026 ASFA rulebook does not appear to state a grace period at all. Ch. II §3.5 says only: "The Field Trial Chairman carries out, before the official draw, a roll call of entered hounds. Hounds not present shall be scratched." The countdown an ASFA club sees is a courtesy this app offers, not a rule it can quote, and it is left running unchanged while that is confirmed with people who run ASFA trials.

    Roll call quotes the rulebook that governs YOUR event

    The roll call screen told every AKC club that its five-minute grace came from Chapter V §6.4 — a chapter of the Regulations for Lure Coursing Tests and Trials. A Fast CAT is not run under that book. It is run under the Coursing Ability Test (CAT) and Fast CAT Regulations, which has no Chapter V, so a secretary who went looking for the rule would not have found it.

    Five minutes is right either way. What differs is the book and when the clock starts. Lure coursing, Ch. VIII §6.4: "Hounds absent at roll call or at the running of their course shall be scratched after a five (5) minute grace period." CAT and Fast CAT, Ch. 5 §1: "Dogs must be given 5 minutes grace time to arrive to the line when called." At a Fast CAT the screen now says the second one, because that is the one a club would be held to.

    The Running Order tab no longer offers a lure coursing draw at a Fast CAT

    Open the Operations Console at an AKC Fast CAT and there was a Running Order tab. It opened the AKC lure coursing draw: a course number and a blanket colour for every dog. Neither exists at a Fast CAT — dogs run singly down a straight hundred yards against a clock, and AKC's own glossary defines a course as "one, two or three hounds pursuing a lure" and a blanket as the cloth each one wears in competition.

    The tab now appears only where the event type actually draws into courses, which is lure coursing. A Fast CAT running order is a sequence, and the tool for that is unchanged: Run Order > Manage Queue under Reports, which orders the queue and resolves handler conflicts.

    The app stops calling a Corgi a hound

    An AKC Fast CAT and a Coursing Ability test are all-breed. The entry list at one is Corgis, Labradors and the occasional Pug — and roll call, the entry desk, the printed sheets, the pre-flight report, the publish button and the scoring screen all called every one of them a hound.

    Every screen now takes the word from the event: hound at a lure coursing trial, where both rulebooks use it on every page, and dog at Fast CAT, Coursing Ability and ASFA's Lure Chasing Instinct. That last one is ASFA's own distinction, not ours: the regular trial paperwork says hound throughout, and the LCI registration form says "This form is for dogs without any registration number from another registering body".

    The walk-in desk stops asking ASFA clubs for an AKC number

    Take a walk-in entry at an ASFA trial and the registration box was labelled AKC Number, with an AKC-style example under it, and it was required. ASFA takes far more than that: Ch. I §1 accepts AKC (ILP and PAL count as AKC), the NGA, the UKC, the FCI, another ASFA-approved registry, or an SPDBS critique number. So a secretary entering an NGA-registered Greyhound was being asked for a number the hound does not have, on the screen a club uses most.

    At an ASFA event the box now says Registration Number and lists what ASFA will accept. At an AKC event it still says AKC Number, because an AKC event does run on an AKC number.

    The flat-faced box now says what it will do at YOUR event

    The same form asked whether a hound is brachycephalic and explained, at every event of either association, that it "runs the 300-yard Coursing Ability course whatever its height". That is AKC's Coursing Ability rule. It is true at a Coursing Ability test and at none of the others — there is no 300-yard course at a Fast CAT, an AKC lure coursing trial or an ASFA trial.

    The question is now asked only where the answer changes something, and it says what it changes:

    • AKC Coursing Ability — runs the 300-yard course whatever its height.
    • ASFA LCI — runs in the Small height class whatever its height.
    • Fast CAT, and lure coursing under either association — the box is gone, because nothing turns on it.

    The box has NOT been hidden from ASFA clubs, which was the obvious thing to do and would have been wrong. ASFA's LCI stakes are divided on it: "Small Open: for dogs 17-1/2 inches or less at the withers and / or brachycephalic". An LCI secretary needs that tick, and now gets it with ASFA's reason beside it instead of AKC's.

    The same box on a hound's record, reached from the results screen, follows the same rule — so an imported tick can still be corrected wherever it matters.

  8. 5.1.18

    Coursing Ability clubs now get the handler warning too

    When you pick a hound to score and its handler ran another hound in the last ten minutes, GateKeeper says so — "Same handler as Bella, which ran 3 minutes ago. Give them time to get back." It is a note, never a block: a handler with help is your call.

    That warning only ever appeared at Fast CAT events. A Coursing Ability test has exactly the same shape — one hound at a time, one handler walking back from the other end — and saw nothing. It does now. At a Fast CAT event the warning also used to be printed twice, once under each run; it appears once.

    Lure coursing deliberately does not get it, and this is not an oversight. The warning is arithmetic on when a run was last saved, which at a Fast CAT is the moment the hound ran and at a lure coursing trial is the moment you typed in a judge's card — often a whole stake at a time, long afterwards. It would warn about a course that ran an hour ago. The lure coursing version of this question is answered where the running order is recorded, which checks that no one is handling two hounds in the same course.

    The weekend's combined score, for a club's own trophy

    Clubs often hang a trophy on the weekend as a whole — the hound with the highest combined score across both days. GateKeeper ranks one day at a time, because a placement is a rank within one stake on one day, so that total was arrived at with a calculator and two printed score sheets at the end of a long afternoon.

    At a multi-day AKC lure coursing event the leaderboard now carries a Combined score table: each hound's score on every day, the total, and how many days it scored on. Pick a breed to answer a premium written for one, as SANE's is.

    Open, Specials and Veteran only. A Junior or Qualified Courser test is pass/fail and Singles is not a championship stake, so neither is added in. A hound entered Open one day and Veteran the next has both days counted.

    GateKeeper awards nothing here and records nothing. The heading says so: this is not an AKC award. Two hounds on the same total are both shown on the same rank with the tie called out, because a tied perpetual trophy is a run-off or a committee's decision. A hound that ran one day of two is still listed, with "1 of 2" beside it, because whether it is eligible is in your premium and not in this app.

    The table does not appear at a one-day event, where the combined score and the leaderboard score are the same number, nor at an ASFA trial, whose stakes are not these three.

    AKC clubs can record their running order

    Draw Entry, the screen for typing in the order your club drew, only ever appeared at ASFA trials. An AKC secretary had nowhere to put a running order at all, so Field Sheets said "No courses drawn yet" over the paper sitting on the table, and no steward sheet could be printed from it.

    There is now a Running Order tab at AKC events. Type the course number beside each hound, and the blanket colour if your club drew those too. The steward sheet in Field Sheets is built from it, exactly as it is for an ASFA club.

    GateKeeper still does not draw for you. The order comes off your paper. What it does is check it, and say what is wrong before the hounds are at the line:

    • Two hounds under one handler in the same course. AKC Ch. VIII §9.1 says a person may not handle more than one hound in a course, so this is an error rather than a note — one person cannot hold two slip leads. Unless the stake has only one course, where §7.3 says those hounds run together unless the owner brings someone to handle the second or scratches one, with no refund. That one is a note with a decision in it, and the decision is the owner's. It comes up at a small specialty stake: three hounds, two of them one person's, and there is nowhere else to put them.
    • A course of four, or a Singles course with two hounds in it, which Ch. VIII §5(e) runs alone.
    • Two hounds drawn to wear the same blanket.
    • Blankets that do not follow the draw. Ch. VIII §6.10 puts the first hound drawn in yellow, the second in pink and the third in blue, so a brace in pink and blue has no first-drawn hound in it.
    • A stake divided into more courses than it needs — §6.10 asks for trios where possible. That one is a note, not an error, because "if possible" is your call and there are good reasons to hold a hound out of a trio.
    • A hound in the wrong stake, drawn twice, or left out of the order altogether.

    If your roster spells a breed in lower case — which is what happens when you import entries rather than type them — the Running Order used to mark every hound in the stake as being in the wrong draw: "Ash is a whippet in the Whippet draw." Breeds are now matched the way the rest of GateKeeper matches them, so capitals and spacing make no difference.

    Errors and notes now look different on the screen, and the line at the top counts the notes, because an order can check out and still have something worth reading.

    Checks wait until a stake is completely drawn, so a half-typed order is not reported as a broken one. Nothing here asks you to split a stake into flights at twenty: that is ASFA's rule and AKC does not have it. AKC has a split rule of its own — Ch. VIII §6.11 splits a stake "each time the entry is sufficient to hold two (2) or more five (5) point majors" — which depends on your breed and region, and GateKeeper does not check it yet.

    Singles is one group across every breed, matching how it is placed.

    AKC clubs can record roll call

    Field Sheets has always printed a roll call sheet for any club. Only an ASFA club could ever fill it in — the screen that records roll call lives on the Trial Day tab, and that tab only appears at ASFA trials. So an AKC secretary printed a sheet on which every hound read "pending" for ever, and the "scratched at roll call" note on the steward sheet could never appear.

    There is now a Roll Call tab at AKC events. Call a hound, mark it here, or scratch it, and the sheets and the steward sheet follow. If your event has more than one test, each keeps its own roll call, and the picker at the top switches between them.

    Five minutes' grace from the moment a hound is called (AKC Lure Coursing Regulations Ch. VIII §6.4). When the grace runs out the row says so and leaves the decision to you — nothing is scratched automatically. A hound that runs up at 5:01 is a word with the huntmaster, not a lost entry fee.

    ASFA clubs are unaffected: roll call stays on Trial Day, beside the draw and the entry desk it belongs with.

    Ticking one hound as qualified no longer drops the rest

    At an AKC lure coursing trial, the first hound you ticked as qualified used to change every other hound's result. GateKeeper reads "somebody has started recording qualifying" from that first tick, and from then on treated every hound you had not yet reached as not qualified, which took its placement away. Work down a roster of thirty and the leaderboard was wrong for everyone below wherever you had got to.

    Now, once a trial is recording qualifying, a hound you have not ticked is judged on its scores instead — the same Ch. IV §7 arithmetic described above. Your tick still wins wherever you have made one, because the two things §7 leaves to the judges are yours to record and not GateKeeper's to guess.

    A trial where nobody has ticked anything is unchanged. Every hound is placed as before, and nothing already saved in your vault moves.

    AKC Singles is one stake, not one per breed

    AKC's rules are explicit that a Singles stake is judged as a single field: "Single Stake entries from all breeds shall be combined to determine placements" (Ch. V §5(g)). GateKeeper was placing it per breed, so a Singles stake of four Salukis and three Whippets came out as two stakes, each handing out its own blue ribbon, its own red and its own yellow.

    It is now placed as one field, and the group is called All breeds rather than being labelled with whichever breed happened to be in it — a run-off card reading "Saluki Singles" sends you looking for a stake that does not exist.

    Nothing changes for Open, Specials or Veteran, which stay per breed. The Singles winner is still kept out of Best of Breed and Best in Field, as §5(h) requires.

    The window has a minimum size

    The app window could be dragged down to a sliver with no usable layout left in it, because no minimum was ever set. There is one now. It is deliberately generous — small enough that a tablet held in portrait can still show the whole window, which matters more than keeping the two-column layout at every size.

    The results file names the judge who actually saw the hound

    The Judges column of the AKC lure coursing file carried every judge at the event on every row. If you had named a judge on the test and a Judge A and a Judge B, all three went beside every hound, whoever actually stood at that course. And because nothing checked for repeats, a club whose test judge is also Judge A got that name twice on every line.

    Where two judges divide an all-breed trial between them, this was worse than untidy: the file told AKC that both judges saw both halves, which is the one thing the Judges column is there to answer.

    New on the Trials tab: Judges by breed. Only if your judges split the breeds between them. Type the judge beside each breed and the results file, the Qualified Courser certificate and the title records all name that judge for those hounds. Leave a breed blank and it names the whole panel, which is what every event has always done.

    It appears at AKC events with two or more breeds entered and somebody on the panel to assign, and nowhere else. If your panel judged everything together, do nothing — the only change you will see is that a judge is no longer named twice on the same row.

    This also matters for Junior Courser. JC needs two qualifying runs under two different judges, and a hound whose two runs were credited to the same person was short a leg it had actually earned.

    GateKeeper works out whether an AKC course qualified

    The two "Qualified" tickboxes at an AKC lure coursing trial were the only thing deciding whether a course counted. Nothing in GateKeeper ever worked the answer out, even though it had the scores — and those two ticks decide Senior and Master Courser legs, the Qualified column of the file you send AKC, and what the result card shows.

    Each course now says what the scores make it, beside the tick: every judge's total, what the regulation needs, and — when it is not a qualifying score — which judge fell short and by how much. Where that differs from the tick, there is a button to put it right.

    The rule is AKC Lure Coursing Regulations Ch. IV §7: 50% or more of the total points from each judge, so 25 of 50 on every card rather than 50 across the pair. A hound given 40 by one judge and 20 by the other has 60 points of a possible 100 and has not qualified — worth knowing, because that is the arithmetic most people do in their head.

    It offers, it does not decide. Section 7 lets the judges give a qualifying score to a hound that did not complete the course where there were extenuating circumstances, and withhold one from a hound whose run would not have passed a Junior Courser test. Neither of those is a number, so the tick stays yours — GateKeeper says what the scores say and leaves the box alone until you press the button. Both clauses are quoted on screen where they apply.

    One genuine ambiguity is flagged rather than buried: §7 puts the qualifying sentence before the pre-slip and course-delay deductions and does not say which the 50% is measured against. GateKeeper measures it against the adjusted total, because that is the score of record — but where a deduction is the whole difference between qualifying and not, it tells you so, so you can take it to the judge on the day instead of hearing about it from AKC.

    Nothing changes at an ASFA trial. ASFA's qualifying rule is a different one and ASFA clubs do not type qualifying in at all.

    The AKC lure coursing results file carries the results

    Export AKC at a lure coursing trial produced a file with Fast CAT columns on it: Run 1 Time, Run 1 MPH, Run 1 Points, Total Points. A judged course produces none of those, so every result column on it was blank, under headers promising miles an hour. It also wrote the call name into the Registered Name column, and carried six columns nothing in GateKeeper records and no screen can fill: Sex, Date of Birth, Address, City, State and Zip.

    The file now carries what a lure coursing result is: stake, preliminary, final, combined, placement, Best of Breed, Best in Field, qualifying where the trial recorded it, disposition, and the judges. The placements are the same ones on your leaderboard, so the file cannot disagree with the screen you checked it against.

    This is still GateKeeper's own column set rather than a format checked against an upload AKC has accepted, and the screen still says so. What changed is that there is now something on it worth checking.

    AKC clubs can record that a hound was absent or excused

    "What happened to this hound" only appeared at ASFA trials, because the rules written into it come from the ASFA rulebook. The cost was that an AKC club had no way to record an absence at all. An entered hound that never appeared went onto AKC's results file as a blank row that looks exactly like a hound whose time was lost, showed up on the pre-flight check as "nothing recorded" with nothing you could do about it, and could not be shown as absent on a published results page.

    The panel now appears at every event and asks in your own registry's words. An AKC club gets Ran, Absent and Excused, with a reason box for your own records. Dismissed and disqualified stay out of it: which one a pair of judges' calls produces is ASFA Chapter VIII arithmetic, and GateKeeper is not going to guess what AKC wants in its place.

    A hound with no measured height can now be marked absent. Before, the check that stops you scoring a hound without a height also stopped you recording that it never ran.

    Fast CAT and Coursing Ability clubs can publish results

    The Publish Results button on the leaderboard read "Nothing to publish yet" at a Fast CAT or Coursing Ability event no matter how much had been run. It only ever knew how to build a page from lure coursing placements.

    It now publishes a timed event too. A Fast CAT hound gets its speed and its points ("22.35 mph · 44.70 pts"), a Coursing Ability hound gets how many of its runs qualified, and a hound that was absent or excused says so. No placements are shown, because AKC awards none at a Fast CAT and a page that implied one would be inventing a result. Hounds that have not run yet are left off rather than listed blank.

    Nothing else about publishing changed: still a snapshot you press for, still no owners or registration numbers on the page, still labelled unofficial.

    The chute warns when a handler is being asked to run two hounds at once

    Run Entry was meant to warn when the hound you have just selected belongs to a handler who ran another hound in the last ten minutes. It never did, for any hound at any event: it looked for an owner field GateKeeper does not record.

    It works now, it matches handlers the same way the run order screen does, and it names the other hound and how long ago it ran, so you can see at a glance whether it is the same person or two people who happen to share a surname. It only looks at the trial you are scoring. It is a warning and never stops you recording a time.

    The pre-flight check asks for what the files actually need

    The pre-flight check used to demand an owner address, city, state and zip from every hound. Nothing GateKeeper exports uses those four fields, and no screen lets you enter one, so a normal event opened this screen to a wall of red and there was nothing to do about it. They are gone.

    What it asks for instead is what the upload needs. At a Fast CAT it now checks every hound has a height, because without one the hound cannot be scored at all and the Handicap column on AKC's file ships blank. Under AKC it says when a hound has no registered name, since that is what AKC files the result under.

    It reads every trial in the event, not just the one you are scoring. Saturday's missing times used to be invisible on Sunday, which is when a secretary runs this check.

    And it separates what will be wrong from what is worth a glance: a hound that has not run yet is no longer listed as an error in red beside a hound with no registration number. Withdrawn entries are left out and counted, because nothing is uploaded for them.

    Only your own registry's export is offered

    The pre-flight screen offered every club both an AKC export and an ASFA score summary. An AKC Fast CAT event now shows the AKC files, and an ASFA trial shows the ASFA summary.

    Trial and test details can be corrected after the event is created

    The Operations Console has a new tab, Trials under ASFA and Tests under AKC, listing the trials in the event. The name, the date, the judge and the AKC event number can be corrected at any point, and a trial can be added to an event that was set up with one. Before this, everything about a trial was fixed in the new-event wizard, so an AKC event number typed from the wrong line of the premium could only be corrected by starting the event again and re-entering every hound.

    Under AKC the screen also says up front what the results upload will trip on: a test with no event number, or two tests sharing one.

    Removing a trial is deliberately limited. A trial that has a hound with anything recorded in it, or a roll call, inspection or draw, or a recorded award, cannot be removed, and the screen says which of those is in the way. Those all hang off the trial, so removing it would take a day's work with it. An empty trial removes after a confirmation, and if it was the one being scored, scoring moves to the first trial that is left.

    The lobby says whether the event on this computer is AKC or ASFA

    The "Current Session" card on the lobby now shows the association and the kind of event under the club name, for example "ASFA · Lure Coursing · 2 trials". If you keep an AKC copy and an ASFA copy of GateKeeper open side by side, you can tell them apart before you press Resume.

    The access-code box and the Club Licence box no longer look alike

    Both sat in Settings addressing "beta testers", and they take different things: a short code like ASFA-BETA in one, the long signed licence in the other. A licence typed into the code box came back as "not a valid code", which reads as though the licence is broken. Each box now says which one it is, and the code box points a club licence at the right place.

    The Windows app can connect to a timer

    Connect Timer could not work in the Windows desktop app at all: the app never answered Windows' question about which serial port to use, so the request was cancelled every time. It now picks the port itself, preferring a USB serial adapter and leaving a Bluetooth port until last, and the button says which port it connected to. If it picks the wrong one, disconnect and press Connect again and it tries the next port. The browser version is unchanged: there you pick the port yourself.

    A redeemed licence now says so

    When you paste a club licence and the device has a connection, GateKeeper reports that the licence was activated, so we can tell a licence that never arrived from one that arrived and worked. A device that already holds a licence does the same about once a month, and only when it is online. It is the licence and the build version, nothing about your event or your hounds, and the redemption screen says so. A licence redeemed at a field with no signal reports nothing and works exactly the same, now and forever: nothing about a licence is ever checked against a server.

    Fast CAT: walk-ins and online entries can be scored

    A hound added at the walk-in desk, or brought in from online entries, had its height recorded but no handicap, so Run Entry refused its time with "no measured height" and the Handicap box showed 1.00. Only hounds imported from a spreadsheet could be scored. The handicap now always comes from the hound's height (2.0 under 12 inches, 1.5 from 12 to under 18, 1.0 at 18 and over), everywhere it is used: Run Entry, the saved run, the results table and the race sheet. Correcting a hound's height now changes its handicap for the runs you record after that; runs already saved keep the points they were given. A hound with no height shows "No height" instead of 1.00.

    Fast CAT: a time typed without its decimal point is no longer read as minutes

    Typing "875" in a Fast CAT time box used to turn it into "8:75", which the app read as minutes and seconds (555 seconds). A Fast CAT run is always seconds, so the box now leaves "875" as typed and the speed read-out shows at once that something is wrong. Type the decimal point: 8.75. Coursing Ability times still accept minutes and seconds.

    Registered names reach the AKC and ASFA files

    Hounds imported from a spreadsheet or from online entries lost their registered name on the way in, even when the file or the entry form had one, so the AKC results file and the ASFA records packet listed them by call name. Both imports now keep it. A hound's record (open it from the results screen) also has a Registered Name box, so a walk-in's can be typed in and a wrong one corrected.

    AKC files say how many hounds have results

    Every entered hound gets a row in an AKC results file, with blanks where it has no result in that test, so a file for a test where nothing had been recorded still said "40 rows". Each file in the export list now also says how many rows have results, and a file with none gets a red warning to check you are on the right test before uploading it.

    Printed results and race sheets say which test they are for

    In an event with more than one test or trial, the printed results and the race sheet showed only the club and the event's first date, so the pages for two tests looked the same and a Sunday sheet carried Saturday's date. They now show the test or trial name, its date, and at an AKC event its event number.

    The progress bar counts the test you are on

    In an event with more than one test, a hound counted as done once it had run in any of them, so the progress bar read 100% as soon as the first test was finished. It now counts the test in view, and switching tests switches the bar.

    AKC: Junior and Qualified Courser passes no longer knock trial hounds out of the placings

    At an AKC event where the JC or QC test is scored under the same test as the trial, ticking a test hound's "Qualified" box used to switch on qualifying for the whole trial, so every trial hound you had not ticked was listed as not qualified and left out of the placings. Only the trial stakes' own ticks count for that now. JC and QC hounds are pass or fail, so they are no longer given a placement or a ribbon either.

    AKC: the Qualified Courser certificate names the judge and the day

    The printed QC certificate had a blank judge line and always showed the event's first date. It now shows the judge of the test the hound passed in and that test's date. The judge number is still left for the judge to write in.

  9. 5.1.15

    Opening a cloud event no longer empties the event on this device

    Opening an event from the Cloud Dashboard replaces the event on this device, and it used to do that without asking. With no internet connection it was worse: the list of hounds came back empty, so the event on the laptop was replaced with an empty one.

    Now GateKeeper refuses to open a cloud event while you are offline, asks first when there is an event on this device (and says how many hounds it would replace), and leaves your event alone if the hounds can't be loaded.

    Saved event files say AKC or ASFA

    A club running AKC and ASFA on the same day saved two event files with the same name, so saving the second could replace the first. File names now include the association and the kind of event, for example gatekeeper_sane_asfa_lure_coursing_2026-09-26.json.

    Roll call sheets say which trial they are for

    The check-in sheet is now called the Roll Call / Check-in Sheet and prints the association (AKC or ASFA), the trial, and that trial's date. In an event with more than one trial, a Trial picker at the top of the sheet lets you print one sheet per trial.

  10. 5.1.14

    Saturday's Best of Breed no longer carries into Sunday

    In an event with two trials (or two days), a Best of Breed, Best in Field or tie result you recorded in one trial was also applied to the other, and overrode that trial's own scores. Recorded results now belong to the trial they were recorded in. Results recorded before this update stay with the first trial.

    Text boxes could stop typing in the Windows app after a pop-up

    In the Windows desktop app, a pop-up question from the system (the plain grey "OK / Cancel" box) could leave text boxes refusing to type until you clicked away from the window and back. That is a known problem in the framework the desktop app is built on. Start New Event asked that way and then opened the new-event form, whose first box is the event name.

    Every one of those pop-ups is now part of GateKeeper's own screen instead: starting a new event over the one on this device (it says how many hounds it will clear), archiving an event, and removing a judge. The safe answer is selected first, and Escape cancels. Messages that used a pop-up now show as a notice instead: a failed copy of the run order, copying a run card, and problems starting a checkout. A run card that could not be copied used to say nothing at all; it now says so.

    Draw Entry follows ASFA's rules on an owner's hounds

    The entry desk has a new box, Split courses. Tick it for an owner who checked the box on the entry form asking for their hounds to run in different courses.

    Draw Entry now checks an owner's hounds the way the rulebook does (Ch. V §9):

    • Two of one owner's hounds in the same course are flagged only when that owner asked for different courses. Before, Draw Entry flagged them every time and said to separate them, which would have meant changing the club's random draw.
    • In a split stake, every owner's hounds should be spread across the flights, whether or not they asked. That note used to appear only for owners who had asked, and only when every hound was in one flight. It now also catches three in one flight and one in the other.
    • When a stake has only one course, Draw Entry reminds you that the owner's hounds run together unless the owner scratches one, with no refund.

    These are notes, not errors, and they name the hounds by call name. The trial day screen now says how many notes are waiting, so "the order checks out" no longer hides one you have not read.

    A spreadsheet import reads the same box from a column called Separate Courses, Split Courses, Divide Courses or Separate Hounds (Y, Yes, X or 1 means ticked). A hound whose imported entry has it ticked shows the box ticked at the entry desk. A file without that column leaves the box as it was. At an ASFA trial the hound's own record (tap the hound on the results screen) has the box too, so an imported tick can be corrected there.

    Trial 1 and Trial 2 in one event each get their own morning

    An event can hold more than one trial (ASFA's Trial 1 and Trial 2 on the same day, or a Saturday and a Sunday). Until now the trial day screen kept one roll call, one set of inspections, one draw, one entry desk and one delay log for the whole event, so both trials shared them.

    Each trial now has its own. The trial day screen shows which trial you are on, with buttons to switch, and switching trials switches the whole morning. The steward sheet, the flights on the results screen and the records packet all follow the trial you are on. A morning recorded before this update stays with Trial 1.

    In the new-event wizard an ASFA event now says Trials and Add Trial, and no longer asks for an AKC event number. The switch at the top of the trial day, scoring and results screens says Active Trial in an ASFA event.

    Records packet, ribbons and printed results were empty in an event with trials

    When an event has trials, GateKeeper keeps each hound's scores per trial. The records packet, ribbon labels, printed results, running order, inspection sheet, pre-flight check, ASFA results file, the emergency export and the AKC lure coursing file all looked for scores the old way, found none, and came out with every hound listed and no scores or placings. The results screen was never affected.

    All of them now use the scores of the trial you are on. The emergency export includes every trial, one row per hound per trial, with the trial named. The AKC lure coursing export writes one file per trial, like the Fast CAT and Coursing Ability exports already did.

    A records packet that lists hounds but has no score or absence recorded for any of them is now blocked ("No scores have been recorded for this trial") instead of being offered as ready to send.

    Flights you type into Draw Entry now split the placings

    When a regular stake has 20 or more entries, ASFA splits it into flights and each flight gets its own 1st through 4th. Draw Entry has a Flight column for exactly this, but the results screen never read it. A club that split a big stake and typed every hound's flight in still saw one set of placings, and a red "needs a flight split" warning that nothing would clear.

    The results screen, the records packet, the ribbon labels and the ASFA results file now all use the flights recorded in Draw Entry. If only some of a stake's hounds have a flight, the stake is still placed as one and the warning says how many are missing, because splitting a half-recorded stake would hand out a placing nobody won.

    The warning now also says where to fix it ("record flights in Draw Entry"), and a stake that was split but breaks the ten-per-flight rule no longer tells you it "needs a flight split". It says the recorded split cannot stand.

  11. 5.1.11

    The steward sheet now prints the draw your club typed into Draw Entry

    At an ASFA trial the club draws on the grounds and the secretary types the order into Draw Entry. The steward sheet only ever read the computer draw, which ASFA clubs are not offered, so a secretary who had drawn and typed every hound in opened the steward sheet and was told "No courses drawn yet."

    It now prints your club's courses, with the course numbers exactly as drawn (gaps included), split by breed and stake the same way Draw Entry shows them, with the flight shown on a split stake.

    Blanket colours are optional. Draw Entry has a new Blanket column. If your club decides who wears yellow, pink and blue at the draw table, type them in and they print on the sheet. If colours are settled at the chute, leave it blank and the sheet prints an empty box to write the colour in. GateKeeper never fills a colour in for you: a colour on the sheet that disagrees with the club's paper is worse than a blank.

    Two hounds in the same course given the same colour is now flagged as a problem on the Draw Entry screen, and the printed running order shows each recorded colour beside the hound's name.

    The "Email us" line on the pricing screen is now an actual email link

    It read "Questions before you buy? Email us — a real person answers." and nothing happened when you clicked it. That sentence sits above a $199 club licence, aimed at exactly the treasurer who wants to ask something first, and it was a dead end.

    It now opens your mail program with the address and a subject already filled in. It opens in the same window on purpose: in the desktop and portable builds a link that tries to open a new window is blocked and would do nothing, which is how the line came to be text in the first place.

    GateKeeper now says plainly that it is beta, and that no association stands behind it

    Two facts used to live only in the Terms of Service on the website, which is to say they lived where nobody reads them. They are now on the price screen before you spend anything, in Settings under "What GateKeeper is, and is not", and in small print at the bottom of every page the program prints — including the records packet, which leaves the field and travels somewhere GateKeeper cannot follow it to explain what it is. The printed line carries the build number too, so a question about a sheet three weeks later starts with a fact.

    The wording: GateKeeper is independent software. It is not affiliated with, endorsed by, certified or approved by ASFA, AKC, or any sanctioning body. Your association's rules govern your event, and where GateKeeper and the rulebook ever disagree, the rulebook is right.

    Support address is defined once

    The support email was written out in two files that agreed only by luck. One was built from the site domain and one was a literal, so changing the domain would have left every problem report addressed to somewhere nobody reads, with nothing failing to say so. There is one definition now.

  12. 5.1.9

    You can tell us something is wrong without leaving the app

    Field Office → Data Tools → Report a Problem. Write what happened, and it fills in the rest: which build you are on, what kind of event it is, how many hounds and how many runs are recorded. It shows you the whole message before it sends anything, and it sends counts only — no dog names, no owner names, no addresses.

    If your email is not set up on that machine, it copies the message instead so you can paste it anywhere.

    Before this you had to remember the version, and nobody does.

    A licence you were sent no longer needs an account

    Paste it on the first screen and you are in. There is no sign-up, no sign-in and no internet involved — the licence is checked on your own machine.

    It used to be behind a sign-in that a reviewer with no account could not get past, which is the exact opposite of what a signed licence is for. The screen that reports a problem with a saved licence reads as one sentence now, too; it used to run two sentences together into something nobody could parse.

    The app now says so when your computer will not let it save

    If storage is blocked — a locked-down browser, private browsing, a policy on a club laptop — you get a message naming the problem instead of a stack trace on a white screen.

    Worse, some things reported success when nothing had been written. Export Portable Backup said "Backup created." when no file existed. That and two other exports now tell you plainly when a file did not save, and offer the share sheet on a device that has one.

    A portable copy tells you where to get the new one

    A portable build cannot update itself — the file is the app, on your stick — so it checks whether a newer version exists and hands you a link.

    The link used to be missing unless the build had been configured with one, so a secretary at a field was told "replace this file" and given no way to find the file. It now points at the same place the update check just read from, which is the one address the app knows is reachable.

    The logo in the app is the logo in your browser tab

    They were two different drawings. Everything else had been redrawn — the installer icon, the tab icon, the phone and tablet icons, the website — and the one inside the app had been missed.

    You can now see which build you are running

    Settings shows the version in its header, and About this build gives one line — GateKeeper 5.1.1 (desktop, built 2026-09-10) — with a Copy button, to paste into an email when you write in about a problem.

    It was not there before. The version was inside the build the whole time and appeared on no screen, so a club reporting a bug could not say which build they were on and neither could anyone else. Crash reports now carry the same line, so what you read out and what we receive cannot describe different builds.

    High Scoring Singles is awarded now, not worked out at the table

    Ch. VII §2 lists High Scoring Singles — Navy and Gold among the ribbons every host club shall use. GateKeeper knew the colour and never knew whose it was, so you printed a rosette with nobody's name on it and settled it by hand.

    It could not be worked out before. While Singles was scored per breed, six breeds in Singles meant six firsts and six candidates for one ribbon. Now that Singles is one stake across every breed, the high scorer is one hound.

    It is not simply the blue-ribbon winner, and two ordinary cases separate them: a stake split into flights has two firsts and one high score, and an unbroken tie for first can leave a flight with no first at all.

    Two hounds level at the top are shown as tied, not picked between. And a hound under the placement floor cannot take it — a rosette reading "high scoring" on a hound the same sheet of labels says did not qualify is the app arguing with itself.

    The Registered Name column on the packet is no longer always empty

    ASFA matches your records on the registered name. Ch. VII §3 awards every title "as a suffix to the registered name", and the packet has a column for it — which was blank for every hound at every trial. The column existed, the CSV printed it, and nothing in the app ever put anything in it.

    It is filled now, from the registered name on the hound's record, falling back to the name field where that is where your import put it.

    One deliberate blank. If all the app has for a hound is a call name — which is what a quick walk-in leaves behind — the column stays empty rather than repeating the call name. A blank tells the Records Coordinator the name is missing, which is true and fixable. A call name in that column tells them "Ash" is a registered name, which is a wrong answer that looks like a right one.

    Best of Breed and Best in Field points are now on the records packet

    This one under-reported points at every trial. Check anything you have already filed.

    Winning a Best of Breed is worth championship points — Ch. V §7 awards the winner "points equal to the points awarded the highest-placing hound in that breed which it defeated". Winning Best in Field is worth more on top (Ch. V §11(e)). GateKeeper computed neither. It recorded who won, printed the rosette, and then sent ASFA the stake placement alone.

    A hound that took a first in a stake of three and then won its breed off a Field Champion first was worth 20 points and was reported as 12.

    Both are computed now and both are on the packet. Three things worth knowing:

    • Only a Best of Breed run earns points. §7 says so in those words. A breed with one stake winner is settled on combined scores with no run, and earns none — there is no defeated hound to take the points from.
    • The Best in Field winner is capped at 40 for the trial, which is where §11(e) puts the ceiling.
    • A Best of Breed winner is not capped, because the rulebook does not say it is. If your BOB winner's total comes out above 40, the trial day says so and asks you to check with the Records Coordinator rather than quietly trimming it.

    One figure still needs a ruling. §11(e) says Best in Field points are "determined by the number of hounds actually defeated in the BIF run" — it names the quantity and not the multiplier. GateKeeper reads it as four times the hounds defeated, which is the smaller of the two readings, and says on screen which reading produced the number. If ASFA means four times the hounds competing, it is four points a trial higher. Ask before you file a close one.

    Your trial's date was a day early on every screen and every printed sheet

    If you print the race sheet or the roll call sheet, this one was on paper.

    A trial dated 9 May showed as 8 May — in the header, in the sidebar, on the race sheet, on the roll call sheet and on the printable report. Every club west of Greenwich saw it, which is every American club.

    The date is stored as a day. The app was reading it as midnight in London, which is the evening of the day before in Colorado. It is the same mistake that was making clubs a day late for their records deadline, one screen further out.

    The entry desk refused every entry unless you had uploaded a premium

    Check this if the trial day ever told you nothing could be accepted.

    Certification is measured against your closing date, and the trial day looked for that date in one place only: a premium list you had uploaded and built. If you had not — and the closing date is asked for in the new-event wizard, in Settings, and in the developer config — the screen read "25 of 25 entries cannot be accepted as they stand" over a field whose paperwork was complete. The reason it gave was that the trial had no closing date, about a date you had typed in.

    It now falls back to the closing date in your settings. A published premium still wins where there is one: that is the date your exhibitors actually saw.

    Operations is on the phone menu now

    Roll call, the entry desk and the ASFA records packet all live behind Operations, and it was not in the menu bar at the bottom of a phone — only a card on the Dashboard you had to know was there. It is in the bar now, between Judges and Tools.

    Making room meant shortening two labels in that bar: Dashboard reads Home, and the hammer that used to read "Ops" now reads Tools, because Operations needed that word. The sidebar on a laptop is unchanged, and a long-press still says the full name.

    Smaller things

    • The name of the screen you are on no longer collapses to Li... at laptop width. It was losing its space to the event name beside it.
    • On a phone, the stake selector on the Leaderboard no longer prints its last letter through the dropdown arrow.
    • Race Control used to be an empty page with one dropdown on it until you picked a hound. It now says what the screen is for, and tells you where hounds come from if none are entered yet.

    The ASFA CSV on the pre-flight screen had no placements in it

    If you have ever sent this file to anyone, send the records packet instead.

    The pre-flight screen offers a download described as a result summary for ASFA. Its Placement column read one thing only: the box you type in to correct a placement. So on an ordinary trial, where nobody corrected anything, the column was blank for every hound — no first, no NBQ, no points, nothing to say which hound had won. The only rows carrying a placement were the hand-corrected ones.

    It was never built from the results engine, so none of the rulebook work in this release reached it either: not the placement floor, not the mixed Singles stake, not NBQ, not a run-off you recorded.

    It now comes from the same engine as the Leaderboard, the ribbons and the records packet, in the packet's own columns — Placement, Points and Disposition, so a hound with no placement says why rather than sitting blank. A hound with no stake recorded is left blank rather than reported as having run Open.

    The card is now called ASFA Score Summary, because the packet on the Trial Day screen is the document ASFA actually receives — it carries the registered names, the hounds that did not run and the per-capita, and this file has no room for any of it.

    A placement you type now moves the hounds behind it

    Check any trial where you corrected a placement by hand.

    Typing a placement into the Leaderboard rewrote that one row and renumbered nobody. Four hounds with the third-best typed as 1 came out 1st, 2nd, 1st, 4th — two blue ribbons in one stake and no third place at all. The hound you demoted kept its number and its points; the position you emptied was never filled.

    An override now claims its position. The hounds it out-ranks move down one, in score order, and the points follow them. If the position you claim sits in the middle of a tie, the tied hounds contest the positions either side of it, and the tie rule works on those.

    And a placement can no longer be typed against a hound that did not course.

    It used to apply to any row. Typing 1 against a hound a judge had dismissed gave it first place, a full first's points, and a place in its breed's Best of Breed — while the board beside it still read DIS and the packet said 1st. A placement is a fact about coursing: Ch. V §6(e) places "the top five placing hounds", and a hound excused, absent, disqualified or dismissed did not course the stake. If the ruling itself is the mistake, change the ruling.

    The awards bar now says when a placement was not applied, and names the hound, so nothing is refused in silence.

    A hound the recorded score put under the placement floor can still be placed by hand, as before. That is a disagreement about a score, and a secretary holding the judges' sheets is who settles it.

    A run-off now settles one placement, and you are asked about the rest

    Check any trial where three or more hounds tied.

    Ch. V §6(g) puts ties for the top five inside the run-off rule. GateKeeper recorded a run-off as naming a winner — which it does — and then treated the whole tie as finished. The winner took the placement and everybody else was numbered off in the order they happened to sit in the entry list.

    Three hounds tied on 300 in a stake of four, run-off won by c, came out c 1st / a 2nd / b 3rd. Four points between two hounds still level on score, and no second run-off asked for. Swap a and b in the roster and the placements swap with them.

    Winning a run-off does not un-tie the hounds who lost it. They are still level, one position lower, and they need their own run-off. GateKeeper now asks for it. If you run it, the placements come out the way the ground decided. If nobody runs it, Ch. V §6(h) applies as it always has — both hounds take the lowest position the tie could have won, the points for the positions involved are pooled and split evenly, and the fraction is dropped.

    The same now holds for a forfeit. If one hound of three forfeits, the two still standing are awarded ahead of it under Ch. V §6(i) — and they are still tied with each other, so they are reported, not silently ordered.

    Hounds that were entered and did not run are on the packet, and in the per-capita

    Check this one against your own books — it changes what you owe ASFA.

    Ch. VI §1(b) requires the records to include "notations of reasons why hounds who were entered did not run". A hound absent at its stake was already covered. A hound scratched at roll call, or turned away by the Inspection Committee, was not — it left the roster before the packet was built, so it had no line at all. Both now appear, on the results sheet and on the cover sheet, with the reason and no invented scores.

    The per-capita followed the same gap. Ch. VI §1(c) excuses the fee only for an entry "fully refunded to the exhibitor" — and a forfeited fee is not a refund. A no-show forfeits (Ch. I §3); so does a hound that cannot be made to stand for measurement (Ch. II §7.5(d)). GateKeeper counted only the hounds that ran, so a trial with 24 entries and four forfeits declared 20 and paid on 20.

    That is not a rounding error: §1(c) says points are not recorded until the per capita fee is received, so paying short holds up your whole trial's results.

    Genuinely refunded entries — a bitch in season, a hound found lame, a breed disqualification at roll call — still owe nothing, and the cover sheet now says which is which beside each name.

    The placement floor now reads your scores, not just your judge cards

    This changes who places at any trial whose per-judge cards did not survive an import or a sync — which is most of them.

    Ch. VII §1 refuses a placement to a hound scoring under half the total possible. GateKeeper worked out the total possible from whether judge-B cards were present — but the score you see is the panel total, and per-judge cards are exactly what gets lost opening a .kpr or syncing from another machine.

    So a real two-judge trial read as one judge, and the floor came out 100 of 200 instead of 200 of 400. A hound that scored 30% took a placement and points it was not entitled to, while the same screen showed it a combined score of 380 beside a stated maximum of 200.

    One judge scores a course out of 100, so any course total above 100 can only be a panel sum. That is arithmetic rather than a guess, and it settles the normal case. Where it genuinely cannot be settled — no judge cards, and nobody over 100 on a course — one judge is assumed, because assuming two would put every hound at a real one-judge meet under the floor. The awards bar now says when the panel size was assumed, because that assumption decides who gets a ribbon.

    Found alongside it: a club that ran one course and recorded it in the second slot was counted as having run two. It never showed, because the two errors cancelled exactly — and correcting the judge count on its own would have voided those trials outright.

    The Singles stake is one stake across every breed

    This changes placements and points at any trial that ran a Singles stake. Ch. V §5(d): "Singles Stake entries from all breeds shall be combined into one mixed stake, with proficiency points and placements awarded across the breeds."

    GateKeeper was placing it per breed. Four hounds in Singles — two Whippets and two Salukis — came out as two stakes of two: two firsts, two seconds, and two High Scoring Singles, where there is one navy-and-gold rosette to give.

    The points were the worse half. Proficiency points come from the number of hounds competing in the stake, so the real winner of that four-hound Singles earns 16 and was being given 8 — and those are the points a Title of Coursing Proficiency is made of. A hound that actually placed third was recorded as a first.

    The 20-entry flighting threshold now counts the combined Singles entry too, so ten Whippets and ten Salukis is a stake of twenty and splits, as it always should have.

    Every other stake is still one per breed — Ch. V §5(a) is equally explicit that an Open stake is one breed.

    NBQ is one hound again

    Next Best Qualified is the fifth placement and one green rosette (Ch. VII §2; Ch. IV §8.3(d) — ribbons "for all placements - 1st through NBQ"). GateKeeper was labelling every hound from fifth down as NBQ: four of them in a stake of eight, sixteen in a flight of twenty. That went onto the ribbon labels and onto the records submitted to ASFA.

    Three things follow:

    • Only the fifth placing hound is NBQ. Sixth and below take no placement, and the Placement column is blank for them, because the rulebook has no word for it.
    • A tie for NBQ is now reported to you as needing a run-off. Ch. V §6(g) puts ties for "the top five placements" inside the run-off rule, and NBQ is the fifth — so two hounds level on fifth were quietly sharing the one green ribbon with nothing telling you. Left unbroken, both count as sixth and neither takes it.
    • A hound below the 50% qualifying score is no longer labelled "Next Best Qualified". Ch. VII §1 gives it no placement at all; your packet was reading NBQ in the Placement column and "Under the placement floor" in the Disposition column of the same row.

    Ribbon labels follow: asking for NBQ labels prints one, not one per hound that placed nowhere.

    Results, ribbons and the records packet now agree with each other

    If you have run a tie off, this changes what your packet says — and it is a correction. The Leaderboard screen applied your recorded run-offs and Best of Breed decisions. The records packet and the ribbon labels did not. So a club that ran a tie off, recorded it and handed out the blue rosette could export a packet to ASFA showing two second placements, no first, and no Best of Breed — and print ribbon labels from the same unresolved result.

    All three now read the same thing. Nothing about your recorded decisions changed; what changed is that the packet and the labels finally use them.

    Best in Field is no longer awarded to a single hound

    Ch. V §11(d): "Best in Field shall only be run if two or more hounds are in competition."

    GateKeeper was awarding it uncontested whenever one hound reached that stage — a single-breed specialty, or an all-breed trial where the other breeds declined their Best of Breed run-off. That is the Best of Breed rule (Ch. V §7 does allow the last hound standing to take BOB) applied to a section that says the opposite, and Ch. V §11(e) credits the winner with a first placement and championship points, so it was awarding both for defeating nobody.

    Best of Breed is unchanged.

    Your records are no longer "overdue" the day before they are due

    If you are anywhere in North America, the deadline was being worked out in UTC while your clock was not. A trial ending 5 September, records due the 19th, told a secretary in Colorado "1 day overdue — fines accrue daily" at seven o'clock on the evening of the 18th, and "2 days overdue" at eleven at night on the 19th, which is the due date.

    The countdown now uses your own calendar date, which is what a deadline means.

    A breed typed in capitals keeps its Best of Breed

    A roster imported as WHIPPET produced a packet reading "WHIPPET: 2 entered, Best of Breed (not awarded)" for a breed that had one, and two spellings of the same breed split the entry count ASFA reconciles your per-capita fee against.

    The installer says its version to Windows

    Right-click the .exe → Properties → Details. The File version now reads the real version.

    It used to read a build counter: 1 for 5.1.1, 0 for 5.1.0, 20 for 5.0.20. Three consecutive releases whose File version went 20 → 0 → 1, on a field whose whole job is to always increase. The installer filename is deliberately unversioned so the download link never goes stale, which left nowhere at all to read a version off the file.

  13. 5.1.0

    Cloud sync and published results now follow the plan

    This takes something away, and it is the reason this is 5.1 rather than 5.0.21.

    GateKeeper has always had a table saying which plan includes what (src/lib/entitlements.ts): cloud sync and published results belong to the Club Licence, and a day or weekend pass buys the right to score the event. Nothing enforced it. Both features checked only whether the device held a current entitlement stamp, and every paid state writes one — so a $9.99 Day Pass opened the cloud exactly as a $199 perpetual licence did.

    From 5.1.0 the table is what runs:

    • Club Licence, Pro Secretary and the perpetual tiers — cloud sync and publishing, unchanged.
    • Day Pass, Event Weekend, All-Breed Day Pass, All-Breed Event Weekend — score the event, print everything, export everything, keep every record forever. No live cloud sync of runs, and no published results page.

    Cloud backup is untouched and stays available on every plan. Backing up your own event is not a premium feature and will not become one — it is the same promise as "you never pay to read back an event you already recorded".

    Nobody loses access to their own data. Past events stay viewable, printable and exportable on the machine that recorded them, with or without a current plan. That has not changed and will not.

    A club that has already published results can always take them down, plan or no plan. Being unable to remove your own results from the internet is the one failure this could not be allowed to have.

    If you hold a Club Licence and bought it through Stripe

    Redeem the licence key that came with your purchase (Settings → Licence) if you have not already. It is what proves the licence on a laptop in a field with no signal, and from 5.1.0 it is also what keeps your cloud access from lapsing after a month away from the network — a verified perpetual licence now renews its own grace period every time the app opens.

    If you have not got a key, write in and one will be reissued.

    App Check is now registered by the app itself

    It was initialised only in the exhibitor entry form's bundle, never in the file the application uses — which is why the Firebase console reported 0% verified / 100% unverified for Cloud Firestore. Every request the app has ever made counted as unverified.

    Fixed here. After a rebuild and deploy, the verified share of browser traffic should climb.

    Do not switch Cloud Firestore to Enforced yet. The desktop build serves its renderer with loadFile, so its origin is file://, and reCAPTCHA Enterprise attests a registered domain. There is no domain, so there is no token, and no configuration changes that. docs/APPCHECK.md sets out the three ways forward.

    A debug token can be supplied for local testing through the environment variable GK_APPCHECK_DEBUG_TOKEN, read at runtime by the Electron preload — never through a VITE_ variable, which would inline the token into the bundle and ship a permanent project-wide App Check bypass inside every installer. tests/appCheckSecrets.test.ts fails if a token is committed, read from a build variable, or written to a log.

    Corrections made before this shipped

    An independent review of the entitlement change found three defects in the first version of it. They are recorded because each one is a lesson about this kind of change rather than about this code:

    • The gate erased itself after 72 hours. The tier was resolved from passPlan, which only exists for 72 hours after a payment — so a club that bought a Day Pass on Tuesday for a Saturday trial had no tier by Saturday and got the cloud for free, while a club that bought at the gate on Friday night was refused. Same SKU, opposite answers. The resolver now also reads the source of the licence the device already granted itself, which is frozen at grant time and still true on the day of the trial.
    • A perpetual holder could be refused. Freshness was required of every tier. A Club Licence holder whose account read failed — a rules hiccup, a captive portal — was told to re-authenticate in a field, having paid for a licence that says it never expires. A perpetual grant no longer depends on the stamp at all; the stamp still governs everything that recurs.
    • The refusal was invisible. publishResults throws so a person who is watching gets told, and nothing caught it — so the rejection went to the global handler, filed a crash report, and the club saw the spinner stop and nothing else. It is caught and shown now.

    Under the hood

    • New: src/lib/effectiveTier.ts — resolves which tier an install actually holds, from the signed offline licence, the account record, or a recent payment, in that order. Durability, not recency: a club that owns a perpetual licence does not lose the cloud because somebody bought a day pass at the gate.
    • New: entitlements.planHasCapability() — the same question asked away from React, so CloudSync reaches the same answer offline. An install whose tier cannot be determined keeps the previous behaviour rather than being refused; the header explains why that direction is the safe one.
    • useEntitlements now reads the effective tier instead of customers/{uid}.tier, which was null for every Club Licence bought through Stripe.
    • TenantSettings.subscriptionTier caches the resolution beside the existing expiry stamp. Older save files without it load unchanged.
    • Signing out clears the cached tier along with the stamp.
    • ExportForKennelKeeper is recorded as deliberately unmounted, with a test that fails if it is mounted without also updating the marketing copy that currently describes the KeeperSuite handoff as a plan.

Running an older build? The newest one is always on the downloads page.

Downloads