Skip to main content

Changelog

A running log of what shipped in each release.


Next

  • Importing a logbook now offers one folder per activity program Hamtrax doesn't run itself. In the Custom stage of an import, a contact tagged for SOTA, WWFF, IOTA, or another program Hamtrax has no folders for was offered a folder per reference — one for each summit, each reserve, each island. Suggestions rank by size and only eight fit on the screen, so a lifetime of chasing spread across a hundred summits produced a hundred tiny candidates that never made the list, and every one of those contacts fell through to the unsorted remainder. Each program is now one suggestion per side — THEIR SOTA for the summits you chased, MY WWFF for the reserves you activated — gathering the contacts tagged for it, so it ranks where its size deserves. When every contact for a program names the same reference, that reference stays in the name — MY WWFF · KFF-0001 — so a one-park story keeps its park. A reference recorded with no program code is still offered on its own. As before, nothing is filed until you choose Use suggestion, and no contact's tags are changed. See Contextual custom-folder suggestions.

  • A connection's status now reads Checking… instead of sitting blank. Under Settings → Integrations, the three rows — Logbook of The World, QRZ Logbook, and POTA activation uploads — showed nothing at all on the right while Hamtrax worked out whether each account was connected, then filled in Not Set Up, Credentials Saved, or Verified once the answers came back. All three arrive together, and the POTA check is the slow one — the server may quietly renew your POTA session while answering it — so on a weak connection the whole column could sit empty for several seconds and then change all at once. Each row now reads Checking… from the moment the card appears and swaps in its real state when it lands, so a blank column is never mistaken for an answer and nothing changes under you after you have read it. The states themselves are unchanged. See Integrations.

  • The hunting, Repeaters, and Park Explorer lists now show 20 rows per page. A POTA or DX spot card is tall — identity, tuning readouts, the place line with its photo, and a full row of actions — so the fifty a page used to hold made a long scroll to reach the previous and next controls at the bottom, and every automatic refresh had fifty live cards to redraw. A page holds twenty now: the same spots in the same frequency order, just fewer at a time, with the paging controls in the same place below the last card. The Repeaters directory and Park Explorer's nearby-park list share one panel, and it used to put all hundred rows on screen at once; both page the same way now — twenty at a time, nearest first, with those same controls below the last card and the range you're reading between them. The count above each list is unaffected, still naming everything within the radius rather than what's on the page, and anything that runs the lookup again — a new area, Use my location, a flight back to your own location, widening to 150 miles — puts you back on the first page. Your Logbook's folder and contact lists, at 25 folders and 50 contacts a page, are unchanged. See Layout and The repeaters near you.

  • The artwork on a Logbook folder is now the icon you tap to get there. Folder rows, folder headers, the folder picker, and the Add Contact filing preview each carried a small painted crest — one badge for Hunting, another for Activations, a globe-and-signal emblem for DX Chasing, a tower for Repeaters — that appeared nowhere else in Hamtrax. So the picture on a DX month had nothing to do with the DX tab that filled it, and four pieces of art had to be redrawn every time a program was added. Every one of them is now that program's own icon: the magnifier from Hunt, the pine from Activate, the globe from DX, the tower from Repeaters — the same drawings in the sidebar and across the top of the signed-out site. They also take the colour of the row they sit in, so a selected folder's emblem brightens with its title instead of sitting at full colour against it, and they are drawn rather than loaded, so nothing waits on an image. See Folders.

  • Import has its own row in the sidebar now. Bringing an existing logbook into Hamtrax meant opening Log first and spotting Import Contacts above the folder tree — a step you only found once you already knew it was there. Import now sits at the top of the sidebar, just under the search field, subtitled Sort your past contacts, and opens the same Import Contacts page in one tap. Every other way in still works, including the Logbook's own button, Import a past activation on Activate, and Import from QRZ on the connected QRZ page. The row it used to hide behind is now titled My Logbook. See Getting to the importer.

  • Repeaters and parks that share a coordinate now open as one pin with a stack of cards. A club runs its 2m and its 70cm machine off the same tower, so both publish the same latitude and longitude — and 28.5% of the repeater directory used to render exactly beneath a neighbour's pin, unreachable at any zoom. Hamtrax answered that by fanning: pins that landed on top of each other were pushed out onto a small ring around the point they shared, each trailing a thin line back to where it really was — reachable, but no longer standing where the directory put it. Nothing moves now. Everything published at one coordinate stays on that coordinate as a single pin wearing a small number, and hovering over it or tapping it opens a scrollable stack — one card per repeater or park, each with its own frequency and mode, callsign, offset and tone, town, and its own button. It is the same answer the hunting map has always given several activators at one park. Logbook maps still fan, because a contact and the You pin that worked it have to stay separately visible. See When Pins Land on the Same Spot.

  • You can sign in to POTA now, and the connection stays connected. Connecting POTA used to mean one thing: open your browser's developer tools, find the Authorization header on a request to POTA, and paste the token out of it. That token is good for 24 hours, so the whole ritual came back the next day, and forgetting it meant an activation sitting unsent. The connection page now simply asks Step 1: How did you create your POTA account? — choose the Email and password row, then on the page it opens enter the ones you already use at pota.app, and that's it. The sign-in happens in your own browser, straight to the service POTA uses; your password never reaches Hamtrax and is never stored. What Hamtrax keeps is encrypted on the server, never handed back to the app, and renewed automatically before it can lapse, so the page reads Stays connected instead of counting down to an expiry date and uploads keep working without you doing anything. Signed in to POTA through Google, Facebook, or Amazon? Those accounts can't sign in here, so the other row — Amazon, Facebook, or Google — opens a page that hands you a Connect Hamtrax bookmark in place of the developer-tools hunt. It works out what you're on — Chrome, Edge, Brave, Firefox, or Safari on a computer, Safari on iPhone or iPad, Chrome on Android, or the Hamtrax app — and shows the steps for saving that bookmark there, with a dropdown to correct it if it guessed wrong; select it while signed in at pota.app, and paste what it copies. That paste renews itself too, so it also reads Stays connected rather than counting down — and if you're on an old pasted token today, the question stays on screen so you can switch over whenever you like. Disconnecting removes everything Hamtrax stored. Uploading itself is unchanged: same review, same status, same duplicate protection. See POTA activation uploads.

  • Map pins no longer sit in a smudge or a glow. Zoomed in far enough for the street map, every pin rested on a large, soft dark disc meant to lift it off the map. Against pale street tiles it read as a grey bruise instead, and because each pin drew its own, a crowded area stacked dozens of them into a single dark blob heavy enough to hide the streets underneath — exactly where the map mattered most. The discs are gone. A pin now carries only the small shadow built into the pin itself, and cluster bubbles keep the soft halo that separates them from the map. Resting pins have also stopped giving off their own colored light: each one sat in a faint halo tinted to its own color, which on a busy map merged into a golden wash across whole regions and blurred the line between one pin and the next. Color now appears as light only on the pin you point at or select.

  • Pro's one promise now counts its way there. Open Settings → Plans and the Pro card's contact line starts at zero and races upward through hundreds of millions, slowing as it climbs. It never arrives: on the way up, its digits start giving up their places one at a time — a scattered position here, another there — each turning into a letter of Unlimited, until the word has assembled itself out of the counter just as the climb runs out. As it does, blue light fades in behind the words — resting in clear space at its centre while the glow reaches far out across the card. The word contacts sits beneath the counter the whole way, in smaller type, so the line always reads as a sentence rather than a bare number; in languages that put unlimited after the noun, the counter takes the lower line instead and the noun sits above it. It plays once each time you open the tab. If your device asks for reduced motion, the line is simply there, at rest, with no roll, and a screen reader reads Unlimited contacts either way rather than a spinning number.

  • The Plans tab now says plainly what Pro is for. Both plan cards advertised things that were never behind Pro: the Free card crossed out Custom folders & labels and Advanced ADIF/CSV export as though you had to pay for them, and the Pro card sold those same two — plus Logbook integrations (LoTW, QRZ) — as what a subscription buys. All three work on every account and always have, so a free operator reading those cards was being told to pay for what they were already using. That Pro list is gone, Priority support off it along with the other three. Pro now leads with the one thing a subscription actually changes — It's simple. If you're going to log more than 200 contacts, you'll want Pro. — and carries a single line, Unlimited contacts, which Free shows crossed out against the 200 contacts every free account can log directly in Hamtrax. Free's own list of what it already includes is unchanged. No entitlement moved either: everything you could do before, on either plan, you can still do, and no price, trial, or billing behavior changed.

  • Your plan, its renewal date, and Manage subscription now sit on the plan card itself. The Plans tab opened with a separate banner that named your plan, its status, and its renewal date and carried Manage subscription — while the Pro card immediately beneath it said Current plan and You're on Pro Monthly over again. That banner is gone, and the Pro card carries all of it: a badge reading Current plan, Trial, or Action needed, the line saying whether it renews or cancels and on what date, and the Manage subscription button — Manage or Cancel Subscription on iOS, with the same cancellation note beneath it. The golden Pro halo moved with it, so an active subscription still shows itself, and a billing problem still turns the card red. Lifetime reads the same way: the Pro card says For Life, explains what that covers, and offers View receipts & billing — and the lifetime offer at the bottom of the page, which a lifetime holder can't buy again, is no longer shown to them. Nothing about billing, pricing, or cancellation changed. See Plans.

  • Upgrading and managing your billing no longer open a second tab. Tapping Upgrade to Pro, buying Lifetime, or opening Manage subscription on the web handed you off to Stripe in a new browser tab. Hamtrax has to ask its own server for that Stripe address first, so the tab opened a moment after your tap rather than during it — which is exactly what a browser's popup blocker stops. Operators tapped, watched nothing happen, and had no way to tell anything had gone wrong. Hamtrax now takes the page you are already on to Stripe, so the handoff cannot be blocked by any browser setting, and Stripe brings you back to Settings → Plans when you're done. The two notes on the Plans tab that promised a new tab simply say the billing portal opens. The iPhone and Android apps are unchanged — they open Stripe in their own built-in browser — and App Store purchases are untouched. Nothing about pricing, trials, or cancellation changed. See Plans.

  • The signed-out header now says your language in full. The language button at the top of hamtrax.com read EN, ES, or PT on a phone, and only widened to English, Español, or Português (Brasil) on a larger screen — so the one control that tells a visitor Hamtrax speaks their language was a two-letter code exactly where most people first arrive. It now reads the full name at every width, and a name too long for a narrow phone trims at the end rather than pushing Sign In and Sign Up off the edge. The room comes from Docs, which no longer appears in that header on a phone — it is still there on tablets and desktop, the documentation is always at docs.hamtrax.com, and Settings → Help → Open docs reaches it once you have an account. The controls beside it are evenly spaced now: Docs, the language button, and the account buttons sit the same distance apart, with Sign In and Sign Up tight against each other so the two read as one pair rather than two separate stops.

  • The home page title now names what Hamtrax does with your contacts, and on phones it arrives with the scene. The hero heading led with the hobby and stopped at the programs — HAM radio logging above POTA, DX, REPEATERS — so the thing that actually separates Hamtrax from another logbook was something you only met further down the page. The programs now lead in the large type, and the thought closes beneath them on every screen: HAM radio logging with automatic contact organization, in every language Hamtrax ships. That sentence sits on one line wherever the column is wide enough for it, and where it isn't it breaks after with rather than mid-phrase. Screen readers hear the whole heading in the order it appears. The heading was also sitting finished in place the moment the page painted, while the forest behind it eased up out of the dark; on a phone it now slides in from the left as that scene lights up, so what you read first is part of the opening rather than a label that was always there. Tablet and desktop keep the arrival they had, and if your device asks for reduced motion the heading is simply there, at rest, with no slide. See Automatic folders.

  • The Activate tab suggests a different park each time. The Suggested Park card beneath the setup form used to show the single closest park that had photos, which in practice meant the same park every session until you physically moved somewhere else — a card you stopped reading. It now picks at random between the ten nearest parks within 50 miles, still preferring one that carries photos, so the parks a short drive away get their turn and the card is worth a glance again. Photos stay a preference rather than a requirement, so where none of those ten carries any it still suggests one of them. Everything else is unchanged: it measures from the location Hamtrax already has rather than asking your device for a fresh fix, it never fills the My park field until you tap Activate here, and a park you've already typed in still takes over the card. See The park card below setup.

  • The Activate tab stops suggesting parks you have already activated. The Suggested Park card drew from the ten nearest parks around you whether or not you had already run every one of them, so an operator working through their local parks kept being handed back a trip they had already taken. It now leaves out every park your Logbook holds an activation for and draws from the ten nearest of whatever is left within 50 miles, still preferring one that carries photos — so the card is a shortlist of places you haven't been on the air. It reads the same signal as Park Explorer's Activated badge: open, finished, and imported activations all count, including one you never logged a contact in, while hunting a station at a park does not, since you were never there. Nothing about the card got slower — it reads activation folders Hamtrax already has open, and still measures from the location it already holds rather than asking your device for a fresh fix. Only when both are true — fewer than ten never-activated parks sit within 50 miles and none of those few has photos — does it reach past that radius to the ten nearest anywhere, which leave out your activated parks the same way; a short list alone doesn't widen it, and missing photos alone don't either. It offers a park you have already run only if nowhere it can reach is left unactivated, so the card always has something to show. Signed out there is no logbook to check, so Yellowstone National Park still stands in as before. See The park card below setup.

  • Browsing Activate without an account now shows a real park suggestion. The Suggested Park card beneath the setup form used to tell a signed-out visitor to set a location and get a nearby suggestion — but a visitor without an account has no account location to set, so the card was asking for something that could never arrive. It now shows one featured park instead: Yellowstone National Park (US-0070), presented like any other suggestion, with its activation total across all operators, whatever photos and park facts it carries, and Activate here to fill it into the form. Signed in with no location set, the card still asks for your location, because that is a step you can actually take. See The park card below setup.

  • A profile photo that fails to upload no longer costs you the one you already had. Changing your picture used to clear the old file out of storage first and upload the new one second, so an upload that dropped out part-way — a lost signal, a closed tab — took the previous photo with it and left a broken image everywhere your picture appears. Nothing is removed now until the new photo is stored and saved to your profile, so a failed upload simply leaves the old photo where it was. If you hadn't set a photo yet, the card returns to the Hamtrax beaver instead of sitting on a dead preview until you reload. Opening Hamtrax on a slow connection could also bring back a photo you had already replaced: a profile read that ran out of time fell through to a copy of your details frozen when your account was migrated, pointing at a file that no longer exists. A read that doesn't finish now keeps what Hamtrax already knew about you rather than guessing. And wherever a picture genuinely can't be drawn, Hamtrax shows the beaver rather than a broken-image icon — including the Profile image card under Settings → Account, which was the last place still showing one. See Your Photo.

  • Hamtrax opens faster when you're already signed in. Returning to the site used to happen in two waits, one after the other: first Hamtrax confirmed your session with Firebase, and only then did it begin downloading the signed-in app itself — discovering that app one piece at a time, each piece waiting on the one before it. The download now starts the moment Hamtrax sees a session on this device, so it happens while the session is being confirmed rather than after, and the pieces arrive together. Confirming your session also used to wait on a second download, the code that fetches your full profile from the cloud, even though drawing the app only needs the copy already on your device; that download now runs in the background as well. The loading screen shows for as long as the slower of the two takes instead of both added end to end. A first sign-in is unchanged: it already started this download when you tapped the sign-in button.

  • Your profile photo in the top bar shows its full highlight again. Hover over the photo in the top-right corner and Hamtrax draws a thin gold ring around it; reach it with the keyboard and it takes a focus outline instead. Both were being shaved off at the edges, because the slot the photo sits in was trimmed to exactly the photo's size. That slot now lets the ring and the outline paint just outside the photo, and still slides it aside when the solar or connected-radio pill expands.

  • The Logbook now says up front that it files your contacts for you. The Contact Folders heading stood alone, so the tree's whole premise — that you never file anything by hand — was something you only worked out by watching folders appear after an activation or a hunt. A line beneath the heading now says it plainly: Automatically organized to save you time, in every language Hamtrax ships. The filing itself is unchanged. See Automatic folders.

  • A park suggestion that can't finish now says so instead of reading Finding… forever. The Suggested Park card beneath the Activate setup form had one failure with no way out of it: if the park catalog was still arriving, the nearby-park lookup never came back, or a single park's photo record stalled mid-check, the card sat on Finding… with no error, no timeout, and nothing to tap. It now escalates. After a few seconds it admits the wait, reading Still looking — this can take a moment on a slow connection; after about thirty it stops claiming to be working, says it couldn't finish finding a nearby park, and offers Try Again. The No park suggestion is available right now message gets that same button. Nothing is cancelled behind the scenes, so an answer that arrives late still replaces the message on its own. Three deadlines underneath make that possible. Any nearest lookup now gives up after twenty seconds rather than hanging, so the next tap is a real retry instead of joining a request that already died. Find Nearest on the Activate setup form lands on its existing took too long · Search again state when that happens, while the same button in the Hunt tab's park quick start simply becomes tappable again. The nearby lists behind Park Explorer and the Repeaters directory say Directory unavailable and offer Try again, rather than loading indefinitely. A park's photo record gives up after eight, so one stalled read can no longer leave that park photo-less for the rest of the session. And the scan that checks nearby parks for one with a photo stops after ten — a photo is a preference, not worth a longer wait than that. A scan that runs out of time counts as we don't know, not there are none: the card says it couldn't finish rather than quietly picking a random park, because a check that never completed can't prove no nearby park has photos. The card also no longer flashes its set your location message while your location settings are still loading. See The park card below setup.

  • Band plan warnings now sit with the band plan itself, as Warn when outside. The switch used to live under Settings → Preferences → Hunting, a whole section away from the agency and license class that decide what it flags — so its own description had to end by pointing you back to Station to pick a plan. It now sits in the Station → Band plan card, directly beneath the summary row that sets your plan, and that pointer is gone because the plan is the line above it. The card carries a Band plan heading of its own, which does two things: the summary row underneath it stops repeating the words and simply reads the plan you're on — FCC – United States · Amateur Extra — with the whole row tapping through to its editor, and the switch, no longer needing to say which plan it means, is now labelled Warn when outside. The section the switch left held only the per-program Mode and Band pairs after that, which was never enough to be a section of its own — so it isn't one any more. Those pairs are now a Filters card inside Map, sitting directly beneath the card that already holds your marker sizes and Hunt map behavior, and Preferences is one section shorter for it. Nothing about the warnings themselves changed: still on by default, still an orange triangle on any spot outside your band plan wherever that spot appears, still saved the moment you switch them — and the switch now prints that same orange triangle beside its own name, so you can see the marker you're turning on without leaving Settings. See Band Plan and Filters.

  • The callsign number row moved in with your activation settings. The Callsign number row switch had a Preferences section to itself, Contact Entry, whose name suggested it applied anywhere you type a contact — it doesn't. The 0–9 strip appears only in the live activation Add Contact panel, so the switch now sits under My Activations, below Pre-fill perfect signal reports, and the section it had to itself is gone. Nothing about the row changed: on by default, still only in the live activation logger, still saved the moment you switch it. See My Activations.

  • Set your POTA spot comments once, and choose exactly what they carry. Settings → Integrations → POTA has separate Hunt spot comment and Activation spot comment rows, each summarizing what that comment sends. Tapping a row opens a focused editor for just that comment: a full-width field for your own words, and beneath it a row of pills that picks what Hamtrax puts ahead of them. The link pill swaps between the bare hamtrax.com and your My showcase link; Radio and Antenna add the gear you're currently using, and on an activation the radio brings the power you're running with it. Your equipment used to appear only if you left the field empty, and typing anything replaced it — the text and the equipment are now separate choices, so a spot can carry both. Every spot still keeps your Hamtrax link first and stays within 60 characters including the link, so the counter beside the field now shrinks as you add pills and grows as you remove them, and a name too long for its share drops its leading words rather than its model — Chelegance MC-750 goes out as MC-750. A finished comment reads hamtrax.com/103 | Icom IC-705 10W Wolf River Coil CQ POTA. Save applies the selected default and Cancel discards edits. Comments you had already set keep behaving as they did: one you left blank arrives with Radio and Antenna already on, and one you had typed arrives with your text and both pills off. See POTA Spot Comments.

  • Heard lets you spot a POTA activator without logging a contact. The outlined button appears on the hunting list, live map popups, and activation details for any station you haven't worked yet, and pauses for five minutes after a successful Hamtrax spot for that station at that park, including automatic spots from Contacted. Marking a station Contacted takes Heard off that row entirely, everywhere it appeared — the contact does its own spotting when the Hunt Spot switch is on, so a second claim on a station you already worked would only repeat it, and you no longer sit looking at a greyed-out button while that five-minute wait runs. Undoing Contacted brings Heard back, still honoring whatever is left of the wait. Spotting needs an account and a valid callsign, and each is now asked for in its own place: a signed-out visitor gets the ordinary Hamtrax account prompt reading Sign in to spot an activator, while a signed-in operator missing a callsign gets the callsign prompt, which takes the callsign right there. See Spotting an activator with Heard.

  • Livestream previews no longer jolt the rows around them into place. A stream link's preview picture is only fetched once you scroll to it, and until its bytes arrived the browser had no way to know how tall it would be — so the row was drawn flat and then snapped to full height the instant the picture appeared, nudging whatever sat below it. That was visible in a folder's detail window and in the activation Showcase tab's livestream list. Hamtrax now states each preview's shape up front, so the space is held open from the first paint and the picture simply fills it. Every other picture that waits for you to scroll to it — hunt-list park photos, Showcase folder covers, folder photos, equipment photos, and the P2P badge — now states its shape the same way; those already sat in fixed boxes, so they look exactly as they did. Nothing about when pictures load changed: they still wait until you reach them.

  • Opening Hunt, DX, or Repeaters no longer freezes while the panel drops into place. On a phone or an average laptop, the first open of a hunt tab — and the panel's drop-down right after it — could hitch for a second or more, and some of that hitch came back on every return to the tab. Three pieces of busywork were landing on exactly the frame the panel animates in. Every time a batch of spots arrived, the panel re-measured the whole freshly drawn list just to work out which element scrolls — the single largest cost, about a second per open under a mid-range-phone workload. The soft, banding-free shading behind the map was recomputed pixel by pixel at full screen resolution, on the same thread that draws the page, every time a map appeared. And the map redrew itself once for every batch of parks the catalog sent, dozens of times per load. The drop-down itself was also animated by changing the panel's height, which made the browser re-measure and repaint the entire panel on every frame of the slide — so even with nothing else going on it could not stay smooth. Now the panel is simply told which element scrolls, the shading is computed off to the side and remembered so a map size you have seen before paints instantly, the streaming catalog updates the map a few times a second instead of dozens, and the panel slides into place on the browser's graphics thread, the gold grab bar riding its edge, so the motion stays fluid even while the page is still busy behind it. Repeatedly raising and lowering the Repeaters panel also draws its frequency readouts with far less work, keeping the same segmented digits, Receive/Transmit values, and units. The back-to-top button, the shading, and the growing clusters behave exactly as before.

  • Tapping a pin on a phone now glides straight to its card. A tap used to start the map sliding to put the pin itself at the center, and then — the instant the card appeared — change its mind and slide again to center the card instead, so the map visibly swerved mid-motion. The map now moves once, after it knows where the card sits, so every tap is one smooth pan that ends with the card centered. Desktop clicks are unchanged.

  • Hunt lists now load into placeholders shaped like the real cards. While POTA and DX spots, the nearby repeater list, or Park Explorer's parks load, the pulsing placeholder cards mirror the layout of the cards that replace them — the two-line station identity, the tuning readouts, the park line with its photo square, the repeater row's offset and tone lines, and full-size action buttons — so the list no longer shifts or reflows the moment real cards arrive. Wide screens that show spots in two columns now load in two columns too, and + Add repeater is available while the nearby list is still loading instead of appearing only with the rows.

  • Opening a hunt card, or a map pin's details, now expands smoothly into its detail window. The card used to grow into the window by re-laying-out and repainting the whole card on every frame, on the same thread that was busy building the window, and its shadow snapped halfway through, which read as a jagged, choppy expansion. The expansion now runs entirely on the browser's graphics thread: a copy of the card keeps its exact pixels and fades while a chrome-only shell carries the surface out to the window's final size, the window fades in beneath it, and it stays smooth even while the window is still loading its map. A map pin's popup now takes the same path, so the popup expands into the window instead of the window simply appearing over it. Its gold See details action still opens the window, and so does any non-control area of the card — including its cached photo stack — while status, tuning, and help controls keep their own actions. The window's own fade in and out was also being cancelled by a shared hover rule, so it appeared and vanished in a cut; it now fades as designed, and the window's code is warmed up in the background so the first open no longer pauses while it downloads. Closing the window is also one motion now: it used to drop the operator's looked-up name and location the instant you closed it, so the window shrank a frame before it faded; the name now stays until the window is gone.

  • A large import no longer piles up bookkeeping as it files. Every contact Hamtrax saves joins a queue on your device and is then filed with your logbook a few at a time. Two steps in that pipeline used to re-read the entire queue: once as each contact joined it, and again for every contact weighed in each round of filing. On a file with tens of thousands of contacts, that repeated re-reading grew right alongside the queue, so the bookkeeping — not the filing — became the slow part of a big import. A contact joining the queue now reads a single entry instead of all of them, and each round of filing reads the queue once instead of once per contact it considers; the larger the import, the more of that work disappears. Anything tracking an in-progress activation and Needs Filing also stop launching a fresh read for every contact that lands: an import's accepted contacts no longer signal them at all, and where signals do burst, the ones arriving behind a running read collapse into one follow-up read. Nothing about the import itself changes: the same contacts file into the same folders in the same order, with the same filed, still filing, refused by the cloud, and failed before filing counts.

  • Contacts now travel to your logbook in groups, so a large import files many times faster — and no longer holds up a contact you log by hand. Every contact used to be sent to your logbook on its own, one round trip to the cloud each, so a file with thousands of contacts spent most of its time waiting on the network rather than on anything you could see. The same contacts now travel in groups, which makes a large import file many times faster and leaves far more of it already filed rather than still filing by the time the finish screen appears. Every contact is still judged on its own: one contact your logbook refuses is the only one refused, the rest file normally, and the refused one still arrives under Needs Filing with the same plain reason and next step. Filing also hands the logbook back between groups instead of holding it for the whole run, so adding a contact by hand, correcting one, or logging a hunt while an import is still filing no longer waits for that import to finish. A device talking to a logbook service that hasn't picked up this change yet quietly goes back to sending contacts one at a time, so nothing breaks in between.

  • The folders a large import needs are now created in seconds instead of a minute. A file spanning years of activating and hunting can need well over a hundred folders, and each one used to make its own round trip to the cloud before the next was started — an import needing 173 folders sat on Creating folders for about a minute before a single contact was written. Hamtrax now creates them all on your device in one pass and sends them to your logbook in groups, the same way contacts already travel, so that step passes in seconds and more of a large import is already filed rather than still filing by the time the finish screen appears. Every folder is still judged on its own: one your logbook refuses is the only one refused, a folder that has to exist before the ones inside it still finishes first, and a contact whose destination folder was refused still names that folder. Contacts now also wait for their folder's answer before they are sent, so a folder that was merely slow — or a connection that dropped mid-import — no longer pushes the contacts behind it into Needs Filing. A device talking to a logbook service that hasn't picked up this change yet quietly goes back to creating folders one at a time.

  • The Logbook's folder tree no longer re-downloads your whole folder list every time anything changes. Creating, renaming, moving, favoriting, or deleting a folder — and every group of contacts an import filed — used to make Hamtrax fetch your entire folder list back from the cloud before the tree redrew. During a large import that meant the tree reloading over and over, hundreds of times, behind the finish screen, almost always to draw exactly the same folders. A change made on this device now updates the tree straight from the copy Hamtrax already keeps on it, so the tree answers immediately and stays still while an import files. Hamtrax reads the cloud copy when you open or reload it and when you come back to the tab, plus the one folder a contact just went into once the cloud accepts that contact, so the folder's count and timestamps are the cloud's own. The difference worth knowing: a folder you create, rename, or delete on another device — or in another browser — now appears the next time you open Hamtrax or return to the tab, rather than whenever you happened to change a folder on this one. Hamtrax never watched the cloud for those changes live, so this narrows when they turn up rather than changing whether they do. A folder created or deleted in a second tab of the same browser still shows up there right away — a rename, move, or favorite made in another tab waits for the same tab return or reload — and nothing about which contacts are allowed into which folder changed.

  • Imports no longer go out to the internet to work out where your contacts were. When an imported contact arrives without a location, Hamtrax fills one in from what it already has on your device: the POTA park catalog first — a park always wins, because it is where the contact provably happened — and then the callsign data stored locally. It used to chase every unfamiliar callsign out to the online callbooks, a few at a time, which is why a file carrying a couple of hundred unrecognized stations could sit on the saving step for minutes with nothing visibly happening. That step is now a single read on your own device, so it no longer grows with the size of your file, and the finalize screen names the stage it is actually on — Saving contacts — instead of leaving Creating folders on screen. A contact that already carries a grid square is left alone, because a grid square already places it: maps, shared maps, and QSL cards turn it into a point when they draw, and an export carries it through unchanged. The trade is worth knowing: a station the local callsign data doesn't list — most stations outside the US, and very new licensees — is now stored without coordinates of its own unless its record carried a grid square, so it has no pin of its own on the map until something can say where it was. Nothing else about those contacts changes, including the folder they file into and what they export.

  • A first import on a brand-new device can no longer file a second copy of your logbook. Skipping duplicates means comparing your file against the copy of your logbook on the device you're importing from. On a device that had never finished loading that copy — a fresh browser or phone, or one whose site data was cleared — it read as an empty logbook, so every contact in the file looked new and an import could re-file contacts your logbook already held. Hamtrax now settles that question before it plans: it loads your logbook first, and if it still can't confirm it has all of it the import stops before the review step with "This device has not finished loading your logbook, so duplicates cannot be checked yet. Check your connection, then retry." and a Retry. Your parsed file is kept, so retrying once you're connected picks the run back up instead of starting over. The moment contacts are written asks the same question, so the answer can't be lost between review and filing. Devices that have loaded your logbook before are unaffected — including offline ADIF and CSV imports on them — and logging a contact by hand never waits on this.

  • Integrations now has its own Settings tab between Preferences and Plans. QRZ, LoTW, and the offline POTA database are easier to find without changing their dedicated URLs. A connector opened from Settings — or loaded directly — returns to Integrations, while one opened from Import Contacts still returns to Import Contacts.

  • Hunting panels now flow naturally into the map on wide screens. POTA, DX, and Repeaters give more room to the map while keeping their full-width cards, which now float slightly over a soft panel-to-map fade instead of stopping at a hard divider. When the detailed street map appears, the panel and fade shift to its ivory canvas while Add repeater keeps a dark, readable face. The list keeps scrolling normally and map controls stay usable.

  • Public Hunt maps now get a real head start before you open them. Once Home has settled, Hamtrax finishes the POTA map offscreen and reveals that exact map and canvas when you open Hunt instead of constructing another one after navigation. Map preparation uses the map's own graphics check and a lower drawing resolution while hidden, then restores full device resolution on the same canvas when Hunt opens. It lets the map settle before adding markers, waits to build the list until Hunt is visible, and loads Hunt before Activate. This keeps its head start with less work competing against the Home tour. That retained handoff belongs to Home → POTA; DX and Repeaters still open in their own correctly initialized maps and frames. POTA goes straight to its highlighted CLICK to hunt contacts marker in one pan-and-zoom instead of detouring through the overview.

  • QRZ and LoTW connections now get their own focused setup pages. Settings → Integrations is now a short status summary instead of a stack of expandable setup cards. Select either connection to open a dedicated page with only that provider's controls; Connect and Manage from Import Contacts open the same destination directly. Back returns to the screen that opened the page, so setup started from Import Contacts returns there instead of dropping into Settings. On the connected QRZ page, Import from QRZ opens Import Contacts and immediately starts fetching and routing the logbook, skipping the two extra selections while preserving Review and Finalize. Both pages now use a prominent title followed by only a plain Connected or gray Not connected line; the small green shield and connection details appear only when connected. Setup forms remain directly on their pages; connected QRZ instead groups its left-anchored status and statistics in one neutral card and its Import/Auto-Push controls in a second, leaving maintenance outside. Both pages clearly separate active work, maintenance, and supporting detail while keeping each heading/help/field/action cluster tight, keep supporting detail behind neutral dividers and quiet disclosures, and reserve color for real connection state, errors, and the primary action. Credential fields on both pages use a simple white outline, keeping their boundaries clear without adding another colored treatment. QRZ's Disconnect confirmation now closes immediately while removal finishes; QRZ actions, including Import from QRZ, pause until it settles, and a toast confirms whether the key was removed or the connection remains.

  • The public Repeaters page now opens ready to browse nearby. Signed-out visitors get a useful nearby starting area when one is available, with Chicago, IL as the fallback, plus a default-collapsed What are repeaters? explainer under the title. The top card pairs the active area with the short repeater total above Search by area, with a quiet centered Use my location action beneath the field; + Add repeater now starts at the left edge above the list. Search and location still replace that starting point across the nearby list, center label, and map without changing any saved account location.

  • Activation setup now lets your location pin travel to the park before you start. Choose a recognized park and the self pin glides from your known location to the park's resolved location, firing two omnicolor beams in every cardinal direction; only after it arrives does the camera fly to its closest zoom. Clear the field and the pin returns first, then the camera restores the normal home overview. The moved pin remains the one target for opening park details, your saved location stays put, and Reduce Motion makes the two phases immediate without beams.

  • The Home tour gets to the point faster, then helps you choose what comes next. The opening gesture now skips the separate What is Hamtrax stop and lands directly on POTA All the Time, the first real app screen in Anatomy of Hamtrax; reversing returns straight to the hero. Anatomy also ends after organized logbooks, removing the two extra tools chapters and shortening the guided story to five screens. Scrolling between chapters now updates the phone and text more smoothly, with less stutter during each transition, while maps keep their background head start for quick tab entry. It releases directly into the shared prairie and night sky, where three rough volcanic-rock cubes with bright blue-white POTA, DX, and Repeaters engravings fall in from above and stack with staggered, weighty impacts. Once the final rock settles, the slightly crooked Choose your.......rock? heading fades in. Choosing a rock now bursts it almost instantly into dozens of irregular pieces, revealing an intact bright blue orb that rapidly expands and fades away before POTA opens Hunt or DX and Repeaters open their matching public pages. Reduce Motion shows the completed stack and heading immediately, then opens the selection without the burst.

  • Failed callsign setup can now be diagnosed without exposing the callsign to third-party analytics or logs. Hamtrax privately records the normalized field value, failure stage, and reason, marks the record to expire after 30 days, and retries delivery after temporary connection or page-close interruptions. Releases now stop before publishing the web app or this privacy promise if the required Function, Firestore index, or retention policy did not deploy.

  • The Home page now explains two more ways to get on the air. New What is DX chasing and What are repeaters dropdowns join the HAM radio and POTA explainers at the bottom of Home, giving newcomers a quick introduction without leaving the page. The closing CTA now says Create Account instead of Get on the Air, and the redundant documentation-link row beside it is gone. The App Store and Google Play download badges now appear again immediately after the final explainer, so visitors who finish the tour can install Hamtrax without scrolling back to the hero.

  • Interactive maps now name the cities around the activity. Hamtrax starts with cities above 10 million people and lowers the population threshold as you zoom in, while MapLibre leaves out overlapping names so markers stay readable. Major city names is on by default under Settings → Preferences → Map and follows your account; the Profile World Coverage story remains unchanged, and detailed OpenStreetMap labels stay part of that basemap.

  • Activation contact maps no longer lead into a dead-end Options screen. Options stays visibly grayed out in the preview, and tapping it reveals a quiet availability note underneath without opening unusable filters.

  • Plan badges now stay on one line. The Current plan label no longer splits across two lines on narrow plan cards.

  • Sidebar search now shows every matching category, and every callsign opens one public operator dossier. After three characters, Hamtrax checks Callsigns, Parks, and Activators together and puts a small red dot beside every category with results, so you know where matches are waiting before switching tabs. Once the results card settles, the rest of the screen gently darkens beneath it so the active search is easier to follow; outside taps still work in one step, and Reduce Motion skips the fade. Select a Callsigns result—or open a callsign from Hunt, DX, POTA, or the Logbook—to see the same responsive detail view. It paints the search result immediately, then independently gathers callbook and licence dates, public location/QSL information, current POTA and DX spots, RBN and PSK Reporter receptions from the last hour, and public POTA hunter history. Missing or unavailable sections have honest empty/Retry states without hiding what worked. The dossier is deliberately membership-neutral and public-only: no street/ZIP/coordinates, Hamtrax account activity, Showcase prompt, private QRZ/POTA logbooks, LoTW, or N1MM data.

  • The Hamtrax loader now has more than one move. The origami beaver still unfolds and reforms into the exact logo, but its separated pieces now travel through shuffled orbits, counter-currents, signal ripples, crosswinds, and figure eights instead of repeating the same full spin every time. Each facet gets its own timing and drift instead of moving in lockstep, the old soft-blue backdrop glow is gone, and devices set to Reduce Motion still see the assembled logo stay still.

  • Two focused signal checks now show whether FT8 or CW is getting out. Open PSK Reporter or Reverse Beacon from Tools to check the callsign on your account—or a temporary portable or club call—against the last 30 minutes of FT8 or CW reports. Each full page pairs a receiver-only world map with every returned report, including band, frequency, signal report, and CW speed when available. Heard recently is positive evidence; an empty result or provider outage stays honestly inconclusive. PSK Reporter respects its five-minute retrieval guidance, RBN uses a 30-second minimum refresh interval, and neither tool saves an edited callsign. See PSK Reporter and Reverse Beacon Network.

  • Popular Park and a park's write-up are now two separate things. They used to share one yellow Popular Park · See park facts pill, which meant a park could only be described if it was also marked popular. Popular Park is now a plain badge in the same bright neutral treatment as Activated, with nothing to open, and any park Hamtrax has written up carries its own See geography row instead — open it for one full-width illustrated Geography card, colorful artwork above a centered title on narrow screens and cropped into the left edge on wider ones, giving longer park stories room to breathe. A park may carry either, both, or neither, and geography is being written for every active US park rather than the popular set alone, so far more parks now have something to read. History and Did you know? are no longer shown. Activation setup's suggested-park card, which used to print the geography straight onto the card, now shows the same badge and collapsed row as the park detail views, and the sidebar's Parks search results wear the same Popular Park badge as everywhere else. See Popular Park and geography.

  • Hunting map hover points to the matching list item again. On wide screens, the recent Hunt-card redesign could leave a hovered marker's matching card unlit, while an earlier scroll regression could also leave that card off-screen even with Auto-scroll activator list enabled. Hovering a marker now brings the card into view and, once the list has finished scrolling, lights a soft blue glow along that card's map-facing edge — brightest level with the card's middle and fading out over the map — together with a faint blue wash across the card's own face (hovering the card itself lights it at once). Both fade back out when you look away, and the glow is toned down over the pale street map so it never reads as a smudge. Turn off Auto-scroll activator list to keep the list still without losing the visual pairing; Reduce Motion keeps the same cue with a shorter fade.

  • Grid-square entry no longer erases your first character. Manual location fields now preserve partial typing, apply standard Maidenhead casing as you go, and accept 4-, 6-, or 8-character locators. From the third through sixth character, Hamtrax offers up to five likely six-character grid squares and narrows them as you type; the suggestions never prevent an unlisted valid locator. In the Hunting location picker, the grid field fills its available row, while latitude and longitude split theirs evenly instead of sitting in two tiny fixed-width boxes. Inside a location window, choosing a grid or place suggestion — or changing the auto-revert window — now applies the choice without dismissing the window before it can be saved.

  • Radio and antenna pickers are now clearer. Their centered headings now say My Radios and My Antennas in a stronger title treatment, without a redundant header icon. Saved profiles now read as compact radio instruments: photo and identity sit in a smoked header, Edit and Select / Deselect share a separate action footer, and the current choice uses a restrained gold edge instead of pulsing hatchwork. The add action still says exactly what it creates — Add Radio or Add Antenna — without another icon. Signed-out visitors can also try every field in the mock editors; closing discards the draft and leaves the demo gear unchanged.

  • The top-bar solar preview now fits cleanly on narrow screens and gets out of the way with one tap. Its right edge could be clipped, and the four band sections looked darker than the card around them. The preview now stays fully visible, uses one consistent surface color, and closes when you tap the sun, a band reading, or the card's empty space; Open Solar Conditions still opens the full dashboard.

  • Park search no longer leaves activation setup hidden behind the sidebar. On phones and tablets, tapping Activate Here in the sidebar's Parks search opened the selected park's setup while the sidebar stayed expanded. The sidebar now starts closing before Hamtrax routes to activation setup, with the selected park still pre-filled.

  • Folder links from Hunt now open the folder they name. On phones and tablets, tapping the monthly folder chip at the top of POTA or DX Hunting — or a folder link in an activation-routing card — selected the right folder but left the Logbook showing its top-level program cards. Those links now open directly on that exact monthly or activation folder. Opening Logbook from the sidebar still starts at the folder tree, and Back returns there as before.

  • Logbook folders now open and close smoothly. Folder cards used to jump to their full height as soon as you tapped them. Their contents now reveal and tuck away with one quick motion, while devices set to reduce motion still switch instantly. Folder rows also keep a soft outline for as long as your cursor remains over them, after the initial highlight fades.

  • Program cards now flow into their detail view. Opening a live POTA or DX spot—or a park in Park Explorer—now immediately carries the card's four edges into the detail modal while its contents fade, instead of making the new surface appear separately. The modal keeps the card's restrained 1.5px metallic bezel after that handoff, and directly opened windows use the same edge instead of falling back to a plain hairline. Direct glyph and search opens keep their regular transition, and devices set to Reduce Motion get a simple fade.

  • Your offline POTA park database now keeps itself current. When a signed-in device discovers that its local park data is stale, Hamtrax quietly downloads the newer official dataset by default. Auto-update parks database lives under Settings → Integrations and follows your account, while each device still owns and updates its own offline copy. Turn it off and the at-most-weekly stale-data reminder plus Drop & refresh remain available; a failed automatic update falls back the same way. If a map or the database card is already open, the new parks appear without a page refresh.

  • Hunt cards now read like radio instruments instead of unrelated rows. The program-owner panels above POTA, DX, Repeaters, and Park Explorer now use one lighter continuous smoked-metal chassis with a crisp neutral rim, and each panel's name now starts at its left edge in a larger heading rather than sitting beside a round program badge, while POTA and DX keep their live-count controls recessed in a darker inner card and every list row remains darker below. Live POTA and DX spots float a tight segmented Frequency readout beside plain Mode text directly on the card. POTA's header places a small country flag immediately before the park reference directly beneath the callsign, while its place row begins below Frequency / Mode with the park name and optional region metadata. DX cards instead lead with the canonical entity title and its parent-country flag when available, show that flag only in the header, stack Frequency and Mode above the callsign and entity reference in the body, and vertically center any country thumbnail at that body's far right. Repeater rows drop the favorite star, put Mode before the callsign on one header row, leave a small gap before a borderless Receive / Transmit row with matching compact segmented readouts, center the offset beneath it and any access tone immediately below, mark the bottom-left locality with a small location pin, and close with Log at bottom-right; both frequencies keep the same bright neutral text without coloring either by mode. Every program row now uses the same rounded dark-metal chassis: a single 1.5px metallic bezel around a smoked identity header, near-black body, and smoked footer; the header divider stops short of that bezel and the footer has none, while band ribbons and informational badges never recolor or erase an edge. Park Explorer also drops the favorite star and starts that shared header with the park name, then divides the next line into equal Park reference / Region / Photos sections — the reference at header-3, the region at body-2, and the optional offset photo stack in the right section — before closing with one natural distance phrase such as 3.7 miles away instead of a split label and value. Parks you have never activated stay unbadged; Activated appears only when the Logbook contains a validated activation for that park. Unworked repeaters likewise stay unbadged; Worked appears only after the Logbook proves a repeater contact. When present, Popular Park starts the footer, Activated sits immediately to its right, and distance stays pinned at the far right. Informational list markers now share the same bright neutral color as the card headings: Repeater Worked and User-added badges; Park Explorer Popular Park and Activated badges; and POTA's Popular star. A small header ribbon spans radio cards' top edges: a recognized amateur band when one can be derived from the RF data, or the registered program's short name otherwise. Park Explorer leaves off the redundant POTA label. The former between-card band/mode dividers are gone, so the marker never disappears merely because two neighboring cards match. Mode now uses the same text-only treatment across cards, contact rows, pickers, and station details, with no raster artwork. Every frequency value and unit throughout Hamtrax now uses the same bright neutral text as the main headings, independent of operating mode; Mode alone remains yellow for voice, CW, and unknown modes and turns blue for recognized digital modes, while warnings and status actions keep their semantic colors. When Mode is missing, Frequency stays locked in the same left slot. On live POTA spots, the flag-prefixed program reference stays directly beneath the header callsign, while the place name and optional region metadata remain below the tuning row. Every live POTA and DX spot uses the same Tried / Try Later / Contacted action rail — one visual language whether you're scanning an activator or a country. The signed-out site's logo, account actions, and navigation tabs now sit on that same smoked identity-header material as one continuous top surface instead of splitting the header and tab strip into separate finishes.

    The POTA and DX live-count cards now show three centered rolling digit reels before the first count is ready instead of a leaf, and the card no longer carries a pulsing green Live marker in its corner — the count and its label already say it is live. Once any number appears — including 0 — it stays visible while refreshes continue.

  • The folder page's buttons now sit where you use them. A folder's Add Contact and Bulk Edit buttons used to float above the Contacts heading, a full scroll away from the list they act on; they now sit directly under the List / Map / DX switch, and only on the List tab — on Map or DX they step aside, because there's no row there to add to or select. Share, which was tucked into the small toolbar beside Download and Delete, trades places with them: sharing your contact map is the folder's showpiece action, so it now sits immediately beside the switch as a full orange button spanning both Contacts header rows — and it now says what it shares: Share map. Download and Delete keep their spots in the top toolbar.

  • Place photos now add context without taking over the list. Park Explorer rows can show up to four small photos stacked with a slight offset in the dedicated third section beside Park reference and Region, while live POTA cards show at most one small image beside the place and live DX cards keep that image vertically centered at the body's far right beside the tuning and station rows. The information-first card remains complete when no freely licensed photo exists. The thumbnails stay lightweight and load only when their row nears the viewport; repeated views of the same subject are filtered out; tapping an image opens the same credited detail view as tapping its row. Park photos also got their corners back — the square-cornered thumbnail on the activation screen was a picture overflowing its own rounded frame, and it now sits inside it. See Park Explorer, Hunting, and DX Chasing. Map detail cards now reuse an already-cached photo set as a small stack beside see details, with every visible layer showing a different tiny thumbnail. The popup starts no second photo lookup; a shared-park operator stack shows the photos once.

  • Full-screen photos are simpler to browse. Each photo now scales up or down to fit the available screen without cropping, and Logbook folder photos keep the folder's title in the header. The photo, its title, and the available controls stay vertically centered as one group instead of floating at opposite screen edges. Previous and next stay together in a centered row immediately below multi-photo previews on every screen size. Tap anywhere in the surrounding dark space to close the enlarged view; the photo and its controls stay safely interactive. The unused zoom controls are gone, while long photo titles still use all available header space before shortening on small screens.

  • The repeater directory no longer gets stuck waiting for online additions. A slow or stalled connection to the user-added repeater feed could leave Repeaters loading forever even though the 17,830-repeater directory was already on the device. Hamtrax now waits at most five seconds for those optional additions, then opens the bundled directory and retries the additions on a later lookup.

  • Repeater map pins now open from the whole pin. Tapping near the top of some glyphs used to do nothing even though tapping lower on the same pin opened its card. The full visible pin now responds, while tightly packed pins still highlight the right repeater.

  • Past-activation imports now use the same guarded workflow as every other import. Import a past activation on Activate and Import under POTA Activations now open Import Contacts, so one page owns file parsing, destination review, duplicate handling, and the filed/still filing/refused/failed result.

  • Connected logbooks now mean a real connection, and LoTW confirmation sync is safe to trust. Import from connection and Settings now show only QRZ and LoTW: the retired N1MM settings shell and HamQTH upload vault are gone instead of implying working transports that were not there. QRZ still imports directly and can auto-push new contacts. LoTW now uses a local encrypted vault plus an authenticated Hamtrax gateway for an explicit read-only sync, matches callsign, UTC date and minute, band, mode, and known station callsign before marking a contact confirmed, consumes each local row once, and keeps unmatched confirmations on the device for later retry while its full-timestamp cursor advances. Uploading to LoTW still goes through TQSL; HamQTH remains a manual ADIF upload.

  • Hostile import files and broken local queues now fail at the door. ADIF and CSV files above 64 MiB are refused before the browser reads them into memory. Both parsers now accept only complete current DXCC entity numbers, so values such as 9A, scientific notation, zero, or an unknown number cannot be half-read into the wrong country. Ham2K PoLo Full ADIF operation events can no longer contaminate or swallow the following QSO, even when an event payload is larger than a contact field may be. If a contact reaches local storage but its durable cloud command cannot be queued, Hamtrax rolls that row back, reports it as failed before filing, and does not inflate either the filed or refused by the cloud count.

  • Your import summary now reports what your logbook actually accepted, not what this browser managed to write. It used to print "23 imported, 0 failed" the instant the contacts reached the device — which is a different and much easier question, and for at least one operator it was flatly untrue: the summary read 0 failed while the cloud was refusing rows one at a time, and the only trace was a Needs Filing list found later, with nothing connecting it back to the file. Writing a contact and filing a contact are two steps, so the wizard now shows two: a third progress stage, Filing contacts in your logbook…, and separate numbers at the end for filed, still filing, duplicates skipped, ignored, refused, and any contact that failed before filing. Import complete is now reserved for an import that really is complete; anything still in flight or turned away says so in the title instead of getting a green tick over the top of it. Contacts your logbook refused are listed right there under Refused by the cloud, as exactly the same rows the Logbook's Needs Filing shows, so you can deal with them while the file is still in front of you rather than discovering them a week later. One of those rows got clearer too: a contact refused because its destination folder was refused now names that folder — "The folder “August 2026” could not be created, so this contact had nowhere to go" — where it used to quote you a guard rule about a folder that did not exist. Before you confirm, the Review counts now stack one per line: the yellow file icon anchors the contacts-found headline, while the smaller follow-up lines use softened green dots for records read and contacts ready to import, and softened red dots for unreadable, duplicate, rejected, or excluded records. And offline, where nothing can be filed at all, the screen honestly counts every contact as still filing instead of claiming an import that hasn't happened yet.

    Each routing stage also offers Review and accept all, which keeps the remaining proposed destinations and jumps straight to Summary without saving anything.

  • "Add your callsign first" now takes the callsign. Logging a contact needs a callsign on your account, and until now Hamtrax answered a missing one with a button to Settings → Account. Pressing it left whatever you were doing — and if you were importing a logbook, "whatever you were doing" was a parsed file, a complete routing plan, and every include/exclude choice you had made on the review screens. All of it, gone, to type six characters somewhere else. The prompt now contains the callsign field itself: the same field Settings has, running the same callbook lookup, holding the same rule that only a confirmed callsign is ever written to your account. Save it and you carry on exactly where you were. Importing goes one better and asks at the start, over your populated review screen instead of at the final confirm — and because your file names its operator on every record, the prompt usually arrives reading "Is this your callsign?" with the answer already filled in, so confirming is one tap. Saving mid-import re-plans your folders, since activation folders are named from your account callsign rather than the file's. Add it in Settings instead stays on the prompt for the operator whose callsign the callbooks genuinely can't find. Every other place that asks — hunting a spot, the sidebar match, and adding a contact by hand — got the same upgrade for free, and Settings now renders the very same field rather than its own copy of it. The prompt is also purely a signed-in one now — a signed-out tap is handed to Hamtrax's account prompt instead, so it carries neither a sign-in path nor a Not now button of its own.

  • A HAMRS logbook full of hunts now lands in your monthly Hunting folders instead of one enormous custom pile. HAMRS logbooks are typed: pick POTA and it stamps MY_SIG=POTA onto every record in that book — including the parks you hunted from your own armchair, where no park of your own was ever involved. Hamtrax read that stamp as this was an activation, went looking for the park it was supposedly activated from, found none, and swept the whole logbook into a single custom folder. Months of hunting, out of their months, in one undifferentiated heap. A program code that names no reference identifies nothing: it can't select a folder, can't earn a program's credit, and isn't a meaningful ADIF pair to carry forward. Hamtrax now drops that empty half and files each contact on the side that does say something — the park you hunted — so those contacts reach the months they belong to. The rule is written around the missing reference rather than around HAMRS, so it holds for any logger that does the same thing. Nothing else loosened: a MY side that does name a reference is untouched, including an unsupported program like SOTA carrying a real summit; a reference a supported program refuses is still reported to you rather than quietly erased; and the folder guard that keeps a mismatched contact out of a month is exactly as strict as it was.

  • Your activation now claims every contact you make from the park — and stops the one kind it can't keep. Hunting from a park has always rerouted your POTA hunts into the activation as park-to-park. But a DX entity worked from the same picnic table quietly went to your DX month instead, so the log you exported for POTA was missing contacts you genuinely made there. It doesn't anymore: start an activation and the DX Chasing tab grows the same green You're activating card the POTA tab has, the editable My Location row steps aside for it because the park is where you are, and every entity you work files into the activation's folder. The card reads "Hunted DX contacts save into this activation" rather than as park-to-park, because park-to-park means the other operator is at a park too and a DX station generally isn't — these are ordinary activation QSOs that happen to be DX. Nothing is lost in the move: DX credit has never been read from which folder a contact sits in, so a country worked from a park still lights up your Showcase world map exactly as one chased from the couch does. Repeaters answers the same question the other way. POTA doesn't count a contact made through a repeater toward an activation, so instead of filing one somewhere that can never score, the Repeaters tab takes its logging controls away for the duration — the Log buttons leave the nearby list, the map glyph's Log Contact goes with them, and the Manually add contact card is replaced by one naming your park and saying why, with End activation on it. That block is narrow on purpose: only on the Repeaters tab, only while exactly one activation is live, and only for contacts dated inside its UTC day — back-date one and nothing stops you. And if you made the contact and want it logged anyway, opening your Repeater contacts month in the Logbook and adding it there still works, because a card opened on a folder is bound to that folder and never consults your activation. Each program now declares this for itself in one place, and the card you see, the folder the save picks, and the guard at the write door all read that same answer. See Hunting From a Park.

  • Repeaters — a third program, for the contacts most of us actually make. The sidebar has a new row beneath DX Chasing: Repeaters, marked by a repeater tower. It's built around a question no other logbook asks — not which park, not which country, but which repeater the contact went through. There is no live feed here, because nobody spots a repeater. Signed in, the tab opens on the directory within 50 miles of your saved location; signed out, the public tab starts from Chicago until you search or choose your location. In either case the list is closest first, each row carrying the callsign and output frequency, the town it covers behind a small location pin, and the three things that are always hardest to find at the moment you need them: offset, access tone, and mode. A repeater you've never logged a contact through carries no status badge; one you have reads Worked, and Worked ×4 once you've been through it four times, because on a repeater every one of those is a real QSO. Tap Log on a row and the contact card opens with the repeater, its output frequency, and its mode already filled in, waiting on the one thing a repeater row can never tell you: the callsign of the station you actually worked. Repeater contacts deliberately do not inherit POTA's once-per-UTC-day rule — catch the same friend on the morning drive and again on the way home and Hamtrax keeps both; only an identical re-log at the same time is skipped. DMR, D-STAR, and C4FM contacts are stored the way ADIF says to, MODE=DIGITALVOICE with the flavor in SUBMODE, so they export and re-import cleanly everywhere while still reading as "DMR" inside the app. Contacts file into their own monthly folders on a Repeaters card in your Logbook, which can never mix with your POTA or DX months. The directory itself is hearham's openly licensed list, 17,830 operational repeaters worldwide, which ships with the app and lives on your device rather than being fetched a repeater at a time — so the list still answers in the valley where you wanted a repeater in the first place. No such list is ever complete, so a quiet + Add repeater action sits at the top-left above the rows and reappears in the empty state: give a repeater its callsign, output frequency, where it is, and whatever access details you know, and it goes live for everyone straight away, wearing a small User-added badge. Duplicates are refused rather than doubled, the bundled entry always wins a collision, and submissions are capped at five a day per account. Signed out, hamtrax.com's tab strip gains an RPTR tab that browses the same repeaters with no account at all. Full details on the new Repeaters page.

  • The Logbook can now add an old contact before its folder exists. Outside Bulk Edit, Add Contact stays available throughout the Logbook, including a brand-new one, and the full form previews the exact automatic destination or asks for a custom folder before it writes the QSO. The same filing policy as Import puts a recognized contact from your park into the matching live or finished activation; only without MY activity identity can a worked park claim its POTA month or a foreign entity claim its DX month. Unsupported identity remains intact for custom filing, and an invalid known-program reference is rejected instead of falling through. A custom folder is selected or created inline, while a missing automatic destination is checked and created at Save. A current-day park contact can instead open activation setup with the park prefilled and spotting off, while an old one can create a finished one-contact activation without an ADIF file. This also closes the DX/POTA presentation leak in the Logbook: a DX month now keeps the DX emblem, says Monthly DX Folder, opens Add DX Contact with a Country/DXCC target, and shows From Park disabled with directions to the activation flow instead of presenting a POTA Hunt form.

  • Radio and antenna profiles now read like Equipment Passports. Each photo, nickname, type, manufacturer, and model sits together at the top, with Manufacturer and Model stacking into full-width rows on narrow screens instead of squeezing side by side. On a new profile, leaving Nickname blank and moving out of Model now copies the model into Nickname automatically; a nickname you entered yourself is left alone. Radio power, modes, accessories, and notes — plus antenna bands, performance, physical specs, feedline, SWR, and notes — now show useful summaries in the same clean chevron rows as Hunt; open one and the previous section closes, so equipment stays easy to scan while every detail remains one tap away. Antenna identity and field measurements also survive save and reopen reliably. Creating a radio or antenna from any equipment picker now brings you straight back with the saved profile visible and selected, instead of waiting for a later refresh.

  • The Hamtrax CLI's Generate key step is now the button. Step 2 of the CLI setup list carried a chevron — the arrow that everywhere else in the app means this row goes somewhere — and then ignored you if you tapped it, because the only thing that actually worked was a separate gold Generate key button sitting underneath. Pressing that button swapped your list of API keys out for the new-key form, so the keys you already had vanished at exactly the moment you were deciding what to call the next one. The chevron tells the truth now: tap anywhere on the Generate key row and the four setup steps slide out to the left while the form slides in from the right, into the space the steps were using. The terminal preview and your API keys panel stay put the whole time, Cancel slides the steps back, and the Generate key button in the API keys panel opens the same form.

  • Spotter distances are real distances now. The spotter list inside a live POTA activation puts the closest listeners first and prints how far each one is from the park — and some of those numbers were badly wrong. When a callbook can't turn an operator's registered address into a position — a military APO/FPO box, a PO box, an incomplete record — it often doesn't leave the field empty; it fills in zero latitude and zero longitude, a point in the Gulf of Guinea off the African coast that mapmakers call Null Island. Hamtrax read that as a real address. A spotter licensed in Grand Rapids, Michigan showed as 8,433 km from a park in Maine instead of 1,251 km, sank to the bottom of a nearest-first list, and drew an arc out across the Atlantic to open water — while their own spot comment read "58 Michigan". Worse, once one database answered that way the wrong position stuck: it counted as a real answer, so a second database that knew the operator's actual address was never allowed to correct it. Hamtrax now recognizes that pair for what it is — missing data — everywhere a callsign lookup lands, including the location you pull from your own callsign, where an address no callbook can place now says so plainly instead of putting your station in the Gulf of Guinea. A spotter whose location genuinely isn't known is left off the map and the list rather than drawn in the wrong ocean, and the Showing 21 of 22 spotters count above the map already tells you when someone couldn't be placed. A single zero is still a real place, so nothing is lost: longitude 0 runs through the UK, France, Spain and Ghana, and latitude 0 is the equator. Coordinates already saved on contacts in your logbook are untouched — this fixes what the lookup hands over from here on.

  • The PRO badge glow now fades naturally in the mobile header. Its gold halo no longer ends in hard lines at the top and bottom, while the header's status controls still expand normally.

  • Map details now share one clear card language. Live POTA stations lead with callsign, while DX stations lead with the canonical entity title, prefixed by its parent-country flag when available, before the callsign; a grouped DX marker shows that identity once above its station cards. Both continue with the smallest segmented bright-neutral frequency readout and plain mode text; Mode is yellow by default and blue for digital modes. Every other floating frequency — QSO/callsign popups, sidebar activator results, reference suggestions, the activation frequency warning, and the waterfall tune preview — now uses that same smallest segmented readout, while Mode and repeater offsets keep their existing treatments. Catalog parks use the same straight 300px dark card, left hierarchy, divider, and gold see details chevron. Repeaters keep their RF-first content and outlined Log Contact, while callsign, QSO, and your-location popups follow the same headline-and-divider rhythm. Opening one now clears the map around it, too: every other pin fades out while the card is pinned and fades back the instant you dismiss it, so the card you're reading is unmistakably about the pin you tapped — hovering over a pin on a desktop still just dims the neighbors. On maps that draw signal-path arcs, the other arcs clear with the pins, leaving only the tapped contact's own line. And a plain tap no longer blinks the pins away: they now clear only while you're actually dragging or zooming the map, not the moment your finger touches it. When the map crossfades to lighter street detail, those connection arcs also switch to near-black for contrast and return to their role colors when you zoom back out.

  • Nothing slips between a window's header and its body anymore. Scrolling inside a Hamtrax window let a thin strip of the moving content peek through the gap just under the title — easiest to spot on Add Contact, where form fields slid past above the pinned filing-preview card. The gap is sealed in every window at once, so pinned cards now sit flush against the header and scrolling content disappears cleanly behind it.

  • Setup rows and filters now read as one simple row system. Parks on the Air hunting, DX Chasing, and activation setup now use the same scannable rows for park or My Location, My Radio, and My Antenna: a large equipment icon, a quiet label, and the current value. Authenticated POTA Hunt appends Spot as a fourth row with its switch inline; activation setup now uses that same fourth-row treatment immediately after My Antenna with the subtitle Spot on start, while DX omits it. Hunting from a park? now sits at the bottom of POTA's Location picker, visibly separate beneath its three location choices instead of reading as another setup row. Tap it and the picker closes, an off-screen Hunt card scrolls back into view, and the existing park form slides in. Activate keeps its recognized-park search and Find Nearest action in place, while Power stays out of the start form for now and remains adjustable in the live logger after Start. The shared Hunt count is now a centered card whose changed digits roll upward as the number rises and downward as it falls while the existing gold flash remains. Its paired footer keeps subtle Refresh on the left and Filters on the right; when band or mode filters are active, their values move into a full-width row underneath, each named by its own field in the quietest supporting type — Band: 20m · Mode: SSB, the same reading the Settings Filters card uses — with Clear at the far right. The expanded Filters area now uses matching chevron rows for Band, Mode, and Last Spotted. Tap one and that row grows in place to reveal its control; opening another closes the first. Tap or click anywhere outside Filters to collapse the whole section. Band reuses the equipment picker's color-grouped square checks while enforcing exactly one band, Mode shows every choice immediately, and Last Spotted shows a large selected-minute readout above 5m, 10m, 20m, 30m, and 60m preset buttons, the selected one carrying a thin yellow outline. DX keeps its extra DX Only row as a direct inline switch for Hide my country; tapping the count still jumps to the first live row. Start Activation drops the Back control that sat beside its title — Activate in the sidebar already opens the tab's own page — and keeps that title, now left-aligned at the panel edge in a larger heading for everyone, above its default-collapsed public explainer when signed out, together with those setup rows, Frequency/Mode, Start, and, signed in, the folder notice now folded behind a Where will my contacts be saved? row beneath Start, in one ordinary raised panel instead of splitting the setup across separate surfaces. Hunt and DX reserve their lighter owner chassis for the configuration that governs the list beneath it.

  • Park and country photos no longer rearrange the view under your thumb. Opening a park — from the hunting map, from Park Explorer, or from activation setup — used to lay out the view without its photo: name, stats, weather, and then a large picture dropped in a moment later, pushing everything you were already reading down the screen, sometimes just as you reached for Activate Here. Hamtrax now finds out whether a park has photography before it draws the view, so the picture's space is there from the first frame: a quietly shimmering panel the photograph fades into when it arrives, and no panel at all for places that have no photos. The layout you see when the view opens is the layout it keeps. The country view behind a DX spot settles the same way as it opens, a photo whose file can't be fetched now leaves a small image icon in its place rather than collapsing the panel and shifting everything a second time, and the little park photo tucked into the corner of a live activation's spotter map follows the same rules.

  • A rig photo that can't be fetched no longer breaks its frame. The photo on a radio or antenna profile — and the one attached to a homebrew modification — was drawn straight into the form, so a file that had been deleted, or a link that had gone stale, left the browser's own torn-page icon sitting in the middle of your equipment. Both now shimmer in place while they load and settle into a small neutral picture icon inside the same bordered box the photo would have filled, with the controls for changing or removing it still on top, so a picture that has gone missing can be swapped without leaving the form. Two nearby surfaces stop spilling as well: a schematic loading in the homebrew grid now shimmers inside its own square instead of washing over the filename and delete button beneath it, and an equipment photo that fails in a picker row or on your Showcase leaves its icon inside the small square thumbnail rather than stretching across the whole card.

  • The default profile picture is the Hamtrax beaver again. Until you upload a photo of your own, Hamtrax draws a stand-in beside your callsign — and for a while that stand-in was an origami tiger, an animal that appears nowhere else in the app and has nothing to do with the beaver in the Hamtrax logo, the app icon, and the error pages. It's the beaver again, cropped close on his face so he still reads as a beaver at the size the sidebar and the user menu actually draw him rather than becoming a smudge of color. He's also drawn on a transparent background now instead of carrying his own dark square around, so he sits on whatever is behind him — the tile in the user menu, a Showcase header, a contact row — rather than punching a slightly-wrong patch of near-black into it. If you've uploaded your own photo you'll see no change; this is only the picture shown when there isn't one.

  • Your profile picture is one shape again. Uploading a photo under Settings → Account framed it with softly rounded corners, and then every other place it appeared — the sidebar, the user menu, your Showcase, contact rows — drew it as a hard-edged square. The rule that gave avatars their corners had been deleted in a tidy-up that read it as unused, at a moment when three parts of the app were still asking for it, so for a while the shape simply went missing. Avatars everywhere now use the same rounded corner as the upload frame, so the photo you choose is the photo you see. Your Showcase picture had been quietly compensating with a rounder corner of its own and now matches everything else, and the round picture on map pins is unchanged.

  • A quieter Tools menu, and Feedback where you can actually find it. Tools had grown into a list you had to read rather than scan, and two of its eight entries — the CW Decoder and the FT8 Decoder — were still labelled BETA, still being tuned for real-world accuracy, and not what people were opening the menu for. Both have been taken out while that work continues, leaving Tools as five things that each do exactly what their name says: Band Plan, Solar, CW Training, Library, and Hamtrax CLI. Working FT8 is unaffected — FT8 Auto-Hunt on the hunting page is the real way to do it in Hamtrax, and it hasn't changed. In the same pass, Feedback climbed out of that menu and onto the sidebar as its own row, just below Tools: telling us about a bug shouldn't mean expanding a drawer of calculators first. It opens the same form the small bug button at the bottom of the sidebar always has.

  • The setup checklist now shows progress at a glance. Its six large task circles and short connectors made the percentage feel separate from the checklist itself. One taller percentage bar now springs from zero to the current progress when the card appears, revealing a darker geometric origami mosaic in the colors of Hamtrax's Home artwork, with every task preserved as a clickable milestone on the track. As the fill reaches each completed milestone, its white dot grows from a point with a small spring bounce, so the earned run assembles from left to right. The six dots now divide the track into equal completion steps ending at the bar's right edge, so the fill lands squarely on every milestone. On the sixth, the final dot gives a short radiant bounce before the visible banner yields or the Settings checklist collapses. Each dot now has a compact two-line action label — its key word picked out in bright white, so Hunt POTA, Connect QRZ, and Add radio land at a glance instead of reading as flat two-word stacks — and a faint leader that stops just short of both the text and circle, so every label reads as belonging to one milestone without cutting into the mosaic; tapping either the label or its circle opens the same task. Both checklist surfaces drop their extra intro lines and lead with only Get Started, leaving the track itself as the single progress readout; on the floating banner, the top-right X is now the only dismissal control and permanently hides that banner. Finished tasks still collect on the left and outstanding ones stay to the right, so no milestone you have already earned ever sits behind one you have not. The tasks remain completable in any order, and the same checklist at the top of Settings → Account updates identically. Open a task you have already finished and Completed now radiates between two outward-growing white beams with tiny prismatic color glints instead of sitting inside a green outline. Connect QRZ now replaces the antenna milestone and opens QRZ's dedicated connection page. The instant a saved connection succeeds, both checklist surfaces advance without a refresh; existing QRZ connections count when the checklist loads, and importing contacts remains a separate, optional milestone. Creating a radio still advances its milestone as soon as the profile is saved, without waiting for another sync.

  • Importing a logbook full of DX now actually fills your DX folders. DX Chasing shipped able to file imported contacts into country folders — but only ones Hamtrax itself had written, because it looked for a SIG=DX tag that no other logbook produces. SIG is ADIF's field for a special-interest activity like POTA or SOTA; country chasing has no such tag, and a DX contact exported from N1MM, Log4OM, HRD, WSJT-X, or pulled straight from QRZ arrives carrying the standard DXCC entity number instead, or just a COUNTRY name. The result was a chaser with thirty years and two hundred entities in a file importing the lot into Needs Filing and finding their DX Chasing card empty. Hamtrax now reads those contacts the way the rest of the app already did — the exact rule that decides whether a country counts as worked on your DX tab — and files each one into its UTC-month DX folder. It stays deliberately narrow: any other program's tag on either side still wins, so a SOTA contact stays SOTA and your own activation stays an activation; the entity has to be a real current one from the official ADIF list; and contacts in your own country are left alone, because nearly every logger stamps DXCC on domestic contacts too and filing those would bury the DX you actually chased. Your existing folders are untouched — re-import the same file and the contacts you already have are still skipped as duplicates.

  • Working the same country twice in a day on different bands no longer loses the second contact. Hunted contacts are kept once per station, per reference, per UTC day — the rule that stops a re-import or a double-tap from doubling your log. DX inherited it, and for DX it was wrong: DXCC credit is awarded per band and per mode, so working Poland on 20m in the morning and again on 40m that evening is two separate achievements, and the second was being turned away as a duplicate — at the Contacted button and silently inside every import. Each program now states how its own contacts are counted: POTA still scores one per park per UTC day whatever the band, and DX counts a contact distinct unless the station, country, day, band, and mode all match — and when a duplicate is skipped, the rejection notice and the import Review step now name the skip in that program's own words rather than POTA's. Nothing you already logged changes; contacts that used to be refused can now be logged.

  • The live DX feed is now open to anyone, no account needed. The public site's tab strip was Home, Hunt, and Activate, so all of DX chasing sat behind a sign-up — a visitor curious about what "DX" even means had to create an account to find out. A fourth tab, DX, now sits after Activate and shows the live DX cluster feed exactly as a signed-in chaser sees it: every spotted station on the world map with its country flag, the same filters, and the same country detail view, with the introduction tucked behind a default-collapsed What is DX chasing? explainer. Logging a contact is still the moment Hamtrax asks you to create an account. A shared link to the DX hunt feed lands on that tab now too, instead of quietly opening Parks on the Air, and the browser tab reads DX - Hamtrax so a crowded window still says which program you left open. Signed-in navigation is unchanged. See the DX Chasing guide.

  • Every pin on the activation detail map now tells you who it is. The spotter map inside a POTA activation's detail view has always drawn arcs out to the stations reporting the activator — but for much of the world it couldn't name where they were: the prefix table behind it knew only 67 countries, so a spotter from China, Russia, Ukraine, Portugal, or most of Africa and the Middle East showed no country and no flag at all. Hamtrax now carries the complete ITU call-sign series — every prefix block in amateur use — so hover over any spotter marker and its popup reads like a log entry: country flag and name, their city or grid square, their callsign, and the operator's name, with a click pinning it open. The activator's own gray pin joins in too: it used to be a bare callsign label, and it now answers the question you opened the modal with — who is this? — with the same flag, country, name, and location the spotters get. The bigger prefix table reaches everywhere Hamtrax falls back to a callsign's prefix for a country, so the spotter list view, folder DX summaries, and shared contact maps also name countries they used to leave blank.

  • Your Showcase now reads by program, not by kind of folder. It used to be two cards — Activations and Hunting — which was fine when Parks on the Air was the only program, and stopped being fine the moment there were two: your POTA months and your DX months sat in the same card, under the same heading, and the card's title told you nothing about which was which. Your Showcase now has one card per program you use, titled with the program's own name. Parks on the Air holds your activations and your hunting together, under headings inside it, and each heading keeps its own Show all window so a busy activation year can't crowd your hunting off the card. A program that only hunts, or only activates, has nothing to disambiguate and shows its folders with no heading at all. DX Chasing gets a card of its own — a month card can say "March 2026, 12 contacts" and nothing about countries, which is the only thing DX chasing is about, so its months stay in the Logbook where they read properly. In their place the card shows a world map of everywhere you've worked. All time · whole logbook sits above it so a map on the same profile as your DX months can't be read as one month's haul. The public/hidden pills moved with their headings, and everything you had already hidden stays hidden. + Activation and Find activations now belong to the program card and only appear for a program that actually offers them, so you'll never again be offered an activation from a program that doesn't do activations. And a folder whose saved program can't be resolved is no longer quietly absorbed into whichever card looked closest — it's left off the Showcase entirely, and lives in the Logbook under Unrecognized program, where it can be found and fixed instead of misfiled.

  • Park Explorer — browse every park in the world without starting anything. Wanting to just look at parks used to mean pretending to start an activation: open Activate, open the setup form, and pan its map. The Parks on the Air group in the sidebar now has a third entry, Park Explorer, that puts the same clustered world map of all 90,000+ POTA parks on its own page — no session, no gear form, no Start button, nothing to accidentally commit to. Tap any park for the full detail view: photo, current weather, activation history and success stats, and the park's geography when Hamtrax has written it up. Search by name or reference to fly straight to a park. Once the catalog finishes loading, any real Location Hamtrax already has from your selected callsign, device GPS, or manual method now frames you and the three closest parks with a little breathing room; choosing that opening frame does not request a fresh fix, and without a resolved location the map stays on the world view. Tap Find parks near me when you want a fresh device GPS fix and a nearest-first list within fifty miles. If your browser blocks that request, Park Explorer falls back to your saved Hamtrax location — the same one its map already shows — and tells you it did, instead of showing a location pin and a "location is blocked" error on the same screen. When browsing turns into a plan, Activate Here on any park lands on activation setup with that park pre-filled. See the new Park Explorer guide.

  • A folder listed under "Unrecognized program" can now be repaired in place. If an activation folder ended up there because its saved park was a park name where a reference like US-1234 belongs, it used to be a dead end: the folder sat outside its program card refusing new contacts, and the park-correction tool refused to run because it required the folder to already have a valid park before it would change the park. That catch-22 is gone. Open the folder, tap Edit beside Activation, pick the real park, and Hamtrax re-stamps the folder and every contact inside it together, exactly as it does for any other correction; the folder rejoins its program and starts accepting contacts again. The protection against two people editing the same activation at once is unchanged.

  • Renaming an activation folder is finally safe. Activation folders are named with POTA's own log-filename convention, so plenty of operators rename them to something they'd actually recognise — "Spring Mountain Trip" rather than KO4ZRE@US-5524-20260319. For folders created by older versions of Hamtrax that quietly cost you something: those folders kept their identity in the name, so renaming one erased it. The folder dropped out from under Parks on the Air, and — worse — stopped accepting new contacts, with nothing on screen explaining why. Renaming now pins the activation's identity down first, so the folder keeps its submission identity for ADIF downloads, keeps its place under its program, and goes on taking contacts, whatever you call it. Folders written by recent versions were never affected and are left exactly as they are. The one name Hamtrax now turns down is a label that impersonates a different log — a name in the callsign@reference-YYYYMMDD form claiming a park, date, or callsign the activation doesn't have — which would leave the folder advertising one activation while every contact inside says another. It says so in the rename box and points you at Edit beside Activation, which is still the one route that moves the reference and every contact together.

  • A frequency typed the way the dial reads now logs as MHz. Hamtrax's frequency fields are labelled in MHz, but plenty of operators type what's on the radio — 14250 rather than 14.250 — and the contact used to keep that number exactly as typed. It then read as a frequency a thousand times too high, came out with no band beside it, and exported an ADIF FREQ value that the standard defines as MHz, so other logbooks and award programs read it wrong too. Frequencies are now converted to MHz as a contact is saved or edited, wherever you logged it — the hunt panel's manual card, the contact form, the CLI — and ADIF and CSV exports convert on the way out as well, so contacts already sitting in your log export correctly without you touching them. Genuine microwave contacts are safe: 1296, 2400, and 10368 are real 23cm, 13cm, and 3cm frequencies and stay exactly as typed — and those bands now fill themselves in where the band used to come up blank.

  • DX Chasing is here — a second program beside Parks on the Air. The sidebar's Hunt entry is now two: Parks on the Air, exactly as before, and a new DX Chasing tab, marked by its own globe, that shows live spots from the worldwide DX cluster network, each with its country flag and name. In the Logbook, every activity row now shares one comfortable minimum height: POTA's Activations and Hunting parents align with their unbadged child folders, activation rows still grow for multi-line park and date details, and safely resolved DX months use that same height with the DX globe to the left. That same icon follows into the folder detail view, where the type line reads Monthly DX Folder and both the compact and full Add DX Contact forms ask for a Country/DXCC entity instead of borrowing POTA's worked-station park field or monthly-folder copy. Countries are strict DXCC entities from the official ADIF list, and a Hide my country filter (on by default) keeps the feed showing only actual DX. Log a spotted station with one tap — or an unspotted one from the manual card's country picker — and it files into a UTC-month folder under a new DX Chasing card in your Logbook, which appears with your first DX contact — never before, except on a brand-new, empty logbook, where every installed program's card shows as a starting point. DX months and POTA months stay strictly separate under the same hygiene guardrails, imports route contacts into those folders automatically, and logging a foreign POTA activator in both tabs keeps both records — park credit and country credit are different achievements. Every DX contact also records its country and official ADIF entity number on the QSO itself, so it exports complete to other logbooks and award programs and shades that country on the world map atop your profile's DX Chasing showcase card. Manual DX and POTA entry now requires a resolved program target, treats that target as the worked-station location, preserves compact/full mode and payload semantics, rejects future contact times, and keeps a failed draft open until the local QSO write succeeds. See the new DX Chasing guide.

  • Every DX spot now opens the country behind it. Tapping a DX spot — anywhere on its row, or see details on its map pin — used to do nothing at all: no detail view, no error, nothing. It now opens the country, not just the station — though it opens on the station, because that's the part you can act on: the country's flag, name, continent, callsign prefix and DXCC number head the lower half of the view rather than sitting above the one button you came to press. You get the station's frequency and mode with the same band-plan warning POTA hunting shows; the operator's name and location, tappable through to their full details; the same Tried / Try Later / Contacted actions as the list row; and every other time the cluster reported them. Then the country half opens with freely licensed photographs of the place from Wikimedia Commons, each crediting its photographer, and a Country facts section closes it — nothing to expand — with available details such as capital, founding date, GDP per person, main religion, main exports, languages, government type, area and population. Each fact pairs its value with a tiny minimalist carved-ice illustration, making the grid quicker to scan. Entities that aren't countries get their own Entity facts instead — who administers them, whether anyone lives there, when anyone last put them on the air, and why they're rare to work — and never borrow a parent country's economy; the Canary Islands will never show you Spain's GDP. Fact availability varies by entity, so unavailable details are omitted and an unresearched entity shows no facts panel rather than a grid of blanks; facts themselves read in English while the labels around them follow your language.

  • "Add your call sign first" now drops you on the call sign box itself. Logging a contact needs a callsign on your account, and if yours isn't set Hamtrax says so and offers a Settings button. That button used to leave you at the top of Settings → Account to go find the field yourself — and on a phone the call sign box sits below your setup checklist and your profile photo, so the one thing you had just been asked for was off the bottom of the screen. Pressing Settings now scrolls straight to the Call Sign box and puts the cursor in it, so you can start typing the moment the page settles. This is the same prompt everywhere it appears — hunting a spot, the activator popup on the map, entering a contact by hand, and importing an ADIF file — so all of them land you in the same place.

  • Hamtrax for Android is one tap from the home page now. The landing page carried a single App Store badge, so the app was one tap away if you were on an iPhone and a name to go search for if you weren't — and the docs still told Android visitors the app was awaiting Google Play approval, long after it had gone live. A Get it on Google Play badge now sits directly beside the App Store one, drawn to the same size, outline, and type so the two read as a pair rather than one badge and an afterthought. Both still disappear inside the installed apps, where a "download the app" link has nothing to open. The docs pages that described Hamtrax as iOS-only now say iOS and Android.

  • Operator names now fill themselves in instead of staying blank forever. The name that reads beside a callsign — on Logbook contact rows, live spot cards, the sidebar hunt match, and map popups — was only ever read back from the shared store of callsigns Hamtrax had already looked up. If that store had never seen the call, nothing went out to the callbooks to find it, so the name simply stayed empty for good; and because entries were discarded once they passed 30 days, a name you had been seeing could quietly vanish and never come back. Those names now look the operator up for real when the store comes up empty, and the answer is saved back for everyone, so a blank fills itself in once and stays filled. An entry past 30 days is kept and used rather than thrown away — served straight through where speed matters, and re-checked against the callbooks where it doesn't — so an older name still reads through a callbook outage, and a call that has since left the registries keeps the name it always had. The lookups wait for whatever you are doing to settle and back off on their own when the callbooks are busy, so nothing on screen slows down for them. One gap remained: a foreign or special-event call that the first callbook simply doesn't carry — and the DX cluster is full of them — used to end the lookup right there as a failure, so the DX country view, spot cards, and callsign details showed no operator at all and quietly kept retrying a question that already had its answer. A miss now just means the next callbook gets asked — portable calls fall back to their base call along the way — so a DX operator's name and location appear whenever any of the callbooks knows them, a call none of them carry reads as a plain not-found, and "couldn't finish, try again" is reserved for the day the callbooks are truly unreachable. That same shared callbook data now seeds the universal callsign dossier, which never infers Hamtrax membership or opens a Showcase.

  • Your location now stays where you put it. Setting your location — pulling it from your callsign, taking a GPS reading, or dropping a manual place, grid square, or coordinates — saved correctly on the device you set it on, but the copy kept on your account was written under names nothing could read back. The setting therefore looked right until something made Hamtrax read your account again: sign in on a second device, reinstall the app, or come back after the browser cleared its local copy, and your location read No location set or quietly reverted to an older one. The same save carried your callsign-derived coordinates, so the picker could insist No location found for your callsign for a call with a perfectly good registered address, and your band plan's agency and license class could come back blank the same way. Locations are now written in the shape Hamtrax reads back, so one save really is your location everywhere — Settings, the hunt panel's My Location row, and the contact form alike — and it follows your account across devices. Accounts saved the old way are repaired in place, so a location that had vanished comes back on its own instead of needing to be set again.

  • Every link on a Showcase is now checked before it's a link. Your folder livestream links and your social links are typed by you and then shown to anyone who opens your Showcase — and Hamtrax used to hand the stored text straight to the browser as the link, so a value that wasn't really a web address could still be clickable, whether it came from an older build or was written from outside the app. Hamtrax now resolves every one of those links itself first — folder livestream links, the social pills, and the photo credit under a park photo — and anything that isn't an http or https address stays on screen as plain, non-clickable text instead. You can still see exactly what's saved, and ordinary links behave exactly as before.

  • The Logbook's List / Map / DX switch moved to the left. It used to hang off the far right of the contacts row, separated from the Contacts heading it belongs to and from the contacts underneath it — and on a phone that parked the three most-used views in the corner your thumb reaches last. The switch now lines up directly beneath the heading, on the same edge as the contact rows, so the whole section reads as one column. During Bulk Edit, that switch fades in place while Select all / Clear all sits in the sticky bottom toolbar directly beside the selected-count label; the folder's Equipment, Images, Stream Links, and Notes strip also steps out until you cancel or finish, moving the contact controls up and keeping the screen focused on the rows being changed. Nothing about what the three views show has changed.

  • You can finally decide which Hamtrax emails you get. Nearby-activation alerts, parks-near-you, product announcements, and review asks each have their own switch under Settings → Preferences → Notifications — a section that used to hold nothing but the iOS push toggle, is now on every platform, and sits last in Preferences, below My Activations. Every one of those emails also carries an unsubscribe link, and Gmail and Yahoo show their own one-click control on it; both work without signing in, and a link from an old archived email still works years later. Turning one off never touches the others, and any opt-out you had already asked for by hand is carried over untouched. Password resets and account notices are transactional and always arrive.

  • The folder guardrails now hold even outside the app. Hamtrax has always refused to file a contact into a folder it doesn't match, but that refusal lived in the app — a stale or tampered client writing straight to storage could slip a contact into a park it never worked, or quietly re-point a finished activation at a different park and mismatch every contact already inside it. Storage itself now turns both away: a contact whose park or month contradicts its automatic folder is refused, and an automatic folder's park and month identity are frozen once it exists. Notes, photos, stream links, and the park-correction action are all untouched — the one sanctioned way an activation's park changes still moves the folder and every contact in it together. Renaming stays free-form too, with one narrow exception added since (below): a name that impersonates a different activation.

  • Signing in with Google is quick now. Tapping Sign up with Google could leave you waiting twice over — once before Google's account chooser appeared at all, and again after you had picked an account — long enough that an operator sat through half a minute of it and refreshed the page twice, assuming it had frozen. Three separate things were sitting in that gap. The handshake ran through a Google-owned firebaseapp.com address, so your browser had to fetch a loader script and stand up a hidden frame on a second domain before it could so much as ask Google who you were; it now runs on hamtrax.com itself, which is also the name Google's chooser shows you when it asks which account to continue with. Hamtrax was also downloading an 838 KB map of every country's borders on each sign-in, purely to work out which country your coordinates fell inside — a question your account already answered when you set your callsign, so it isn't asked anymore. And the rest of the app waited for sign-in to finish before it started loading at all; it now begins the moment you reach for the button, so it is ready by the time the chooser closes. Google's chooser itself no longer waits on the logbook: opening the window needs only the sign-in code, but Hamtrax used to hold it back until the whole storage layer had loaded too — around 143 KB of code that sign-in does not touch until after you have picked an account. That now loads while the chooser is open rather than before it can appear, which on a slow connection is most of a second off the wait before Google even asks who you are. On a phone the effect is larger still: the head start used to depend on a mouse hovering the button, which no touchscreen can do, so a tap paid for every one of those downloads on the spot. Phones now warm the sign-in code quietly in the background once the page has settled. Coming back to Hamtrax already signed in is quicker for the same reason — the page now asks for the code that restores your session while it is still reading the page itself, rather than after. A quieter fix came with it: on a browser with a strict popup blocker, the button used to look like it had simply done nothing, because the block landed while the page was still fetching the code meant to handle it. Apple accounts travel the same path and picked up the same improvements. Nothing about the sign-in screen itself changed — this is the same flow, without the wait.

  • The password reset page is Hamtrax's own now. The reset link used to hand you off to a generic Google-branded form on a firebaseapp.com address — an unfamiliar domain in an email asking for a new password, which is exactly what you have been trained not to trust. The link now opens hamtrax.com, wearing Hamtrax's own dark chrome, and tells you which account it is about to change. Choose the new password, confirm it, and you are signed straight in — no second trip to the sign-in screen. Expired and already-used links now say which one they are instead of failing blankly.

  • Password reset works on iPhone again, and it's easier to find everywhere. Tapping Reset your password in the reset email on an iPhone with Hamtrax installed used to open the app and then do nothing at all — no reset screen, no error, no explanation — because the app was claiming that link without knowing what to do with it. Reset links now open in your browser and finish properly. The iPhone sign-in screen also gained a Forgot password? link, which it never had — right under the email box on the first screen — and on every platform a failed sign-in now offers Forgot password? right inside the red error message, already filled in with the email you typed. If you're on an older build, update Hamtrax from the App Store — or open the reset email on a computer — and the link will work.

  • A save the cloud refuses now says so, instead of quietly vanishing. A contact could pass every on-device check, show its green "logged" confirmation, and only later be permanently refused by the cloud guard — and nothing told you. The hunt panel's quick-add and manual card reset as if the save had gone through, and the contact simply left the log. Any such rejection — a new contact, an edit, or a delete, hunted or imported — now raises a warning the moment it lands, pointing you to Needs Filing, where the contact has been waiting all along (that part was always true; you just were never told). Two silences are deliberate: retrying from inside Needs Filing answers on the review row itself, and a refused automatic folder speaks through its rejected contact rather than announcing twice. One more thing stopped being sticky: after the cloud refused a monthly folder's creation, every later hunt that month kept failing against the dead folder until you reloaded the page — the next save now simply creates the folder again.

  • Needs Filing now tells you what it is holding -- and whether your fix worked. A rejected contact used to show one bare reference with no label, so your own park and the worked station's park looked identical, and a reference from a program Hamtrax could not place read as a POTA park. Each review row now names your reference and the worked station's reference on their own labelled lines, and an unrecognized program stays neutral instead of borrowing POTA's. It also identifies the contact by callsign and available date, band, and user-facing mode, then gives a plain outcome, reason, and next step instead of exposing an internal id or raw server error. A delete for a contact already absent now completes and clears any legacy review row rather than presenting a meaningless failure. Filing one is honest too: the folder picker greys out All Contacts and the Activations / Hunting headings -- destinations that can never hold a contact -- and Save now confirms the filing or plainly explains why the guard refused it, where before it simply did nothing at all. The full contact form also stops defaulting every monthly folder to POTA: guarded folder identity imposes that program's target control, and only a real selected target stamps its activity identity. And the hosted API's contact-create endpoint now carries activity identity -- sig, sigInfo, mySig, and mySigInfo are accepted -- so a contact filed into a hunting month arrives with its program attached instead of anonymous.

  • Activation log downloads now keep the right submission name. Downloading an activation ADIF from its Logbook folder now uses the stored CALLSIGN@REFERENCE-YYYYMMDD.adi identity even if you renamed the folder for display. File, activation, QRZ, and cloud auto-push exports also share one activity-field serializer, so POTA's MY_SIG / SIG references cannot drift between export paths.

  • Contacts and activation sessions from different activity programs no longer interfere with each other. Saving, importing, or editing a hunt now compares the activator's callsign, activity program, normalized reference, and UTC day, so two explicit activities may share the same callsign, reference text, and day without blocking each other. Imports retain that program through routing and folder stamping; future sibling monthly folders cannot absorb contacts from POTA. The compact manual duplicate warning uses the canonical Hunt write key too — POTA by UTC day, DX by UTC day plus band and mode — independently of the live 10-hour Contacted badge. Within that 10-hour window, Contacted and its QSL and undo actions use the same program, callsign, and normalized-reference identity, so another program's contact cannot paint, open, or delete the POTA hunt. Editing the backing contact moves the status immediately without a reload. Tried now uses that identity too, so marking or undoing an attempt—and clearing it when the contact is logged—affects only the matching activity program. Try Later is program-isolated as well while remaining a separate browser-local ten-hour marker: saving a QSO does not clear it, and FT8 Auto-Hunt does not set it. Browser recovery now requires the same signed-in account, activity program, and exact activation before Hamtrax restores, patches, finishes, or removes a saved session. Existing POTA Hunt and Activate bookmarks keep working unchanged; malformed or unsupported activity-program links now stop safely instead of silently opening POTA. In a program-bound monthly full form, the THEIR target lookup follows the selected program and ordinary My Location choices remain available, but From Park is visibly disabled with activation guidance: MY activity identity makes the contact activation/P2P-owned and the monthly write guard rejects it. Re-selecting the current POTA target keeps its resolved location intact; both activity autofills keep valid coordinates on the equator or prime meridian, and when POTA does not supply a country Hamtrax leaves it unknown instead of guessing from an unrelated radio callsign prefix. Older activation folders with no stored grid now recover their map and QSL origin only through an unambiguous activity-program catalog, so a same-looking reference from another program cannot borrow POTA coordinates. Using Drop & refresh now updates POTA park search and maps in the current tab before reporting success, so older cached park data cannot linger there after the catalog is replaced. Park images and their session cache now use that same explicit program and normalized reference, so a same-looking sibling cannot inherit POTA photography or a cached no-image result. Live spots now keep each installed program's feed, cache, freshness, and Hunt readers separate behind one refresh cycle, so a future sibling cannot overwrite POTA rows, collide on a provider spot ID, appear in POTA manual/sidebar matches, hide a POTA feed failure, or start a competing poller; this is the separation the DX Chasing feed now runs on, and POTA's feed looks and refreshes exactly as before. The per-spotter history behind those live rows now follows the installed program's own reference rules and event identity too, so a future sibling cannot split one activation across aliases or overwrite POTA reports; current POTA history, comments, ordering, and expiry remain unchanged. An operator's activation spot history now uses account, selected program, and activation ID across browser-local and cross-device storage, so a future same-ID sibling cannot inherit, overwrite, clear, or race POTA's timeline and last-spotted frequency. Existing POTA browser data migrates in place; the released cloud record remains a compatibility mirror for older clients; concurrent new clients append distinct spot events instead of replacing canonical history; and offline history can still hydrate. A busy, unreadable, or malformed browser cache is preserved instead of being mistaken for empty and overwritten. Finish now secures one stable spot snapshot before ending: either browser or complete cloud storage can safely finish, the browser wait is bounded, only a copy confirmed by both stores is cleared from the browser, single-store copies stay available for retry, cleanup never delays leaving the finished screen, and if neither store confirms the save Hamtrax keeps the activation open and asks you to try again. Hunt and Activate spot commands now pass through one program-qualified semantic seam while the POTA adapter remains the sole provider writer. Hunt saves the QSO before its optional respot and reports spotting only after provider acceptance; a failed spot cannot erase the contact. Park-to-park autofill also requires one unique recent program/reference identity, so ambiguous matches stay blank for manual selection instead of silently choosing the wrong activity. When an activation contact carries another program's reference, it still stays in that activation's one folder; Hamtrax keeps the other reference for export without calling or courtesy-spotting it Park-to-Park. Clearing Their park while editing now stays cleared after sync instead of the old reference returning. Activation qualification now comes from each program's Activate module instead of a shared POTA-shaped contact count. A program can declare a fixed target, evaluate its own rules, or deliberately show no qualification progress; POTA keeps the same 10-contact bar, below-goal Finish confirmation, qualification celebration, and review-prompt eligibility, while another program cannot inherit POTA's rule. Park Detail's activation, attempt, and QSO totals now use that same explicit program and normalized reference, so a future sibling cannot supply POTA's counts; current POTA totals and the zero-stat invitation look unchanged. Own and public Showcase folders now use the same guarded program, reference, and month identity, so a future sibling's qualified folder key cannot leak into its label or borrow POTA enrichment. Older activation or monthly folders whose stored identity cannot be safely resolved are left off the Showcase rather than guessed as POTA — they stay visible under their saved name in the Logbook — the green Active marker now follows the folder that is actually open, and profile cards no longer request POTA callsign statistics that were never displayed. Activation and hunting cards are now grouped and paginated independently by that identity, and public summaries keep a separate bounded window for each installed program, so one program cannot crowd another out. Optional activation names and locations now come from the selected program's catalog through one shared presentation seam; current POTA cards and their detail titles remain unchanged. QSL cards and shared folder maps now use that same guarded program identity for reference labels, activity names, and optional artwork. Unknown or contradictory references stay neutral instead of borrowing POTA's Park Reference label, catalog name, or park/grove/eagle decoration; safely resolved same-looking sibling references use their own program's label and catalog without POTA artwork. Existing POTA images keep their layout and styling, and the reference label follows your selected language. Logbook and Showcase contact rows, map pins and popups, DX summaries, and operator origins now use one QSO-qualified MY/THEIR presentation too. Same-looking sibling references keep separate names, marker decoration, coordinates, and DX credit; unsafe records stay visible but neutral, while current POTA rows, pins, popups, arcs, and totals remain unchanged. The Logbook folder tree now groups automatic folders by that same identity. Instead of one fixed heading printed above every automatic folder, each installed program gets its own collapsible card named from that program — split into Activations and Hunting sections when a program does both, while a hunt-only program lists its months directly on the card with no subheading — so a future sibling's folders can never be listed under POTA's name. For a POTA-only logbook the tree looks the same, with the heading now reading Parks on the Air — and this per-program grouping is what the DX Chasing card now slots into. An automatic folder whose saved identity cannot be safely resolved is listed under a neutral Unrecognized program heading rather than shown as POTA's; it keeps its name and contacts and stays selectable, exportable, and deletable. Custom folders are unchanged.

  • France, Norway, and Taiwan read as countries again. Hamtrax builds its country names and flags from a world-boundary dataset, and that dataset quietly files those three under a placeholder instead of their real country code — so a park or contact in any of them showed a bare FR, NO, or TW with no flag, while every neighbour got a full name. All three now resolve properly everywhere a country appears: NO-IN reads Norway, Innlandet. Small territories the boundary dataset doesn't carry at all — Monaco, Gibraltar, Hong Kong and about seventy more — now fly their own flag wherever their country name is known; a bare region code from one still reads as its prefix rather than a guessed name, and the region half stays exact either way.

  • The callsign number row now stays in the activation logger. The extra 0–9 strip used to appear over the keyboard in every callsign field — including sign-up, Settings, Logbook forms, Hunt, and filters — where it often covered useful space. It now appears only in the live activation Add Contact panel, where fast mixed letter-and-number entry matters during a pileup. Your existing Settings → Preferences → Contact Entry switch still controls it there.

  • Your radio and antenna now follow you through the whole app. Hunt, Activate, and every new-contact form used to keep separate ideas of which gear was selected, so switching tabs could show a different radio or antenna and make a successful choice look lost. They now share one current setup: pick gear anywhere and it appears everywhere, including while a hunt is being routed into an activation. Rig Manager is simply your saved equipment inventory — there are no default stars or hidden first-profile choices — and a new contact snapshots what is selected when you save it, so changing gear never rewrites older QSOs.

  • The Logbook now shows you the photo slots you haven't filled. A folder holds four photos, but the Images column only ever showed the + button and whatever you'd already added — so an empty folder looked like it wanted one photo, not four, and there was no sign of how much room was left. All four slots now sit there as a 2×2 grid: + in the top-left corner and quiet placeholder squares waiting in the rest. Photos fill in around the + and take over its corner with the fourth, and deleting one shifts the others up a slot so the empties always sit at the end. Nothing about adding, deleting, or the 4-photo limit changed — you can just see the whole shape of it now.

  • Your logbook now reads on radio time. Ham logs run on UTC — every contact is stored and folder-organized by its UTC day, which is why an evening hunt west of UTC lands in the next month's folder right after 0000Z. But the contact rows displayed your local day, so that same contact could read "July 31st" while sitting in "August 2026" — organized correctly, looking wrong. Rows now show the stored UTC day and z-suffixed 24-hour time (02:22z — ham shorthand for Zulu) by default, the exact identity their folders are keyed by, and hovering a time shows your local clock; exports and the map popups window and label on those same UTC days. Prefer reading local? A new Settings → Preferences → Logbook → Show my local time toggle flips every row to your local timezone and moves the UTC value into the hover tooltip. Display only, either way: stored dates, folder names, exports, and the hygiene guardrails stay UTC.

  • Home-page story text now sits in a readable card everywhere, and it no longer vanishes on smaller tablets. The What is Hamtrax value points used to float as bare text over the grass, and the guided chapter callouts only got their bordered card on phones — on tablets and desktops they were bare text too. Both now use one shared card at every browser size. On tablet-sized and short, wide windows the value points were worse than hard to read: the phone filled the whole stop and pushed the heading and all three points out of sight entirely. That size now places them in the same right-hand rail the chapter callouts use, so the copy is visible at every browser size.

  • The origami figure above the first Anatomy chapter is gone. The POTA All the Time chapter opens on its title and progress row alone, and the artwork no longer downloads when you visit hamtrax.com.

  • The grassy home-page story now has a clean celestial sky. The empty black space above the prairie now carries lightweight realistic planets and stars in the hero's colors. The landscape fade still belongs only to the prairie, so no horizontal band crosses the sky while the grass blends in naturally.

  • The Anatomy tour no longer fans every chapter's gold line at once. Each guided chapter draws one connector from its highlight ring out to its caption card, but in some browsers the hidden chapters' lines painted too — a bundle of stray gold lines radiating from the point beside the card where they all meet. The reveal now draws only the geometry that should be visible, so exactly one line wipes in per chapter in every browser.

  • Empty Showcases now help you start the story. Equipment, Activations, and Hunting each have lightweight field-radio artwork, clearer empty-state copy, and direct shortcuts on your own Showcase: add a radio or antenna, start an activation, or find one to hunt. Public visitors see the same story without editing controls.

  • The Pro plan is clearer to compare and buy. Settings → Plans now leads with a much more prominent gold Pro identity, uses a gold-centered upgrade action that fades to red at the edges, groups price and secure-checkout cues in blue, and keeps a full red card perimeter while Pro is still an offer. Free is quieter but still visible, and prices and billing behavior are unchanged.

  • The Hunt map cursor now stays steady around activator popups. Moving across a marker could make the cursor flash between the map's grab hand and the default arrow because the map canvas and its hover popup used different cursor rules. They now share the map cursor, while Tried, Try Later, Contacted, and other real actions still show a clickable pointer.

  • Map gems and their popups now stay together at world zoom. On a wide desktop map, a gem near the far left or right could ignore hover and click, or its popup could appear over the matching geography on the opposite side, because those interactions disagreed about which copy of the world was visible. Hit testing and popup placement now share the displayed gem's exact position, so edge markers behave exactly like markers in the middle.

  • Tapping Sign in no longer opens with a silent pause. On a first visit, Sign in, Sign up, and the home screen's main button had to fetch the sign-in card's code before anything could appear — on a slow connection that was seconds of nothing, as if the tap hadn't landed. Hamtrax now fetches that code quietly a couple of seconds after the public site settles, so the dialog is usually just there on the first tap. If your tap beats it, the page dims and a sketched card appears while the rest arrives — and there is far less to wait for, because the sign-in and sign-up forms are no longer packed into the card that only asks which one you want; each is fetched as the dialog opens, so choosing one is normally instant too. Browsers set to save data, and devices on slow 2G or 3G connections, skip the background fetch. Reopening it was always instant and is unchanged.

  • Bulk equipment changes now update the folder summary immediately. Applying a new radio or antenna to selected contacts could close Bulk Edit while Top Radio / Top Antenna kept showing the old gear. The saved contacts and folder summary now update together, and Hamtrax reports an error instead of claiming success if a selected contact is unavailable.

  • Log a contact once and your QRZ logbook keeps itself current. QRZ is the shop window other hams actually check, and keeping it stocked has meant remembering to run an export after every outing. Now connect QRZ and flip Auto-Push New Contacts in Settings → Integrations → QRZ Logbook, and every new contact you log — activation, hunt panel, log form, even hands-free FT8 Auto-Hunt and the CLI — lands in your QRZ logbook on its own moments after you log it; delete one in Hamtrax and it leaves QRZ too. Fix a typo in a pushed contact and the QRZ copy quietly updates itself as well, with one deliberate exception: a record QRZ has already confirmed is never touched, because no edit is worth destroying a QSL confirmation. Log from a park with no signal and the pushes simply wait with your contacts, going out when your phone finds coverage again. Imports never auto-push — a 500-row file import can't flood your QRZ book — and the toggle belongs to the specific QRZ logbook you connected, so swapping in a different book's key never carries your consent along. And nothing fails silently: if a push ever bounces — say your QRZ subscription lapsed — the QRZ connection page shows exactly what happened and when, and the next successful push clears it. (Bulk history went up with Export to QRZ at the time; that screen has since been retired — download a folder and upload the file to QRZ instead.)

  • Picking a park on the Hunt map now marks its activators in the list. The map and the list have always lit each other up on hover, and selection was meant to work the same way — it never did. Underneath, the map named your pick by park while every card in the list answered only to its own spot, two names that could never be equal, so the selected card silently stayed unmarked however many times you tapped the gem. Select a park now and its activator cards are marked in the list — all of them when two operators share the park, which is the honest answer, since one gem is exactly what you pointed at.

  • A park selected the long way round is now the same park. The Hunt map kept three separate ways of naming the park you picked — one for a gem you clicked, one for a park drawn out of a zoomed-out cluster, one for a park arriving from a link or the activation park picker — and on odd data they disagreed: a park expanded out of a cluster could come back under a name no gem answered to, so the click selected nothing and the map stayed put. It all reads from one rule now — clicked gem, cluster, direct link, park picker, and the first-run practice activator name a park the same way.

  • A Hunt map crowded with activators no longer stutters. Zoomed out with hundreds of parks on the air, the map was doing four kinds of busywork. Pointing at one gem made it redraw every other gem on screen just to fade them behind it — once on the way in, again on the way out. An internal status clock redrew the whole field once a minute even while you touched nothing. And every gem sitting perfectly still was drawing its own soft glow and drop shadow from scratch — three separate blurs each, redone at every step of a zoom, which is exactly when a crowded map felt worst. And whenever a tap sent the map gliding to a park, every gem's screen position was worked out again on every frame of the glide, to answer a hover question no finger was asking. That N-fold work is the choppiness you could feel on a full world map, and the reason it smoothed out only after zooming in to a couple dozen gems. All four are gone: pointing at a gem now touches that gem and leaves the rest alone, the idle clock stays quiet unless a contact actually aged out, a resting gem is now a crisp shape over a cached shadow image shared by every gem of the same size, and a glide no longer recomputes hover positions until a pointer actually arrives. Two more went on phones with the list tucked away: the browser was still checking every card in the hidden list against the finger on every movement of a drag — the single biggest cost of panning with the panel collapsed — and hiding the gems for a drag was itself redrawing every gem twice per gesture. The tucked-away list now steps out of the browser's way entirely, the gems hide with one switch instead of one redraw each, and a flick keeps the gems tucked until the map actually stops. Zooming a busy map is markedly smoother and easier on the battery, and the glow a gem shows when you point at it follows its live color. That same lighter updating now covers the Repeaters directory and catalog parks: hovering one pin no longer redraws every neighboring pin, and pins skip unnecessary work when they first appear. Their positions, shadows, popups, and list highlights stay the same. It just stops doing hundreds of gems' worth of work to look that way.

  • Clicking a gem on desktop no longer drags the map along. The gem is already under your cursor, and the same click opens its detail card right over the map — yet the map still slid the world across to center that gem behind the card, an animation you paid for and mostly never saw. A desktop click now opens the details and leaves the map exactly where you put it. Touch is unchanged: a tap still centers the park and pins its tooltip, where the movement is doing real work.

  • A mistyped park number is no longer forever. One wrong digit at setup — US-2352 for US-2325 — used to be the most expensive typo in the app. The park is deliberately locked on every contact so activation folders can't drift, which meant the only way out was deleting the whole activation and logging it again from scratch. Now Edit sits beside Activation in the Logbook, while Wrong park? remains under the park line in the live activation header. That Logbook row shows the first-contact date as compact MM/DD/YY, followed by the park reference on every screen size, while Edit stays anchored at the right; empty folders omit only the date. Search the park you actually activated — the Update Park button won't arm until your pick resolves to a real park that differs from the current one — and Hamtrax re-stamps the folder and every contact in it together: folder name, park reference, the POTA fields your export carries, and the operating location the contacts were logged from. The guardrails never loosen — folder and contacts move as one, and a correction into a park you already activated that same day is refused by name rather than merged. Already uploaded the log to POTA? The dialog reminds you to re-upload it there, because Hamtrax can't rewrite what POTA already has.

  • Restarting a park you already activated today no longer makes the activation vanish. POTA counts a park per UTC day, so returning to the same park the same day continues the same activation — but starting one again used to hand the new session the morning's finished folder without waking it up. The logger ran and contacts saved, yet the hunt panel showed no green card, the Activate tab listed nothing in progress, and the logbook filed everything under a folder that claimed to be done — hours of operating that looked like they were never saved. A same-day restart now reopens that activation properly: it goes live everywhere, your earlier contacts are right there in it, and morning plus afternoon stay one honest log.

  • You can no longer walk into an activation form you can't start. With an activation already in progress, tapping New Activation used to open the full setup form and let you pick a park, set a frequency, and only then refuse at Start — effort spent to be told no. The card is now simply disabled while one is open, reading Finish your current activation first, with your open activation one tap below it; opening the form by direct link forwards you into the open activation instead, and the hunt panel's park quick start follows the same rule. Every other way in now agrees too: Activate Here is greyed out with You're already activating beneath it in a park's detail card — from the hunting map or Park Explorer — and every row of the sidebar's Parks search greys out together with that line shown once above the list, so eight identical buttons don't repeat one sentence eight times. The one place the button stays live is inside activation setup itself, where it doesn't start anything: it just fills the park into the form you already have open.

  • Hunting from inside a park now counts for the park — automatically. POTA calls a hunt made from a park a park-to-park QSO, and ten of them in a UTC day is a valid activation — but other logbooks leave you sorting that out by hand afterward. While exactly one of your activations is in progress, every contact you hunt now files into that activation's folder as a park-to-park QSO, stamped with your park; a green You're activating card names the park and folder the whole time — taking over the editable My Location row and Spot control in the hunt panel, since the activation already answers both — and ending it returns hunts to monthly filing. Starting begins at the bottom of the Hunt panel's My Location picker: tap Hunting from a park?, let the picker close, and the Hunt card scrolls back into view if needed before sliding aside for the park form — a full travel now, not a half-slide that dissolved before it arrived, and it holds together whether or not an activation starts underneath it. A Select Park heading names the one step there is, with the nearest-park shortcut on the same line, and the field shimmers gold until you name a park. Search by name or reference, or explicitly tap Find Nearest; that one tap fills a blank field when you're within half a mile or opens the nearby list otherwise. Then tap Start Activation. No setup form, no frequency to invent, and no POTA spot is ever posted from here, so you can keep hunting quietly.

  • The Logbook's folder Add Contact card now steps in cleanly. Tapping Add Contact on a folder swaps its action buttons for a quick-add card, and that swap used to dissolve partway across — the buttons were already invisible while still travelling, so the card looked like it blinked into place rather than sliding in. The two now hand off by movement alone, on every folder type. With reduced motion enabled it still cross-fades, unchanged.

  • An activation that runs past midnight UTC no longer splits in two when you import it. An evening outing west of UTC crosses 0000Z almost every time, and the live logger has always kept those contacts together — but importing the same session from a file cut it into two activation folders, one per UTC day. Hamtrax now matches each imported contact against the sessions already in your logbook and files it into the activation that actually recorded those hours. Two genuinely separate sessions at the same park still stay apart, and a file whose contacts cross midnight with no matching activation in your logbook still splits by UTC day — there's no recorded session to rejoin, and Hamtrax won't guess where one ended. Importing more of a session also now extends that activation's recorded start and end times instead of leaving them frozen at what the first import saw.

  • Imported activations now show when you actually operated, and stop pretending to be live. An ADIF or CSV file records the date and the time in separate fields, and Hamtrax was reading only the date when it worked out an activation's start and end — which is midnight. So a folder built from an imported file had no real times in it: an activation you ran at 7pm could show a start time of 00:00, and because its start and end looked identical, Hamtrax read the whole thing as a single instant rather than a finished session. That last part is why an activation you imported from years ago could sit in your Logbook wearing the pulsing green Active badge with a Resume Activation button, as though you were still on the air at that park. Both are fixed: imported activations carry the real times from the log, and a finished one reads as finished.

  • The maps stopped working while you weren't. Both the Hunt map and the activation setup map kept redrawing themselves at full speed even when nothing was happening on screen — the setup map repainted roughly a thousand times a second sitting untouched, which is the sort of thing you feel as a warm phone and a long battery afternoon in the field. Two effects were running forever after they finished being useful: the shimmer that traces the Select a Park pill and the input fields, and the scattered marker glyphs that fill the map while it loads. The shimmer now spins the same way for a fraction of the work, and the loading glyphs pack up once the map is ready. Nothing looks different; the setup map now does essentially no drawing at all while it waits for you. Switching between POTA, DX, and Repeaters now lets the shared map settle too, instead of leaving it redrawing continuously while stationary.

  • The Hunt panel can now open on the band and mode you actually hunt. The Filters card under Settings → Preferences → Map shows each program's current Mode/Band in a compact row. Tapping that row opens only that program's two dropdowns, choices save automatically, and Done closes the editor. A row spells out only what you pinned — Mode: FM, Band: 2m, or Mode: FM · Band: 2m — and a program with neither set reads simply All rather than repeating "no default" twice across the row. Each program keeps its own pair: Parks on the Air and DX Chasing start unset, so their rows read All, while Repeaters arrives reading Mode: FM · Band: 2m. A Mode or Band you had already saved carries over as your Parks on the Air default. The Parks on the Air and DX Chasing pairs seed their live Hunt filters whenever you open those programs; changing them under Filters in the Hunt panel itself, or using Clear there, still leaves your saved defaults intact. Repeaters stores its pair without filtering the nearby directory.

  • Band plan settings now fit in one clear row. Settings → Preferences → Station summarizes your agency and applicable license class. Tapping that row opens a focused window with just the agency and dependent license dropdowns, including Not applicable when a plan has no license classes to choose from. Selections save automatically, and Done closes the window.

  • Location settings now use the same picker as Hunting. Settings → Preferences → Station → Location is headed by the same map pin the maps draw for you, with your profile photo inside it — off the map it carries a soft neutral halo instead of the map's downward shadow, so it reads as lit rather than floating on a panel, and the same lit pin heads the My Location row in the hunt panel. It reads Using Callsign Location, Using Device location, or Using Manual entry above your resolved location, and the whole row taps through to My Location with the same callsign, device GPS, and manual choices used in Hunting. Changes save automatically, Done closes the picker, and Clear override removes a saved manual location. Fallback warnings remain visible below the Settings summary.

  • Settings headings now sit with the card they describe. On a phone, every heading in SettingsLanguage and its Display language for the app., Station and its Choose location method and band plan — stood as far from its own card as it did from the next section entirely, so a label read as loose text floating above the page rather than the title of the thing underneath it. Each heading now sits close to its card, across every section of Account, Preferences, Integrations, and Help. The space between sections is unchanged, so the page still breaks into the same groups — they are just easier to tell apart while scrolling. On a wide screen nothing moves: headings already sat in a column beside their cards there, and that layout is untouched.

  • CW Training now sends real groups, not just single characters. A new Characters per group control under Prompt shape sends 1 to 5 characters as one continuous Morse run — spaced exactly as an operator would key them — then speaks every answer in order. Copying a run is the actual on-air skill: you hold each sound while the next one is already arriving. Repeats replay the whole group at the same drawn speeds, and group size is itself a range, so the length can stay fixed or vary. It defaults to one character, and repeats default to none, so out of the box the drill is unchanged and only the speeds vary.

  • CW Training now varies like a real operator. Character speed, spacing speed, and repeats are each a range with two thumbs instead of one fixed setting, and Hamtrax draws a fresh value from every range for every group. A fixed speed teaches your ear the session's rhythm; a moving one teaches it the sound — which is what you actually need on the air. Extra repeats now reach 4 (up from 3), and you can either pin them — both thumbs on the same number for a fixed count — or open the range so a second listen is never guaranteed. Spacing stops are now capped at the slowest character speed your range can draw.

  • Range thumbs are now easy to grab. The two ends of a range — CW Training's speeds, group size, and repeats — used to be twin knobs on the same rail, each answering only to an invisible thumb-sized box, and with both ends on the same value one knob covered the other completely; on a phone, grabbing either was pixel hunting. The thumbs now ride opposite sides of the rail — high above, low below, each pointing at its stop — and each has its own full-width, 44-pixel-high touch strip. Press or drag anywhere on the upper or lower strip and Hamtrax captures that gesture itself instead of leaving it to the browser's tiny invisible range thumb. A thumb also no longer stops dead against its partner: drag the low end into the high end and the high end slides along with it (and the other way round), so reshaping a range is one motion instead of two. And every range may now rest on a single value — the speed ranges used to be forced apart by one stop; pin a speed for a steady drill or open the range for variation. The only rule left is that the high end never sits below the low end.

  • Range sliders answer the keyboard properly. Every stepped slider in Hamtrax — CW Training's speeds, the hunt filters — moved a hundredth of a stop per arrow-key press, which made them effectively mouse-only. Arrow keys now move one stop, and Home and End send a thumb to the far end of its travel.

  • CW Training voices now load in the iPhone and iPad app. Opening CW Training in the installed app could report that its offline answer voice failed to load even though all three voices were bundled. Hamtrax now reads and validates that bundled audio correctly.

  • The other station's park now has a field of its own. The activation Add Contact card gained Their park, right beside the callsign. Park-to-park detection has always filled the reference in behind the scenes -- now you watch it land, pulsing in the field with the P2P badge beside the label. And for the many hunters who call you from a park they aren't activating, type or search the park yourself: suggestions lead with the park code since that's what you exchanged on the air, the field slides wider while you type, and it collapses to a compact green country code beside the bare park number when you leave it. A park you entered by hand is logged but never posts the courtesy P2P spot for the other station -- they may not be on the air calling. To make room, the card now reads in three rows: callsign and their park, mode and frequency, then the signal report and Log Contact -- with your gear (radio, inline power, and antenna) riding above them behind a single Radio / Antenna disclosure that starts expanded and tucks away once your station is set.

  • Duplicate contacts are now caught by callsign alone. In a live activation, each callsign counts once: log the same station again — even on a different frequency or mode — and its row is shaded red with the reason "Already logged in this activation." Nothing else changes: the contact is still logged mid-pileup, and the Finish tab still counts the same issues.

  • You can now finish through flagged contacts, one decision at a time. The Finish tab's red issue banner gained an Ignore and proceed anyway button beside Edit: it dismisses the issue you're looking at and moves to the next, and once every issue is fixed or ignored the finish steps light back up. Ignoring is a decision, not a fix — the contact's row stays flagged in the Log tab, an N issues ignored — Restore note keeps the count visible (and one tap from coming back) right through the success card, and resuming the activation flags everything fresh. The banner's count and buttons also now speak your language; they were English-only before.

  • Activation signal reports can now default to blank instead of 59. POTA doesn't require signal reports, and every activation contact used to pre-fill a perfect 59/599 whether or not you exchanged one — including the quick-add card on a finished activation, which stamped 59/59 without ever showing you a report field. A new Pre-fill perfect signal reports toggle in Settings → Preferences → My Activations (on by default, so nothing changes unless you flip it) lets you start every report unset instead: the report pill shows dim dashes, the picker shows ghosted digits marked not set, and your first tap on a stepper makes the report real. An unset report saves nothing, stays unflagged in the issue checker, and simply leaves the report tags out of your POTA ADIF — and anywhere in the app a contact has no stored report, the picker now shows honest dashes instead of pretending it was 59.

  • The links at the bottom of hamtrax.com work again. On desktop, Privacy, Terms, Docs, and Changelog sat underneath an invisible edge of the headline panel above them, so clicks landed on nothing. They open again.

  • The button that signs you up now looks like a button, and says what it does. The main way into an account on hamtrax.com read as a flat gold panel that plenty of visitors never took for something you press — and it was labelled Log Contacts, which sounds like a tool you'd find once you were already inside. It now reads Import My Contacts and carries shading on all four edges — a lit top, darkened sides, and a weighted bottom — so it sits up off the page as a physical cap. If you're arriving from another logger with years of ADIF behind you, that's the button. The pair of decorative mushrooms that grew in beside it were pulling the eye to the corner instead of the button, and they're gone. Every primary button in Hamtrax reads from the same raised edge, so the whole app picked up the firmer press at once.

  • The contact form's Defaults button is gone, and the form starts the same way for everyone now. A Defaults button in the new-contact form's footer used to save your current mode, signal reports, power, and activity reference to your account and pre-fill them into every contact after that. It was a second set of starting values sitting underneath the ones the form already picks for itself — and underneath everything the form learns from where you opened it, so on an activation or from a spot it was overruled before you ever saw it. What it could still reach were reports saved months earlier, quietly overriding the one your current mode actually calls for. Every new contact form now opens the same way: today's UTC date and time, SSB, and the report that matches your mode (59 for phone, 599 for CW and the other RST modes), reshaping the moment you change mode. Your radio and antenna still come from the one current-equipment selection shared with Hunt and Activate. Nothing you rely on moved — the Callsign number row toggle and Pre-fill perfect signal reports in Settings both work exactly as before, and mode still fills itself in from your band plan when you type a frequency.

  • The status buttons on a map popup now match the ones everywhere else. Tapping a spotted activator on the Hunt map brought up three unlabelled icons — a crossed-out person, a clock, and a person with a plus — where the list row beside it and the detail modal behind it both show plain Tried, Try Later, and Contacted. Same three actions, two things to learn, and the icons were the version you met first. The popup now carries the same labelled buttons inside one straight-sided card wide enough to hold all three, instead of growing temporary tabs from its sides. Pick a status and the unselected buttons still collapse away, but the card no longer jumps narrower under your pointer. The callsign, divided frequency row, color-coded mode text, and gold see details chevron give that wider card a clear top-to-bottom reading order, while a smoked near-black chassis, crisp metallic bezel, and restrained depth lift the panel off a busy map. That same radio-instrument material now frames the site's owned help hints, warning tips, and guided action prompts without changing how any of them open or dismiss. Every map tooltip still drops the small corner X, so nothing competes with its content or controls. Hover previews leave with the pointer; pinned popups close from empty map space, another pin, or Escape. See Finding Live Activations.

  • Headings now use one typeface, and zeros inside them are no longer slashed. Hamtrax's headings were split across two typefaces without ever saying so — page and card titles set in one, the small wide-spaced labels above them in another. Every heading now shares a single face, so a title and the label sitting over it finally read as one voice. Nothing else moved: contact rows, frequency readouts, the log, and every body and label line are exactly as they were. One thing did go with it, and it is worth knowing. Hamtrax draws a slash through the zero wherever it prints radio text, so a 0 can never be misread as an OKF0NYG, never KFONYG. The new heading typeface has no slashed zero to draw, so a callsign or park reference that appears inside a heading — the reference on a Park Explorer row, for one — now shows a plain 0. Everywhere the digits carry real weight, in the contact list, the frequency readouts, the issue checker, and every field you type into, the slash is unchanged.

