POTAPlus for Chrome
POTAPlus is David K2DW’s browser extension for the POTA spots page: needed-park badges, extra filters, QSY, logging, and award-progress popups. This copy is v1.09.04 — same install as his original, plus next.pota.app.
It is not an official POTA product. Rig control and most logging still need his ham-apps-proxy.exe from that page.
Download: potaplus.zip · potaplus-1.09.04.zip (same file, version in the name)
Prep
- Make a POTA.app account and sign in on pota.app or next.pota.app.
- Table view is the most reliable layout for POTAPlus.
First install
Same steps as K2DW’s site:
- 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. - If Chrome asks for site access, allow pota.app, next.pota.app, and api.pota.app.
- Open pota.app or next.pota.app. The toolbar should show v1.09.04.
- Open the extension Options page and enable the features you want.
Upgrade from 1.08.xx
This build adds next.pota.app as a host permission — same class as K2DW’s 1.07 → 1.08 bump:
- Unzip this zip over your existing
potaplusfolder. chrome://extensions→ Reload (circle-arrow) on the POTAPlus card. Refreshing the POTA tab is not enough.- Hard-refresh the POTA site (Ctrl+Shift+R / Cmd+Shift+R).
Troubleshooting
chrome://extensions— any Errors button on the POTAPlus card?- On the spots page: F12 → Console, then refresh. Look for
MYCALL— it should be your callsign. - Signed in but you still see “PLEASE SIGN IN TO POTA.APP ACCOUNT”: reload the extension card, then hard-refresh the site.
- QSY / logging: still K2DW’s ham-apps-proxy notes.
Changelog
This zip is v1.09.04 against David K2DW’s public v1.08.01. The product is still his: same options, badges, QSY, logging, rotor, and popup awards. What changed is dual-site support, a wider awards popup, a false “not signed in” bug on the new site, logging/API alignment, and next.pota.app Log / Spot+Log plus the SFI widget.
Unchanged: options storage, icons, award math, ham-apps-proxy.exe (still from David’s page). Current pota.app still uses the old Vue / Vuetify 2 DOM.
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.04.zip (same file).
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.