|
2 | 2 |
|
3 | 3 | All notable changes to this project are documented in this file. |
4 | 4 |
|
| 5 | +## [3.4] – March 2026 |
| 6 | + |
| 7 | +### New Features |
| 8 | + - Two-mode sociomatrix import: correctly handles bipartite networks in parser (#15). |
| 9 | + - Faithful Eades (1984) Spring Embedder implementation (#207). |
| 10 | + - New `layoutRandomInMemory()` replaces `layoutRandom()` in force-directed pipelines (#206). |
| 11 | + |
| 12 | +### Bug Fixes |
| 13 | + - Progress dialog / Cancel (#52): comprehensive fix across all computation paths: |
| 14 | + - Wired Cancel into centrality, prestige, reachability, walks, matrix, report, layout, clique, and subgraph computations. |
| 15 | + - Fixed cancel-then-retry regression (reset canceled flag + invalidate distance cache). |
| 16 | + - Fixed stacked progress dialogs in multi-phase computations (KK layout, matrix functions). |
| 17 | + - All `write*` report functions converted to `bool` return; MW slots guarded on cancel. |
| 18 | + - All random network generators (`Erdos-Renyi`, `Small-World`, `Scale-Free`, `Regular`, `Lattice`, `Ring-Lattice`) fixed: bool return, cancel guards, progress max corrections. |
| 19 | + - Layouts: |
| 20 | + - Fixed division-by-zero, NaN/Inf and logic errors in Kamada-Kawai layout (#198). |
| 21 | + - Fixed FR simmering temperature derivation from canvas width (#199). |
| 22 | + - Batched `setNodePos` emissions in all force-directed layouts (#205, #206). |
| 23 | + - Centrality: |
| 24 | + - Fixed eigenvector centrality isolate reset and N==0 handling (#202). |
| 25 | + - Fixed Information Centrality isolate handling and degenerate cases (#201). |
| 26 | + - Fixed wrong vertex checked for `isIsolated` in `createMatrixAdjacencyInverse()` (#190). |
| 27 | + - Fixed clustering coefficient computation for directed networks (#58). |
| 28 | + - Fixed wrong weighted flag when switching relations (#82). |
| 29 | + - Parsers / IO: |
| 30 | + - Fixed Pajek `*Matrix` header parsing for relation labels (#188). |
| 31 | + - Fixed Pajek multirelational export as `*Matrix` blocks (#184). |
| 32 | + - Fixed quoted relation name normalization in Pajek headers (#185). |
| 33 | + - Fixed inline GML node/edge block parsing (#186). |
| 34 | + - Fixed arc doubling when loading undirected DOT graphs (#187). |
| 35 | + - Fixed platform-dependent `weighted=true` from uninitialized `initEdgeWeight` in DOT parser (#189). |
| 36 | + - Fixed `Graph::setDirected()` logic bugs. |
| 37 | + - Fixed lattice network edge deduplication and progress tracking. |
| 38 | + - Fixed version comparison in update-check (component-wise instead of integer). |
| 39 | + - Fixed `#133` (see commit). |
| 40 | + |
| 41 | +### Refactoring (WS4 – IO/Parser) |
| 42 | + - Completed WS4: IO/Parser refactor into focused modules: |
| 43 | + - Extracted edgelist, adjacency, UCINET DL, DOT, GML, Pajek, GraphML parsers into separate files. |
| 44 | + - Introduced `IGraphParseSink` explicit mutation surface and `GraphParseSinkGraph` bridge. |
| 45 | + - Switched GUI and headless load paths to sink-backed parser mutations. |
| 46 | + - Removed legacy `Parser→Graph` signal wiring. |
| 47 | + - `Parser::load` and adjacency parser use `ParseConfig`. |
| 48 | + |
| 49 | +### Toolchain / Testing |
| 50 | + - New `socnetv-cli` schema v5 `io_roundtrip` kernel for IO/parser regression protection. |
| 51 | + - Added IO roundtrip timing regression to benchmarks. |
| 52 | + - Expanded golden comparison suite with many new IO roundtrip cases and small deterministic test networks. |
| 53 | + - Added `run_io_roundtrip_shipped_datasets.sh` and `run_golden_io_roundtrip.sh` scripts. |
| 54 | + - Added UCINET FT5 io_roundtrip golden baselines. |
| 55 | + - Fixed `run_golden_compares.sh` argument parsing. |
| 56 | + - Fixed headless parser lifetime and signal race condition. |
| 57 | + |
| 58 | +### i18n |
| 59 | + - Added `update_translations.sh` script; updated translation files. |
| 60 | + |
| 61 | +### Build / Packaging |
| 62 | + - Debian packaging: switched to CMake build, series-aware Qt6 deps, added OpenGL/Vulkan/XKB build deps. |
| 63 | + - CMake: `.qm` files now generated via `qt_add_lrelease`. |
| 64 | + - Fixed Windows linker `/VERSION` for PE header. |
| 65 | + - Help menu now links to `socnetv.org/manual/`. |
| 66 | + |
| 67 | + - Many bugfixes, see: [GitHub Issues](https://github.com/socnetv/app/issues?q=is%3Aissue%20state%3Aclosed%20milestone%3A3.4). |
| 68 | + |
| 69 | + |
5 | 70 | ## [3.3] – February 2026 |
6 | 71 |
|
7 | 72 | - Major internal refactor: `Graph` is now a façade/coordinator; functionality has been split into focused `src/graph/*` modules. |
|
0 commit comments