0.1.33 - July 24, 2026

  • The 0–9 callsign key row is now yours to keep or hide. The digit row that floats above the on-screen keyboard while you type a callsign can be switched off with the new Callsign number row toggle in Settings → Preferences → Contact Entry (on by default). One setting governs every callsign field — the live activation logger, the QSO form, the quick-add cards, and the Logbook filter — and it's saved to your account, so it follows you across devices.

  • Your activation now celebrates more than contact number ten. The live logger marks four counts on the way up, each with its own look: 10 keeps the single gold sweep that means a valid activation, 25 crosses two cyan beams, 50 beats the edges of the screen in tangerine as a lit curtain falls, and 100 sends two purple shockwave rings out from the centre — and the progress line flashes in that milestone's colour each time. The bar still measures only the run to a valid activation and stays full after ten. Every milestone plays once as you cross it, resuming a session that already cleared one shows no celebration, and all of it sits out if your device prefers reduced motion.

  • A contact with a problem is now shaded red while you can still fix it. On the activation Log tab, a contact Hamtrax sees an issue with — a duplicate of a call you already logged on the same frequency and mode, a callsign that doesn't look valid, a missing frequency or mode, or a time in the future — has its whole row shaded red with the reason stated beneath its callsign. These used to surface only in the Finish tab's issue banner, after you were already packed up. Both surfaces now read the same checker, so a row can never look clean while the banner counts it. Nothing is blocked: your contact is logged either way. Portable and prefixed callsigns like SV2/HB9ABCD/P also stopped being flagged by mistake.

  • You can now add all your folder photos in one browse. The + button on the photo strip — in the activation Showcase tab, in the Logbook's Images column, and in your profile's folder detail modal — opens a multi-select picker instead of a one-photo-at-a-time one. Thumbnails fill in as each upload finishes, and picking more than a folder has room for adds what fits and says so. All three now confirm the upload the same way; that confirmation used to appear only during an activation.

  • The Android app now installs with the Hamtrax beaver icon. The generic Capacitor placeholder has been removed from every launcher shape, and the Play submission icon now matches the installed app.

  • Your phone's keyboard no longer "corrects" a callsign. Autocorrect, spell-check, and saved-value autofill are now switched off on callsign, grid square, and park reference fields — every callsign field in the app included. Previously iOS and Android could rewrite a valid call into a dictionary word, underline it in red, or drop a suggestion strip over the field mid-entry.

  • The text cursor now stays where you put it in a callsign. Callsign, grid square, and park reference fields uppercase as you type (callsigns also drop characters no call can contain), and any keystroke that got rewritten collapsed the cursor to the end of the field — so tapping back to fix the third character bounced you to the end, worst of all on iPhone. Corrections now happen in place, with the rest of the call untouched.

  • The activation logger's Callsign field has cursor arrows on touchscreens. On touch devices, small chevrons flank the field on the Log tab and step the cursor one character left or right, so finishing a call you copied in fragments doesn't depend on landing a fingertip exactly between two characters. With a mouse and keyboard the arrow keys already do this, so the chevrons stay out of the way.

  • Activation folders with a recorded start time now show the local date, start time, and timezone abbreviation. The Logbook folder tree uses the activation park's timezone first, then your current Hamtrax location, and explicitly labels UTC if no local timezone can be derived. Stored UTC timestamps and ADIF-compatible folder names are unchanged.

  • Activation contacts now stay attached to their activation across iPhone and browser. Folder data loads before contact repair, and an activation ID is now the one canonical folder identity, so a fresh browser cannot mistake a still-loading activation folder for a deleted one and move its contacts into Hunting. The live activation backup keeps every newly logged contact through an iPhone app restart, queued field contacts retry after reconnecting, and Download ADIF opens the native system sheet with Save to Files. ADIF's UTC calendar date is now explained in the activation guide.

  • Shared-park Hunt markers now give every operator the full map popup. When several activators are on the same park, Hamtrax stacks the regular popup once per operator instead of collapsing them into a separate summary or chooser, so every station keeps its own quick actions, band-plan warning, and see details link.

  • Radio Control setup now follows the radio in your hand. Choose your radio first, then Hamtrax shows only its available connection methods. The app remembers the last successfully connected radio for automatic reconnects, and Tune or FT8 controls appear only when the live connection confirms support.

  • Radio Control now has a radio-agnostic live RF waterfall that returns automatically after reconnecting—no app restart needed. IC-705 Direct Wi-Fi is the first adapter for the shared centered dock. Waterfall preferences now appear before connection details, and one dock Controls menu holds all six spans, frequency step, continuous sensitivity, a color-track Noise Floor (Visual Only) threshold, optional strong-signal Logarithmic colors with a continuous log anchor, a mirrored color-range slider labeled from weak to strong signals, and optional confirmed receive-filter shading. The smaller header also shows the current mode without crowding the trace. Display adjustments recolor retained raw history instead of emptying the waterfall, while frequency and span changes reproject that same history whenever the RF ranges overlap.

  • Hamtrax now speaks Korean. 한국어 joins the language picker — switch anytime from Settings → Preferences → Language or the site header.

