================================================================================
Version: 3.3.09
Patch: 01
Date: 2021-11-22
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Thanks manjaro user alven for finding a bunch of corner and not so corner case 
errors, glitches, documentation oversights, etc.

This is a point release between the coming full CPU refactor and the current
set of bug fixes and issue handlings.

This release also contains the debuggers for the new CPU data logic, which are
important to get this CPU refactor stable and reliable across old/new systems,
different operating systems and platforms.

Wanted to do this intermediate releaase to get the current fixes out, which 
make inxi overall better for CPU issues, but do not handle the core requirement
to do a full refactor.

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

CORRECTION:

1. On release notes for 3.3.08: due to a long delay to get real debugger data 
from the person who had the issue, but finally getting it after the release of 
3.3.08, there was NO bug in ps wwaux output. Something else was creating the 
linewraps, maybe the subshell, it's basically impossible to know since we never 
got a real debugger data set, which is the only real way to get the actual same 
data inxi will see. 

Was it a subshell wrapping the output? We just can't know, nor are we likely to 
ever find out.

This highlights very well however why some issues are essentially impossible to 
ever fully resolve without the --debug 22 dataset. This bug/fix is definitely in 
that class of issues.

It's never good to accuse another program of having a bug when it doesn't, so 
sorry to ps authors, no bug or issue exists for ps in this area.

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

1. wiryonolau issue #259 points out that if --tty is used, default IRC filter
rule is still active and on. Because his case appears to be from an autostart 
using Bash, which then gives up to find the parent at dash, which then makes
inxi believe it's in an IRC shell client, that issue doesn't appear to be 
resolvable.

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

1. Documentation, help menu and man page showed wmctl instead of wmctrl, 
which for someone who reads the help man, leads to command --fake wmctl failing.
Thanks manjaro user alven for finding this typo.

2. For dmidecode cpu data, had global total values for cache that could result 
in wrong output values, 2x or more wrong for L1 / L3 cache on linux. Difficulty 
is preserving that data for bsd, which in general do not show phys cpu counts, 
and thus make showing totals off. Created new '-total' item for each L cache 
type, which will handle > 1 cpus, and also can be used to determine if > 1 cpus 
present!.

3. Manjaro user pointed out that hub types were wrong, this is because inxi was
using the INTERFACE ID values for hubs instead of the TYPE values. For all other
device types, INTERFACE is correct, but for hubs, we needed TYPE, so fix is to
detect INTERFACE 9/0/0 and if TYPE present for that, swap.

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

1. For > 1 cpu systems, with dmidecode sourced cpu cache data, can now determine 
physical cpu count based on comparing L2 and L2-total values. This means that 
when dmidecode is used on BSD for CPU data, inxi may now be able to deduce that
it is a > 1 cpu system.

2. Forgot to set $run{'filter'} to 0 for whitelist start client detection.

3. Going along with bug 3, changed 'Full speed (or root) hub' to:
Full speed or root hub, to make more clear that it's one or the other, or both.

4. For apply_filter(), added test if <superuser required> just return the 
string.

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

1. Going with bug 1, and fix 1, for > 1 cpu systems, will now show for all 
cache: items L1: 2x 1.5 MiB (3 MiB), same for L2 and L3. This is far less 
confusing than showing the totals without explaining what they are.

2. Going along with 1, now root is not required to show L1 and L3 -Cxx on Linux
as long as the system is reasonably new, about after 2008, and has getconf -a 
supported. That support is came in somewhere around 2.10, not sure exactly when.
Debian Etch had it, Sarge did not, Ubuntu 9.10 had it. Tinycore does not have 
getconf at all. This will probably be replaced by a more robust full cpu /sys 
data tool.

3. Added ht to default short -Cx flag list, that should show, and it's short.

4. Added --no-filter to activate -Z, --filter-override isn't consistent with
other --no-xxx options, even I forgot it. No changes, just another way to use
-Z.

5. For issue #260 added pch as a new sensor output type, it's kind of a builtin
southbridge / northbridge in the CPU die, but it's not a core, and has a 
different temp. Will anyone even know what pch is? probably not, but who cares.

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

1. No longer showing for > 1 physical cpu systems the sum total of L1/2/3 cache
data. Now shows per cpu L1/L2/L3, and if > 1 cpu, shows for example:

cache: L1: 2x 512 KiB (1024 KiB) L2: 2x 2 MiB (4 MiB)  L3: 2x 20 MiB (40 MiB)

For single physical cpu output remains the same:

cache: L1: 576 KiB L2: 3 MiB L3: 16 MiB

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

1. Updated help/man for L1/L3 cache -Cxx changes.

2. Updated man and help to suggest -Z for --tty.

3. Forgot to note -v 7 adds -f, added to man/help.

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

* Added 'getconf -a' to debugger, that may be usable for cpu cache data, need to
gather data on that to confirm. that's regading issue #257 cache glitches.

2. Removed all * $physical_count for cache data in cpu_properties, that is now
handled by creating string with cpu count, per cpu caches, and total in parens.

