Skip to content

Releases: oh2gba/neoaprs

NeoAPRS 0.17.2

Choose a tag to compare

@github-actions github-actions released this 03 Nov 20:03
  • Fixed: on Windows the HF radio's sound card could not be set right: Windows lists every sound card twice, as a speaker and as a microphone, and whichever of the two you chose was used to record and to play, so one of them always failed ("the sound card could not be opened"). The Sound card field now offers each card once, named after the card, and the modem records from its microphone and plays to its speaker. A card chosen before is taken as the whole card.
  • Fixed: a support report names every sound card the HF modem sees, and the HF radio's settings and state, so that remote help can tell which one is the radio's.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.17.2.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.17.2-x86_64.AppImage executable and run it. macOS (Apple silicon, macOS 14 or newer): open NeoAPRS-0.17.2-arm64.dmg and drag NeoAPRS to Applications; the first time, right-click it and choose Open (the app is not signed by Apple). Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.17.2_arm64.deb (amd64 for a PC), then neoaprs service install --linger.

NeoAPRS 0.17.1

Choose a tag to compare

@github-actions github-actions released this 03 Nov 18:38
  • New: the FM radio and the HF radio boxes of the Radio group fold by the arrow in front of their names, as the groups do, and the page remembers in this browser which ones you folded. A box opens by itself when its radio is ticked and not connected, when the daemon refuses one of its settings, and when a mark in the header leads you to a setting in it.
  • New: the HF radio's box has a Transmit level under Tune: the - and + beside it lower and raise the modem's audio to the radio in whole dB, the modem takes it at once, and the tuning tone follows it, so that you press Tune and watch the radio's ALC while you set the level. The peak of the latest transmission is shown beside it and turns red where the sound card clips.
  • New: a small Spectrum under one row at the end of the HF radio's box (folded until you open it, and remembered in this browser): the spectrum of the radio's audio from 300 to 2700 Hz with the place of a frame marked, and the receive level as a bar with its good range, to set the radio's audio output by. It is only there while the modem can give it, and the modem makes it only while the fold is open.
  • Changed: the HF radio's box shows Suggested frequencies, a line for each band (40 m and 20 m for now), from a small list on the project page that is looked at again whenever you open the box, at most every quarter of an hour, so that a move reaches every copy at once. The old row called Frequency looked as if the radio had said it; this says plainly that it is a suggestion.
  • Changed: the HF radio no longer takes a step in the noise or a carrier beside the signal for another station: NeoAPRS reads the modem's spectrum and calls the channel busy when a signal as wide as a frame is on it, which it sees down to the weakest frames the modem decodes (the modem's own fixed threshold saw only frames from 6 dB up, and held the radio for up to 20 s at each rise of the band's noise). With a modem that cannot give the spectrum the old way is kept. There is nothing to set.
  • Fixed: on Windows 10 and 11 "N" editions the HF radio's Mercury modem did not start: Windows stopped it with "ResampleDmo.DLL was not found", and the HF radio waited for it for ever. The modem no longer needs that file. An update also clears the Mercury folder of files older versions left there.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.17.1.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.17.1-x86_64.AppImage executable and run it. macOS (Apple silicon, macOS 14 or newer): open NeoAPRS-0.17.1-arm64.dmg and drag NeoAPRS to Applications; the first time, right-click it and choose Open (the app is not signed by Apple). Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.17.1_arm64.deb (amd64 for a PC), then neoaprs service install --linger.

NeoAPRS 0.16.3

Choose a tag to compare

@github-actions github-actions released this 03 Nov 15:15
  • Fixed: Update now, Send logs and the map download could fail on a fresh Windows with a certificate error where the browser of the same computer downloaded the same file (Windows fetches a missing root certificate only for a browser): NeoAPRS also trusts the usual list of root certificates (certifi), and a failed download no longer blames the internet connection.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.16.3.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.16.3-x86_64.AppImage executable and run it. macOS (Apple silicon, macOS 14 or newer): open NeoAPRS-0.16.3-arm64.dmg and drag NeoAPRS to Applications; the first time, right-click it and choose Open (the app is not signed by Apple). Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.16.3_arm64.deb (amd64 for a PC), then neoaprs service install --linger.