0.1.32 - July 21, 2026

  • POTA database update notices now show the difference from your downloaded park data. The card keeps the useful total — how many more parks the newer database has than yours — without mixing in state and country details from a separate server update.

  • Quick-added contacts now keep the location found from the callsign. Adding a contact to a finished activation or custom folder could save the operator's name but drop their grid and coordinates, blocking QSL card creation. New contacts now carry the same station location details as the full contact form.

  • The hunt map's spot popup no longer disappears on its own after you mark a status. On touch devices, tapping Tried, Try Later, or Contacted inside the popup used to auto-dismiss it about a second later — right as the confirmation toast slid in, which made it look like the toast was closing your popup. The popup now stays open, showing the status badge and its undo button, until you dismiss it: tap elsewhere on the map, tap another pin, or use the popup's close button. Both the close button and the undo button also got bigger touch targets.

  • The Hamtrax logo now takes you home. On the signed-out site, tapping the Hamtrax title and beaver in the top-left returns you to the Home tab — and if you're already on Home, it glides the page back up to the top. Re-tapping the Home tab you're already on does the same.

  • Hamtrax now prevents overlapping Stripe charges. Each account reuses one Stripe billing profile, and another Checkout is blocked while one is pending or a subscription is live. If competing completions ever race, Hamtrax keeps one subscription and immediately cancels and refunds the losing Checkout payment. Monthly or annual members are also sent to subscription management before Lifetime can be purchased.

  • Deleting your Hamtrax account now stops Stripe billing first. Hamtrax finds every recurring Stripe subscription linked to the account—even across more than one Stripe customer—cancels it immediately, confirms the cancellation, and only then removes sign-in access. If Stripe is unavailable, sign-in access remains so deletion can be retried instead of risking an orphaned charge. App Store subscriptions still need to be canceled through Apple.

  • CW Training and the microphone decoders now share iPhone audio cleanly. CW tones and spoken answers play through the built-in speaker in Silent mode when no headphones or Bluetooth audio route is selected. Starting CW Decoder or FT8 Decoder still opens microphone capture; stopping the decoder returns a running practice session to media playback, and Hamtrax restores the phone's previous audio behavior after the last audio tool stops.

  • Hunt spots now flag frequencies outside your band plan. When an activator is spotted where your license class can't transmit, an orange warning triangle appears on the spot row, in the activation detail modal, and in the map popup — hover or tap it for the details. It's a heads-up, not a block. Warnings show once you have a band plan on file (set automatically from your callsign, or picked in Settings → Preferences → Station), and you can switch them off under the new Hunting section in Settings → Preferences.

  • The live activation logger no longer carries one station's details into the next callsign. Editing the call clears the old name, location, and P2P park immediately. An unknown call with 3 or more characters now says Callsign not found; 1 or 2 characters leave the line blank.

  • Moving an existing logbook into Hamtrax is easier. Import Contacts now groups QRZ, file-export guides, and connected services in one status-aware grid. Connect and Manage actions open the exact Settings panel, while World Radio League, Ham2K PoLo, and HAMRS each have a focused export guide that returns to the single maintained Hamtrax import workflow.

  • Partial callsigns are easier to finish on a phone. Callsign field in activation page now uses more space between characters, giving you clearer places to tap between characters and place the cursor where missing letters or numbers belong..

  • Merged Add Contact and Spot tabs in Activation page Spot Yourself sits below Add Contact, contacts and spots share one time-ordered history with matching two-line rows, color-coded QSO / Spot labels, and All, Contacts, and Spots filters. Repeated same-frequency spots remain visible. If the Freq field differs from the latest spot, a red warns you; logging a contact never re-spots your activation automatically.

  • The opening phone now paints instantly for everyone. The home page phone shows the Anatomy of Hamtrax opening screenshot instead of streaming a video, so slow connections no longer see an empty phone — and because it is the exact image the first chapter already uses, your browser downloads it only once.

  • The Hamtrax story now reaches the outdoors one chapter earlier. The green prairie arrives with What is Hamtrax, stays beneath every Anatomy chapter, then fades away after the final screen.

  • Hamtrax now speaks German and French. Deutsch and Français join English, Spanish, Japanese, and Brazilian Portuguese in the language picker — switch anytime from Settings → Preferences → Language or the site header.

  • Hunt map pins now turn green the moment you log the contact. Before, a just-contacted activator's pin could stay yellow for up to a minute — even while its popup already said Contacted — until the map's status clock caught up. The pin, popup, list badge, and detail modal now flip together, immediately.

