================================================================================
Version: 3.3.36
Patch: 00
Date: 2024-09-04
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Phase 2 of the big CPU upgrade a few years back is now done, I'd left one part 
inadequate in terms of the data structures, mainly because I did not have data 
samples to test, but also because no corner cases that required a more robust 
data structure for die > cluster > core counts showed up duing the initial 
development phase. This led to somewhat predictable issues and bug reports when 
someone had a CPU that did require that structure to show correct core/die type 
data.

So while most users will see very little difference, beyond dies: and clusters:
items appearing where they did not before, the internal logic is now far more 
robust.

--------------------------------------------------------------------------------
SPECIAL THANKS:

1. CPU: Codeberg issue #307 finally helped solve the old AMD ryzen wrong core 
count issue, I believe. Thanks superkoning for the data and reporting the 
RISC-V failure to show right core counts, and to show MT when it isn't, which
was caused by same issue.

2. RECOMMENDS: Codeberg user Ricky-Tigg in issue #309 for taking the time to 
actually check --recommends output for inconsistencies. And finding them!

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. The old issue #293 about AMD Ryzen 2 die CPU showing wrong core counts is 
probably fixed, but can't know until it's confirmed for that exact CPU. Fix 1a 
should handle all variants, I hope. Tested on old OS VM installs, and found most 
of this logic never fires since /sys had a very barebones topology section f for 
CPUs back then.

2. DESKTOP: No known way to get Cosmic DE version, or Iced toolkit version. If 
you know of a non-hackish way to get that version info, let me know.

3. DRIVES: The disk vendor pinxi/tools/lists/disks.unhandled list keeps getting 
longer, but most are not possible match, either not unique, or unknown models.
Doing these matches is incredibly tedious, so I only do it every few releases, 
but this time there were a LOT of new matches and vendors.

--------------------------------------------------------------------------------
BUGS:

1. CPU: wrong core counts due to inadequate internal logic, and some new uses of
clusters to categorize core ids. Since this is a pretty new change in the kernel 
topology logic, this wasn't really a bug per se, but it looks like one to users.

--------------------------------------------------------------------------------
FIXES:

1a. CPU: At long last, codeberg issue #307 supplied the data of a multi-die or 
more accurately, a multi-cluster but no die_id, system. RISC-V in this case, 
which tripped the wrong core count, and a false MT type, because it had > 1 
cluster, but no die. Each cluster repeated the same core_ids. 

That's the same issue I believe the old AMD Ryzen issue had, but I never got the 
required data for that. Had to redo the entire /sys CPU data structure to be: 
phyical_ids > die_ids > cluster_ids > core_ids, which was very tricky to do.

1b. CPU: cpu_arch: fixed some AMD Zen generations, and process nodes, had 
estimated from roadmap, updated with real.

2a. RECOMMENDS: issue #309 notes ifconfig wasn't clearly ID'ed as:
(deprecated, ip preferred)
That's been corrected.

2b. RECOMMENDS: issue #309 also noted that lspci is not listed, which was an
oversight, given the equivalent BSD tools are tested for BSDs. I have no idea 
how that was missed all these years!

2c. RECOMMENDS: added ps test, found a case where that's not installed.

3. GRAPHICS: GPU data: fixed an nvidia 470 Kepler2/Fermi2 ID error. And also 
corrected the arch name, it's Kepler-2, not Kepler.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. MACHINE: Added systemd.machine_id to --filter-uuid filters. Thanks Malcolm 
from Opensuse for pointing out that one.

2a. CPU: Now shows clusters, if found. Clusters seem related to L2 assignment, 
but not always. When no die_id or cluster_id found, won't show that item.

2b. CPU: New AMD, Intel CPU arch models.

3a. GRAPHICS: added cosmic-comp compositor support. No current known way to get 
version.

3b. GRAPHICS: new gpu ids for intel, nvidia.

4. SYSTEM: Desktop: Added basic Cosmic DE detection. Uses XDG for detection,
and cosmic-session for possible future version.

5. INFO: Power: Added system76-power power manager.

6. DRIVES: a huge disk vendor update. New vendors, new matches for existing! 
It's surreal how many SSD and USB makers there are out in the world. It's like 
running a corner store used to be or something. There are a LOT of new matches 
and vendors this time around!

--------------------------------------------------------------------------------
CHANGES:

1. CPU: Moved the new dies:/clusters: block to right after the cpu physical 
count, and before the core count. This makes the order of output match the order 
of organization: physical cpus > dies > cluster > cores. Also if it got a 
positive die_id or cluster_id, will show how many found always for -Ca. Before 
it only showed if greater than 1 die.

--------------------------------------------------------------------------------
DOCUMENTATION:

1a. MAN: Debian Lintian tests found a typo! That's fixed. I would have expected 
many more than 1 typos, so that's good to see.

1b. MAN: A missing space and extra " slightly broke the header:
.TH INXI 1 "2024\-06-27"inxi" "inxi manual"
should be:
.TH INXI 1 "2024\-06-27" inxi "inxi manual"
All that happens due to this is bottom of man output shows:
inxi"    2024-06-18            INXI(1)
so no big deal, but it's corrected anyway.