NeoAPRS 0.16.2

Choose a tag to compare

@github-actions github-actions released this 03 Nov 13:02
  • Fixed: on Windows the HF radio no longer depends on the Windows Firewall: NeoAPRS builds the Mercury modem itself, listening on this computer only, as on Linux and macOS, so there is no firewall rule, no prompt, no check and no Fix button; the VOX lead-in works on Windows too. (The check could fail for a user who is not an administrator, or on a computer whose security software answered "Access is denied", and the HF radio then never started. Thanks to OH2GAX for the logs.)
  • Fixed: a copy installed with the install line before 0.16 could not update (the address its update window runs answered 404): every release again carries install.sh and the wheel it installs.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.16.2.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.16.2-x86_64.AppImage executable and run it. macOS (Apple silicon, macOS 14 or newer): open NeoAPRS-0.16.2-arm64.dmg and drag NeoAPRS to Applications; the first time, right-click it and choose Open (the app is not signed by Apple). Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.16.2_arm64.deb (amd64 for a PC), then neoaprs service install --linger.

NeoAPRS 0.16.1

Choose a tag to compare

@github-actions github-actions released this 03 Nov 11:22
  • New: Send logs in the Help group of the Settings tab sends the support file to the project with one press: a small window asks "What happened?", Send makes the same file as Download logs and sends it with your words, and the page says "Sent" with a short reference to quote (or why it could not be sent). Nothing is sent before you press Send. Download logs and the e-mail stay as they were.
  • Changed: the HF radio's box shows the frequency the group meets on as the project page names it, through the daily update check, so that a move of the frequency needs no new release.
  • Fixed: on Windows, a copy updated to 0.16.0 from an earlier version could miss the firewall rule Mercury needs; the HF radio's box now has a Fix button that adds it (Windows asks for permission once). The HF radio also starts without the installer's rule when the Windows Firewall already keeps the network from Mercury (on in every profile, inbound connections blocked by default, no rule that lets Mercury in), and the status line says plainly when the Firewall is off or a rule lets the network in.
  • New: the groups of the Settings tab fold by the arrow in front of their names, and the page remembers in this browser which ones you folded. A group opens by itself when it has an error to show or when a mark in the header leads to a setting in it.
  • Changed: a radio keyed by VOX no longer loses the start of a frame: the HF modem plays a short tone, 150 ms, just before each frame, so that the radio is transmitting by the time the modem's own signal begins (the Windows modem, which is Rhizomatica's own build, plays none). Other keyings are unchanged.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.16.1.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.16.1-x86_64.AppImage executable and run it. macOS (Apple silicon, macOS 14 or newer): open NeoAPRS-0.16.1-arm64.dmg and drag NeoAPRS to Applications; the first time, right-click it and choose Open (the app is not signed by Apple). Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.16.1_arm64.deb (amd64 for a PC), then neoaprs service install --linger.

Thanks to OH2GAX for finding and testing the Windows firewall problem.

NeoAPRS 0.16.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 09:34