0.1.31 - July 15, 2026

  • The opening phone now shows up right away on first visits and slow mobile connections. A lightweight preview keeps it visible and tappable while the motion loads, so a video problem no longer makes the phone disappear.

0.1.3 - July 15, 2026

  • The opening phone tour no longer waits through a fixed two-second pause. It becomes visible as soon as its video is ready, reducing unnecessary delay for first-time visitors.

0.1.2 - July 15, 2026

  • The Anatomy of Hamtrax now unfolds over the places operators love to explore. A green prairie fades in behind the phone at the first chapter, stays grounded beneath every screenshot and callout, then fades away after the final chapter across phones, tablets, and desktops. With reduced motion enabled, the prairie switches at the chapter boundaries instead of fading.

  • Shareable Contact Maps now frame the adventure around where you operated. Hamtrax centers the map on the combined footprint of your operating locations before fitting every route, wraps cleanly across the International Date Line, uses slimmer route lines so contact-heavy maps stay clear, and shows the first and last contacts in the local time and calendar date of the relevant station or activation park — falling back to clearly labeled UTC only when needed.

  • The HAM Dictionary's Frequencies tab is easier to scan. Frequency values now use Hamtrax's compact gold radio readout, so they stand out without making each row larger.

  • Modal close buttons are easier to tap. Their touch targets are slightly larger across Hamtrax while the X stays compact.

  • POTA spotter lists are easier to scan. Each located spotter now shows their country flag immediately before their location.

  • Deleting an account now stops nearby-activation alerts and other automated Hamtrax campaign emails reliably. Every send rechecks that the account is active and applicable preferences allow delivery; deletion also removes the retained profile email and clears pending email markers.

  • Tools now follow a clearer working order. The sidebar starts with Band Plan and Solar, moves through the CW and FT8 decoders into CW Training, and keeps Library next for quick reference.

  • Saved radio and antenna changes now appear immediately everywhere you choose equipment. Equipment pickers—including Logbook Bulk Edit—show profile edits as soon as they are saved, without refreshing Hamtrax.

  • Train your CW ear without leaning on dots, dashes, or visible answers. CW Training sends random letters, digits, and common punctuation at adjustable Farnsworth speeds and tone settings, then speaks each answer in your choice of two human voices or the original synthesized voice. Its circular practice-set controls can mix any categories, and the session keeps going while the panel is minimized.

  • Stream-link editing now has a clear finish action. The Stream Links editor includes a primary Done button in the bottom-right while continuing to save changes automatically.

  • Folder equipment summaries now explain themselves. Select Top Radio or Top Antenna to see that it reflects the equipment used by the most contacts in that folder, plus where to change those values.

  • Visits near Kansas City no longer enter Hamtrax analytics. The production and beta apps now keep Google Analytics and Microsoft Clarity off when an approximate location falls within 30 miles of Kansas City — including uncertain estimates that overlap the boundary. If the location cannot be resolved, analytics stays off.

  • The nearest-parks email can now show whether it brings operators back to Hamtrax. Its park image, fallback button, and plain-text link share one campaign with separate placement labels, without putting a user identifier in the URL.

  • Logging a hunted contact now gives all four edges of Hamtrax a soft golden pulse. It replaces the shower of falling leaves with a calmer, screen-framing confirmation, and is skipped when your device prefers reduced motion.

  • Password resets now close the loop with a security confirmation. After a reset email is requested, Hamtrax waits until Firebase records an actual password change before sending the confirmation; requesting or opening the reset link alone does not trigger it.

  • Google sign-in now works in the Android app. Tapping Google opens the native account chooser and returns directly to Hamtrax instead of saying the method is unavailable in the downloaded app.

  • Shared Showcase links now open much faster, especially on slower connections. Short links such as hamtrax.com/101 load the operator's public summary first; folder photos and contacts load only when opened, without downloading signed-in editing tools or unrelated app data

  • Email sign-up no longer looks stuck after you press Continue. The button now shows Creating account… while Hamtrax works, required account setup runs together, and the public Showcase link finishes in the background instead of holding up the next step

  • Getting-started instructions are easier to follow. Task explanation modals now use one consistent text style instead of coloring isolated words yellow, and their action button sits at the lower left instead of the lower right

  • The park map now fills in as it loads instead of making you wait. Open Activate and the first park clusters appear within a couple of seconds, then visibly fill in as the full POTA catalog streams on — with the Loading parks… bar above the map now tracking every step of the load. First visits download the parks database once instead of twice, returning visits rebuild the map several times faster, and Hunt's park catalog gets the same speedup

  • The public-home phone now lands correctly on iPhones. Safari could leave it tiny, low, and too far right at What is Hamtrax and the first Anatomy chapters before catching up later. Its size and position now follow Hamtrax's measured story progress, so every stop lands correctly immediately.

  • hamtrax.com now opens with the app itself. One recorded POTA phone tour spans the whole public-home story on desktop, tablet, and phone browsers. The phone video and its straight-on silhouette now refresh together after a release, so returning visitors cannot get the previous angled phone shape. It gives the hero two seconds to settle, then one discrete gesture carries the same measured move directly into centered What is Hamtrax; reversing returns to the hero. That exact rest remains video-only; the first still begins crossfading only after departure and fully takes over at Anatomy chapter one. The video and still stay pixel-aligned inside one phone; at 375px or narrower, that same handoff moves the phone upward and enlarges it for Anatomy while preserving the mobile left inset. The video pauses as soon as the first still takes over. The same phone owner survives responsive changes, supports reduced motion, and releases naturally before the National Parks section.

  • The home page now says exactly who Hamtrax is for. Its main heading identifies Hamtrax as a Parks on the Air® logger instead of cycling through outdoor personas, and the footer clarifies that Hamtrax is independent and is not affiliated with or endorsed by Parks on the Air, Inc.

  • Meet the Anatomy of Hamtrax. Seven full-screen chapters replace the old FT8-through-High-Visibility card sequence with a guided look at live hunting data, the global POTA map, park detail, fast activation logging, automatic folder organization, and tools. One wheel motion, touch drag, or keyboard step lands on exactly one chapter instead of stopping between screens. Clicking or tapping the visible phone also advances one exact stop from the hero through the final chapter, and rapid repeats during a move cannot skip ahead. A horizontal seven-dot row directly below the active chapter title keeps your place, expanding the current chapter into a gold marker. Desktop and large tablets use a crisp side-by-side composition whose title sits at the phone's upper third; each tooltip label shares its section title's left edge, while every gold leader starts outside its target ring, extends right, and stops before a visible text gap. On phones, the What-is title and each Anatomy title/progress row settle just above the left-anchored device at their resting positions, the three What-is value points stay vertically centered beside it, and each guided callout sits in a compact rounded card in the rail to its right. At 375px or narrower, the What-is phone remains beside its three value points, then moves upward and grows larger for Anatomy without leaving the mobile left inset. The single gold leader route exits the screenshot to the right and stops before the card with a visible gap. Titles and callouts fade in only near their own resting position, stay clear of one another, and disappear between chapters. The phone still takes a subtle slow-fast-slow breath inward between rests, while its display-size raster layer keeps every screenshot sharp and its dark app surfaces stay flat instead of showing diagonal light-sweep bands. The two introductory explainers now follow the Get on the Air button. With reduced motion enabled, screens, titles, annotations, and the progress marker switch instantly while the phone breath stays off.

