Available from
https://flaterco.com/xtide/files.html#xtide:
XTide 2.16 (libxtide.so.2.0.0) (2026-01-21)
User-visible changes
--------------------
xtide:
- Made the globe and map location choosers resizable and eliminated quirky differences in how they behaved.
- Fixed a bunch of sizing, resizing, and layout bugs.
- Added ability to save to CSV format from plain, medium rare, and raw mode windows.
- Suppressed "Warning: XtRemoveGrab asked to remove a widget not on the list" that occurred with Xaw3d and Xaw3dXft.
tide:
- Changed behavior of -o and -l switches to remove a footgun. If the output format is PNG, SVG, iCalendar, or LaTeX, the -o switch will overwrite rather than append the output file, and no more than one location may be specified with -l.
- Stopped putting form feed characters in HTML and CSV output.
xttpd:
- Updated HTML headers to stop browser quirks.
- Responded to out-of-range years with an HTML error instead of dropping the connection.
CSV format:
- Did quoting as described in RFC 4180 [
https://datatracker.ietf.org/doc/html/rfc4180]. No more vertical bars.
- Added headers.
- Used CRLF line discipline as specified in RFC 4180.
- Produced output in UTF-8 or CP437 consistent with the locale codeset, as text format does.
HTML format:
- Fixed wrong closing tags in about mode.
- Removed extra paragraph tags in list mode.
The few color names that X11 imported from CSS are now recognized.
Build-time changes
------------------
The configure option
--enable-3d use Xaw3d or Xaw3dxft if available (default yes)
has been replaced by
--with-widgets=xaw|xaw3d|xaw3dxft|auto
select Athena widgets library [default=auto]
Compiler support for C++17 is now assumed.
Configure will use the bundled copy of Dstr if the system libdstr is not version 1.1 or later.
Noteworthy internal changes
---------------------------
xxMap and xxGlobe:
- Pulled up superclass xxLocationChooser.
- Fixed the quantization of coordinates and eliminated the +1 on window sizes.
- Merged and harmonized needlessly divergent behaviors, mostly favoring xxGlobe.
xxMap:
- Fixed application of antiChopMargin: it was being applied to lat/lon coordinates instead of pixels.
- Fixed missing lines: removed an incorrectly coded condition that was intended only to suppress single-point islands.
xxX:
- Fixed stringWidth returning wrong answers for Xft fonts.
- Added dimensions that are required for calculating accurate widths during the construction of windows.
xx various:
- Eliminated minWidthFudgeFactor and calculated accurate widths.
- Fixed the sizes of all simple dialogs.
Graph and clock: Fixed a resizing bug and simplified code by downgrading the graphing area from a Label to a Simple widget.
Dstr: Updated to version 1.1.
rgb.hh and Colors:
- Updated to rgb 1.1.1.
- Switched from a null-terminated array to a map.
BetterMap.hh and SafeVector.hh: Added a using declaration to fix all constructors.
xml_l.ll: Added %option nounput to silence a compiler warning.
Notes
-----
Making the location choosers resizable was the first step for improving usability on 4k displays. Much remains to be done.
Documented Bug #2 has been better characterized but not fixed. When libXt's XtAddGrab function is called with a 3D popup shell widget and exclusive = true, it silently fails to perform the grab. No acceptable mitigation has yet been identified.
The root cause of the graph and clock resizing bug was a behavior introduced in Xaw3d 1.5E and thence propagated to Xaw3dXft: a Label widget will not resize shorter than its font even if its label is the empty string. Plain Xaw has no such inhibition.
Putting the units in the header in medium rare and raw modes (e.g., "Value/ft") would be an extremely good thing to do. Unfortunately, when -l is used more than once to concatenate multiple stations, we might have heights and velocities mixed together, let alone comparable values expressed in different units. It has been so since the rare modes were added.
Adding headers to CSV raises the question whether text format should have them too.