1c. MAN: Also added inxi version to man info line, I noticed other programs do
that. One more thing to forget during upgrades heh. Maybe I'll add that to 
release.pl since I'm sure to forget it.

1d. MAN: Updated to show clusters added, and to show cluster sample for -C a. 
Also added more complete explanation of when dies/clusters show, and how core
and cluster counts work.

2a. OPTIONS: Fixed typo, thanks codeberg PR. Note inxi branch is not for PR, 
only pinxi. But good to catch typos anyway.

2b. OPTIONS: Added dies, clusters to -Ca, now that dies/clusters always show if 
found, regardless of number.

3a. DOCS: docs/inxi-cpu.txt: had neglected to add in the advanced sys/cpuinfo 
pairs debugger code from the initial Slackware LQ forums threads. Added in 
CPU DEGUGGING primary section, with that code, which is 2 1 liners, could be 1.

This is same basic logic the --debug 2x debugger collects, but sometimes it's 
easier to just get the two files we need from people.

--------------------------------------------------------------------------------
CODE:

1. simplified main::filter_partitions, main::filter_pci_long. Now takes string 
by reference, and removes all copies, so those are more efficient now. 

2a. CPU: finally added in advanced topology structure phys > dies > clusters > 
cores to the main cpu_sys data structure, I'd avoided doing that in past because 
it's hard, and I never found a data sample that had repeated core_ids per die, 
until this one. Note while for RISC-V, this fix applies to the entire class of 
possible repeating core_ids per die / cluster.

2b. CPU: CpuItem:: sys_data_grabber(): Cleaned up, added more globbing items for 
/sys data. Needed to get at least cluster_id, but made globbing easier to parse 
and read, and since the cluster stuff is useful, added more related.

This fix may have unintended consequences of breaking other logic, but I believe 
it is only within the /sys data itself.

2c. CPU: refactored ordering of cpu subs, renamed many to be less ambiguous, now
ordered more consistently. The cpu code fixes made me realize that code was not
easy to follow in terms of where things were arranged, now it's quite 
consistent, with clear section headers, end section etc.

3. NETWORK: cleaned up code in set_ifconfig(), set_ip();

4. PsData: fixed corner case where no ps is present in system. This trips some 
undefined errors in the grabber.

5. DOWNLOADER: failed to handle case of no curl OR wget, and tried running -U
without a downloader anyway.

Made the following changes:
* Network -i: if no dig, and no downloaders, just skips grabbing IPs.
* Updater -U: if no downloader, exit with error message.
* Weather -w: if no downloader, will just show no connection available.

6. DATA: tools/lists/gpu.nv.560.raw added. tools/gpu_raw.pl, tools/gpu_ids.pl 
updated for nv 560 files.

--------------------------------------------------------------------------------
-- Harald Hope - Wed, 4 September 2024 10:15:08 -0700

================================================================================
Version: 3.3.35
Patch: 00
Date: 2024-06-18
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Added more Wayland wm/de updates: wm, tools, lockers, etc. This list will grow 
slowly over time, I'm sure. A new but very old distro, T2 SDE added, for distro
ID, mine package manager.

Adding support for something as uncommon as T2 has a primary value that such 
systems, particularly very old ones, tend to expose certain corner case data 
alternate syntaxes (clang --version, /etc/issue), which then makes inxi overall 
more robust. 

For example, because T2 used /etc/issue to show an ascii login, the actual first 
line was just two literal lines, so the distro name appeared as two lines. This 
was because there was an assumption that the first line of /etc/issue would 
always be the distro name. Added filters to not use issue value if it does not 
contain at least 3 characters.

Also added in premilinary Loongson CPU/GPU support, but for GPU, have only 1 
product ID to match, and no other meaningful data. CPU may work, but needs real
hardware based testing to confirm. Obviously I can't do it, so if any Loongson 
users want to test and report, feel free. Or not, up to you. Framework for full
support it there now.

--------------------------------------------------------------------------------
SPECIAL THANKS:

1. mrmazda, as is often the case, for tracking and spotting issues with graphics 
and desktop data. He also noticed the weird output for urpm repos, which is now
corrected, as well as finding some errors with rpm package counts, which led to
a small refactor of the rpm logic in PackageData.

2. GRAPHICS: gl_data(): gfxstrand on issue #303 for figuring out what was 
breaking OpenGL Mesa driver version detection. (was extra (git-..commit-ID) at 
end of version string).

3. DistroData: codeberg user r1w1s1 in issue #304 for pointing out that the '+'
part of the distro name can be meaningful, as in Slackware 15.0+, where the +
means it's Slackware current.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. GRAPHICS: GPU device IDs: Intel device ID sources are not being reliable, and 
some IDs vanished from the raw data files. This is too hard to work around, so 
leaving as is. In a sense, Intel is just getting too hard to support, though 
I'll keep trying. But it's not cute anymore.

This applies to Intel CPU Ids too, for some reason, Intel just can't seem to 
manage to create a new CPU family ID, and so are actually running out of their 
256 Family 6 model IDs (2^8, or 16x16 hex). This is bizarrre to see such a huge 
corporation fail to do something so utterly trivial, and suggests that there may 
still be internal engineering issues lingering despite the recent attemps to 
resolve them.