0.0.99 - July 11, 2026

  • Sidebar search now explains itself before you type. Focus it to choose Activators, Callsigns, or Parks, with a short hint for each; labels and results are localized too.

  • Your own Showcase folders now have the same sharing tools as Logbook. Open an activation or hunting folder to create its Contact Map, or make a QSL Card from any contact beside Edit.

  • Maps start with less wasted data. Hamtrax now opens directly on its dark overview map instead of briefly downloading a detailed OpenStreetMap layer it immediately replaces; street detail still fades in when you zoom.

  • Getting-started tasks are easier to scan. The instruction panel now uses a clearer What to do heading and an outlined completion state.

  • The shareable Contact Map now says what its timestamps mean — subtle First contact and Last contact labels sit with their times right under your callsign — its auto-zoom keeps every plotted contact clear of the stats band along the bottom of the image, and both the Contact Map and QSL Card images now render their dark backgrounds smoothly, dissolving the faint stripe rings that used to circle the map's glow

  • Adding a photo that can't be uploaded now tells you why. Picking an image over 10 MB or in an unsupported format used to do nothing at all — no spinner, no message; now a brief warning explains the problem, upload and delete failures say so on every surface, and the + button steps aside once a folder holds its 4-photo maximum instead of silently ignoring taps

  • Signing in is now seamless. After you authenticate with Google or email, Hamtrax takes you straight into your logged-in view — the sign-in window no longer flashes back on screen for a moment before disappearing

  • The shareable Contact Map image now blends your outing photo softly into the map — its top and right edges dissolve instead of stopping at a hard rectangle — and the photo no longer repeats as a labeled circle beside your most-used radio and antenna, since it already fills the bottom-left corner

  • Hamtrax now recovers from a rare unstyled-page glitch on its own. If the app's stylesheet fails to load at startup — a flaky mobile connection is usually the culprit — Hamtrax detects it and automatically reloads once with a fresh copy instead of leaving you on a working but broken-looking page. If you're offline, it waits for your connection to return before reloading

  • The signed-out Showcase page's Sample Showcase label is now a real button that opens the founder's live public showcase

  • Saved radios and antennas now stay intact across devices. A returning iPhone could previously send a months-old equipment cache back to the cloud and replace profiles added on another device. Hamtrax now checks the authoritative cloud copy before equipment renders, retires legacy queued equipment snapshots, moves equipment changes into conflict-safe server transactions with their own revision, keeps preference caches tied to the correct account, and changes a default without resending either saved-equipment list

  • The home page loads faster and lighter on phones and tablets. While you're reading the logged-out home page, Hamtrax no longer downloads the POTA parks database, live spot feeds, or the Hunt/Activate map code in the background — that work now begins the moment you head to Hunt or Activate, which show their normal loading skeletons and parks progress banner while the data lands. It trims seconds of phone-CPU work and about 2.4 MB of cell data off a first visit, and desktop still warms everything up in the background as before

  • Crash reports are now anonymous. When something goes wrong, Hamtrax still sends a diagnostic report so we can find and fix it — but it no longer carries your account ID, callsign, page address, or browser user agent, so a report can never be traced back to you. It keeps only what's needed to reproduce the bug: the error and its technical stack trace, the feature area you were in, your device class, app version, and a random per-session ID

  • Your Hamtrax Pro status now shows off a little: while your subscription is active, the plan card in Settings → Account and the Plans tab's status banner glow with a slow golden halo — a calm, radiant breath rather than a flashy pulse, and it holds a steady gold shine if your device prefers reduced motion

  • The rules that keep your logbook organized are now published in one place: a new Logbook Hygiene Rules docs page plainly lists what each folder accepts, which fields lock when editing, how imports are routed and validated, and how duplicates are blocked — and the Logbook's folder tree now ends with a quiet Learn more link straight to it

  • The Band Plan chart now animates open: each colored mode segment starts as a thin line at its own center and grows outward in both directions to full width, cascading down the chart row by row, with the mode labels fading in as each segment lands. The cascade replays whenever you switch agency, license class, or band, and sits out entirely if your device prefers reduced motion

  • Re-importing a past activation's ADIF no longer creates duplicate contacts: the single-activation importer now checks your whole logbook — matched the same way the general importer matches contacts — instead of only the uploaded file, and its review banner tells you how many QSOs are "already in your logbook and will be skipped"

  • The import Review step now spells out exactly why each duplicate was skipped — an exact re-import (same UTC day, time, band, mode & park) or the same activator hunted at the same park on the same UTC day, named park and date included — so a shared callsign alone never looks like the reason a contact stayed out

  • The top-bar solar shortcut now opens the full Solar Conditions panel instead of the profile menu on phones and tablets

  • Deleting the folder you're viewing on a phone or tablet now returns you to the remaining folder tree instead of leaving you on an empty detail screen

  • Deleting a hunting contact — individually or with its folder — now clears the live Contacted status everywhere, and folder-cascade deletes sync correctly across devices instead of resurfacing later

  • QSL Card and Contact Map previews now place a right-aligned Options button above the image while keeping Download and Share fully visible in the footer on phones. Contact maps also wait for location or activation-park data and open on the expected preview

  • Contact imports now review themselves the way the Hamtrax logbook is organized: one non-empty Activations → Hunting → Custom stage at a time, then a clean Summary. Protected activation and Hunting destinations stay locked to the park/date rules, contacts with no obvious protected home can reuse or create a custom folder or split by month, year, band, or mode, and duplicate-only QRZ reviews can still finish to reconcile remote IDs

  • A friendly connected-circle setup checklist now starts every account at 17% and guides six quick wins: account creation, contact import, a real hunted POTA contact, radio and antenna profiles, and sharing a contact map. The walkthrough always goes first, the colorful floating card can be hidden for a session or permanently, and the same live checklist stays available at the top of Settings → Account

  • QRZ Logbook now connects once with its API key — no vault passphrase or repeated unlock. From there you can import QRZ contacts through Hamtrax's same guarded, auto-sorting review flow or upload new contacts from Export, while every QRZ request runs through an authenticated server gateway over HTTPS and the saved key stays encrypted at rest. ADIF, CSV, and QRZ imports also stop obviously malformed callsigns instantly before they can reach a folder, without slowing the import with live directory lookups

  • Bulk-editing logbook equipment is now a focused selection mode: it always switches to List, Select all / Clear all appears on the left side of the view-control row, and List / Map / DX, Import Contacts, Download, Share, and Delete fade away until you cancel or apply the equipment change

  • The POTA park catalog now keeps itself current: Hamtrax checks POTA every hour and picks up newly published parks automatically, new accounts start with the current park list on day one, and the Settings → POTA Park Database card now tells you exactly what the latest POTA update added — how many new parks, and which states and countries they're in. Imported hunt contacts also wait for the park database to be ready, so a hunted park's real coordinates land on the contact instead of falling back to the operator's home address

  • The POTA starter import now runs in the cloud the moment you set or change your callsign — being signed in on two devices at once can no longer double-import your recent hunts, and the imported contacts land in your logbook a minute or two after your callsign is saved

  • Hunted contacts can no longer double-count: the live Contacted button and logbook imports now keep one hunter contact per activator, per park, per UTC day — a double-tap, a re-import, or the same hunt logged by two apps with slightly different times all collapse to the single contact you actually made

  • Every QSO time field is now labeled (UTC) and defaults to the current UTC time, matching how ham logs (and ADIF files) record contacts — your logbook still shows each contact in your local time for easy reading, and contact lists now sort strictly chronologically even for imported logs

  • Long trail parks that cross many states (like the Oregon Trail) no longer spill a wall of state codes across the contact card — they show compactly as "US-CA +10", and imported contacts that carried a band but no frequency now show the band in the frequency slot instead of leaving it blank

  • Signal reports now follow your mode: phone contacts still pre-fill 59, while CW, RTTY, and PSK pre-fill a proper three-digit 599 — in the QSO form, the live activation logger, and even on imports that arrive without a report. Switching mode reshapes the report automatically

  • The Signal Report picker was redesigned around up/down steppers — one per digit: readability, signal strength, and in CW and other RST modes the tone digit — so every digit of the report is now adjustable right in the picker (a barely-readable contact can get its honest 37, and a chirpy homebrew rig its honest 589). Digits color from red to green as the report improves, and your changes save on the checkmark

  • Hamtrax now notices when the network keeps you waiting. A slow logbook, a park list that takes a beat too long, a map that fills in tile by tile — we could only ever hear about those if somebody wrote in, and "it felt slow yesterday" is not something anyone can fix. The app now measures the requests it makes and records the ones that take longer than a second, so we can see which server, on which screen, is actually costing you time. What gets recorded is deliberately thin: how long it took, which server it went to, a generalized version of what was asked for, and which part of the app you were in. The full address and everything after the ? are dropped before anything is sent, so a callsign, grid square, or search term riding along in a request cannot end up in a measurement — and any one slow resource is noted once a session rather than every time it retries. As with all Hamtrax analytics, sessions near Kansas City and test accounts are excluded entirely. See the Privacy Policy.