3. Added in fallback failure case for the ZFS file system issue exposed by 
accident in issue #258 - will now log in debugger the error, so we can try to 
find what is going on there, impossible to reproduce until we find what zfs or 
more likely, freebsd, changed there. Could be hyper specific, some weird thing 
like a person making a zfs device name with space, impossible to guess. Note 
that since the freebsd user declined to supply any data to help resolve this 
issue, then closed it, we're back where we usually end up with FreeBSD issues, 
either a Linux user (or worse, me) willing and able to find the issue and supply 
the debugger data required shows up, OR the issue is ignored as valid but 
impossible to resolve.

RANT: Note that this also confirmed to me that in order to preserve my own 
sanity and not waste endless hours trying to get data, from now on, unless 
utterly trivial, if a FreeBSD user refuses to promptly supply the required data, 
the issue will be closed with a freebsd-closed-no-data-supplied label, which 
means, valid but not possible to solve due to user refusing to help me help 
them. 

Come on FreeBSD users!! If you want help, and inxi to support your distro, help 
me help you!! If not, then why are you even filing an issue in the first place? 
Do you expect faeries to spread magic bug / issue fixing faerie dust over inxi 
and then activate it with their little wands? This is growing tiresome to be 
honest because it's so utterly predictable. 

4. Shuffled order of sensor type detections, there was a slim chance that a non
gpu sensor type could have string intel in it, so put the gpu sensors second 
to last, before 'main'. 

5. Started refactor of cpu core/cache logic. Added feature to cpu_arch, and 
changed it to cpu_info since now it gives by vendor/family/model/stepping both
micorarch and cache/core math array returns. Also started refactor to make more
predictable, with increased comments, about what is going on in cpu_properties
to avoid breaking existing correct results.

6. Added to --debug /sys cpu data globber tool, that will help debugging the new 
/sys cpu data feature, will let me insert the file data directly into the logic.

7. Added CpuItem::cpu_data_sys() with debuggers, that will now start collecting
user cpu data whenever the debugger is run, though it's not active yet.

8. Set $Data::Dumper::SortKeys = 1; dugh, could have saved big headaches if had
found this before. Makes all keys sorted cleanly, gets rid of random hash sorts.

--------------------------------------------------------------------------------
-- Harald Hope - Mon, 22 Nov 2021 12:45:00 -0700

================================================================================
Version: 3.3.08
Patch: 00
Date: 2021-10-21
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Bug fix release. 2 bugs that can impact all users under the right circumstances
were detected and fixed. Thanks manjaro users there for finding and reporting 
those. No other changes.

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

None.

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

1. Manjaro user ben81 located a critical bug in hardware raid output, this bug 
impacts ALL users of hwraid that run inxi with -xx option. Bug was a bad copy 
paste, the classic, had updated all the pci type data blocks at once, and hw 
raid unfortunately had a slightly different logic due to being part of the more 
complex RAID block of logic. Was trying to use an array, not a hash, reference.

Thanks ben81, I would never have spotted this one, and it would impact 100% of 
all inxi users with hwraid on their machine who ran inxi with -xx option.

2. Also, ps wwaux parser was spitting out an undefined index error. This is 
caused by one of two things:

* ps has an issue, and is apparently at times failing to respect ww, unlimited 
line length, and wrapping anyway. This is the likely cause.
* the user terminal for some inexpicable reason has decided to hard wrap long 
lines. This is very unlikely, but has to be considered as a possible cause. 
Since these commands run in a subshell, this is VERY unlikely.

Workaround this failure by double checking that line split item is defined, if 
not, next row. Thanks Carpenter for finding that one.

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

None.

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

None.

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

None.

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

None.

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

1. Added workarounds for bug 2. Corrected silly copy/paste error for bug 1.

--------------------------------------------------------------------------------
-- Harald Hope - Thu, 21 Oct 2021 12:28:15 -0700

================================================================================
Version: 3.3.07
Patch: 00
Date: 2021-10-11
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Some very nice issue reports have helped correct various corner case issues. 
Mint users helped find a big one with lspci.

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

1. Unsure how to handle Android case where inxi correctly does -r test, see bug 
3 fixes 6, but android incorrectly claims it is readable when it is not 
readable, then the reader tool can't read the file and fails with permissions 
error. This is one of those weird android errors that are pretty much impossible 
to fully work around, but we can get rid of the readline() errors when reader() 
was trying to work on a file handle that did not exist, that part was an inxi 
bug.

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

1. dm detection was not using case sensitive search for duplicates, leading to 
cases where dm like slim / SLiM failed to get detected and then repeated in 
output. Anonymous BSD debugger dataset exposed this issue, thanks.

2. In certain corner cases, like ARM Android, sub reader got passed a file that 
had passed the is readable -r test, but it still failed with permissions error, 
which then led reader to try to keep working with a null $fh. While in theory 
nothing non readable should be passed to reader(), that fails when the OS fails 
to actually follow correct readable rules, as in this case. Added protections in 
reader() to handle this case, now will show error, but will not try to work with 
$fh, that is how it should have been all along, but this is a very corner case. 
Exposed by an anoymous ARM debugger dataset.