APRS over HF with the Mercury modem beside the FM radio, a macOS app, and encrypted messages for exceptional circumstances.

  • New: APRS over HF with Rhizomatica's Mercury modem, as a second radio beside the FM one: the Radio group of the Settings tab has an FM radio box (the TNC of today) and an HF radio box, each with a tickbox. The modem comes inside NeoAPRS and asks only for the sound card and the keying (both picked for you); its stations appear on the same map and in the same Messages tab with an HF tag, messages to them are acked as on FM, there is no path on HF, the beacon goes at your interval with a floor of 30 minutes while HF is on, Tune and a keying Test help set the radio up, and a Dummy HF radio lets you hear the modem with no radio at all. Stations meet on 7.0541 MHz USB (40 m), which the HF box shows. See docs/RADIOS.md.
  • New: a macOS app for a Mac with Apple silicon on macOS 14 or newer, NeoAPRS-<version>-arm64.dmg: drag NeoAPRS to Applications and open it once with a right-click, since it is not signed by Apple. Python, the window's web engine and the Mercury modem are inside, and nothing else is installed.
  • New: encrypted messages between two stations, for unforeseen or exceptional circumstances: the daemon has to be started with --encryption, and without it none of this is there.
  • Changed: the project page is https://neo.oh2gba.eu/ (the header of the page links there), and the daily update check asks https://neo.oh2gba.eu/version.php; a copy installed before this one keeps asking the old address, which answers as before.
  • Changed: the ways to install are the Windows installer, the AppImage, the .deb packages and the macOS app, which carry their own Python and the Mercury modem; the install line and the wheel are no longer offered (a copy installed that way keeps working as it is, and the update window sends it to the release page). The source tarball stays for packagers.
  • Changed: the log says much more when something goes wrong with a radio, so that a support bundle is enough to help: the HF modem's program, sound card (and why that one), keying and ports, every frame sent and heard over HF with its size and signal-to-noise ratio, how long the channel was busy and the radio keyed, why a radio was restarted after a setting changed, each step of a message, and what Find my radio tried.
  • Changed: the About part of the Settings tab names the HF modem, thanks everyone who tried NeoAPRS instead of three calls, and gives the year the project began (2026).
  • The database is migrated from version 23 to 26 at the first start (a copy is made into backup/ first, as always): what was kept so far is marked as heard or sent on the FM radio, the one there was. Nothing you have stored is lost.
  • Fixed: the copy of the database that is made before a migration no longer piles up in backup/: the copies of the migrations before are removed once the new migration has gone through (a migration that fails leaves every copy), and a disk with too little room for the copy stops the migration before it starts.
  • Fixed: the daily care of the database deleted the expired packets in one go, which on a busy Internet feed held up everything else the database was asked; it deletes a few thousand at a time now, the statistics graph is counted once a minute for all the pages, and on a Raspberry Pi's card the station rows are written once per station per half minute instead of once per packet heard. The packets that came from the internet are kept 2 days (the radio's 7): they were the bulk of the database.
  • Fixed: an APRS-IS server that sent a line that is too long in its greeting or in the answer to the login made the Internet stations line say the Python library's own words; it says what happened now.
  • Fixed: one station row that the page could not build (a view bug on one odd packet) stopped every topic after it from reaching the pages and filled the log with the same traceback every 100 ms; the item is left out and told once, and the other topics go on.
  • Fixed: a message's retry could fall due late on a slow machine after the radio came back, because the time between the last tick that saw the radio away and the first that saw it back counted as time away.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.16.0.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.16.0-x86_64.AppImage executable and run it. macOS (Apple silicon, macOS 14 or newer): open NeoAPRS-0.16.0-arm64.dmg and drag NeoAPRS to Applications; the first time, right-click it and choose Open (the app is not signed by Apple). Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.16.0_arm64.deb (amd64 for a PC), then neoaprs service install --linger.

NeoAPRS 0.15.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 15:36