0.0.98 - July 8, 2026

  • Automated welcome emails are currently disabled; new signups no longer receive the delayed welcome message while this automation is paused
  • Equipment setup is faster in radio and antenna profiles: each band group now has an All MF/HF/VHF/UHF/SHF checkbox that selects or clears that whole segment, and it automatically reflects when you pick every band in the group by hand
  • Opening the Activate setup screen now checks your location and, when you're within about half a mile of a park, fills that park into the Park field before you type a thing — walk up, tap Activate, and your park is already there. This finally works on iPhone: the first time, iOS asks for location permission once, then it's silent on every later visit. Too far from a park, or declined the prompt? The Find Nearest button still lets you browse nearby parks by hand
  • During an ongoing activation, the map now uses your activation park as the single anchor for the self marker, camera/recenter target, and QSO arc lines from logged contact markers, including after resuming an in-progress activation. Spotter-only markers stay marker-only until you log them as contacts
  • Sharing a folder's contact map now works the way you'd expect on a phone: Share opens the native share sheet (Messages, Mail, social, or Save Image) instead of quietly downloading the picture, and Download actually saves the PNG to your device. The same two fixes apply to QSL card sharing. And an activation map no longer needs your personal location set first — it's drawn from the park you activated, so you can share it straight from the field before ever setting a home location (hunting folders still ask for your location, since their arcs radiate from your station)
  • The N CONTACTS count in the live activation logger now rides on a subtle gold progress bar that fills as you log, reaching full at the 10 contacts that make a POTA activation valid — and the moment your tenth contact lands, the line flashes and a brief golden sweep crosses the screen to mark it. Resume an activation that already cleared 10 and you just see a full bar; the celebration only plays the once, right as you cross the line
  • Typing a callsign on a phone no longer means flip-flopping to the 123 keyboard: whenever a callsign field is focused, a 0–9 key row now floats directly above the on-screen keyboard — one tap per digit, inserted right at the caret, with the bar pulsing gold once per tap to confirm it registered — in the live activation logger, the quick-add cards, the QSO form, signup, and Settings alike
  • The live activation logger's Callsign field now behaves like every other callsign field: it uppercases as you type (with the phone keyboard held in caps), filters out characters that can't appear in a callsign, and accepts full-length compound calls up to 15 characters (previously 10)
  • The activation Finish tab now walks you through the full POTA submission in three steps — download your ADIF, add the activation on pota.app, then upload the log at My Log Uploads — instead of implying the upload alone was enough
  • The Activate tab's In Progress list now keeps your newest activation pinned to the top and stays up to date on its own as you start, finish, or delete activations — the one you just started is right there instead of buried at the bottom, and a just-finished one no longer lingers. Each row's menu also gained a Finish action: close out an activation without opening it, keeping all its contacts and its folder intact, alongside the existing Resume and Delete
  • The signup callsign step now confirms your call is real before you continue: the Continue button unlocks only after the license lookup finds your callsign, a clear message appears when it can't, and a new "Hamtrax can't find my callsign" link explains the path forward (continue without one, add it later in Settings, or send us a ticket for a fast fix)
  • Editing your callsign and display name in Settings → Account no longer saves as you type — each now has its own Change Callsign / Change Name confirm button, matching how the username already worked. The callsign button only appears once the callsign is validated through the license/location lookup, so a mistyped or unknown callsign can never be written to your account by accident
  • Creating an account or signing in no longer hangs silently when the network stalls: the attempt stops after 10 seconds with a clear message asking you to refresh the page and try again, instead of leaving the button stuck on "Creating account…" indefinitely
  • FT8 Auto-Hunt now runs a preliminary test before it starts hunting: an on-by-default Check propagation first toggle makes up to three attempts, each sending a test CQ on the band's standard FT8 calling frequency and then checking PSK Reporter for a report of your callsign — the moment any attempt is heard, hunting starts, but if all three go unheard Auto-Hunt doesn't start and tells you to adjust your radio or antenna instead of calling activators nobody can hear (if PSK Reporter itself is unreachable on every attempt, the check is inconclusive and the hunt proceeds anyway)
  • FT8 Auto-Hunt now hunts opportunistically instead of working the queue one activator at a time: every 15-second cycle it scans the decodes for all of your queued targets, and if the station it's listening for stays quiet while another queued activator calls CQ on the same frequency, it jumps to the one it can actually hear and calls on the very next cycle — the passed-over activator returns to the front of the queue. Activators it has already heard are worked before ones it hasn't, a late RR73 confirming an earlier exchange is logged the moment it arrives, and queued activators the radio has already copied show an ear icon with their signal report on their row
  • FT8 Auto-Hunt no longer treats "Not heard" as forever: an activator it gave up on stays on the watchlist for the rest of the run, and the moment his signal is finally decoded he's revived into the queue — jumped to immediately if the current target is dead air. Stations already Tried aren't re-called, but a late RR73 from one still completes and logs the exchange
  • The FT8 Auto-Hunt target list is now a real cockpit: every row shows the spot's frequency and park location (US state, or country for DX parks) beside the callsign, every still-queued activator has a to drop it from the run — dropped ones collect in red at the bottom of the list, each with its own ✕ to put it back in the queue — and a skipped station says why in red (bad spot data / tune failed / radio never keyed) right where its frequency would be
  • FT8 Auto-Hunt's strategy now mirrors a human hunter's decision-making at the dial: an activator heard mid-exchange with another hunter counts as heard (SNR shown beside the ear) and gets pounced on the instant they sign off — no waiting for a clean "CQ POTA" — and when the current target is pure dead air, the hunt can even jump to a queued activator that's audible-but-busy in the same passband and hold for its opening. Statuses stopped lying by omission, too: a target you could hear but never catch free now ends as "Heard, never free" instead of "Not heard", and a target whose pileup you can hear but whose own signal never reaches you shows "Hunters calling them" live (and "Heard only their hunters" at the end) — a one-way propagation path, which is also why Auto-Hunt deliberately never calls it: a station you can't decode can't complete a confirmable QSO
  • Your radio connection now stays alive in the background indefinitely — switch to any other app for as long as you want and the rig stays connected. Hamtrax keeps the link open by silently running the radio's receiver audio through an always-on playback engine, so iOS never suspends the app; you'll never hear it and there's nothing to configure. If that engine ever gets interrupted (a phone call or Siri while you're away), Hamtrax falls back to a safety net: it holds the session ~20 seconds, closes it cleanly so the radio frees its single connection slot, and reconnects on its own the moment you return
  • The FT8 Auto-Hunt card gained a See history dropdown: a scrollable log of every message decoded on the dial during the run plus every message your rig actually transmitted, with targeted activators highlighted in blue and your own traffic in green
  • An FT8 Auto-Hunt run now keeps working while you browse the rest of Hamtrax — it's no longer tied to the hunting page, the navbar radio pill turns into a pulsing red tower whenever your rig is actually keyed, and returning to the hunting panel lands on the live run. And a hunt never just vanishes anymore: if a run ends while you're away (you backgrounded the app, the rig stopped responding, or the queue finished), the card now says why it ended with the final contacted/tried tally, the clock window the run covered (e.g. 2:32 PM – 2:41 PM), and the full history log kept for review — previously it silently reset to the Start button
  • Your chosen location method now never changes by itself: if your selected method doesn't have data yet (GPS pending, callsign still resolving), Hamtrax quietly uses the best available source and explains it with a notice in the location picker — new accounts no longer get a Washington, DC location written to their settings, and the duplicate "location updated" toasts are gone
  • Signed-out visitors browsing the hunt catalog are no longer asked for GPS permission; their default country comes from the browser language instead
  • Location changes now sync reliably across your devices (a version-counter bug silently discarded them before) — after updating, another device may visibly catch up to your latest location once; that's the fix working. New accounts also seed their callsign location transactionally, so a slow signup can no longer produce an account with a location mode but no coordinates
  • Logging a contact now requires a callsign on your account. You can still sign up and browse without one, but hunting, manual entry, and ADIF import all prompt you to add your callsign in Settings → Account first — keeping every logged contact tied to a real operator identity
  • Every surface now reads your location from one place: shared contact maps center on your selected location method (not just your registered callsign address), the hunt catalog's default country comes from your callsign or home profile, and the QSO form's device-location option shares the app-wide GPS owner instead of running its own
  • Manual location entry is now the same everywhere — Settings, the hunt panel's "Hunting from" picker, and the QSO form's My Location share one entry component with matching place-search / grid-square / coordinates modes and identical validation
  • Place search now finds parks and landmarks in addition to cities, and suggestions read as clean labels like "Boston, Massachusetts, United States"
  • Setting a manual location from the hunt panel now supports the same auto-revert window as Settings (1, 4, 8, or 24 hours, or Never Revert, with a live countdown) and confirms with the same saved toast — previously a manual location set there silently never expired
  • Signed-out visitors on the hunt tab now see their own country as the "Hunting from" default (from the browser language) instead of a hardcoded Washington, DC
  • Date and time fields now look like every other input: on iPhone they no longer stretch wider than their sibling fields, their value text sits properly centered instead of riding high, and they share the same yellow focus glow and padding as the rest of the form — everywhere dates are entered, from the contact form to logbook filters to equipment profiles
  • Fixed place-search suggestions clipping inside the QSO form modal
  • The signed-out Showcase tab now opens with an "A story worth telling" hero and presents a vertical-carousel sample showcase, with mobile scrolling the hero away before the carousel takes over one section at a time. Scrolling or dragging horizontally moves through the sections just like scrolling vertically, so a sideways swipe works the same as an up/down one.
  • Under the hood: hardened the deploy pipeline so stylesheets from earlier releases stay permanently available, keeping session-replay diagnostics rendering correctly instead of degrading after each release.
  • Fixed the public home page ignoring the first scroll or drag — one gesture now moves the page instead of two