Thanks Termux user for creating the debugger dataset that exposed this issue.

3. lspci parser didn't null port value each iteration, resulting in all pci 
items getting port values. Not a big deal, port is only used one place, but good
to find and correct that error.

4. Not an inxi bug, but would appear so to end users: lspsci -nnv implements a 
truncating routine and breaks the first line for each bus id. See Fix 6 and Code 
fix 3. 

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

1. -S and -I would show Console: tty pts/3 even though pts device is a pty, not 
a tty. The only time this happened was when connecting to a remote system using 
ssh or something like that. Local console still shows Console: tty 2 since that 
was correct, but Console: tty pts/2 was confusing since technically it's not a 
tty, it's a pty, pseudo terminal.

Now shows, when relevant: Console: tty 2 OR Console: pty pts/2.

2. Issue #252 notes that Emacs (and possibly other code/text editors with native 
embedded terminals) includes a native virtual terminal that also follows 
configuration rules from the editor to highlight trailing spaces. This created 
odd looking screen output in Emacs vt mode since inxi always sets key/value 
pairs with a white space ending as separator for next key value pair for screen 
output mode, resulting always in a trailing space on each vt screen line. Fix 
was to remove the last trailing space just prior to the print line point to 
avoid this issue.

As a general thing, I'm curious to learn if any editor other than Emacs actually 
contains its own virtual terminal that also follows the editor rules for output. 
Or if any virtual terminal has such a highlight trailing space rule, which would 
be imo so annoying it's hard to understand why a vt would implement it. Easy to 
understand why Emacs (or any editor) does it, but an editor also being a vt AND 
applying certain editor display configurations to the vt is a very specific and 
unique circumstance I'd say.

Odd, historical, but there it is, why not handle it?

3. ARM / Android case where certain files passed the read -r test, but failed 
with permission denied error. This tripped a further glitch where reader() would 
then try to work with the failed $fh, see bug 2. This was really more a fix 
than a bug, since the bug in this case was in android permissions tests, not 
inxi, but it appears to be a bug to end users, so it's handled now.

4. Another ARM/Android, there was a voltage regulator IP that contained the term 
wlan so it tripped false positive for network match. Added a new type, 
regulator, to filter out those, like codec and dummy do already.

5. For issue #254, fix for cygwin ERR-102 in partitions, add cygwin test, new 
dev type, 'windows', dev base then becomes E: or whatever. To avoid confusing D: 
for a key: with no value, added D:/ slash.

6. Mint people discovered lspci issue, lspci -nnv has a bug where it will 
truncate the output of the first line per bus ID if it's over some arbitrary 
amount, then tack on rev and other items to end of that string, which leads to 
the block: [vendorID:productID] getting truncated or removed altogether. Clearly 
an oversight, at least I hope it's an oversight on lspci's part, but have to 
work around the issue anyway since it may never get fixed, and has been around a 
long time. Bug is in lspci 3.7, 3.6.4, and probably earlier. 

Also added in a fillin tool for this rare case, lspci -n data is used to replace 
the missing values.

Note that while lspci recommends using -mmv, for machine parsing, apparently 
nobody noticed that -mmv doesn't have the same data items as -nnv, sigh.

7. Issue #255 noted that the combination of:
GoogleDrive Hogne: fuse.rclone 15728640
which is two word remote fs AND a fs type with a '.' in it would fail to trip 
the handler for that multi word remote mount name. Also failed to detect as 
remote fs, added fs specific test since the actual mount name doesn't permit
reliable detection as remote type. Testing for trailing ':' isn't safe since 
':' alone is not an invalid character in a file system name as far as I know.

Further, this exposed that the ^^ space replacements for $row[0] fs > 1 word 
name were not being reset soon enough in the logic, that's also corrected.

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

1. Neglected to support standard package config file override 
/etc/inxi.d/inxi.conf item. This is mainly useful for packaged inxi's who want 
to override the distro maintainer /etc/inxi.conf file. Test priority is the same 
except /etc/inxi.d/inxi.conf comes right after /etc/inxi.conf now in the test 
sequence.

2. Added basic cygwin id, yes, inxi works in cygwin, apparently, with some
issues. Added cygwin os id to distro ids. 

3. Added --version info for debugger, sometimes we want to know what verion of
a tool, like lspci, in case it has a bug or something.

4. Added exfat and apfs to unmounted fs types.

5. More disk vendors!! New vendor ID matches!! Yes, yes, you've heard it all 
before, the list never ends!! The eternal chaos of existence manifested in just 
how many IDs can be generated for new and old disk vendors alike!!! 

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

1. No changes this release.

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

1. Pull request #253 corrected typos, urls, and other errors in man page, 
inxi/pinxi comments, pinxi.1/inxi.1, README.txt, and updated LICENSE.txt to 
current gnu wording.

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

1. Forgot to add lspci debugger fake data option, that's corrected. That's 
--fake lspci, now works, didn't before, only the bsd pci tools had fake switches 
previously, since lspci never needs debugging really, but did now to test an 
issue report.

