Changes in version 1.2.0 (2026-05-23) This release introduces an S3 class hierarchy (hy_topo, hy_leveled, hy_node, hy_flownetwork) that lets hydroloom validate input at dispatch time and emit guided error messages. Existing code that passes data.frame or hy objects keeps working -- the new classes are assigned automatically by hy() and by producer functions. See ?hy_topo, ?hy_leveled, ?hy_node, and ?hy_flownetwork for representation patterns, required columns, and conversion paths; vignette("non-dendritic") and vignette("network_navigation") provide end-to-end walkthroughs. Package developers should note that returned objects now carry subclass attributes which are stripped by standard dplyr operations. - Outlet detection is explicit (#85): a row is an outlet when its toid is not in id. Canonical reserved values (0 / ""), NA, implicit absence, foreign reserved values, and unique-per-outlet ids are all accepted. Calls that previously errored on NA or orphan toid now succeed; warnings are narrower (check_hy_outlets() only on type mismatch, sort_network() only on zero outlets). - S3 class hierarchy (#73). Producer functions stamp output classes (add_toids(), sort_network(), add_levelpaths(), make_node_topology(), to_flownetwork()); dispatch is on subclass with guided errors for wrong input. hy_flownetwork is a separate junction table -- it does not inherit from hy. - New exported helpers: hy_network_type(), is_dendritic(), hy_capabilities(). Print methods for hy_topo, hy_node, hy_flownetwork. - hy() gains add_topo to auto-build toid from fromnode/tonode. - add_toids(return_dendritic = FALSE) is deprecated; use to_flownetwork(). - add_levelpaths() is faster (data.table conversion). - New check_valid() for sf/sfc geometry repair, including GEOMETRYCOLLECTION artifacts from sf::st_make_valid(). See ?check_valid. - New dissolve_polygons() for unioning catchment or HUC-style polygon coverages, with optional grouping and interior-hole fill. Uses geos (added to Suggests) for accelerated unions when installed. See ?dissolve_polygons. - Fix get_bridge_flowlines() on networks with independent terminals -- make_nondendritic_topology() had collapsed all rows carrying the reserved outlet value into one synthetic node, misclassifying bridges and exhausting memory on continental networks. - Fix make_to_dt() dendritic branch on tibble input. - Welcome new contributor Andrew Psoras. - Deprecation notice: A future release will require that hy_topo objects have unique id values (one row per catchment). Non-dendritic connectivity with duplicated ids in a toid-based edge list will need to be represented as hy_flownetwork (via to_flownetwork()). Developers passing non-dendritic toid tables through hydroloom functions should migrate to to_flownetwork() or make_node_topology(). Changes in version 1.1.3 (2026-02-20) Update test tolerances for failing Fedora CRAN tests Changes in version 1.1.2 (2026-02-20) Hydroloom 1.1.2 introduces new functionality in accumulate_downstream(), reworks the make_index_ids(), and deprecates make_fromids() and format_index_ids() for clarity of package function. Deprecated functions will be removed in the next major version release. - subset_network() has been added to support subsetting networks to include all diversions that emanate from the basin. -- #60 - accumulate_downstream() now supports "total upstream" and "divergence routed" accumulation. -- #17 - make_index_ids() has been rewritten. It now uses four modes ("to", "from", and "both"). - make_fromids() is deprecated in favor of make_index_ids() with mode = "from". - format_index_ids() is deprecated. The *_list element of make_index_ids() can be unnested instead. Changes in version 1.1.1 (2025-10-01) - fix bug with sort_network when duplicate entries are in the extended attributes -- #52 - add specific id search to index_points_to_lines for #24 - error handling #49 Changes in version 1.1.0 (2024-08-26) - Add new vignette for network navigation vignette("network_navigation") - Add support for upmain and downmain navigation in navigate_network_dfs() - Add support for upmain and downmain in make_index_ids() and make_fromids(). - Add function to create a "flownetwork" representation of the network with a to_flownetwork function. - Improved handling / fix bugs with edge cases in add_toids() - Improved error conditions when missing suggested packages. - navigate_hydro_network() will now navigate from a diverted path to a main path where it previously only followed traditional tributaries.. Changes in version 1.0.2 (2024-01-15) - Add checks if nhdplusTools is available. Changes in version 1.0.0 (2023-09-29) - Initialized new project - Create basic hy s3 object handling hy() - Ensure tibble is used throughout - Support generic depth first search navigation navigate_network_dfs() - Complete migration of nhdplusTools functions to hydroloom. #1 - Support sorting non-dendritic network in sort_network() - Implemented non-dendritic network support in add_toids() - Implemented complete stream order / stream calculator attribute add_streamorder() and add_streamcalculator() https://github.com/DOI-USGS/nhdplusTools/issues/188 - Support for both numeric and character identifiers #2 - Support for NHDPlus and NHD 24k naming schemes #5 hydroloom_names() - Support for linear indexing for lines that do not have measure attributes #6 index_points_to_lines() - Implemented creation of an attribute topology from a geometric network make_attribute_topology() - Added vignette showing how to work with the NHD flow table. https://github.com/DOI-USGS/nhdplusTools/issues/340 vignette("flow-table") - Implement method to add divergence attribute to a non-dendritic network. add_divergence() - Implement basic graph and sophisticate loop detection algorithm #7 and #9. check_hy_graph()