0.0.97 - June 28, 2026

  • iOS installs now register a per-install push token alongside broad topic delivery — groundwork for future per-device notifications
  • Logbook folder details now summarize the single most-used radio and antenna in that folder, keeping equipment setup separate from the retrospective folder view
  • Slashed zeros are used app-wide so callsigns, park references, and other radio text are easier to distinguish at a glance
  • Equipment setup surfaces now use the clearer My Equipment label

0.0.96 - June 25, 2026

  • Added nearby-parks and nearby-activation emails with rendered Hamtrax imagery, including scheduled follow-up alerts when a user has matching parks nearby
  • Welcome emails now wait 20 minutes after sign-up, giving the first session room before lifecycle messaging starts
  • Public Home now preloads the Map and Showcase tabs in the background, making the first public-tab switch feel faster
  • Google sign-up opens reliably on the first click, and sign-up / email-change forms now block obviously fake top-level domains
  • POTA spotter glyphs render incrementally as locations resolve, and spotter-camera reframing is throttled so live maps move less abruptly
  • Hunt map popups now include the activator callsign, spot-recency controls use clock icons, and the public Hunt tab hides signed-in logging controls
  • Activation maps on touch devices now require two fingers to pan so scrolling a modal is less error-prone
  • The showcase demo has refreshed radio and antenna imagery, and the Firebase Hosting rewrite now handles single-page app routes correctly

0.0.95 - June 24, 2026

  • Activation setup is now POTA-only, removing the unused non-POTA scaffolding so activators get a simpler flow
  • Contact-map and QSL-card share modals now open directly to the generated preview, with options available when you need to adjust the export
  • Contact-map sharing gained filters, folder equipment summaries, better stats placement, and a 2D-canvas renderer so exported maps stay visible on iOS
  • POTA park details now pull richer context: ParkInfo cards, Wikimedia Commons images, weather lines, fuzzy park search, and improved park/operator search results
  • Sidebar search now separates Live Activators from Callsign results, and activating callsigns can be added to a hunting folder from search
  • Manual contact entry gained an inline match list, folder prompts link back into expanded hunting folders, and activation-map empty states now offer a direct Log Contact action
  • Equipment pickers now show separate Select and Edit actions, return you to the picker after editing, and keep the add-new button where it is easiest to reach

0.0.94 - June 8, 2026

  • Added the CW decoder and Morse tooling, then narrowed the decoder's listening window to 50 Hz for steadier tuning
  • Refreshed the POTA parks data pipeline with version-gated imports, a staleness toast, Settings deep links, and cloud-backed park dataset support
  • Added a POTA activation CW guide, improved QSL-card export flow, and cleaned up activation-map arcs with better operator fallbacks
  • The Hunting surface now loads with a skeleton state on tab switches and has clearer manual contact / spot status actions
  • Profile fields now live in clearer cards with docs deep links, equipment thumbnails render reliably, and equipment buttons use a more compact shared treatment
  • Preferences save flow, signup method choices, settings layout, safe-area spacing, map wrapping, and shared UI frames were cleaned up across the app
  • Callsign hygiene and QSO coordinate resolution were tightened so saved contacts and map pins have better canonical data

0.0.92 - May 23, 2026

  • Streamlined the touchscreen QSO bar to the five fast-logging fields — callsign, frequency, mode, RST sent, and RST received — with a More fields button that opens the full edit form (the same modal desktop uses) carrying over whatever you've typed
  • Activation contacts now lock the date as well as the park, so a contact can't drift onto the wrong day; the date is seeded from the activation and shown read-only with a banner

0.0.91 - May 11, 2026

  • Redesigned the Hamvention promo banner with a brushed-steel surface, gold-leaf "Free" text, and a Pro emblem
  • Added a soft gold-glow cascade across the navigation tabs after the home page lantern finishes lighting up
  • Reordered the sign-up modal so "Continue with Email" is the primary option, with Google secondary
  • Refined the QSO list typography — date and time stack tightly on the right, callsign + looked-up operator name read together
  • Cleaned up the map popup layout — date now sits in the upper right, callsign promoted, location info merged onto one line
  • Folder labels and stats use lighter typography for a calmer reading rhythm
  • QSO edit form switches between bottom-bar and modal based on whether the device has touch input, not just screen width

0.0.90 - May 10, 2026

  • Refreshed text sizing throughout the app for clearer hierarchy and easier scanning
  • Redesigned the POTA activation detail modal with a cleaner activator card and operator names inline
  • Added an expandable park region list — tap to see every state or province a park spans
  • Added a 2-column list layout on intermediate-width screens so spots use horizontal space better
  • POTA detail map now draws arcs from the activator to each spotter so you can see the listener spread at a glance
  • Tapping a spot marker on touch devices now raises a popup with an Expand button instead of jumping straight into the modal
  • Polished the QSL card export with a gold accent pip and refined sidebar typography
  • Punchier loading animation with a windswept 3D flourish on the forest glyphs
  • Renamed the "Retry" status badge to "Try Later" for clarity

0.0.89 - May 7, 2026

  • Cache-bust translation files on each release so the new CLI walkthrough copy (and any future translation update) shows immediately without a hard browser reload

0.0.88 - May 7, 2026

  • Rebuilt the Hamtrax CLI tool overview as a four-step "Getting started" walkthrough (install → generate → authenticate → verify) with copy-buttons on every command
  • Added next-step instructions to the Key Reveal dialog so it's clear what to run in your terminal after copying a new key

0.0.87 - May 7, 2026

  • Hamtrax CLI is now publicly available — install with npm install -g hamtrax to log POTA contacts and manage activations from your terminal
  • Added per-folder notes (up to 300 characters) for richer Showcase folder detail
  • Added per-folder stream/recording links so you can attach YouTube, Twitch, etc. to an activation folder
  • New park-style map popups with custom artwork when you tap a park or grove marker
  • Cleaner, smaller QSL card exports from a renderer rewrite
  • Faster forest loading indicator (PNG glyphs converted to WebP)
  • Hardened folder writes server-side with field length limits and a 4-image cap per folder
  • Fixed the Generate API Key dialog showing each permission line twice
  • Fixed input hint text to use a monospaced typeface

0.0.86 - May 6, 2026

  • Added a rich popup on QSO map markers — tap one in log mode to see callsign, country flag, location, name, frequency/mode, and date
  • Callsign lookup results now show inline next to the field label (first name and location) instead of on a separate line below the input
  • Tidied the equipment selector by removing the trailing chevron icon

0.0.85 - May 6, 2026

  • Added a slide-to-confirm gesture for destructive actions like deleting a contact
  • Added a contact map builder so you can customize the map shown on QSL exports
  • Refreshed the QSO log page layout with cleaner controls and a faster entry bar
  • Improved QSL card and contact map renderers for sharper exports
  • Polished the activation logger setup screen, map view, and POTA activation modal
  • Redesigned the folder detail modal in Showcase with richer information
  • Faster initial load and less wasted CPU on idle pages from a perf pass
  • Translation updates across English, Spanish, Japanese, and Brazilian Portuguese

0.0.84 - May 5, 2026

  • Replaced the activation choice modal with side-by-side New / Import buttons in the folder tree
  • Fixed info tooltips on touch devices so a tap no longer immediately closes the tooltip it just opened
  • Moved the language picker into the Preferences accordion alongside the other preference groups
  • Tightened mobile spacing on the radio and antenna profile forms
  • Small polish: sign-up screen, profile menu, photo upload button corners, and flag showcase close button on small screens

0.0.83 - May 5, 2026

  • Added a dedicated "Log Contact" flow for non-POTA QSOs with a custom folder picker that only lists folders you've created yourself
  • New users get a one-time prompt to name their first folder, then drop straight into the QSO form pre-set to that folder
  • The contact form now remembers your last-used folder within a session so batch logging skips the picker
  • Mobile and tablet now use a horizontally-scrolling chip-style entry bar that sits above the on-screen keyboard
  • Custom folders in the sidebar now sort by most-recent contact activity so your active folders rise to the top
  • Country flags are now clickable everywhere — tapping one opens a full-screen showcase with a glowing flag, the canonical country name, and continent / DXCC details
  • Trimmed the map empty-state copy and tightened the POTA activation modal layout so it wraps cleanly on narrow screens

0.0.82 - May 4, 2026

  • Hardened the past-activation ADIF importer — invalid dates, impossible times, oversized fields, and short/garbled callsigns are now caught with clear errors instead of silently importing bad data
  • Mixed-park ADIF files no longer rewrite every contact's park to the chosen one; QSOs that explicitly reference a different park are skipped and the count is shown before import
  • Duplicate contacts within an imported file collapse to one (a 50× repeated record imports as 1, not 50)
  • Added a "Show N skipped records" disclosure during import review so you can see exactly which records were rejected and why
  • Activation type dropdown now offered extra non-POTA activity types in addition to POTA / IOTA
  • Refreshed the home and showcase copy with adventure-focused tagline and CTAs
  • Made callsigns easier to read — 0 and O are now visually distinct in mono text everywhere in the app

0.0.81 - May 4, 2026

  • Added server-side password reset emails with cooldown protection
  • Refreshed the shared UI theme, loading indicators, buttons, cards, map glyphs, and docs styling for a more consistent Hamtrax look
  • Updated the desktop landing page to use the lantern cover image with lantern-positioned glow and fireflies instead of the temporary intro video
  • Rebuilt QSL card exports with a wider memorial-card layout, richer map details, and new renderer test coverage
  • Added new showcase empty-state artwork, forest loading artwork, and leaf confetti assets

0.0.80 — May 3, 2026

  • Added a pair of mushrooms that grow in beside the stacked landing-page call-to-action shortly after page load
  • Added a soft, flickering lantern light that now casts upward from the hero image instead of blooming as a uniform glow
  • Added a "Select a Park" hint pill on the activation map plus shimmering perimeters around the park and frequency inputs to point you to the next field
  • Tightened the activation setup form: frequency label now reads "Freq MHz", power unit is localized, and Start is disabled until park and frequency are filled
  • Compressed the hero JPGs (about 78% smaller) and converted the landing showcase image to WebP (about 93% smaller) for faster initial loads
  • Restyled danger buttons with a red outline instead of a solid red fill
  • Tidied the sign-in screen typography and copy, and simplified the profile menu's sign-out item
  • Compacted the "Marked as attempted" toast into a single line

0.0.79 — May 2, 2026

  • Tapping Radio or Antenna in the hunting setup while signed out now opens a sign-up prompt explaining that Hamtrax saves your gear to each contact folder so every QSO logs it automatically
  • Simplified the activation auto-spot tooltip with a clear, localized explanation of what enabling the toggle does
  • Polished the map panel chevron so it sits cleanly below the panel body instead of overlapping its bottom edge

0.0.78 — May 2, 2026

  • Fixed a deploy pipeline regression that had been failing every deploy since April 29
  • Added Microsoft Clarity session replay for better understanding of how the app is used
  • Under the hood: centralized the analytics service and refreshed several internal architecture briefs

0.0.77 — May 2, 2026

  • Fixed an Android deploy gate that had been blocking app builds since late April
  • Synced the Android app version to match the web version (0.0.76)
  • Under the hood: removed dead Capacitor authentication artifacts and added the Capacitor Browser plugin

0.0.76 — April 28, 2026

  • Added a guided hunting walkthrough that teaches new users how to log their first contact using a synthetic practice spot
  • Added an "Auto-spot when adding a hunted activator" preference so spots can be created automatically as you hunt
  • Refreshed the Activity tab into a cleaner single-pane layout with smoother list rendering and lighter detail modals
  • Rebuilt the activation logger setup view with simpler copy, clearer flow, and a tighter park selector
  • Reorganized the Settings page into a more scannable layout
  • Polished the band plan, profile cards, equipment buttons, modals, toggles, and radios for a more consistent flat dark feel
  • Updated Spanish, Japanese, and Portuguese translations for the new walkthrough and refreshed Activity, Find, and Settings copy
  • Under the hood: removed obsolete activation-folder backfill function, tightened map z-index handling, and added a maintenance task to clean up expired practice contacts