2. Added -CYGWIN to debugger file name. Added -ANDROID if ARM and if android.

3. With Fix 6, refactored entire lspci_data block, added lspci_n_data item, 
which matches bus id of lspci -nnv when corruption occurs and replaces vendor, 
product, and if also missing, rev version. I kind of knew I'd have to do this 
fix one day, that was the same fix logic used on the BSD pci tools, which have 
similar issues with consistency in output, or lack thereof.

This refactor is long term very good because it avoids an entire class of 
possible errors, and makes pci detections far more robust.

4. Created new repo, for legacy code, inxi-legacy. Moved branch inxi-c to 
inxi-legacy/xorg-c, moved branch xiin to /xiin, moved branch inxi-legacy (binxi) 
to inxi-legacy/inxi-legacy. Those directories each contain all the files each 
branch had in it. 
 
This gets rid of some branches clutter, and nobody needs to see those anymore, 
but if they care, they can look at them. Note that to do this, I had to merge 
their histories, which was not that nice, but git is just really bad at this 
type of stuff, so that's how it goes.

Times like this really make me miss svn's directory based branch approach...

5. Simplified sub fs_excludes, simplified regex constructors for all function 
that use this data, made list more fault tolerate by adding global (fs)?(\d{0,2}
which means all file systems can have or not have 'fs' at end, and all can have
or not have a version number in string.

6. Exposed by issue #255, refactored slightly ordering of partition filter
logics and variable resets in the df output processing loop.

7. Added --fake partitions, to help debug odd corner cases like cygwin glitches.

--------------------------------------------------------------------------------
-- Harald Hope - Mon, 11 Oct 2021 19:01:15 -0700

================================================================================
Version: 3.3.06
Patch: 00
Date: 2021-07-21
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

New version! Fixes!! Bug fixes! More bug fixes!! Cleanups!

Most of these were exposed by issue #251 filed by LukasNickel, then further
revealed via his debugger data set, which showed two more bugs. Well, bugs,
changed syntaxes, same difference to end users.

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

1. Work is ongoing to add btrfs support to -R (similar to softraid or zfs), 
basic stubs and debuggers added, but reporting tools are not as robust (and 
often require sudo/root for reasons that escape me) as I would have hoped, so 
it's slow. One of these days... Normally would not release with working stubs, 
but there were enough real issues/bugs to warrant just getting 3.3.06 out the 
door, then going on with the btrfs feature for -R. But so far I view the 
reporting tools as inadequate, unfortunately.

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

1. As initially discovered in issue #251 there are alternate syntaxes which had 
never been seen before for remote mounts, fuse mounts, etc. In this case, it was 
fuse.sshfs that was not removed from the Disk total:... used: leading to silly 
1000+% used percentage. Note that while technically inxi could try to be clever 
about reporting impossible percentages, so far those have led to bugs getting 
reported, then fixed, so I think it worth leaving it as is.

2. When --swap/-j is used with no other arguments, failed to show uuid or label. 
Discovered this while testing fix 2.

3. Bug which is not a bug but will appear as such to users, nvme temps were 
failing in -Dx due to a change in how those values are located in /sys. See fix 
3.

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

1. Going along with Bug 1, and considering that only in 3.3.05 was the nfs4 
remote fs failure to identify/exclude, the entire section involving remote/ fuse 
etc file systems was refactored, and extended to add many more previously 
non-handled remote and fuse type file systems. Significant extension of known 
remote filesystem types, distributed file systems, overlay file systems, all to 
try to avoid having more distributed/remote/fuse file system issues. Also added 
test to support fuse. or fuseblk. type prefixes for any of these. Hopefully 
there will be fewer issues related to distributed and remote and overlay type 
file systems in the future.

2. Made all label/uuid triggers global, that is, -ol shows unmounted with 
labels, -ju shows swap with uuid, and so on. This may require a bit more tweaks 
to get exactly right, but in general, this is a purely cosmetic fix, that is, 
try not to show label/uuid for partition/mounts that probably can't have those 
values.

3. There was a change in the way nvme /sys temperature paths were handled, an 
actually understandable, albeit as always annoying, one, because inxi actually 
had to do a sort of convoluted hack to get the nvme block devices temperatore 
paths before, now that hack is not required for newer kernels (5.12+), though 
for kernels that had the old paths (5,8, 5.9 at least, don't know when paths 
changed) left in the old method. Now tests are more granular, and inxi should 
find temperatures regardless of which method is used for nvme and sd type 
drives.

4. Another somewhat irksome random change, again, understandable since the new 
syntax is more consistent in output than the previous one, but still breaks all 
existing parsers that use the changed field names. Lsblk did NOT change the -o 
input field names, but DID change the output field names, which broke the 
internal inxi parser, and led to null lsblk data. 

Changes were - or : separators in input values are output as _ always. that is, 
MAJ:MIN becomes MAJ_MIN. Also corrected the debugger lsblk to use the same 
output fields for -P -o as the actual lsblk parser uses internally so these 
failures can be spotted more readily, as it was, it was literally only because 
someone submitted the debugger dataset, and was running lsblk 2.37, where I 
believe this behavior change happened. Solution was to just use regex patterns 
instead, [:_-], in the parser. Big fear now is that they will randomly stop 
supporting the -o input field names that contain - or : and change that too 
without any real warning or deprecation notice.

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

1. Going with bug and fix 1, added avfs, afs, archivemount, avfs, ceph, gfs, 
glusterfs, gmailfs, hdfs, ipfs, kosmos/kfs, lafs, mergerfs, mhddfs, moosefs, 
ocfs, openafs, orangefs, overlayfs, pvfs, s3fs, sheepdog, vmfs, and several 
others to the exclude list for disk used and show label/uuids for partitions. 

2. A smattering of disk vendors added. 

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

1. Going with fix 2, -l and -u no longer will trigger -P by default, now if -l 
or -u are used without -j, -o, -p, -P, an  error will explain that you must use 
one of those together with -l or -u. This was the only way to get the -l and -u 
switches to turn off/on label/uuid reports in swap, unmounted, and partitions 
consistently. Triggering -P was really a legacy behavior from when the only 
options were -p or -P, and --swap and --unmounted did not exist. I found it 
increasingly odd that unmounted would show label/uuid always but partitions only 
with -l/-u.

2. This was a pet peeve, sometimes field names just bug me (like 'Topology: did 
for CPU, now  corrected to Info:), the Drive: rotation: was one such annoyance. 
I had recycled that to indicate SSD, which was a feature request, but that was 
always a sloppy solution, and made no sense, since SSD isn't a rotation speed.

Now it reports a much more logical:

ID-1:...... type: HDD rpm: 7200 
or
ID-1:...... type: SSD
or
ID-1:...... type: N/A

This also corresponds to the intended meaning much better. The HDD type was 
always present internally if rotation speed is detected, but was not used. Now 
will also show type: N/A if reliable type detection failed, which will also be 
more consistent.

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

1. Brought most of inxi.changelog (this file) into a consistent state, re 
whitespaces, readability, consistent use of various header / section names. 
Ideally while I don't expect anyone to ever sit down and read this changelog, it 
will be now much easier to scan to find whatever interests you. This change goes 
along with ongoing changes in docs to in general try to be usually 80 columns 
wide.

2. inxi-resources.txt, inxi-data.txt are updated with more raid, partition, file 
system values and data to go along with bug, fix, enhancement 1.

3. Man and help updated to indicate -u and -l no longer trigger -P by default.

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

1. Ongoing refactors, bringing the codebase to the point that matches current 
coding styles. Removed remainder of whitespaces in conditions and for/while 
loops, for example:

if ( condition ) { 
becomes:
if (condition){
and
if ( ( test set 1 ) && ( test set 2 ) ) {
becomes: 
if ((test set 1) && (test set 2)){

and so on. That dropped over 2 KiB of whitespaces. This went along with fixes 
that have been ongoing to change to this whitespace use style, but previously it 
was only being  done when that situation was hit in a local block, now it's been 
completed globally.

This continues the style refactor that has been ongoing for a while now, to 
bring inxi into a consistent state, since when it started, it was more pressing 
to get the bash/gawk mess translated to Perl than it was to get the Perl itself 
to be as good/consistent as possible, so now those issues are being slowly 
unravelled, and hopefully will set inxi on course for its next 10 years.

It was starting to get annoying, because some parts of inxi used those spaces, 
and all newer ones didn't in general. Now it's one behavior throughout the whole 
program file.

2. Refactored the entire fs exclude for disk used data, and integrated those 
values into a global tool that is used either to exclude file systems from disk 
used totals, or to not show uuid/labels for the excluded 
remote/distributed/overlay type file systems, which in general don't have uuid 
or labels.

--------------------------------------------------------------------------------
-- Harald Hope - Wed, 21 Jul 2021 18:23:21 -0700

================================================================================
Version: 3.3.05
Patch: 00
Date: 2021-07-11
--------------------------------------------------------------------------------
RELEASE NOTES:
--------------------------------------------------------------------------------

Many small updates, enhancements, bug fixes!!! We've been saving them up!! Here 
they are!! Don't wait!!

Thanks mr. mazda for many issue finds, and suggestions.

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

1. Due to unfixable rpm slowdowns, removed package counts for default output for 
rpm based systems. We were seeing delays of up to 30+ seconds just to list the 
rpm package count, which is absurd, even after the rpm optimizations inxi 
already runs. To allow rpm users to get excluded by default for rpm package list 
counts, added --pkg flag plus a short message telling them to use that flag to 
get the installed package count if they want it.

Changes like this are very unfortunate, but in 2021 for a package manager at 
times to require over 30 seconds to generate a trivial installed package list is 
just not acceptable. One of the reasons this release was delayed was this was 
not an easy decision to make, it's very rare support for a feature is removed 
for specific tools due to how badly the tools may perform. Note that whatever
higher level tool is used, like dnf, zypp, it's still the same speed, they all
appear to use the same core engine.

Basically this decision was forced since either inxi looks really bad and slow,
when it's not, or the actual cause was removed from default outputs.

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

1. Small bug in nfs blacklist for disk used led to nfs used being added, which
leads to silly used percents. This is corrected.

2. If ram vendor ID failed, inxi would delete the part number. Oops. This was
related to the Mushkin failures.

3. Close to a bug, though not one internally, but to users would appear as one: 
ZFS does not act as expected, zpool list did not in fact return the pool size, 
which I had always assumed to be the case, but in a very strange decision, does 
return something very close to the pool size for mirrors, but NOT for z1 or z2 
pools, then it returns the total size of the drives that make up the pool. To 
call this strange behavior would be an understatement. The fix was to modify the 
logic to use zfs list instead to get the size data. This also makes the drive 
total report far more accurate, since it lists usable space now for ZFS as was 
always intended. The cause of this was simply that I'd always had access to zfs 
mirrors, not z1 or z2 arrays.

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

1. OpenSuse and maybe others use kdm3 for Trinity, not kdm, so dm was failing.

2. Going along with fix 1, made kde version detection more robust so may catch
more fringe / corner cases for kde desktops. These were mainly added to correct
Trinity desktop version detections.

3. Mushkin ram vendor ID was failing, that is or should be corrected.

4. Added in /dev/disk/by-id handlers for zpool components, there are several
variants, wwn-, pci-, scsi-, ata-, but they all map to the real /dev drive IDs.
Failure to unmap these led to failing to match components and get size info 
etc for zfs.

5. See DOCUMENTATION: 2, language changes for weather feature abuse.

6. Failed uptime report data due to yet another random syntax change in the
data. See Code Change 1 for details on the fix.

7. A change at some point made sensors show 0 instead of N/A due to improperly 
setting undefined sensor values as 0. This in particular happened with mobo 
temps on systems without known mobo temp sensors.

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

1. Going along with the rpm issues, added dnf.conf support to yum/dnf repo 
types. Not sure how that one was missed, but there it is. This should tighten 
repo reports for dnf/yum/zypp types.

2. Added LeftWM. LeftWM confirmed working. Added unverifed detections for: 
penrose, 2bwm, 5dwm, catwm, mcwm, monsterwm, snapwm, uwm, wingo, wmfs, wmfs2. 

3. Added xfwm as a compositor type, that had been left out, somewhat on purpose, 
since xfwm can run in compositing or non compositing mode. But should show since 
many users use compositing mode now.

4. Added OpenMediaVault distro ID and systembase handlers.

5. Going along with zfs bug fix 3, using zfs list data for free, size, 
allocated. Trying to understand how zfs developers actually thought about this 
is nearly impossible so just used what seems to correspond to reality most. Also 
shows raw values for zfs data in RAID along with regular ones to make clear 
which is which value.

6. Added more CPU architecture ID matches for AMD Zen and a variety of Intel. 
Both vendors finally released some new CPUs and the data became available, which 
doesn't always happen quickly.

7. A bunch of new disk vendors and vendor IDs added. Never stops, like the sands 
of time, like the ocean waves, like the scuttling crabs scrounging around in the 
seaweed in the foam where the outgoing wave left its mark...

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

1. Added leftwm keybindinigs to inxi-data.txt desktop/wm section. Updated more 
wm in that section as well, and list more info on wms for future reference etc.
Also reorganized and made more readable wm section.

2. Help/Man now make more clear that automated requests or excessive use of the
inxi weather feature are not under any circumstance permitted. There had been 
some ambiguity and lack of clarity about what abuse is, now it should be more
clear.

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

1. Refactored uptime parser logic, the code and regex was just getting too messy 
and difficult to work with and debug, now it works similar to how the revised 
BSD parsers run, the regex are pulled apart and made more granular so a small 
syntax change ideally won't break the detections as easily.

2. Cleaned up sub cpu_arch() and made all the arch values line up nicely, over 
time I notice that almost invariably stuff done to save lines of code makes 
code harder to read as the feature expands, so it's generally worth just 
unravelling it so it all stacks and is easy to scan/read. Also removed extra 
white space in parens, which is something I'm leaning more towards but it's not 
worth fixing all at once so it's just done where it's noticed.

That's using: 
if ( /test/ ){ 
rather than:
if (/test/){

I believe using more white space helped with Perl comprehension in the 
intermediate stages, but is not required anymore and just looks like extra 
whitespace now.

--------------------------------------------------------------------------------
-- Harald Hope - Sun, 11 Jul 2021 18:36:42 -0700

================================================================================
Version: 3.3.04 
Patch: 00 
Date: 2021-04-16
--------------------------------------------------------------------------------
RELEASE NOTES: 
--------------------------------------------------------------------------------

Enhanced features!! Huge BSD upgrades! Bug Fixes!! Elbrus Fixes!! More bluetooth 
fixes!! What are you waiting for?!!?

A special thanks for significant help, ongoing, leading to a huge boost to BSD 
support, Stan Vandiver, who did a lot of BSD testing, and setup many remote 
access systems for testing and development of the latest BSD upgrades. If you're 
a BSD user, you can thank him for helping to expand BSD support!

An ongoing thanks to Mr. Mazda, for continuous testing, suggestions, and helpful 
ideas.

Take special note of the code folding fixes in Fix 1, those open up possible 
free software code editors that can be used to work with inxi to more than just 
Kwrite/Kate, to include scite and geany, nice lightweight code editors. You 
can't do real work in inxi without code folding, so getting this finally 
resolved was I think worth it.

Also, for the first time ever!! inxi is now using Pledge, well, if 
OpenBSD::Pledge module is available, which is currently only in OpenBSD, since 
that's the only system that supports Pledge security, except for Serenity, but 
inxi doesn't support Serenity. Note that OpenBSD was smart and added 
OpenBSD::Pledge and OpenBSD::Unveil to Perl Core modules, thus removing any hoop 
that might stop a Perl program from implementing it. Nice going OpenBSD guys!

The addition of OpenBSD softraid support for RAID and CRYPTO types highlights 
the problem with --raid and --logical, where --raid is really just a subset of 
Logical volume management. Note that while the hardware RAID feature only lists 
the actual PCI RAID device, OpenBSD bioctl supports hardware RAID out of the 
box, something I'd thought of doing in inxi for a few years, but it's too much 
work, but bioctl has done the work, which is impressive. Can't do much without a 
lot of debugger data there though, but it's worth being aware of. In this case, 
since softraid is the primary device, I opted to call Crypto and RAID types all 
RAID, same as with linear zfs.

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

1. FreeBSD: USB drivers. I really gave this a try, but could not get any logic 
to be stable across systems and varying syntaxes used. Will wait for FreeBSD to 
add drivers to usbconfig -vl. Note that this makes it not possible to correctly 
match USB networking devices to their respective IF data, so USB networking IF 
will fall back to the undetected IF-ID, which means it was found but not 
connected to a specific hardware device. 

2. FreeBSD Battery Report: there are non-objective values for Battery state data 
in sysctl output, as in minutes remaining, which has no meaning, and percent 
charge (percent of what? original design capacity? current actual capacity?). If 
data with voltages, design/current capacity in Ah or Wh, is made available, 
support will be added. Note that there are 3rd party tools that do supply this
data in a usable format, but they are not in core so no point.

3. BSDs All: have found no way to get physical CPU counts. this will lead to odd 
outputs in some cases, like a 2 cpu system reporting itself as a 2x the actual 
core counts single CPU, but the data just isn't there as far as I know. 
Dragonfly in some cases appears to have that data.

4. BSDs All: so far no way to get live per core cpu speeds using a file or fast 
command query. Thought I'd found a way in FreeBSD but that was not the correct 
clockrate values, or inconsistently right/wrong, so not using it. Also saw the 
same issue with max/min frequencies in FreeBSD so removed that item, it's 
better to show nothing than data that is not reliable or actually not even 
referring to what it seems to be.

5. BSD SOC Support: An issue poster asked why FreeBSD (but really BSD in 
general) SOC ARM device, like RaPi, support, was so weak in inxi. The reason is 
simple: to do SOC ARM device data in a meaningful way requires a complete path 
based data structure, which the BSDs do not appear to have, at least from what 
I've seen so far. See Linux's /sys data structures for examples of what is 
required to add or expand inxi SOC device support in inxi. It's hard even with 
that type of rich path based data, and without it I won't try.

The bright side is inxi runs perfectly on such devices, no errors, which was 
amazing to see, and spoke volumes of the recent work done to extend support for 
the BSDs.

6. Perl / inxi, when run as root, shows read error when trying to open a 200 / 
--w------- permission /sys uevent file for reading. The test works as expected 
as user, but not as root. Perl will try to read it when run as root even though 
it has no read permissions, only write. This in reality only manifests on very 
old /sys, from Debian Etch kernel 2.26 days.

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

1. tput + urxvt / FreeBSD: There appears to be a bug in Arch Linux urxvt that 
leads to failed terminal/console size from tput. Also while trying to resolve 
this bug, discovered that if you use "tput cols 2>/dev/null" in FreeBSD, for 
some inexplicable reason tput puts out defaults 80 cols x 24 rows. Why? Who 
knows. Added in non numeric tests of output to handle errors from tput instead.

The bug appears to be what rxvt reports itself as vs what it is actually running 
as. This issue isn't present in any other distro I tried, but could just be a 
new bug in urxvt, don't know.

2. Elbrus CPU: Ongoing issue #197 Elbrus poster gave sample of new 2C3 cpuinfo, 
that exposed some bugs internally in inxi Elbrus handling, I was using integer 
values instead of hex for model IDs in the Elbrus logic, which would fail after 
model 9.

3. BSD dmesg.boot: The logic used for dmesg.boot data processing had errors, and 
had to be fully redone because of the need to detect in a reliable way the 
current state of USB drives. This logic now is much more robust and reliable, 
and no longer relies on using 'uniq' values per line, which would fail in all 
kinds of situations.

4. OpenBSD USB Speeds: bugs fixed for OpenBSD speeds, these were found during 
the USB data refactor testing process. 

5. BSDs: in some cases, wrong memory used values were being generated, this 
should be largely corrected now. Also pulled the weird NetBSD use of 
/proc/meminfo which had wrong data in it, and now use vmstat for all BSDs, which 
after the used bug fixes, is more reliable for BSDs.

6. All systems: CPU stepping would report as N/A if stepping 0, luckily I came 
across some systems with an actual stepping: 0, which are not common.

7. FreeBSD: dmidecode sourced L2 cache data failed to show correct totals in 
some cases. Due to no MT detection possible for FreeBSD currently, these totals 
will still be wrong, but now it says note; check to let users know.

8. dmidecode: some cases were getting the wrong failure error message, this bug 
became exposed due to OpenBSD locking /dev/mem even to root, which then failed 
to show the expected message. This was a bug, and is now corrected.

9. FreeBSD: partition swap size didn't show in at least some cases, that's 
corrected.

10. Linux Partitions: partitions would let doubled swap items through in several 
cases, and also failed to create in rare cases matches for hidden partition 
mapped id's. Finally tracked down the actual cause, when moving the partition 
filters I'd forgotten to add swap into the filter list, oops. But now it will 
catch duplicates in several different ways, so that's fine.

11. Unmounted: Failed to properly handle detecting RAID components in the case 
of lvm, mdraid, it was only working for zfs. This was an accident, and should 
now be corrected.

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

1. Code Folding: Note that this was NOT a bug or failure in inxi, it was a bug 
in scintilla/scite geany code editors with folding, basically if you commented 
out logic, without using a space or other marker after the comment #, folding 
would break in weird ways. Obviously the core scintilla engine should IGNORE the 
darned # commented out lines, but it doesn't, which is a real bug. But not in 
inxi.

This was however worth working around, because without folding, you can't work 
on or learn how inxi works, and the only editor I know of in the free software 
eco-system that can handle folding reasonably accurately was until now 
Kwrite/Kate code editors, and those have some real, long standing, weaknesses, 
and bugs around folding that have never been resolved, and yes, did notify them 
about them, and no, they remain unfixed after years, or they were fixed briefly, 
then broke again.

So it was important to expand the base of possible code editors to more than 
just the KDE stuff. Fixing this was tedious, but I think worth it. On the bright 
side, geany/scite folding / unfolding is FAST, and once the code issues that 
triggered folding failures were resolved, very accurate, much better than Kate's 
to be honest, though Kate isn't as picky, but Kate's unfold top nodes has been 
broken more often than it's worked.

To avoid this issue, it's also important to configure geany/scite to use a space 
after the comment when using keyboard shortcuts to comment out lines/blocks. 
Same goes for Kate/Kwrite, by the way.

2. Battery: Forgot to add battery-force to -v7, which means you would never see 
the battery line in full output if there was no battery present, this is similar 
to how raid-forced worked, it was just an oversight which I hadn't noticed until 
testing the new BSD battery logic.

3. Indentation: small indentation fixes on Sound Server data. Those are visible 
with -y1, that is.

4. OpenBSD PCI: enabled Device matching to PCI networking device, this required 
an odd little hack, but seems to be pretty reliable, and allowed me to add 
driver to PCI device reports as well. Not sure why driver isn't in pcidump -v 
but it probably will be in the future. Note to self: add in support for that so 
if they include it in a future release, it will suddenly 'just work', assume 
they use the same basic syntax as usbdevs -vv output.

5. BSDs: Added in some null data protections for BSDs, which do not always have 
all the data types found in Linux, those would trigger Perl undefined value 
errors, which are warnings that inxi failed internally to test for null data in 
that, but it's hard to know when to do that when the data is basically always 
there in Linux.

6. Debugger: Added test for required Net::FTP module in debugger, had forgotten 
to make that test explicit, which led to odd failures.

7. BSDs: nvme detections should be better now. But I have seen no live test 
system to confirm the fixes work as expected, plus, at least, OpenBSD swaps 
nvme0 to sd0 internally, so I'm not actually sure how that data will even work, 
we'll see how that goes.

8. BSDs: oddly, despite using 0x hex numbers almost everywhere, for CPU 
stepping, the stepping is in decimal, which is even odder because CPU makers 
list their steppings as hex in many if not most cases. In case this is corrected 
in the future, if 0x appears before stepping number, will not then try to 
convert to hex since it already is.

9a. CPU L3: Subtle, probably won't change behaviors, but L3 cache is per physical 
CPU in every case I've found, so never multiply value by cores for L3. Like 
everything, this may lead to corner cases being wrong, but that's life, it will 
also lead to the data being right for most users.

9b. CPU L1: Different L1 syntaxes found so inxi now uses more loose detections, 
should cover most OpenBSD L1 variants at least.

10. BSDs: inxi was using internal 'sleep' right before reading /proc/cpuinfo, 
but that was silly for BSDs since cpu speeds there come from sysctl, so the BSD 
sleeps are now running before sysctl if CPU data feature is required.

11. Too many to remember, but lots of subtle message output changes to make more 