The page in Finnish, and a map download that is kept when it is done.

  • New: the page speaks Suomi. It is chosen like the other languages: the browser's language, or Language at the top of the Settings tab. The translation waits for native-speaking hams to read it: corrections are welcome.
  • Fixed: a detailed map that had downloaded whole was thrown away, and the page showed the pmtiles program's own last line as the error ("did not say how big the extract is: Extract transferred 101 MB …"). The daemon looked for a line the program had written before the thousands of redraws of its progress bar, and had kept only the last two hundred lines. A download is complete without that line now, and the lines that say a size are kept apart (reported by Marko, OH2BEA).
  • Fixed: what the map download says when it fails is for the operator: a server that could not be reached says so ("the map server could not be reached; is there a connection?") instead of the program's network error, and a failure of the daemon's own says that the log has the details instead of a Python exception name.
  • Fixed: more texts that said nothing to the operator, after a review of every error the page can show. A server whose name cannot be looked up (the computer is offline) said "Unknown error -3" in the Internet stations line and the GPS line; it says that the name cannot be looked up and asks about the connection. A USB radio or GPS that is unplugged showed the serial library's own prose ("device reports readiness to read but returned no data…", on Windows "ClearCommError failed (PermissionError(13, …))"); it says that the device stopped answering. A refusal in the toast bar started with the command's protocol name ("send_message: …", "set_config: station/lat: …"); the reason stands alone now. A command that failed inside the daemon showed the Python exception's text; the page says in its own language that it did not work and where the logs are, and the log has the exception. A packet that could not be decoded said "malformed field (IndexError: string index out of range)"; it says the packet is damaged. The update check's "answer that is not a version" and the detail of a failed update (hover text with the library's error) are gone from the page.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.15.0.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.15.0-x86_64.AppImage executable and run it. Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.15.0_arm64.deb (amd64 for a PC), then neoaprs service install --linger. Linux and macOS: curl -LsSf https://github.com/oh2gba/neoaprs/releases/latest/download/install.sh | sh.

NeoAPRS 0.14.5

Choose a tag to compare

@github-actions github-actions released this 29 Oct 13:08

A review of the whole program against the APRS specification and its own rules: bug fixes on the air, in the station book, in the radio's port handling and on the page, and a tidier code base; nothing new to set up.

  • Fixed: a message sent or received after a whole conversation was deleted could show no unread count and raise no alert: the database gave it the number of a deleted message, which the page had already marked as read. A number is never given twice now, and the page starts over when the daemon's numbers are below what it remembers (a restored database).
  • Fixed: after you changed the radio's COM port in the settings, NeoAPRS could still open the old radio's port when the new one was not plugged in (Windows, macOS): it followed the adapter it remembered. It remembers an adapter only for the port it was learnt for.
  • Fixed: saving the settings while the radio's port was just opening could leave that port open until a restart (Windows, macOS). The adapter is now looked up after the port is handed over, and not at all for a TCP, Bluetooth or BLE port.
  • Fixed: after the radio's line was lost, the radio status could keep an old problem ("the TNC sends text") instead of saying the loss; and the status flickered "connecting" every few minutes while the radio was silent.
  • Fixed: a radio that was lost at the moment of a stop could be opened again after it; and a silent radio that was already in KISS could be sent "KISS ON" when its first bytes were the middle of a frame.
  • Fixed: a GPS reached through a gpsd on another machine that vanished without closing the connection was never reconnected; it is asked again after a minute of silence. A GPS sentence with its end cut off is counted as damaged, not taken for a position.
  • Fixed: a moving station answered ?APRS? and ?IGATE? with a footprint round the home it left, not round where it is. The answer to ?APRS? no longer loses the position when the status text cannot be made.
  • Fixed: the station table with Internet stations off showed the symbol and comment of a position that came from the internet, and lost from a station's track the radio positions heard before its first internet packet.
  • Fixed: a station that beacons under the name of one of your objects changed the object's place and counts; the object is left alone.
  • Fixed: an alert "within N km" stayed silent when a station's first known position was already near; it fires as "on the air" does for a first packet.
  • Fixed: a setting changed with neoaprs db set while the daemon ran was overwritten by the next save from the page; a save writes only what it changes. neoaprs db set applies the same rules between settings as the page (a TCP profile with a serial port stored, a comment too long for the beacon), and map/source takes a path with a blank in it.
  • Fixed: a failed automatic map download was marked done when an older map of another place existed; it stays wanted and is tried again. The map job and Update now could stay "busy" until a restart when a temporary file could not be deleted (Windows).
  • Fixed: the beacon timer, the iGate's timer and the daily clean-up ended for good after one error; they log it and go on. A repeated ack could mark an older failed message with the same number as delivered after the numbers wrapped. A packet heard the moment the radio opened could be handled before messaging was ready; the radio is started last and stopped first, and one part that fails to stop no longer keeps the others from stopping.
  • Fixed: neoaprs open, the desktop app and doctor said the page did not answer after a day or two of running: the daemon wrote the page's address once into a log that scrolls. It also keeps the address in a small file of the data folder now. On a computer with a proxy set in the environment they found no daemon either; they ask the daemon's page directly.
  • Fixed: an alert command that holds the token of a chat or push service was written to the log and into the support bundle; its value is only "set, N characters" there now (so is a changed update address).
  • Fixed: every warning of a daemon started by neoaprs open or the app was in neoaprs.log twice; it is there once, and what the daemon says before it has a log is in launch.log. NEOAPRS_DEBUG=0 switched debug logging on; only 1 does. A data folder that cannot be used ended run, open, app and db in a traceback, and so did neoaprs capture with an output folder that did not exist, leaving the port open; they say one sentence. neoaprs db set --data DIR KEY VALUE was refused. A second Ctrl+C while the daemon is closing did nothing; it ends the process. The service installers told every user the page is on port 7303; they say the port of the settings. The update check could hang for ever on an unexpected error; it is asked again the next day.
  • Fixed: a beacon comment that starts like 144/430 MHz was read by every receiver as a course and a speed; it goes out with a blank before it.
  • Fixed: a raw NMEA packet with an impossible course or speed made the daemon log an error and drop the frame; a telemetry value too large for a number put Infinity into the packet log. Both are packets that cannot be decoded now.
  • Fixed: the route of a packet from the internet showed only the last digipeater when the line starred only that one; every digipeater before the star is shown. Regional aliases (SS3-3, HOP7-7, FI2-2) count their hops in the repeat schedule of an object and are shown as aliases in a route; an AX.25 address with a lower-case letter is read in capitals; an APRS-IS line whose path ends with an IPv6 address is read.
  • Fixed: a Kenwood or Yaesu Mic-E packet ending with a carriage return showed no device or the wrong Kenwood model; damaged course/speed bytes of a compressed position showed a negative speed or 2565 km/h; .../... stayed in the comment; an object sent with the time 111111z (permanent) showed the 11th at 11:11; an area object of type 6 was named "coloured line" and described to the right.
  • Fixed: one wrong statement among the appends to the database lost the whole batch (up to 2000 packets) after three tries; only that one is dropped. The start read the whole packet table to find the last hour; it uses the index of the times.
  • Fixed: iGates drawn with the R, T, 2 or L overlay (receive-only, transmit, LoRa) were not listed as iGates in Nearby or counted in the statistics; a group message left out stations with names such as WINLINK or OH2XYZ-L without a word; a station sitting still near the date line kept the room for a speed graph; the page asked for a topic again once for every update it missed; a pop-up blocked after the page loaded made an alert silent (the tab alerts now); 9.96 km read "10.0" and 359.6 degrees "360° N".
  • Fixed: Esc on an open (i) note also closed the station cards, cleared the Objects form you were typing in and closed the setup guide; it closes the note only. The "More" tab menu opened with the mouse did not close on Esc; the keyboard could not press the trash can of an Objects row with Space; the symbol picker let Tab leave it; a long press on a station card's head opens the copy menu on a touch screen, and bubbles, bulletins and mails can be reached with the keyboard.
  • Fixed: the trash cans, Forget all, Kill and New key changed width on the first press and moved their neighbours; they keep their width, and the sort arrow of the Stations table no longer shifts the columns. The station cards re-measured themselves on every packet heard from an open card.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.14.5.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.14.5-x86_64.AppImage executable and run it. Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.14.5_arm64.deb (amd64 for a PC), then neoaprs service install --linger. Linux and macOS: curl -LsSf https://github.com/oh2gba/neoaprs/releases/latest/download/install.sh | sh.

NeoAPRS 0.14.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 10:06
  • A path builder. A small button beside every path field (a station's Route, the beacon's path, Ask around, Local info's Ask, an object) opens a dialog that builds the path: the usual choices in one click, the digipeaters you hear direct and then those seen next to them in the routes heard, hop by hop, or a station's own route turned round (As its packets come). Use puts it in the field. It makes WIDEn-N plain: choose Direct or 1 to 3 hops and whether home digipeaters may take the first hop, see the path drawn hop by hop with who takes each, more than two hops marked and an impossible alias such as WIDE1-2 refused; its (i) is a short guide to WIDEn-N.
  • NeoAPRS answers the general query ?IGATE? while its iGate puts what the radio hears on APRS-IS (switched on, with a passcode, logged in and verified), as ?APRS? is answered, with <IGATE,MSG_CNT=0,LOC_CNT=n,UPL_CNT=n: no messages to the radio, the stations heard direct in the last hour, and the packets put on APRS-IS since it started.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.14.0.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.14.0-x86_64.AppImage executable and run it. Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.14.0_arm64.deb (amd64 for a PC), then neoaprs service install --linger. Linux and macOS: curl -LsSf https://github.com/oh2gba/neoaprs/releases/latest/download/install.sh | sh.

NeoAPRS 0.13.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 08:45
  • Replay on the map. Replay in the map's menu (a right-click, or a long press on a touch screen) plays back how the stations moved over the last 1, 3, 6, 12 or 24 hours or 2, 3 or 7 days (all the daemon keeps; a span longer than the packets kept begins at the oldest): each station is drawn where it was, with its symbol, its call and its trail fading behind it, while the live markers and tracks give way. A bar at the bottom of the map has play and pause, a slider to go to any time of the span, the clock of the replay, the speed (60× to 3600×, a week in under three minutes) and the span, the two chosen while it is paused (greyed out while it plays, the same size); its cross or Esc closes it and the live map is back as it was. The positions come from the daemon's database (a new command, position_history), objects by their names and your own station by your call, thinned the more the longer the span (a week of a busy APRS-IS feed is well under a megabyte), keeping where a station waited before it drove off so that it waits there and then drives.
  • Alerts on a station. Alert me when… in the station panel of the Stations tab tells you when that station comes on the air after half an hour of silence, comes within so many km of you, or is heard direct, any of them at once, once each time it happens. The daemon keeps and watches them, so they work with no page open: it runs the alert command as for a message (with a title of its own, NEOAPRS_TITLE, which the default command now shows; a stored old default is replaced by the new one, a command of your own is kept), and every open page chimes, shows a pop-up and says it in the toast with the time. A small bell after the call marks a station that has an alert.
  • Ask around. The Nearby tab has a new first box that asks the stations in radio range to make themselves known: Who is around (?APRS?), iGates (?IGATE?) or Weather stations (?WX?), once, by radio. The answers arrive as ordinary packets on the map and in Stations; two quiet lines under Ask say what was asked, when and by what path, and how many stations that had been quiet for ten minutes spoke in the two minutes after. A new command, general_query, and a topic, general.
  • A path for a request. Ask around and Local info's Ask have a closed Advanced fold with the Path the request goes by and RF only: a station that reaches the network only through a fill-in digipeater that relays it when it is named can ask by OH2RDK-7,OH2RCH-2, as its messages go. Left as they are, a request to QRU goes as before. The browser remembers them.
  • The packets of a station on its card. A station's card has a graph of its packets heard in each of the last 24 hours, a bar for each hour, as the statistics card has for all the packets: under the facts, above Details, asked from the daemon when the card opens and every minute after (packet_history takes a call now). The graph keeps its room before the counts come, so the card does not grow. Your own station, objects and items have none.
  • The speed of a moving station on its card. The card of a station that moves (its speed is above 0, or its track of the last day went more than 100 m) has a line graph of its speed along its track, under the packets graph: the same trip as the trail the map draws of it, from its oldest point to now (at least a quarter of an hour, at most a week). The speeds are read by the daemon from the station's positions (a new command, speed_series), asked for when the card opens and at each new position, and the graph keeps its room before they come. A fixed station's card has none.
  • One message to a station at a time. A message you write to a station while your earlier one to it is still waiting for its ack is queued: it waits, quietly, with no attempt made, and goes as soon as the earlier one is acked, rejected, failed or cancelled. The station gets your messages in the order you wrote them and the channel is not filled with several at once. Messages to different stations, and those to the email gateway, bulletins and queries, do not wait. Cancel works on a queued message too.
  • What's new, after the update too. The first time the page opens after an update, a quiet line says Updated to NeoAPRS · What's new, and the link shows the release notes of every version since the one you had. What's new beside the version in Settings → Update check shows the notes of the version you run at any time.
  • A station panel in the Stations tab. A click on a row (or Up, Down, Home and End) shows the station in a panel fixed at the bottom of the tab, as the box of the Bulletins and Email tabs is: Message, the questions, Show on map, Copy call, the QRZ page and Forget as buttons in plain view, a box for a question of your own (?APRSH OH2GBA-15, ?PING?), Ask for weather (?WX?) for a weather station, the station's path and RF only, and the choices of Alert me when…, saved as they are changed. The list above keeps its place: the panel is half the tab whatever it shows, and its cross or Esc closes it.
  • A station's traffic. The panel lists the station's packets and the messages you sent it, as the Packets tab lists packets, the latest 50, read from the daemon's log (a new command, station_traffic) and kept up as new ones come; a question you asked says waiting…, answered or no answer after two minutes. Packets from the internet are left out while Internet stations is off.
  • The menu of a row of the Stations table is as short as the Packets tab's now, Copy call, Show on map and QRZ page, and the row's "..." button is gone: the rest is in the panel. The line under the distance of an alert and the note that many stations do not answer queries are gone too: a wrong distance has a red edge, and the traffic says whether a station answered.
  • The Beacon tab is now My station. It holds your call and symbol, where your position comes from (fixed or a GPS), the beacon and the status report, more than the beacon alone. The header's marks that lead to it, its About and the manual say so too, in every language (Meine Station, Ma station, Mi estación, La mia stazione, Minha estação, 自局).
  • Fixed: on Windows the desktop app's window, left maximized, came back after a close or a restart as a normal window the size of the screen with its bottom under the taskbar. The fix of 0.12.0 did not hold on Windows: it put the window's size and place together from the window's events, which pywebview tells each in a thread of its own and so in any order, and the size of the maximized window could be kept as the normal one. Now the window's placement is asked of Windows itself (GetWindowPlacement: the normal size and place, which Windows keeps whatever the window is, and whether it is maximized) when the window is closed to the tray, at Quit and when it has stopped moving, and given back to Windows as it was (SetWindowPlacement) when the window is opened from the tray or the app starts. A minimised window comes back as it was before. The first start after the update opens the window at the default size in the middle of the screen, since the size 0.12.0 remembered may be the wrong one. The app's log has a window: line for each save and restore, so a window that still comes back wrong can be seen in the support file.
  • Fixed: station markers by the top edge of the map painted over the page's header. The page's own classes of the map (the crosshair of Choose on map, the replay) were bound to the box MapLibre draws in, and each time one of them changed the whole class list was written again, taking away MapLibre's maplibregl-map, the class that clips the markers to the map. They are on the map's own root now, which also clips whatever is in it to the map, whatever MapLibre's style does.
  • Fixed: with Internet stations off, the replay still showed the stations of APRS-IS: their packets stay in the log for a week after the switch is turned off. It now plays only what was on the air near you (a station heard on the radio, a packet an iGate put on the air) and your own station and objects, as the map and the Stations table show them, and turning the switch while a replay is open asks for the replay again and plays on from the same time. The packets graphs, of the statistics card and of a station's card, and the speed graph count only what the radio heard too.

The files are checked by SHA256SUMS and carry build provenance (gh attestation verify FILE --repo oh2gba/neoaprs). Windows: run NeoAPRS-Setup-0.13.0.exe (SmartScreen may warn about an unsigned installer: More info, Run anyway). Linux: make NeoAPRS-0.13.0-x86_64.AppImage executable and run it. Raspberry Pi, Debian, Ubuntu: sudo apt install ./neoaprs_0.13.0_arm64.deb (amd64 for a PC), then neoaprs service install --linger. Linux and macOS: curl -LsSf https://github.com/oh2gba/neoaprs/releases/latest/download/install.sh | sh.