0.0.75 — April 26, 2026

  • Simplified the Hunt panel: removed the in-tab Logbook view so the panel focuses on the live activator list, with the spot count and refresh button now in the header
  • Added a subtle staggered slide-in animation when the activator list first loads (respects reduced-motion preference)
  • Redesigned the signed-out landing page — the showcase image now anchors to the bottom with a soft 3D tilt while the headline and call-to-action sit centered above it
  • Tightened the activation logger's park selector copy ("Park" instead of "Location", shorter placeholder and hint)
  • Fixed brief flashes of "Loading map..." and the empty-state overlay on quick map fetches
  • Park photos now load for signed-out visitors browsing the Hunt tab and Activation Map

0.0.74 — April 25, 2026

  • Refreshed the home page with a new "A thousand QSOs and nothing to show for it" tagline and a lantern-illuminate animation that lights up the hero scene from the lantern outward
  • Improved POTA activation modal with stepped signal-strength bars showing spot freshness, country flags next to park locations, and cleaner mode badges
  • Smoothed modal close transitions across the app — modals now animate out instead of disappearing instantly
  • Renamed activity "Sign In" call-to-action to "Start Logging" (en/es/ja/pt-BR)
  • Under the hood: cross-platform Node-based dev server launcher, localhost-only dev binding by default, and Vite cache preserved between restarts

0.0.73 — April 24, 2026

  • Under the hood: reorganized the shared code library into clearer core/radio/spatial modules, extracted runtime helpers, and pruned legacy screenshots and dead briefs

0.0.72 — April 23, 2026

  • Under the hood: cleaned up stale worktree branches and refreshed the production deploy

0.0.71 — April 23, 2026

  • Added a callsign search box in the sidebar for quick lookups without leaving what you're doing
  • Added a floating map controls pill with recenter and zoom buttons; removed the old right-edge elevation meter
  • Added country flag display across activation and QSO lists and the new sidebar callsign search
  • Refreshed the UI with a cleaner flat dark theme, brighter firefly hero animations, and tuned component tokens throughout
  • Updated Spanish, Japanese, and Portuguese translations for auth, find, integrations, and log screens

0.0.70 — April 21, 2026

  • Fixed activation spots failing to sync between devices — spots logged during an activation now reliably persist to the cloud and load on your other devices

0.0.69 — April 21, 2026

  • Added illustrated empty-state images across Showcase sections (activations, hunting, equipment, operator details, social links)
  • Refined the Activity tab with a new hunting-location selector and reworked detail modals
  • Tightened the folder tree, log page, and profile-section layouts
  • Under the hood: pruned unused spot-submission tool and spotter-map code that had no entry points

0.0.68 — April 20, 2026

  • Removed the PSK Reporter, Reverse Beacon Network, and waterfall spectrum feeds from the Activity tab to simplify the view
  • Improved dev-server reliability on Windows (internal tooling change, not user-facing)

0.0.67 — April 20, 2026

  • Fixed profile avatars in the sidebar and user menu showing a broken image icon when the stored photo URL was no longer valid — they now fall back to the default origami tiger
  • Renamed the Showcase "Preview" button to "Open" and tidied the share-row layout

0.0.66 — April 20, 2026

  • Fixed the own-Showcase header showing "UNKNOWN" on startup for returning users — callsign now appears instantly from the offline profile cache instead of waiting on a background fetch

0.0.65 — April 19, 2026

  • Fixed your own Showcase banner displaying "unknown" instead of your callsign when the profile loaded slowly

0.0.64 — April 18, 2026

  • Under the hood: pruned the unused labels/tags code from the QSO logging system and tightened the solar dashboard helpers

0.0.62 — April 17, 2026

  • Flattened cards, buttons, and panels to a cleaner flat dark look throughout the app
  • Swapped the default origami beaver avatar for a new origami tiger
  • Added a Q-codes reference panel to the Reference Dictionary tool
  • Reordered POTA park details so distance, bearing, and local time lead — coordinates now read as supporting reference
  • Added a "be the first on the air" message for POTA parks that no one has activated yet
  • Simplified the folder tree expanded view and tightened up empty-state sections

0.0.61 — April 14, 2026

  • Redesigned hunting tab preview with a cleaner flat layout and a one-tap shortcut to the full monthly logbook
  • Simplified the activation landing page with larger New and Import buttons and a clear path to completed activations
  • Refreshed the radio and antenna picker tiles with full-bleed product photos
  • Reworked the folder tree so Activations and Hunting categories read like a ledger — the folder you have selected is always visible
  • Renamed the activation media notes area to "Photos" and swapped the large uploader for a compact plus button
  • Improved dropdown menus to stay inside the screen and truncate long option names
  • Miscellaneous typography polish across captions and labels

0.0.60 — April 9, 2026

  • Fixed default radio and antenna profiles not being applied to new activations when loading preferences

0.0.59 — April 8, 2026

  • Fixed ghost activations persisting in the In Progress list after deleting folders
  • Consolidated activation data into a single source of truth (no more duplicate records)
  • Removed unused live activation banner feature from profiles

0.0.58 — April 8, 2026

  • Added contacted/attempted/retry status badges to POTA activations and activity list
  • Redesigned map pins to teardrop shape with orange glyph color
  • Improved map performance and camera behavior — selecting a spot no longer auto-zooms
  • Added labeled folder action buttons (Edit, Download, Share, Delete) to log page
  • Added radio group UI for choosing how equipment changes apply to existing contacts
  • Centralized folder equipment defaults so new folders automatically inherit your rig setup
  • Refined modal, button, and card styling across the app

0.0.57 — April 5, 2026

  • Reduced oversized close button in modal dialogs

0.0.56 — April 2, 2026

  • Redesigned hero section with responsive layouts for desktop, tablet, and mobile
  • Added particle effects and animated evolution labels to the landing experience
  • Improved code-splitting with automatic retry on failed chunk loads

0.0.55 — March 28, 2026

  • Improved profile loading — callsign, license class, and location now appear instantly from cache instead of flashing empty
  • Improved error screens — user-friendly messages replace technical jargon, with automatic reload for setup issues
  • Added park name resolution to activation folders in the log tree
  • Added media and livestream indicators to folder tree entries
  • Added email preferences to user settings schema
  • Added in-progress activation tracking to external profiles
  • Improved mobile tooltips — now dismiss on scroll
  • Consolidated inline toasts into the canonical toast system

0.0.54 — March 28, 2026

  • Redesigned hunting section on showcase — monthly folders now display as a clickable card grid with detail modals, matching the activations pattern
  • Added welcome email -- new users automatically received a welcome message from social@hamtrax.com after signing up

0.0.53 — March 27, 2026

  • Improved home page layout -- footer now scrolls with content instead of being pinned to the viewport
  • Added "Get Started" call-to-action with glowing beam effect to each carousel slide
  • Improved activation map with live-updating timestamps, scrolling spot comments, and better spot display
  • Added profile photo avatar to contact map exports
  • Added active badge indicator for in-progress activation folders in the log
  • Improved frequency input validation — prevents values over 2000 MHz and limits decimal precision
  • Fixed deleted folders resurrecting from stale IndexedDB cache
  • Fixed monthly folder cache not clearing after folder deletion

0.0.52 — March 26, 2026

  • Added shimmer loading placeholders for all images across profiles, equipment, and media
  • Updated site tagline to "Log it. Keep it. Show it off."
  • Moved hamtrax logo to bottom of contact map for better visual hierarchy
  • Added tooltip explaining shortcode URLs on the Showcase tab
  • Fixed analytics polluting production GA4 during local development
  • Fixed crash reporter failing in environments without Web Crypto API

0.0.51 — March 25, 2026

  • Fixed profile relay sections using incorrect identifier for external profiles

0.0.50 — March 25, 2026

  • Redesigned contact map with unified left panel, wavelog visualization, and decorative photo frames
  • Added signup funnel analytics with step tracking, field focus, and abandonment detection
  • Added dedicated lifetime subscriber view on the Plans page
  • Fixed map background not resizing on window resize
  • Fixed folder media failing to load on other users' profiles
  • Improved log page map view by hiding gallery and equipment ribbons

0.0.49 — March 25, 2026

  • Simplified contact map export to a single 1920×1080 layout with user-centered map projection
  • Added US state boundaries to contact maps with improved header and footer layout
  • Improved callsign input to allow portable prefixes with slashes (e.g., JA1/W5ABC)
  • Refreshed Home tab copy with scannable bullet points instead of long paragraphs
  • Fixed stale activation list on Safari iOS caused by suspended IndexedDB cache

0.0.48 — March 23, 2026

  • Fixed folder media photos not loading due to Firestore security rule mismatch
  • Fixed analytics events leaking before auth resolves for excluded accounts
  • Added tooltip explaining equipment assignment on the log page

0.0.47 — March 23, 2026

  • Updated home carousel slide copy and added responsive stacked layout on small screens
  • Added contact map sharing with custom map projection and export
  • Added equipment assignment to activation folders
  • Improved log page with expanded contact details and filtering
  • Simplified profile card and public profile layout
  • Added share toasts and streamlined sign-up flow

0.0.46 — March 23, 2026

  • Added photo deletion with confirmation dialog to photo galleries
  • Simplified grayline overlay calculation on the map
  • Improved log page layout with labeled Images and Contacts sections
  • Replaced static hero section on the landing page with an auto-advancing carousel walking visitors through 5 value proposition slides
  • Fixed band plan selector showing an unwanted "All" option

0.0.45 — March 22, 2026

  • Renamed activation routes from /activation-map to /activate and /in-progress to /session for cleaner URLs
  • Added GA4 analytics for page views, sign-ups, and logins across all auth methods
  • Added park anchor pin on the activation map during active sessions
  • Enriched spotter list with location details and spot comments
  • Added inline photo gallery to the log page with direct upload support
  • Added media indicators (photo count, stream badge) to the folder tree
  • Simplified activation card badges on profile (moved counts to cover photo overlay)
  • Fixed Firestore email sync when changing email in account settings
  • Fixed race condition in map coordinate lookups
  • Updated disaster recovery documentation and backup scripts

0.0.44 — March 22, 2026

  • Added Frequencies reference tab with GMRS, FRS, MURS, marine, and weather channels
  • Added deploy gate CI pipeline with automated tests before deployment
  • Improved loading screens with new FullPageLoader component
  • Simplified QSO entry form by removing unused fields
  • Fixed QSO time to use UTC consistently
  • Improved map marker clustering with density-based sizing
  • Updated logging documentation to reflect current folder system

0.0.43 — March 22, 2026

  • Removed Activity Stats section from profile and showcase views
  • Improved loading screen when viewing other operators' showcases
  • Fixed QSO timestamp fields for consistency across create and sync
  • Fixed loading state flicker when opening external profiles
  • Added Android app (Capacitor) to the repository
  • Added disaster recovery plan and backup scripts

0.0.42 — March 21, 2026

  • Simplified sign-up flow by removing the location step
  • Improved POTA spots loading indicators on map and activity list
  • Fixed social-media in-app browsers breaking navigation with tracking params
  • Improved rig manager forms with visible "Default" label on star toggle
  • Improved profile sections by trimming QSO display to 10 most recent
  • Fixed country dropdown clipping behind modals during sign-up
  • Added helper text to activation park reference input

0.0.41 — March 20, 2026

  • Fixed POTA spots not loading for visitors who aren't signed in

0.0.40 — March 19, 2026

  • Updated link preview image to show the hero slogan and illustration when sharing hamtrax.com

0.0.39 — March 19, 2026

  • Added Retry button on POTA activations to flag activators for follow-up
  • Added undo actions for Contacted, Tried, and Retry status on activations
  • Improved map loading performance with lazy code splitting
  • Improved startup speed by deferring popular parks data loading
  • Fixed Firestore email not syncing after email address change

0.0.38 — March 18, 2026

  • Added native iOS and Android app support with unified sign-in flow
  • Added Android hardware back button handling
  • Switched Stripe subscription to live payment processing
  • Improved map and activity feed performance with shared GeoJSON cache
  • Improved data loading by deferring background fetches until needed
  • Improved sidebar styling with rounded borders and selection accent
  • Improved list item tap targets for easier interaction
  • Updated docs for native app availability

0.0.37 — March 18, 2026

  • Added Terms of Service and Privacy Policy links to the public home page footer

0.0.36 — March 17, 2026

  • Added PRO badge on the Hamtrax logo for premium subscribers
  • Added QSO cap approaching warnings (10, 5, and 1 contacts remaining) for free users
  • Added activation import from ADIF files to backfill past POTA activations
  • Added drag gesture on the map panel button to expand/collapse the list
  • Added Stripe badge to the upgrade modal
  • Improved folder data healing for folders missing type metadata
  • Improved external profile relay to detect folder types by parent category

0.0.35 — March 17, 2026

  • Added park state and name display to logbook contact rows for hunted POTA QSOs
  • Added edit and delete actions for individual contacts in the Logbook contact list view
  • Added activation QSO edit warning when editing contacts that belong to a POTA activation
  • Added suppressible "don't show again" option for the activation edit warning
  • Added reusable HamtraxLogo component replacing inline logo markup across all layouts
  • Added external showcase branding ribbon with "Get your free showcase" CTA
  • Added error state for external showcase when relay fails
  • Added default equipment (radio/antenna) to QSOs logged from activity feeds
  • Improved showcase section visibility to use shared defaults across own and external views
  • Improved Plans page layout with billing toggle inside Pro card and monthly-equivalent pricing
  • Improved folder tree with creation rules and hunting category info text
  • Reduced free tier native QSO cap from 300 to 200
  • Updated tagline to "Log it. Keep it. Show it off."
  • Removed tagline strip from external showcase profile layout

0.0.34 — March 17, 2026

  • Added Stripe premium subscription system with checkout, billing portal, and plan management
  • Added premium gating for advanced features with upgrade prompts
  • Replaced auth landing and layout with native mobile-friendly variants
  • Added ShowcaseTab to profiles replacing the old profile tab
  • Added QSO delete cloud function for proper contact removal
  • Added ADIF export service for cleaner log file generation
  • Added rig manager component with antenna and radio profile forms
  • Improved search with text highlighting in results
  • Added network connectivity toasts for offline/online status
  • Removed filter profiles system (replaced by simpler activity filters)
  • Consolidated solar data queries into a single endpoint
  • Cleaned up dead code across navigation, contexts, and map utilities

0.0.33 — March 14, 2026

  • Fixed map overlay z-index so panels render above map controls
  • Added network fallback for activity spots when cache is empty
  • Improved POTA activation modal layout for clearer contact actions
  • Removed unused data modules and dead code

0.0.32 — March 14, 2026

  • Added folder media system with photo uploads and media gallery for contact folders
  • Overhauled activations section on profiles with expanded detail views
  • Improved map components with better tooltips, markers, and panel layout
  • Refreshed all documentation to match current feature set
  • Added attempted activators tracking
  • Simplified folder tree navigation and log page layout
  • Updated home page with new hero imagery

0.0.31 — March 12, 2026

  • Removed dormant features: recommendation feed, trophies, milestone sharing, and feed eligibility system
  • Improved profile layout with activations section and my shack section
  • Added category folders for automatic QSO organization
  • Enhanced activity tab with streamlined layout
  • Simplified folder tree browser
  • Added FT8 spectrogram visualization utilities
  • Improved location settings UI

0.0.30 — March 11, 2026

  • Improved external profile layout with read-only equipment cards and branded social icons
  • Added drag-and-drop photo uploads, livestream links, and notes to activation Field tab
  • Capped profile logbook preview to 5 recent contacts for cleaner profiles
  • Reordered profile bento grid for better visual flow

0.0.29 — March 11, 2026

  • Added folder media notes: attach photos to activation folders and monthly log folders
  • Redesigned activity panel layout for better map/list interaction on all screen sizes
  • Added hamtrax branding to the mobile navigation bar
  • Streamlined activation tabs: Log, Spots, Photos, and Finish
  • Removed mandatory "I saved my log" checkbox from activation finish flow
  • Folder photos are visible on public profiles

0.0.28 — March 11, 2026

  • Added tappable signal strength picker for faster S-meter input during activations
  • Improved QSO log form layout for smoother activation logging
  • Enhanced activation map with better panel sizing and interactions
  • Fixed floating cards overflowing on narrow screens
  • Improved tooltip positioning to avoid clipping at screen edges

0.0.27 — March 11, 2026

  • Fixed public profile links (hamtrax.com/s/xxx) requiring login — profiles are now viewable by anyone
  • Added QRT closing spot when ending an activation
  • Improved activation finish tab with clearer end-of-session UX
  • Fixed park detail modal animation glitch when closing

0.0.26 — March 11, 2026

  • Added GPS auto-detection of nearest POTA park when starting an activation
  • Fixed profile pages showing "own profile" view when navigating by callsign
  • Improved folder display cards with clearer "Saving to" labels
  • Consolidated floating panel heights into a single theme variable

0.0.25 — March 10, 2026

  • Replaced station page with streamlined external profile relay
  • Improved map performance by extracting clustering, animation, and style transition logic
  • Updated contact folder data layer for consistency

0.0.24 — March 10, 2026

  • Added activation spot persistence across page refreshes and device switches
  • Added RST signal report stepper for faster QSO logging
  • Added QSO edit and delete within active activation sessions
  • Added equipment profile selectors (radio/antenna) to activation setup
  • Improved auto-spot comments to lead with your hamtrax profile link
  • Added "In Progress" badge on activation folders in the folder browser
  • Improved station page mobile layout with responsive logbook columns
  • Improved station page performance by externalizing CSS
  • Updated home page copy with clearer value descriptions

0.0.23 — March 9, 2026

  • Improved station page mobile layout (hero, typography, bento grid spacing)
  • Fixed solar dashboard to load data independently when opened as a tool
  • Fixed location mode button sizing on My Station

0.0.22 — March 9, 2026

  • Added profile bento layout with logbook section and live activation banner
  • Added public logbook display on profiles (opt-out in settings)
  • Added automatic folder organization — activation folders created on start, monthly folders for casual contacts
  • Added FT8 decoder tool (experimental)
  • Added new UI components: equipment card, info tooltips, and default star indicators
  • Fixed remaining broken references from dormant feature cleanup

0.0.21 — March 8, 2026

  • Removed dormant social features (clubs, friends, messaging, narrative feeds, challenges, compete) to simplify the app
  • Removed dormant activity modes (satellites, repeaters, nets, airports, DX spots, contests)
  • Streamlined station page to focus on OG meta tags and SPA redirect
  • Improved activation map with optimistic spot injection, manual spot refresh, and quick-add QSO from spots
  • Added auth gating to activation entry from home page

0.0.20 — March 6, 2026

  • Rebuilt the activation logger from the ground up — modular setup, QSO logging, and map views replace the old monolithic form
  • Added park-to-park detection during activations
  • Added auth modal — prompts sign-in when accessing features that require an account
  • Redesigned activity tab with improved filtering and list layout
  • Added profile privacy toggle for controlling public visibility
  • Redesigned home page with new hero imagery
  • Improved map markers and station page rendering
  • Removed outdated internal documentation

0.0.19 — March 3, 2026

  • Improved Safari reliability — app now gracefully recovers from IndexedDB connection drops instead of breaking
  • Added specific error messages for radio and antenna save/delete failures in Rig Manager
  • Simplified trophy unlock notifications

0.0.18 — March 3, 2026

  • Redesigned profile equipment section with separate radio and antenna rows, drag-to-scroll, and star-based default toggles
  • Added click-to-edit equipment from profile card — opens rig manager directly to the selected item
  • Fixed Firestore crashes on Safari mobile and iPadOS caused by IndexedDB connection drops
  • Added hamtrax.com to allowed origins for DX Cluster and Reverse Beacon cloud functions
  • Migrated satellite API key to Firebase secrets for better security
  • Added challenges system internal documentation

0.0.17 — March 3, 2026

  • Added club invitation system — admins can invite friends directly to their club
  • Redesigned origami card styling for sharper text rendering and unique per-card skew variation
  • Added folder browser component for navigating log contact folders
  • Improved legacy non-POTA activation detail modals with better layout and information density
  • Redesigned operator discovery cards in the friends section
  • Overhauled the vertical feed with new layout and interaction patterns
  • Added proper favicons, web manifest, and night owl mascot
  • Added firestore security rules for club invitations
  • Improved club detail page layout with scrollable content and left-aligned header
  • Added competitor analysis research documents

0.0.16 — March 1, 2026

  • Added @username system for social identity — every account gets a unique @handle for friend discovery
  • Usernames are searchable by callsign or @username across the app
  • Added username display to profiles, search results, friend lists, and callsign detail modals
  • Added editable username field in settings with availability checking and reserved name protection
  • Added welcome modal for new user onboarding
  • Improved club settings with additional configuration options
  • Added log folder filtering and image cropper component
  • Added contest calendar cloud function

0.0.15 — February 28, 2026

  • Fixed broken images across the app — beaver logo, landing carousel, trophies, satellite art, and feed backgrounds were missing from deployed builds
  • Added adaptive timing to the CW decoder that learns dit/dah boundaries from the operator's actual sending speed
  • Added a real-time decoder event log to the CW decoder showing timing decisions as they happen
  • Narrowed CW bandpass filter to 500–800 Hz for better tone selectivity
  • Improved callsign input validation on the settings page

0.0.14 — February 28, 2026

  • Added device showcase carousel to landing page showing the app on desktop, tablet, and mobile
  • Improved deep link handling to prevent navigation race conditions on page load
  • Added spacing and navigation tokens to the design system
  • Cleaned up repository by removing unused screenshots and image assets

0.0.13 — February 27, 2026

  • Hardened production security: disabled React DevTools, stripped console output, anonymized bundle chunk names
  • Tightened Content Security Policy by removing unsafe-eval and dev-only WebSocket origins
  • Fixed UI bugs in navigation service, tool pane, settings page, and activity tabs

0.0.12 — February 27, 2026

  • Added crash reporting with error boundary and hang detection
  • Added native iOS Crashlytics integration
  • Added activity icon strip to home page for quick navigation
  • Added maxInstances limits to all Cloud Functions to control scaling costs
  • Refreshed trophy images across all award categories
  • Updated documentation site content and removed deprecated legacy map page

0.0.11 — February 26, 2026

  • Added SEO meta tags, Open Graph, and Twitter card tags for rich link previews when sharing
  • Added robots.txt for search engine crawling

0.0.10 — February 26, 2026

  • Added spotter map to activation feed cards showing geographic reach with spot count overlay
  • Migrated all UI components to origami design system with paper-texture and semantic z-index tokens
  • Removed the legacy globe map in favor of the flat map (reduced bundle size)
  • Added new origami mascot illustrations across feed cards and empty states
  • Refactored CW decoder into modular architecture
  • Added DX spot waterfall visualization for hunting workflow
  • Added short code system and club constants

0.0.9 — February 24, 2026

  • Added browser back/forward button navigation support
  • Darkened overall color palette for deeper charcoal aesthetic
  • Refreshed landing page copy with conversational, benefit-focused messaging
  • Added category labels to feed cards (e.g., "Airport Near You", "Repeater Near You")
  • Improved trends engine to filter out common ham radio terms from word clouds
  • Added activation showcase slide to landing carousel

0.0.8 — February 23, 2026

  • Redesigned landing page feature cards with accent glow effects and service logos
  • Switched home feed to CSS Grid layout with improved live spots sidebar
  • Added staleness filtering to live spots (5-minute max age)
  • Fixed OAuth sign-in popup error handling

0.0.7 — February 22, 2026

  • Refined dark theme with deeper, more saturated backgrounds
  • Added hard photo filters to Flickr seeder (rejects people, requires nature tags)
  • Added purge-invalid mode to clean non-compliant images from Firestore
  • Added changelog section to documentation site

0.0.6 — February 21, 2026

  • Simplified profile card header design
  • Added new carousel slides with updated screenshots

0.0.5 — February 21, 2026

  • Replaced carousel images with self-hosted WebP for faster loading
  • Enabled Google Analytics
  • Fixed toast notifications in Rig Manager

0.0.4 — February 11, 2026

  • Initial public release