All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Types of changes:
- Added: for new features.
- Changed: for changes in existing functionality.
- Deprecated: for soon-to-be removed features.
- Removed: for now removed features.
- Fixed: for any bug fixes.
- Security: in case of vulnerabilities.
This release has entirely been made possible by contributors! A huge thank-you to:
- Solène Rapenne (@rapenne-s), who added gotop to Nix
- Anatol Pomozov (@anatol) for:
- simplifying and improving the *nix
getTemps()
logic.- LOC: 9075 -> 9056
- ABC: 4367 -> 4359
- Fixing the nvme temps for Kelvins to Celsius
- simplifying and improving the *nix
- Stanisław Pitucha (@viraptor), for noticing that a gopsutil introduced a build issue on OSX and needed another bump.
- sitiom, for noticing that gotop is available via scoop, on Windows
- Heimen Stoffels (@vistaus) for the Dutch (nl) translation
- Clayton Townsend II (@ctII) for the page-up/page-down process scrolling patch
- @kqzz, for adding sort-by-command, and especially for being so patient for the merge.
Because of the UI control changes, it gets a minor version bump.
- Packages for gotop are available in Nix and scoop ()
- Dutch (nl) translation
- page-up/page-down for process scrolling
- sort-by-command in the processes (hotkey: n)
- Code improvements to
getTemps()
- A gopsutil bump had affected Darwin builds
- nvme temps were (incorrectly) displayed
- Sorting of labels had been broken at some point; in the process of fixing
this, I re-wrote the
Less()
logic, which is now a solid 10% faster.
Lots of push requests (relatively, for gotop) in this release! The contributions are appreciated.
- Metrics from SMART subsystems have been added for Linux and Darwin; it's temperatures right now, but the opportunity to report other metrics is now more easily added. Note that there may be issues with this, as it's a new source of metrics, and there may be bugs in (e.g.) the temperature scale, or some devices not being identified. Thanks a bunch to @rare-magma and @anatol for working on the contribution.
- The network widget now shows different colors for the upload and download lines (#174, thanks @quantonganh!)
- A
PACKAGERS.md
document has been added that explains how to simulate the github cross-compiling build process locally -- without having to push changes upstream. This helps with finding compile-time cross-compile issues.
- @droundy accepted a patch for the parseargs library, so removed the dependency on my fork
- Some
gopsutils
warnings that provided no value were being reported; they've been silenced (thanks @ars.xda!)
- zh-CN updated (#205, thanks @tigerfyj!)
- Put the manpage in a more appropriate place
- When the RPM and DEB builds were re-enabled, the version format was giving the packages indigestion; in particular, the dpkgs would not install. This resulted in several tickets -- all of which should be fixed. (#212, #206, #209)
- I misspelled "Celsius" yet again. It really upsets people when I do this. (#207)
- Unit tests were not running on Darwin
- Trying to use the
@latest
keyword was causing problems in github actions - ru_RU text fixes (thanks @ivanignatenko28!)
- The nvidia and nvidiarefresh parameters were not being loaded from the config file (#217)
Several issues pushed back to 4.1.4 to allow this one to go out.
- htop layout
no-X
options to disable flags (thanks @mjshariati98)- #158, adds a man page. This can be generated with
gotop --create-manpage
; it's installed in Arch, RPM, and DEB packages.
- Replaced
opflag
(a fork ofogier/pflag
) library withdroundy/goopt
. This should be backwards compatible, but it's possible there may be some differences.goopt
has built-in support for generating man pages, and supports anti-flags -- both items that were in the todo list.
- More doc typo fixes (thanks @vabshere)
- #200, colorschemes in config file were causing a crash
- Several folks contributed to building on new Apple silicon (@clandmeter, @areese, and @nickcorin). This took a distressingly long time for me to merge; it required updating and testing a newer cross-compiling CGO, and I'm timid when it comes to releasing stuff I can't test.
- French and Russion translations (thank you @lourkeur and @talentlessguy!)
- nvidia support merged in from extension
- remote support merged in from extension
- Spanish translation (thanks to @donPatino & @lourkeur)
- There's a link to the github project in the help text now
- Upgrade to Go 1.16. This eliminates go:generate for the language files, which means gotop no longer builds with Go < 1.16. It does make things easier for translators and merging.
- The remote monitoring documentation is a little better.
- Extra spaces in help text (#167)
- Crash with German translation (#166)
- Bad error message for missing layouts (#164)
- @JonathanReeve, @joinemm, and @plgruener contributed typo and mis-translation fixes
- The remote extension was ignoring config-file settings (no ticket #)
- Show available translations in help text (#157)
- Add more badges in README
- Replaces a dependency with a fork, because
go get
-- unlikego build
-- ignoresreplace
directives ingo.mod
- Adds links to the extension projects in the README (#159)
- Missing thermal sensors on FreeBSD were being reported as errors, when they aren't. (#152)
- Small performance optimization
- github workflow changes to improve failure modes
- Bumped
gopsutils
to v3.20.12 - Bumped
battery
to v0.10.0 - Debug logging was left on (again) causing chatter in logs
- No temperatures on Raspberry Pi (#6)
- CPU name sorting in load widget (#161)
- The status bar got lost at some point; it's back
- Errors from any battery prevented display of all battery information
The minor version bump reflects the addition of I18N. If you are using one of the languages that has a translation, and your environment is set to that language, the UI will be different. Translations are very welcome!
Thanks to the people who submitted PRs and translations to this release.
- Adds multilingual support. German, Chinese (zh_CN), Esperanto (#120)
- The uploaded license was a 2-clause BSD, which is functionally equivalent; however, since the contributor agreement was for MIT, to make it clean the uploaded license file was changed to the Festival variant of MIT. (#147)
- Per-process CPU use was averaged over the entire process lifetime. While more of a semantic difference than a bug, it was a unintuitive and not particularly useful. CPU averages are now weighted moving averages over time, with more recent use having more weight.
- iSMC was still in the code; iSMC violates the MIT license, and this has been cleaned out.
- Versions are now embedded during the package build, rather than being hard-coded. More info in #140
- No temperatures displayed (#130), a recurring issue.
- Cannot show the CPU usages of the processes (#135)
- power widget consumes all RAM (#134)
- Disk usage not showing up at all (#27)
- Missing CPU: Lists 7 of 8 expected (#19)
Darwin-only release
- The change to remove GPL dependencies did not remove all dependencies. This corrects that (#131)
Command line options have changed.
- Adds support for system-wide configurations. This improves support for package maintainers.
- Help function to print key bindings, widgets, layouts, colorschemes, and paths
- Help prints locations of config files (color schemes & layouts).
- Help prints location of logs.
- CLI option to scale out (#84).
- Ability to report network traffic rates as mbps (#46).
- Ignore lines matching
/^#.*/
in layout files. - Instructions for Gentoo (thanks @tormath1!)
- Graph labels that don't fit (vertically) in the window are now drawn in additional columns (#40)
- Adds ability to filter reported temperatures (#92)
- Command line option to list layouts, paths, colorschemes, hotkeys, and filterable devices
- Adds ability to write out a configuration file
- Adds a command for specifying the configuration file to use
- Merged cmatsuoka's console font contribution
- Added contribution from @wcdawn for building on machines w/ no Go/root access
- Log files stored in $XDG_CACHE_HOME; DATA, CONFIG, CACHE, and RUNTIME are the only directories specified by the FreeDesktop spec.
- Extensions are now built with a build tool; this is an interim solution until issues with the Go plugin API are resolved.
- Command line help text is cleaned up.
- Version bump of gopsutil
- Prometheus client replaced by VictoriaMetrics/metrics. This eliminated 6 indirect package dependencies and saved 3.5MB (25%) of the compiled binary size.
- Relicensed to MIT-3 (see #36)
- configdir, logdir, and logfile options in the config file are no longer used. gotop looks for a configuration file, layouts, and colorschemes in the following order: command-line;
pwd
; user-home, and finally a system-wide path. The paths depend on the OS and whether XDG is in use. - Removes the deprecated
--minimal
and--battery
options. Use-l minimal
and-l battery
instead.
- Help & statusbar don't obey theme (#47).
- Fix help text layout.
- Merged fix from @markuspeloquin for custom color scheme loading crash
- Memory line colors were inconsistently assigned (#91)
- The disk code was truncating values instead of rounding (#90)
- Temperatures on Darwin were all over the place, and wrong (#48)
- Config file loading from
~/.config/gotop
wasn't working - There were a number of minor issues with the config file that have been cleaned up.
- Compile errors on FreeBSD due to golang.org/x/sys API breakages
- Key bindings now work in FreeBSD (#95)
- Only report battery sensor errors once (reduce noise in the log, #117)
- Fixes a very small memory leak from the spark and histograph widgets (#128)
The FreeBSD bugfix release. While there are non-FreeBSD fixes in here, the focus was getting gotop to work properly on FreeBSD.
- Address FreeBSD compile errors resulting to
golang.org/x/sys
API breakages - Key bindings now work in FreeBSD (#95)
- Eliminate repeated logging about missing sensor data on FreeBSD VMs (#97)
- Investigated #14, a report about gotop's memory not matching
top
's numbers, and came to the conclusions that (a)gotop
is more correct in some cases (swap) thantop
, and (b) that the metricgotop
is using (hw.physmem
) is probably correct -- or that there's no obviously superior metric. So no change.
- Fixes (an embarrasing) null map bug on FreeBSD (#94)
This is a bug fix release.
- Removes verbose debugging unintentionally left in the code (#85)
- kitchensink referenced by, but not included in binary is now included (#72)
- Safety check prevents uninitialized colorscheme registry use
- Updates instructions on where to put colorschemes and layouts (#75)
- Trying to use a non-installed plugin should fail, not silently continue (#77)
- Improved documentation about installing layouts and colorschemes
The version jump from 3.3.x is due to some work in the build automation that necessitated a number of bumps to test the build/release, and testing compiling plugins from github repositories.
- Device data export via HTTP. If run with the
--export :2112
flag (:2112
is a port), metrics are exposed as Prometheus metrics on that port. - A battery gauge as a
power
widget; battery as a bar rather than a histogram. - Temp widget displays degree symbol (merged from BartWillems, thanks also fleaz)
- Support for (device) plugins, and abstracting devices from widgets. This allows adding functionality without adding bulk. See the plugins decision wiki section for more information.
- Keys not controlling process widget, #59
- The one-column bug, #62
Bugfix release.
- #15, crash caused by battery widget when some accessories have batteries
- #57, colors with dashes in the name not found.
- Also, cjbassi#127 and cjbassi#130 were released back in v3.1.0.
- Fixed: Fixes a layout bug where, if columns filled up early, widgets would be consumed but not displayed.
- Fixed: Rolled back dependency update on github.com/shirou/gopsutil; the new version has a bug that causes cores to not be seen.
- Added: Logs are now rotated. Settings are currently hard-coded at 4 files of 5MB each, so logs shouldn't take up more than 20MB. I'm going to see how many complain about wanting to configure these settings before I add code to do that.
- Added: Config file support. $XDG_CONFIG_HOME/gotop/gotop.conf can now contain any field in Config. Syntax is simply KEY=VALUE. Values in config file are overridden by command-line arguments (although, there's a weakness in that there's no way to disable boolean fields enabled in the config).
- Changed: Colorscheme registration is changed to be less hard-coded. Colorschemes can now be created and added to the repo, without having to also add hard-coded references elsewhere.
- Changed: Minor code refactoring to support Config file changes has resulted in better isolation.
Bug fixes & pull requests
- Fixed: Rowspan in a column loses widgets in later columns
- Fixed: Merged pull request for README clean-ups (theverything:add-missing-option-to-readme)
- Added: Merge Nord color scheme (jrswab:nordColorScheme)
- Added: Merge support for multiple (and filtering) network interfaces (mattLLVW:feature/network_interface_list)
- Added: Merge filtering subprocesses by substring (rephorm:filter)
Re-homed the project after the original fork (trunk?) was marked as unmaintained by cjbassi.
- Changed: Merges @HowJMay spelling fixes
- Added: Merges @markuspeloquin solarized themes
- Added: Merges @jrswab additional kill terms
- Added: Adds the ability to lay out the UI using a text file
- Changed: the project filesystem layout to be more idiomatic
3.0.0 - 2019-02-22
- Add vice colorscheme #115
- Change
-v
cli option to-V
for version - Revert back to using the XDG spec on macOS