2. PACKAGES: RPM remains unacceptably slow to get a simple package count query, 
even with --nodigest / --nosignature, on one fedora 39 took 7 seconds, and in 
mageia/fedora takes 0.35-0.80 seconds without those flags, which is easily 10x 
slower than most package managers. There is nothing I can do to fix this that I 
am aware of. If anyone knows of other options I can pass rpm to get it to list 
the packages in a sane timeframe, let me know. 

During previous testing, nodigest/signature did speed it up, but that seems to 
have regressed now again in one fedora test case, but does work in most others. 
For now, --rpm flag will be required to see rpm package counts for core rpm 
distros, otherwise people will blame inxi for being slow.

--------------------------------------------------------------------------------
BUGS:

1. Nothing to speak of beyond some fixes.

--------------------------------------------------------------------------------
FIXES:

1a. REPOS: For slpkg, adapted to new syntax for each repo. Retained support for 
older syntaxes.

1b. REPOS: Fixed output for urpm, pisi, and eopkg. These all had the same error,
which was creating a new full repo type line per repo listed by these software 
tools. Now shows as expected:

[repo name] ~ [repo location]

2. main::set_path: added hack to put back in /opt/trinity/bin if distro forgot
to add it to PATH.

3a. SYSTEM: DesktopData: Added fallback test for twin for Trinity version 
detections. This goes along with path fix for this extreme corner case (so far
mageia only one who didn't add trinity location to PATH).

3b. SYSTEM: DistroData: Added filter in case line 1 of /etc/issue doesn't 
contain any valid characters. That's for T2 failure.

3c. SYSTEM: DistroData: main::clean_characters(): removed filter for '+' because 
that can be a meaningful part of the name, as in r1w1s1's codeberg issue #304, 
where the + indicates it's Slackware 15.0 Current, aka: Slackware 15.0+.

4. GRAPHICS: gl_data(): Issue #303 exposed a possible syntax that inxi had not
seen or handled before, the OpenGL core profile version string ending with a git 
commit ID in parens: 
OpenGL core profile version: 4.6 (Core Profile) Mesa 24.2.0-devel (git-f0620dae)
as opposed to handled and expected:
OpenGL core profile version: 4.6 (Core Profile) Mesa 24.2.0-devel

This just required adding another 0 or 1 occurance test for that ending git 
commit string. Really for anything tacked on to the end of the string after the
mesa / nvidia driver version value.

5. PACKAGES: Added support for Mageia's urpmi package counts, using rpm. That's 
either not worked, or broke recently, I don't know which. 

Note that rpm -qa is unacceptably slow (even using --nodigest --nosignature), so 
requires use of --rpm flag for primarily rpm distros. Otherwise they will think 
it's inxi that is slow.

Just to document it, mageia also says they may move to dnf in the future. But 
that should not matter with the redone logic.
https://wiki.mageia.org/en/Ways_to_install_programs#.deb_packages

6. INFO: compilers: made clang version detection more robust.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. SYSTEM: DesktopData: Added the following items:

* menus/launchers: wayland gmenu, onagre, ulauncher, wmenu.

* greeters: slick-greeter/elephant-greeter lightdm, but those are not the same 
as greetd/seatd type greeters so not using, but leaving in comments.

* bars: hybridbar.

* x11 wm: MaXX.

* wayland compositors: MagmaWM, newm [already abandoned], newm-atha [fork of 
newm], niri, Pinnacle. 

2. INFO: PowerData: Added waylock

3a. GRAPHICS: new AMD, Intel, Nvidia GPU IDs.

4a. GRAPHICS: loongson GPU arch data. Note this data is extremely incomplete,
but at least it's got the framework to support Loongson GPUs now. Hard to find
this data in any reliable format beyond process nodes for each CPU, and since 
most GPUs are iGPUs, in theory those should be the same. Maybe some Chinese 
users will decide to provide this info. 

Also see CODE 4b for the tools for this item.

5. PACKAGES: added package manager type mine. That's used in T2, maybe others.
Also added tools gastone, gasgui. 

6. REPOS: added basic T2 svn repo URL handler. Not robust, but that's fine.

7. CPU: added Loongon CPU arch support, that should work reasonably well out of 
the box since also found sample set of cpuinfo files.

Also see CODE 4d for the tool for this item.

--------------------------------------------------------------------------------
CHANGES:

1. REPOS: See FIX 4. Output was silly for repo reports, that's always been 
broken, now correctly shows expected (for urpm, eopkg, pisi):

Active urpm repos:
  1: [repo-name] ~ [repo location]
  2: [repo-name] ~ [repo location]
  
lines per package manager tool, instead of one full repo line per repo in the 
output:

Active urpm repo: Stable
  1: [repo location]
Active urpm repo: Testing
  1: [repo location]
  
2: MAIN::clean_characters(): removed filter for '+' because that can be part of 
the distro name, like Slackware 15.0+ (current, that is). Hopefully this won't
create any issues for other name strings, but it should be ok.

--------------------------------------------------------------------------------
DOCUMENTATION:

1a. DOCS: inxi-desktop-wm.txt, updated for new wm, bars, LM, launcher/menus.

1b. DOCS: inxi-power.txt: added waylock to lockers sectsion.

1c. DOCS: inxi-repo-package-manager.txt: updated for 3 syntaxes of slpkg, with
samples. Also updated for mageia urpm, which has special package list rpm 
requirements.

1d. DOCS: inxi-cpu.txt: added more links and sources for Loongson.

1e. DOCS: inxi-distros.txt: refactored a bit, added top distro names to section
lists, added T2 instructions.

--------------------------------------------------------------------------------
CODE:

1a. MAIN: ProgramData: 

* Had redundant busybox hash key data array, first one was replaced by explicit 
busybox ash version logic in shell, and running one is for init data.

I don't actually know what Perl does when you give it a second case of same key 
name for a hash. Probably worth finding out. But it worked in testing.

* Cleaned up, made consistent ', # unverified' program data key array comments 
to make them easier to find/ Ideally one day we'll get people to help figure out 
these unverified program version data items. Now to find a way to motivate 
them...

1b. MAIN: PackageData: Added --dbg 67 to make rpm packages handling debuggable.
Also refactored a bit, again to make rpm stuff debuggable.

1c. MAIN: clean_characters: refactored, now uses references, not copies, and 
removed '+' from filter. This can be meaningful part of distro name.

2. REPOS: refactored completely slpkg to handle 3 possible config file syntax,
including the 2024-04-19 update which changes it completely. 

It's tempting to apply this to all multi-line repo syntax handlers, though the
cost is losing the order the repos appear in the file, since the data now goes 
into a hash, which Perl does not have ordering, so it has to be sorted on
constructing of repo line arrays.

3. DEBUGGER: Added kdesktop, kwin_wayland, twin --version data, might be useful.
kwin_wayland was an oversight, already had kwin_x11 so just never added wl.

4a: TOOLS: made top comment header syntax consistent, added some GPL to ones 
where I'd forgotten to do that. Updated copyright years. Also made empty line 
use consistent in all the tool files.

4b. TOOLS: gpu_raw.pl: Got rid of manually updated list of nv numeric keys, and 
now extract it it automatically, so updates by itself when I add a new nv driver 
series. Should have made it that way from start, but better late than never. 
Always trying to chip away at anything manual I have to update for these 
matching tables, makes maintaining the features easier.

4c. TOOLS: gpu_raw.pl, gpu_ids.pl: added premilimary support for Loongson GPUs.
Very little data, but did at least get some device IDs for Loongson, but not 
very reliable or accurate. This will need updates in future. Anyone Chinese 
users want to help? 

4d. TOOLS: cpu_arch.pl: added Loongon support, first new CPU arch in a while!

--------------------------------------------------------------------------------
-- Harald Hope - Tue, 18 June 2024 13:16:38 -0700

================================================================================
Version: 3.3.34
Patch: 00
Date: 2024-04-13
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

This is a nice point release that corrects and updates numerous smaller, and
larger, features. Most pressing in terms of numbers affected was the failure
to detect in display, non console, for Wayland without Xwayland running. But 
updates will impact a fairly wide range of systems, though mostly are corner 
case issues, but inxi is all about handling corner cases to make the handling 
of core stuff more robust and less prone to failure or error.

--------------------------------------------------------------------------------
SPECIAL THANKS:

1. RAID: Codeberg issue #301 from olegStreejak helped expose a long standing set
of ZFS components bugs. This was superficially exposed by an unexpected 
undefined value error in -o/--unmounted.

2. PARTITIONS/SWAP: again raised in issue #301, partitions failed to handle 
/dev/gpt/[gpt-lable] syntax, leading to undetected mounted partitions showwing 
in unmounted, and label/uuid not working.

3. UNMOUNTED: codeberg user kysh in issue #302 found a corner case that exposed
bug 2, using raw data as regex pattern, without protecting it. But most 
important, he took the time to report it.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. GRAPHICS/CPU: Intel data is really hard to track, and getting solid lists 
of their gpu vs cpu generations is almost impossible, so these are just going 
to lag a year or two fairly consistently. They also keep jumbling marketing 
names up with physical hardware, making it even more difficult.

--------------------------------------------------------------------------------
BUGS:

1. RAID: zfs_data(): a series of small glitches led to certain cases of BSD 
RAID ZFS component data generating undefined value errors in unexpected places.

The bug and fixes required some careful corrections since there were more than 
1 present, a bad regex pattern. 

2. UNMOUNTED: weak regex fails when mount line item contains regex special 
characters in its string, like: GDRIVE{**6Cm8i**}. Thanks codeberg issue poster 
#302 for reporting this failure. This was already handled correctly in 
partitions, so this was just an oversight.

Solution was to pull apart some combined test arrays, and then use \Q$_\E 
wrappers in the regex. Obviously using raw system data in a regex when you don't 
know what it can contain was always a mistake, but this one just slipped by 
since that syntax is not common.

--------------------------------------------------------------------------------
FIXES:

1. DRIVES: DiskItem::disk_vendor(): Fixed an overly loose SanDisk vendor ID that 
led to a Seagate ST8000DM004-2CX188_WCT193ZX being ID'ed as a SanDisk. The 
culprit was forgetting the 'starts with ^ in:
^X[1-6]\d{2}
Thanks Codebergy issue poster thatso in issue #299 for pointing this out.

2. NETWORK: services: was missing nfsd because it's a kernel process, that's 
corrected. Shows as: [nfsd], so its brackets have to be stripped off first.

3. MAIN: primary DISPLAY test fails to check for WAYLAND_DISPLAY and other 
desktop session environmental variables only present if X/Wayland are running 
current display. This led to $b_display not getting set when for example Wayland 
in Sway without Xwayland, so no $DISPLAY set.

4. GlabelData: glabel status will right align column 1, which is not obvious 
unless you have something like this:
                                gpt/bootfs     N/A  ada0p1
gptid/67d1a56b-7fb2-11ee-a7ba-002590ec5bf2     N/A  ada0p1
                                gpt/efiesp     N/A  ada0p2
                                
This led to the expected splits being off by one. Fix is using 'strip' in 
main::grabber.

5. BSD: PARTITIONS/SWAP: failed to get mapped gpt data, which led to more false
unmounted issues. These were exposed in codeberg issue #301. Added explicit 
detections for /dev/gtp[^\]*/ which means relying on that literal path to be
present. Note that can be gpt or gptid, the latter if it's a UUID type string.

This also led to failures for UUID and LABEL for partitions and swap.

6. SYSTEM: DistroData: changed blankon to use system base from debian_version 
file version. Had as manual before, but when install gets old, that's deceptive
since it will be an ancient Debian sid. Better to call it what it is in the 
actual install.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1a. SYSTEM: DesktopData: Added support for yet another Deepin window manager,
deepin-kwin_x11. Also for deepin-kwin_wayland.

1b. SYSTEM: DesktopData: Added support for hyprlock, hyprland's screenlocker.

1c. SYSTEM: DistroData: Added support for SolyD system base Debian detection.

2. NETWORK: services: added mld. As with nfsd, it's a kernel process: [mld]

3a. GRAPHICS: GPU DATA: added more gpu ids for nvidia, amd, intel.

3b. GRAPHICS: Xorg drivers: added possible future rust nvidia nova driver. Not 
in kernel yet but may be. Also added in various filter lists just in case. 
Search for'nouveau' to find occurances. 

4a. CPU: Added more AMD, Intel CPU Ids. The Intel stuff is getting really 
difficult to track, they refuse to adopt sane family updates, keeping it always 
at 6, and thus cram more and more into finite 2 hexadecimal model numbers, 
leaving marketing terms in place of actual die process engineering. There's only 
so much I can do to work around this, so if you find errors, do the research, 
and submit corrections, keeping in mind these things are super fuzzy.

4b. CPU: Added premilinary support for Loongson CPUs. Using regex to detect 
arch/process info, but not positive how it will handle MIPS tests. No way to 
fully test without running inxi on an actual Loongson system due to the early 
MIPS/ARM type tests inxi runs. We'll see. So far only testing with fake cpuinfo 
files. But it's a start. Any actual Loongson user should test and supply 
datasets if gpu/cpu info is off.

5. DRIVES: More disk vendors, the endless list. Unhandled list grows slowly, 
maybe one day someone will step in and figure out what more of them are, 
assuming they have a unique name string of course.

--------------------------------------------------------------------------------
CHANGES:

1. No Changes.

--------------------------------------------------------------------------------
DOCUMENTATION:

1a. DOCS: inxi-network.txt: added notes for nfsd, mld

1b. DOCS: inxi-desktop.txt: added de wm deepin-kwin_x11, deepin-kwin_wayland.

1c. DOCS: inxi-power.txt: added hyperlock.

2. DATA: data/machine/elbrus/sets: added bootdata/fruid sets. These are from a 
while back but were not labeled consistently, so sorted them into what are 
hopefully actual pairs of data files.

--------------------------------------------------------------------------------
CODE:

1. PsData: Changed set_cmd() to set(), since all ps data is being set, not just 
@ps_cmd. Changed $loaded{'ps-cmd'} to $loaded{'ps-data'} for same reason. Also 
removed redundant check for loaded, and moved first load to IRC test, if not IRC 
type scenario, then loads right before building the items.

2. RAID: zfs_data(): cleaned up to make more debuggable ZFS component data. Some 
of the items would never have worked due to bad regex, and also simplified by 
shifting empty index 0 from @row to make values same as top sections for main 
ZFS Array data. The regex was simply too convoluted to work reliably, so it 
failed under certain cases, FreeBSD Linear ZFS mode for example.

3. CPU: Added data/cpu/loongson cpuinfo data files; added loongson support to
tools/cpu_arch.pl. We'll see if it works, won't know for a while since needs 
a hardware run loongson test, this is just theoretical, but fixes should be 
minor in case it doesn't work.

--------------------------------------------------------------------------------
-- Harald Hope - Sat, 13 March 2024 19:00:08 -0800

================================================================================
Version: 3.3.33
Patch: 00
Date: 2024-02-06
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

A quick point release, one critical bug fix, and a few new features and 
enhancements. Extended the running service from Info: Power: services: to 
Network: Info: services:. The PsData refactor makes this quite easy to do. So
why not?

Also in terms of general usability, added an error handler for options that 
require primary options to be meaningful, that was already there for --label and 
--uuid, but there are several other similar modifier options that were not 
handled.

--------------------------------------------------------------------------------
SPECIAL THANKS:

1. GRAPHICS: Codeberg user malcolmlewis, for being the first to find a fatal bug 
(see BUGS 1) in the newly shipped inxi 3.3.32 codebase. Not complex bug, just 
stupid coding error.

2. OPTIONS: mrmazda has been wanting an options handler that tells users when 
they use an option that only modifies another, without using the primary option. 
That is now working.

--------------------------------------------------------------------------------
KNOWN ISSUES:

1. INFO/NETWORK: Terminology: daemon/service/process: following: 
https://serverfault.com/questions/129055/is-there-a-difference-between-a-\
daemon-and-a-service

* A "Service" could refer to either a Daemon or a Service.

* A daemon is a subset of services that always run in memory waiting to service 
a request.

For example, NetworkManager can be started with --no-daemon option, but still 
be running as an active service, thus, there is a difference.

Note that to remove this ambiguity we use the term: services:

--------------------------------------------------------------------------------
BUGS:

1. GRAPHICS: GraphicsItem::map_monitor_ids(): a stray bit of old syntax tripped 
an impossible data error. Cause was accidentally make a array index be an index 
pointing to an array reference index, leading to failure. Thanks codeberg user 
malcolmlewis for triggering this case, which is not super easy to trip. Never 
tripped in any recent testing, but valid and a bug.
https://codeberg.org/smxi/inxi/issues/298

--------------------------------------------------------------------------------
FIXES:

1. DistroData: Removed a stray print debugger.

--------------------------------------------------------------------------------
ENHANCEMENTS:

1. SYSTEM: DistroData: Added final distro/base name cleaners, remove duplicate
'words' that are not numbers from the distro name if they occur in base name.
Also handles a corner case where name and base are the same string, then it 
just sets base to empty. Only runs with -Sx and successful name and base 
detection.

2. OPTIONS: Moved and updated these from Output Control section to main options:

* Added --ip-limit as synonym for --limit so it fits better with --ip.

* Added --partition-sort, --ps to --partitions-sort, that makes it fit better 
with --partition/--partition-full. It only shows --partitions*, but supports 
either syntax so it doesn't matter how you remember it.

* Added new error handler type: arg-modifier which is used to show missing 
primary option when primary option modifier is used, like --sleep/-C, 
-p/--partitions-sort, -l/-p, and so on.

3. MACHINE: --uuid/-u now also activates UUID item, like partitions. Keeping 
-a adding behavior since we want all that info, but make use of -u consistent
now that using uuid in machine report. Not common though.

4. NETWORK: -n/-i -a now trip a services: report, with a new line: 
Info: services: [services]. These can be daemons or services, same as with Power 
services:.

--------------------------------------------------------------------------------
CHANGES:

1a. MAN/OPTIONS: Re-arranged option locations, moved back to their modified 
options in primary options. Those didn't fit there, they should have been next 
to the options they modify.

* Moved --partition-sort back up to --partitions [from Output Control sections]

* Moved --limit to --ip-limit next to --ip [from Output Control sections]. 

1b. MAN/OPTIONS: changed daemons: to services:

2. INFO: changed Power:... daemons: to services: due to the fact not all 
services are daemons, and some potential daemons can be started explicitly with 
--no-daemon flag (like NetworkManager), which means it is false to say it's a 
daemon. 

--------------------------------------------------------------------------------
DOCUMENTATION:

1a. MAN/OPTIONS: See Change 1, moved --partitions-sort, --limit, back up to main 
options they modify to make it more readily obvious they belong together.

2a. DOCS: inxi-battery.txt: updated, added TLP/tlp-stat info.

2b. DOCS: inxi-network.txt: added DAEMONS tools section.

--------------------------------------------------------------------------------
CODE:

1a. DEBUG: moved the DesktopData::de_wm_debugger() to 
main::feature_debugger(). This is a useful tool and will be used for other 
complex user data debugging requirements where clear output helps develop and 
debug issue. Very useful for --dbg 63 so making general tool. Also used for new
--dbg 66, DistroData, which works in similar way.

1b. DEBUG: Added to SystemDebugger 'tlp-stat -s', forgot that one.

1c. DEBUG: Added --dbg 66 for DistroData, like 63 for DesktopData.

2. SYSTEM: DistroData: refactored to use primary $distro hash ref, this is also 
what is passed back to the System line generator now. Switched most variables to
be hash keys, this allows for debugging and tracking what trips the distro data
for --dbg 66, for logging, and to more rapidly check/add/update distro/base IDs.

3a. CORE: OptionsHandler: small refactor, moved pledge block to set_pledge(), 
and moved all option modifier tests to check_modifiers(). This makes it more 
obvious each set is its own set of actions, and is easier to maintain.

3b. CORE: main::error_handler(): new type: arg-modifier: used in 3a.

3c. CORE: main::make_list_value() replaces main::set_join_sep(), now lists that 
can be too long and require a space after separator are generated all by 
reference, making for easier and more consistent long value outputs.

--------------------------------------------------------------------------------
-- Harald Hope - Tue, 06 Feb 2024 15:16:01 -0800

================================================================================
Version: 3.3.32
Patch: 00
Date: 2024-01-30
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

PACKAGERS: The code repo for inxi is codeberg.org/smxi/inxi. If you have not yet 
changed your packaging source url, you will need to do that. I have extended for 
a few months the mirror of codeberg inxi to github, but I will turn that mirror 
off fairly soon. The pinxi inxi-perl branch mirror is already turned off.

--------------------------------------------------------------------------------

This is a massive upgrade, featuring many core tool refactors, leading to 
significantly enhanced abilities to debug and add support for various features,
particularly desktop type data, but any software type version reports as well.

Many parts of the core logic have been touched, and the testing has been the 
most vigorous in recent memory, thanks to antiX and Slackware, and mrmazda, in 
particular for their significant help making these new features and upgrades
far less buggy out of the box than would have otherwise been possible.

* Finally, a reasonable quality RAM report for Linux with dmi table RAM data, 
without needing dmidecode or root! Uses udevadm, which despite some fairly 
significant weak poinots, is ok, except for issues like module voltage, which 
are stuck at a false value of 1. Also multi memory array system boards have poor 
to no native handling, so inxi tries to work around that failing.

* A big improvement in ability to match xrandr X port ID to DRM port IDs, using
a stable value found in each. This has been a long standing weak spot for multi
monitor display IDs.

* Power data, for suspend/hibernate, screensavers, closes a recent issue #292 
from chromer030. This also extended to running power daemons, and in -S, Desktop 
report, added screensaver and lockers in tools:.

* A huge upgrade to all core Desktop/wm data, including new data types, complete
internal refactoring, including of all program version data, ps based data, etc.
This will massively reduce the risk of errors, bugs, etc, in the future, and 
also makes debugging and adding support for new de/wm far easier.

* Note this change: Desktop info: has been repurposed to the new advanced DE 
info report (KDE Frameworks only currently), and the old info:, which was never 
well named, now is called with:, because it's a report on the various parts, or
components, that make up the de/wm. Also the order was changed in the Desktop
line: Desktop: v: [tk: [v:]] [info: v:] [wm: [v:]] [with:] [tools:] [dm:/lm:]. 

* A big upgrade in the TinyX logic, which should work now to get resolutions for 
TinyCore and possibly other tiny x using distros. That includes detections for 
all known TinyX servers, not just Xvesa.

* With TinyX fixes, now has full support for Slitaz, package manager, distro id, 
repos. And Alpine Linux was enhanced and upgraded re support as well with these
fixes.

OPTIONS REMOVAL/DEPRECATION:
To free up upper case single letter options, merged -W with -w and removed -W, 
which now trips a removed option error. To prepare for -V being removed, that 
shows a deprecated message then the full version. 

Note that if you really care and want -V retained, file an issue, or contact 
inxi and say so. It will only really take one person who has a preference to 
retain -V to keep it. That will be decided next inxi, if nobody cared, then -V 
will be removed. Ideally say why you care, and why typing --vf is too much. 

The use of -W was always an error, forced I think by some options handling 
limits of bash. -V was just to have a single letter --version, but I think given 
-v is verbosity, -V is actually slightly confusing. Also, single letter options 
are in short supply now, and there's no point in wasting them on stuff where 
it's not really needed to get fast easy output for features.

Also removed the long since deprecated --gpu, --nvidia, --nv, were removed, and 
will show option removed message.

--------------------------------------------------------------------------------
SPECIAL THANKS:

1. GRAPHICS: Android compositor: Thanks codeberg.org/smxi/inxi issue poster 
Mhowser for providing an Android data set from a rooted FxTec Pro1-X phone, 
which gave enough info to polish up and add some more Android support. But only 
on rooted devices, but Android doesn't let you learn much if the device is not 
rooted. That issue is lost because it was put on pinxi issues, before pinxi 
was switched to use inxi issues to avoid confusion.

2. DOCS: data/audio/audio-datasets: mrmazda provided his large collection of 
audio data debuggers, which have alsa, systemctl, pulse, etc, debugging data.

3. ONGOING: mrmazda, for finding and forwarding subtle to not so subtle issues.
See Bugs 4, Fixes 6b. In this case pointed me to the relevant forum posting that 
exposed the error, which was enough to track it down.

4. SYSTEM: DesktopData: The people over at antiX forums were really helpful 
finding/testing the new desktop/wm etc logic. Many glitches, errors, bugs, etc, 
found and corrected thanks to the excellent testing. ile and abc-nix in 
particular found some significant issues that were finally resolved. Also thanks 
to Brian Masinick, rokytnji, anticapitalista for helping making antiX for all 
these years.

https://www.antixforum.com/forums/topic/testing-pinxi-next-inxi-user-ram-\
report-no-root-sudo-and-much-more/

5. RAM: The new udevadm was significantly improved and corrected thanks to the 
Slackware forums people. As is often the case, when it comes to having complex 
non-standard hardware, they came though, and exposed some key problems which let 
this new feature come out the door in much better shape than it would otherwise 
have done.

https://www.linuxquestions.org/questions/slackware-14/new-inxi-pinxi-\
features-user-ram-reports-and-much-more-testers-4175732843/

--------------------------------------------------------------------------------
KNOWN ISSUES:

1a. SYSTEM: DistroData: no obvious way to detect edubuntu, bunsenlabs, sorry.

1b. SYSTEM: CompilerVersion::version_proc(): the /proc/version string is far 
too unreliable because distros keep making up new syntaxes, which makes regex
parsing fail consistently over time. Ubuntu was the latest culprit. Need a 
better data source, ideally from /sys. Latest breaks handled with much looser 
regex, but only matter of time before a new string pattern breaks it.

2. GRAPHICS: No API type data so far for non Xvesa TinyX servers. They don't 
seem to support the -list option like Xvesa does.

3a. CORE: very old busybox ps did not accept any arguments, so will always fail.
However, this is not important since new busybox has supported that for a long 
time.

3b. CORE: in some cases, ps -wwjp $pppid truncates long command names, like 
io.elementary.t[erminal]. No idea why since -ww is supposed to make it not 
truncate.

4. CPU: for at least AMD Threadripper 2950x 16 core, 2 die, core counts are 
wrong, but since I never got the required data, and can't guess, that will 
remain wrong until I get data from a comparable CPU to debug it using the CPU 
data pairs required to figure it out. Why people file issues that only their 
system data can resolve, then refuse to supply that data, is beyond me, I was 
hoping to get away from this type of problem by going to codeberg, but 
apparently it's a universal issue. My guess is that for the Zen+ only series, > 
1 die, the core numbers were per die, not per physical CPU as with all other 
AMDs and Intels. Just a guess though, not going to act on it because fix is very 
hard if that's the case, and I won't work on it without the real data.

5. RAM: udevadm data: 

* For some reason, voltages are reported as 1, for all types, or not at all. 
This is almost certainly a bug with udevadm or the way it collects data, so inxi 
shows note: check when they are all equal to 1.

* Unfortunately the udevadm authors neglected to provide RAM array and matching 
device handles so we can easily match array to device, and they also totally 
neglected reporting on actual arrays found, for systems with > 1 array, they 
list only the specs for the one array. inxi has to do the work to actually try 
to generate the array capacities etc. This relies on a weak hack, assume that 
Node [x] refers to the array, which so far has been the case, but very weak, and 
very poor execution by udevadm ram feature authors, sad to say.

* As far as we can tell, udevadm does not support:
udevadm info -p /devices/virtual/dmi/id
option until somewhere between v245 (no support) and v249 (supported). This 
means that some distros that ship a pre 249 version will not get user RAM data. 
Known is Slackware 15.0 (but is in Current), TinyCore 14, and probably other 
tiny distros. Many LTS type frozen pool distros will probably not support it.

--------------------------------------------------------------------------------
BUGS:

1. SYSTEM: kernel gcc version: see FIXES 4a. While this is not a bug per se, 
since who can predict when a distro will change format to /proc/version, users
might see it as one. This impacted various distros.

2. INFO: init detection for busybox /sbin/init hung forever on slitaz, now 
works, and adds the busybox version as well. This was exposed by slitaz. Also 
was showing sysvinit for TinyCore, the slitaz fix also fixed the failure to ID
BusyBox init on TC.

3. CORE: see Fix 7b, inxi used wrong path for its .d config locations, never 
spotted it since I never use those, showed up in codeberg issue #295 when that 
did not work.

4. GRAPHICS: EGL: see Fix 6b. Was missing one error message type, leading to 
undefined value print error.

5. CPU: vascom in issue #297 reported an unset value error in disabled smt 
cpu speeds, see CODE 8. This required a CPU debugger data upgrade to handle 
more cleanly. It appears that a Perl behavior has changed, it was returning '' 
for undefined read, now seems to be returning the correct undefined. Or could 
be kernel that changed that, can't say, but creates buggy looking output with 
Perl errors. No actual data bugs though.

--------------------------------------------------------------------------------
FIXES:

1. DOWNLOADER: Small error in assignment could lead to onscreen error output. 
Not worth a new release fix. Added to inxi master as 3.3.31-2.

2. SENSORS: corner case with undefined value where it's almost always defined 
for load_sys_data(). Shows undefined on screen output. Never seen this until 
today, but that's how it goes. Also added to inxi master as 3.3.31-2.

3a. PARTITIONS: added possible filter path: /dev/(block/)?loop[0-9]+, saw that
on Android.

3b. PARTITIONS: added vboxsf, not a typo, that's a client mounted host fs for
vbox, works like nfs/smb re filters etc. Never seen that one before, probably 
because I almost never use the host > guest shared folder feature of vbox.

4a. SYSTEM: CompilerData: kernel gcc version: found _more_ syntaxes for the gcc 
string in /proc/version. The randomness of this string generation forced a redo 
of the regex, which should now catch almost any gcc/clang version number no 
matter how weird the syntax is. The new regex is much looser and handles all 
known variants.

4b. SYSTEM: DesktopData: 

* Fixed broken fvwm-crystal ID, that one is tricky, and it got broken by 
accident a while back.

* Fixed broken echinus hackedbox mvwm detections, had neglected to add those in 
PsData::set_gui() for some weird reason. Also had forgotten to add some of those 
to ProgramData::set_values(). Also note that TinyCore ships with hacked box, but 
their -version is broken, shows v: 2001 because they forgot to add in the actual 
version in the string. Forgetting to update all the locations of those string 
lists was a big reason that the ps handler was fully refactored, and all uses of
its data, too hard to maintain when having to update in multiple locations the 
[--snip--]
