POTAPlus for Chrome
Current version v1.10.0 · updated 2026-10-15
Download potaplus.zip Get update notices
POTAPlus is David K2DW’s browser extension for the POTA spots page. In October 2026, pota.app moved the new site, formerly next.pota.app, onto the main address. It now has its own Need and ATNO filters, N1CC and Op-to-Op chips, RBN/PSKReporter links and a column picker. So POTAPlus 1.10 keeps only what the site doesn't do: QSY to your rig, logging straight to your logger, Spot+Log, a Region filter, WAS and location badges, SFI/A/K, and the award widgets.
It is not an official POTA product. Rig control and most logging still need his ham-apps-proxy.exe from his page.
Versioned twin of the zip (same bytes): potaplus-1.10.0.zip. Previous: potaplus-1.09.08.zip. Fallback only if both misbehave: potaplus-1.09.04.zip. Builds 1.09.05–1.09.07 are withdrawn.
Prep
- Make a POTA.app account and sign in on pota.app.
- Table view is the supported layout for POTAPlus.
First install
- Download potaplus.zip and unzip it somewhere permanent. Do not delete that folder after you load it.
- Chrome →
chrome://extensions - Turn on Developer mode (top right).
- Load unpacked and select the unzipped
potaplusfolder — the one that containsmanifest.json. - Open pota.app. The POTAPlus toolbar should show v1.10.0.
- Open the extension Options page and enable the features you want.
Upgrade from 1.09.xx
- Unzip this zip over your existing
potaplusfolder. chrome://extensions→ Reload (circle-arrow) on the POTAPlus card.- Hard-refresh pota.app (Ctrl+Shift+R / Cmd+Shift+R).
Some options are gone in 1.10 because pota.app does them now. Here's where to find each one on the site:
| Old POTAPlus option | Use this on pota.app |
|---|---|
| Needed Parks badge (spots page) | NEED / ATNO pills and the Need filter |
| Needed N1CC badge | N1CC chip |
| Needed Ops badge | Op-to-Op chip |
| RBN / PSKReporter icons | Signal report button on each spot |
| Hide Spotter / Comments | Choose Columns (table header) |
| Band / Mode / Program hide filters | Band, Mode, Program filters |
Troubleshooting
chrome://extensions: does the POTAPlus card show an Errors button?- On the spots page: F12 → Console, then refresh. Look for
MYCALL. It should be your callsign. - Signed in but still seeing “PLEASE SIGN IN TO POTA.APP ACCOUNT”: reload the extension card, then hard-refresh the site.
- QSY and logging: see K2DW’s ham-apps-proxy notes.
Changelog
This zip is v1.10.0, built on David K2DW’s public v1.08.01. The product is still his. Since 1.09.01 this site has added sign-in, logging and Spot+Log fixes, and with 1.10 the build follows the new pota.app: it drops what the site now does itself and adds a private update check.
v1.10.0 — 2026-10-15
pota.app has moved the former next.pota.app beta onto the main site, so this release removes the code for the old site and drops features that pota.app now covers.
- Removed (pota.app does it now): spots-page Needed Parks, N1CC and Ops badges; RBN and PSKReporter icons; Hide Spotter and Hide Comments; Band, Mode and Program hide filters; Abbreviate Filter Labels; profile-page notes. The N1CC removal also stops a background logbook fetch for every park.
- Removed (old site only): the Re-Spot dialog takeover. QSL now always opens the POTAPlus log dialog. The Vuetify 2 selectors and
#/route handling are gone too. - Update check: reads
getontheair.app/downloads/potaplus-latest.jsonat most once a day and sends nothing about you. Before, it sent your callsign and options to dwestbrook.net. - Changed: spots are read from pota.app’s own extension hooks on each row, so column moves don’t break QSY or QSL. Fixed two errors on first load when signed out.
- Kept: sign-in fix, QSY, logging via ham-apps-proxy and QRZ, Spot+Log, SFI/A/K, the solar widget, UTC clock, award widgets, WAS and Locations badges (Needed Parks too, on the Activations page), band-edge warning, QRZ icon, scan and row toggles.
v1.09.08 — 2026-09-27
The toolbar popup My Awards Progress - Details was hanging on N1CC - Activator and leaving My Activations blank. Activator N1CC fired a logbook fetch for every park at once (Promise.all), which starved the activations API and never painted if any park failed.
- N1CC activator list paints immediately from the summary endpoint; band letters fill in 3 at a time, and only for parks with 3+ bands that are not already cached.
- My Activations unwraps
{activations: [...]}or a raw array, caches it, and shows an error instead of an empty box. - Popup waits for a stored JWT; if you have not opened pota.app signed in, it says so instead of spinning on Loading…
1.09.08 supersedes 1.09.05–1.09.07, which had issues and are no longer offered. Their notes stay below for history.
v1.09.07 — 2026-09-26
The spots-page New awards earned!! box and Parks Hunted / Late Shifts counters are POTAPlus widgets, not next.pota.app’s Achievements page. /user/award/* needs a JWT. Without it the API returns the JSON string "Not authorized". The widget then did Array.from("Not authorized") (14 empty bullets) and wrote undefined / undefined for hunter counts. That garbage was cached for 20 minutes.
- Hunter award fetches wait for a real session token (callsign in
POTA_SETTINGSis not enough). "Not authorized"is never treated as award rows or progress numbers; poisoned cache is dropped.- List lines use
awardName/detail/operatorCallsignfallbacks; empty<li>rows are not shown. - Page bridge also reads Vue 2
$storeand AmplifyidTokenon pota.app.
v1.09.06 — 2026-09-26
next.pota.app’s Achievements Earned list (/user/achievements/earned) is a Vue 3 data table. POTAPlus treated that table like the spots grid: it injected QSL/QSY into award rows, appended text nodes Vue owns, and reloaded mid-navigation — which emptied or scrambled the list.
/user/…is its own route. Leaving spots disconnects the observer and hides POTAPlus chrome; it does not reload the awards page.- Layout detection will not bind
MAINTABLEto.earned-table/ award list items. - Next.pota.app table rows without
data-spot-activatorare skipped. - Profile script no longer injects into every
.v-col/<p>on the new site (legacy pota.app award cards still get date/endorsement notes). - Popup earned list parses cache and extra API fields (
detail,operatorCallsign) without throwing.
v1.09.05 — 2026-09-24
Hardening pass for dual-site signed-out use and SPA reinjection. Product remains David K2DW’s; award math and options storage format are unchanged.
- Reinjection guards: content scripts for spots / activations / profile now no-op on a second inject (SPA route bounce /
tabs.onUpdated), matching the page-world auth bridge. Avoids duplicate toolbars, stackedhistory.pushStatewrappers, and double MutationObservers. - Signed-out spots chrome: the spots MutationObserver no longer waits forever for hunter award maps. Filters, INFO/QSY chrome, icons, and toggles attach without a login; needed-park / WAS / N1CC / ops badges still wait for real hunter data after sign-in (no false ATNO flash).
- Version label: upgrade nudge only when the upstream version endpoint reports a newer build than this one (getontheair 1.09.x no longer prompts to “upgrade” to K2DW’s 1.08.01).
- Toolbar anchor on next.pota.app: “Active Spots” title is gone; fall back to
.header-actions/ “N spots shown” / filter row. - Profile when signed out: public
api.pota.app/profile/CALLloads without waiting for a session. - Null-safety:
_logand session-expired label updates tolerate a missing toolbar node;watchPotaRoutewraps history once per page.
v1.09.04 — 2026-09-02
The QSL log dialog on next.pota.app inherited Vuetify 3 dark-theme colors (v-card + color: inherit), so labels and buttons were white on white. The dialog is now its own light form: dark text, light fields, blue Log, orange Spot+Log, gray Cancel.
v1.09.03 — 2026-09-02
next.pota.app Log / Spot+Log
The new spots layout no longer exposes a hijackable Vuetify 2 Re-Spot dialog. Re-Spot is an SVG icon, and below 1280px it lives in a kebab menu. QSL on next.pota.app now opens a POTAPlus log dialog with the same RST / power / other-parks / comments fields.
- Log still sends the QSO to your logger (ham-apps-proxy / QRZ).
- Spot+Log logs, then
POST https://api.pota.app/spotwith the same body the new web app uses (activator,spotter,frequency,reference,mode,source: "Web",comments). Sign-in required for the spot. - pota.app still hijacks the native Re-Spot dialog (retry if it opens slowly).
SFI / A / K widget
The NOAA fetch used to run only after hunter data loaded, and it painted into #spacewx_container before that node existed — so you got SFI= A= K= with empty values. Fetch and paint no longer wait on login; NOAA is requested from the extension worker (page CSP cannot block it); stale cache without a real flux/K record is ignored.
v1.09.02 — 2026-09-02
Logging apps vs current APIs
Checked against current docs: QRZ Logbook INSERT, N3FJP ACLog API 2.2 UPDATEANDLOG, DXKeeper TCP log via ham-apps-proxy, Log4OM 2 UDP + APP_L4ONG_QSO_AWARD_REFERENCES, Logger32 TCP, Commander CmdSetFreqMode, OmniRig qsy, PstRotator QRA=. Those endpoints still map. NOAA SWPC K-index JSON changed (SCN 26-21, ~31 Mar 2026) from header-row arrays to objects with Kp / a_running.
- NOAA K-index and A-index parse the new object format (still tolerate the old array rows). Solar flux uses the newest
f107_cm_flux.jsonrecord and rounds the scientific-notation value. - QRZ INSERT now sends required BAND, STATION_CALLSIGN, and OPERATOR, plus SIG / SIG_INFO / POTA_REF.
- ACLog DATE / TIMEON / TIMEOFF are filled at LOG click, not QSL click (TIMEOFF was logging as 00:00). GRID is sent from the park when known.
- DXKeeper / Log4OM / Logger32 comments with
&in park names no longer split the URL. BAND, STATION_CALLSIGN, GRIDSQUARE, SIG_INFO, POTA_REF go out unless you already set them. Logging__port=used the host by mistake; it now uses target_port. - Logger32 QSY is selectable in Options (the call was already in the code).
- MV3 host permissions for localhost, QRZ, NOAA, and dwestbrook.net so those fetches are allowed.
Bugs / hardening
- Re-spot on next.pota.app matches the autorenew icon, not only English “Re-Spot” text.
- Log dialog root, missing re-spot button, and missing QSY method no longer throw.
- Hunter/award chrome.storage callbacks ignore a missing response instead of crashing after reload.
- Page-bridge auth
postMessageis origin-scoped; message listener ignores other origins. - Early
_fetchno longer assumes the toolbar UPDATE label exists yet.
v1.09.01 — 2026-09-02
Awards popup
- Wider awards popup so tabulated data is not clipped:
min-width: 600px, viewport768px, horizontal scroll on the data containers.
Dual-site: pota.app and next.pota.app
- Version 1.08.01 → 1.09.01. Description now covers both sites.
- Host permissions expanded from
https://pota.app/#/topota.app,www.pota.app,next.pota.app, andapi.pota.app. web_accessible_resourcesno longer uses<all_urls>; limited to those POTA hosts.- Injects on hash routes (
#/,#/activations,#/profile/CALL) and path routes (/,/activations,/profile/CALL). - Shared helpers for current vs next site: SPA wait, route watch, column mapping by header (the new site lets you reorder columns; mode is its own column), Vuetify 2 and 3 markup (cards, re-spot dialogs, toolbar when “Active Spots” is missing).
- Settings cookie:
viewMode→tableView, arraybandFilter. Dark mode:.theme--darkand.v-theme--dark. - Spots, activations, and profile pages share the dual DOM. Profile callsign from
/profile/CALLas well as#/profile/CALL. - Badge color fallbacks for Vuetify 3. Toolbar stacking so widgets still attach on the new header.
- Options note: some filters (band/mode/ATNO) are built into next.pota.app; POTAPlus still adds QSY, logging, badges, and extra hide-spot controls.
Sign-in fix
On next.pota.app you can be logged in and the plugin still thought you were not. David’s code only read POTA_SETTINGS.callsign. The new site often leaves that empty; the real callsign is JWT pota:callsign / the page’s user store.
- Cookie parsing no longer truncates JWTs that contain
=. - Token search is broader (cookies, localStorage, sessionStorage).
- Callsign decoded from the JWT when the settings cookie is empty.
- Page-world bridge copies the live session into storage the extension can read.
- Does not flash PLEASE SIGN IN TO POTA.APP ACCOUNT immediately; waits for the session. Hunter/award data loads once the callsign is known.
Distribution on this site
- Zip laid out like K2DW’s: top-level
potaplus/folder. Load unpacked on that folder, or unzip over an existing copy to upgrade. - potaplus.zip · versioned name potaplus-1.09.08.zip. For the current build, see the top of this page.
Related
- Original project and proxy: dwestbrook.net/projects/potaplus
- Spots: pota.app · next.pota.app
- Hunt · ADIF Doctor · Resources
POTAPlus is a spots-page helper. It does not replace Polo, N3FJP, or a self-spot from the picnic table. Needed-park badges assume you are signed in; QSY still needs K2DW’s proxy. Hunters: this is how you see ATNOs on the page. Activators: still SPOTME in Polo or Ctrl+Shift+H in AC Log.
Notes & edits
Comments and proposed markdown sit in a queue. Nothing is public until it is reviewed. How this works.