Coder Social home page Coder Social logo

ogri-la / strongbox Goto Github PK

View Code? Open in Web Editor NEW
161.0 4.0 7.0 16.72 MB

a World of Warcraft Addon Manager aimed at Linux players

License: GNU Affero General Public License v3.0

Shell 0.51% Clojure 99.44% Dockerfile 0.05%
world-of-warcraft addon-manager addon-installer addon-updater addons package-manager wow-addon-manager wow addon-managers warcraft

strongbox's Introduction

Strongbox, a World of Warcraft addon manager

Strongbox is an open source, advertisement free and privacy respecting addon manager for World of Warcraft.

It runs on Linux and macOS.

It supports addons hosted by Curseforge, wowinterface.com, Tukui, Github and Gitlab.


Notice: tukui.org no longer hosts addons except elvui and tukui as of 2023-06-01.

Unfortunately the location of these two addons has changed as well as details around their access.

I've dropped support for tukui.org in 7.0.0 and instead mirror tukui and elvui releases on Github. This automatically includes them in the Github catalogue.


Notice: Curseforge addons no longer receive updates as of version 5.0.0, released Feb 1st, 2022.

Use the "Source" and "Find similar" actions from the addon context menu (added 4.9.0) to help migrate addons away from Curseforge.

I also maintain a list of other addon managers.


strongbox version 7.0.0 strongbox version 7.0.0 strongbox version 7.0.0 strongbox version 7.0.0

strongbox version 7.0.0 strongbox version 7.0.0 strongbox version 7.0.0 strongbox version 7.0.0

Installation

AppImage

Strongbox is available as a standalone AppImage binary from the releases page.

chmod +x strongbox-x.x.x-x86_64.AppImage
./strongbox-x.x.x-x86_64.AppImage

Arch Linux and the AUR

Arch Linux users can install Strongbox from the AUR (mirror).

Flatpak and Flathub

Flatpak users can install Strongbox from Flathub.

flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak --user install la.ogri.strongbox

Caveats when using Flatpaks:

  • Strongbox application config and data lives at ~/.var/app/la.ogri.strongbox on the host and not ~/.local/share or ~/.config.
  • Possible font problems around using incorrect fonts and aliasing.

Java

Java users can run Strongbox using the .jar from the releases page.

java -jar strongbox-x.x.x-standalone.jar

Usage

Strongbox works by matching installed addons to a catalogue of addons available online.

Some addons are matched directly to the catalogue but others may require you to search the catalogue and re-install them before that match can be made.

Some addons bundle other addons that do not appear in the catalogue. You will need to re-install the 'parent' addon that bundled those addons.

First time usage:

  1. Select File -> New addon directory and select your "Addons" directory (/path/to/WoW/_retail_/Interface/Addons)
  2. Select Addons -> Re-install all to re-install all matching addons
    • warning! this may downgrade the version from what is installed to what is available. If unsure, re-install addons individually using the context menu.

Afterwards, use the Update all button to update all addons with new versions available.

Features

Recognition

Under no circumstances whatsoever does this software:

  • deal with advertising or advertisers
  • collect, monitor or report upon your usage of Strongbox or your data
  • solicit, beg or manipulate for donations
  • attempt to monitise you, the user, in any way

This software also tries very hard to not cause a bother - for you or the addon host.

I benefit so much from the hard work of those who write Free and Open Source software, including addon developers, that it's my privilege to offer this small piece back.

Special thanks to:

Privacy

This software interacts with the following remote hosts:

These hosts may redirect requests to other hosts.

These interactions use a HTTP user agent header unique to Strongbox so that it may be identified easily:

"strongbox/x.x (https://github.com/ogri-la/strongbox)"

Running Strongbox with --debug will generate a file called debug.log that I may ask you to upload if you report a bug. Some of the details it contains are:

  • addons detected in the currently selected addon directory
  • paths to Strongbox configuration and data:
    • /home/torkus/.local/share/strongbox
    • /home/torkus/.config/strongbox
  • details about your OS and the version of Java in use:
    • strongbox.version=4.0.0
    • os.name=Linux
    • os.version=5.10.11-arch1-1
    • os.arch=amd64
    • java.runtime.name=OpenJDK Runtime Environment
    • java.vm.name=OpenJDK 64-Bit Server VM
    • java.version=11.0.10
    • java.runtime.version=11.0.10+9
    • java.vendor.url=https://openjdk.java.net/
    • java.version.date=2021-01-19
    • java.awt.graphicsenv=sun.awt.X11GraphicsEnvironment
    • javafx.version=14
    • javafx.runtime.version=14+9

Features in detail

classic and retail addon support

"Classic", "Classic (The Burning Crusade)", "Classic (Wrath of the Lich King)" and "Retail" versions of WoW are all distinct addon systems.

Some addons support all systems in a single download, some support classic as an alternate build of the same addon, some addons support classic only, some addons have been split up into multiple addons. There is a lot of variation.

Click the drop-down next to your addon directory and select either retail, classic or classic (TBC).

This will restrict the types of addons that can be installed in the current addon directory.

The Strict checkbox allows you to enforce or relax restrictions and mix together addons meant for different systems in the same addon directory. If an addon is available for multiple addon systems it will prefer one over another:

  • retail will prefer retail addons, then classic, then classic (TBC) then classic (WotLK) then classic (Cata)
  • classic will prefer classic addons, then classic (TBC), then classic (WotLK), then classic (Cata) then retail
  • classic (TBC) will prefer classic (TBC) addons, then classic (WotLK), then classic (Cata), then classic then retail
  • classic (WotLK) will prefer classic (WotLK) addons, then classic (Cata), then classic (TBC), then classic then retail
  • classic (Cata) will prefer classic (Cata) addons, then classic (WotLK), then classic (TBC), then classic then retail

If uncertain which addon system an installed addon supports, look at the WoW column value on the installed tab and compare it to the Version value in the list of WoW public client builds.

install addons from URL

Strongbox supports installing addons using URLs from addon hosts.

Addons installed this way are always available regardless of the catalogue you've selected.

For example, addons imported from Github will be available even if you otherwise use wowinterface.com addons exclusively.

Click File from the top menu and select Import addon and paste the URL of the addon you want to install.

catalogue search

Strongbox supports searching for addons from the following addon hosts:

Click the search tab and start typing.

When you search for an addon you are searching a list of thousands of addons that live in a file called a catalogue.

Click Catalogue from the top menu and choose your preferred catalogue.

The default catalogue is the 'short' catalogue. It contains all addons from all supported hosts that have been updated since the beginning of the previous expansion. This is currently Battle For Azeroth, released 2018-08-14 and the catalogue has approximately 2.8k addons.

The 'full' catalogue contains all addons from all supported hosts, ever, and is approximately 7.2k addons large. It contains many unmaintained addons.

There are also per-host catalogues, like a 'wowinterface' catalogue, and Strongbox supports selecting between all of them.

Catalogues are updated weekly. New addons released during the week will not be present until the next week. Addons can be installed using its URL in these cases.

The 'user' catalogue is a little different. It's initially empty but grows as addons are starred while searching or imported from addon hosts, like Github. These addons also appear in search results. Individual addons from the user catalogue are checked for new releases normally, but the catalogue itself can only be updated manually.

Click Catalogue from the top menu and select Refresh user catalogue.

The user catalogue lives at ~/.config/strongbox/user-catalogue.json.

bulk update

Many addons can be updated in one operation. Addons with updates available are highlighted.

Click the Update all button next to your addon directory.

install addons from multiple sources

Strongbox supports installing addons from the following addon hosts:

Click the search tab and begin typing. Select the addon you wish to install and click the install selected button.

Addons hosted on Github and Gitlab must be using releases with custom assets before they can be installed.

Github API authentication

Installing and updating addons from Github uses the Github API.

Anonymous usage of the Github API allows 60 requests/hr before your requests are blocked.

Strongbox can authenticate with the Github API by specifying the GITHUB_TOKEN environment variable using a Personal Access Token.

Environment variables can be set in many different ways:

  • from the shell like: $ GITHUB_TOKEN=my-secret-token strongbox
  • by modifying ~/.config/plasma-workspace/env for KDE and setting GITHUB_TOKEN=my-secret-token
  • by modifying ~/.profile for Gnome and setting GITHUB_TOKEN=my-secret-token
  • system-wide (affecting all users) by modifying /etc/environment and setting GITHUB_TOKEN=my-secret-token

import and export lists of addons

Your list of addons can be exported to a simple format that allows them to be imported again later.

Click File and then select Export list of addons.

This allows for simple backups of the current addon directory and the sharing of lists of addons.

Addons installed using File -> Import addon in any addon directory can be exported as a single list.

Click File and then select Export the user-catalogue.

safeguards against bad addons

Addon .zip files that contain top-level files or top-level directories missing a .toc file will not be installed and the downloaded .zip file will be deleted. This is a guard against poorly or maliciously constructed .zip files.

Corrupted zip files that cannot be read or decompressed will be deleted.

warnings when addons install other bundled addons

A warning is issued when an addon is unzipped and contains multiple inconsistently named directories.

For example, installing RealUI will emit this warning:

RealUI will also install these addons: Kui_Media, Kui_Nameplates, Kui_Nameplates_Core, Kui_Nameplates_Core_Config, RealUI_Bugs, RealUI_Inventory, RealUI_Skins, RealUI_Tooltips, BadBoy, BadBoy_Guilded, BadBoy_CCleaner, Raven, Raven_Options, nibRealUI, nibRealUI_Config, Masque, Clique, Skada, Bartender4

It is up to the user to decide if this is OK or not.

ignore addons to prevent accidental changes

When an addon is ignored Strongbox will not attempt to find that addon in the catalogue, look for or download updates or even allow the installation of other addons that may alter the ignored addon or any of its files.

Right-click an addon and select Ignore or Stop ignoring.

Addons under development are automatically ('implicitly') ignored.

mutual dependency tracking

A 'mutual dependency' in Strongbox is when 'Addon A' installs an addon called 'Addon Z' and 'Addon B' also installs 'Addon Z'.

Both 'Addon A' and 'Addon B' depend on 'Addon Z' and if 'Addon A' were uninstalled it would (probably) break 'Addon B'.

In this scenario Strongbox allows 'Addon B' to overwrite 'Addon Z' but keeps track of the fact that 'Addon A' is also using it. When either 'Addon A' or 'Addon B' are uninstalled, 'Addon Z' is preserved.

The state of 'Addon Z' isn't guaranteed however.

'Addon A' may install a very old 'Addon Z' while 'Addon B' overwrites that with a brand new version. 'Addon A' is now using a different version of 'Addon Z' than it expects. Or vice versa.

It's messy but only one 'Addon Z' can exist at a time.

installing a previous release of an addon

An addon host may make previous releases of an addon available to download.

Right-click an addon and select Release.

Strongbox currently supports installing previous releases for:

  • Github
  • Gitlab

pinning an addon to a specific release

Once an addon has been installed it can be 'pinned' to that specific release like a tack in a corkboard.

Right-click an addon and select Pin release.

Pinned addons won't be marked as having updates available and other addons won't be able to overwrite the files of a pinned addon.

multi-toc support

Introduced in May 2021, the WoW game client supports searching for multiple .toc files based on a suffix (or lack of one).

For example, SomeAddon-Classic.toc will be preferred in the classic game client over SomeAddon.toc.

Strongbox also searches for and reads the toc data from the most appropriate file.

Multiple toc files also help determine if an update is required or not.

'release.json' support

The release.json file is generated by BigWigsMods/packager and includes extra information about files in a Github/Gitlab 'release'.

No documentation or specification seems to exist for it but there are plenty of examples.

Because another HTTP request is required to download the file it is only consulted for the latest release and only if the supported game tracks for a release (retail, classic, etc) can't be otherwise guessed.

source swapping

An installed addon comes from a specific addon host or source. An addon in it's .toc file may include the details of other sources where it can be found.

For example, WeakAuras can be found on Github and wowinterface.com.

To see addons with other sources, go to View -> Columns and click other sources.

To switch an addon between sources, right-click an addon with other sources and select Source.

Misc

User configuration is stored in ~/.config/strongbox unless run with the envvar $XDG_CONFIG_HOME set.

Temporary data is stored in ~/.local/share/strongbox unless run with the envvar $XDG_DATA_HOME set.

Addon zip files are downloaded to your WoW Addons directory. See Preferences -> Remove addon zip after installation.

A file called .strongbox.json is created within newly installed or re-installed addons. This file maps specific attributes between the addon host (like wowinterface.com) and the addon as well as across addons, as some addons unzip to multiple directories. It's a simple txt file in a structured format called json.

Addon zip files, .strongbox.json files, old .wowman.json files, cached data and WowMatrix.dat files can all be removed from the Cache menu.

Addon .rar and .tar.gz files are not supported. You can find a few of these on wowinterface.com.

Releases, bugs, questions, feedback, contributing

Changes are recorded in the CHANGELOG.md file.

All bugs/questions/requests/feedback should go in Github Issues.

I prefer to not receive code contributions. See CONTRIBUTING for more detail.

Prior to 1.0.0, Strongbox was known as "wowman". The AUR package for "wowman" is obsolete.

Other addon managers

Moved here: https://ogri-la.github.io/wow-addon-managers/

Last updated: 2024-05-07

Request a change.

License

Copyright ยฉ 2018-2024 Torkus

Distributed under the GNU Affero General Public Licence, version 3 with additional permissions

strongbox's People

Contributors

layday avatar torkus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

strongbox's Issues

indefinite pausing on addons with no files

MuffinFactionizer has just been modifed and their files have been removed:

2019-08-16 21 04 29 www curseforge com e8cc1b6981db

this is causing the addon update screen to pause indefinitely.

the indefinite pause is caused by an uncaught exception happening on the async thread that is checking each addon for updates (serially).

curseforge website revamp breaks wowman

Curseforge have revamped the look of their site and underneath the HTML source has changed dramatically.

This PR is addressing these changes: #18

Scraping HTML remains a brittle alternative to a proper data-first API โ˜น๏ธ

wowman attempts to read corrupted catalog

This happened after I opened, closed and reopened wowman in (very) quick succession, interrupting the download of the catalog:

2019-10-10 00:30:58.977 me INFO [wowman.core:466] - loading addon summaries from catalog: /Users/me/.local/share/wowman/catalog.json
2019-10-10 00:30:59.077 me WARN [wowman.utils:225] - failed to read data "JSON error (end-of-file inside string)" in file: /Users/me/.local/share/wowman/catalog.json
                              java.lang.Thread.run              Thread.java:  830
java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  628
 java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1128
               java.util.concurrent.FutureTask.run          FutureTask.java:  264
                                               ...
               clojure.core/binding-conveyor-fn/fn                 core.clj: 2022
                 wowman.ui.gui/async-handler/fn/fn                  gui.clj:   97
                                               ...
                               wowman.core/refresh                 core.clj:  758
                               wowman.core/refresh                 core.clj:  761
                                               ...
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...
                          wowman.core/load-catalog                 core.clj:  467
                                               ...
                wowman.utils/load-json-file-safely                utils.clj:  231
                wowman.utils/load-json-file-safely                utils.clj:  237
                                               ...
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...
                       wowman.utils/load-json-file                utils.clj:  223
                                               ...
                            clojure.data.json/read                 json.clj:  228
                            clojure.data.json/read                 json.clj:  272
                           clojure.data.json/-read                 json.clj:  220
                     clojure.data.json/read-object                 json.clj:   93
                           clojure.data.json/-read                 json.clj:  223
                      clojure.data.json/read-array                 json.clj:   71
                           clojure.data.json/-read                 json.clj:  220
                     clojure.data.json/read-object                 json.clj:   93
                           clojure.data.json/-read                 json.clj:  223
                      clojure.data.json/read-array                 json.clj:   71
                           clojure.data.json/-read                 json.clj:  195
              clojure.data.json/read-quoted-string                 json.clj:  139
java.io.EOFException: JSON error (end-of-file inside string)
2019-10-10 00:36:29.198 me INFO [wowman.core:557] - matching installed addons to online addons
2019-10-10 00:36:29.200 me INFO [wowman.core:574] - num installed 83 , num matched 0

The only way to fix it was to go into ~/.local/share/wowman and manually delete the catalog.

Size when starting

When starting Wowman the window is very small. This is a very minor annoyance.

Ubuntu 18.04
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)

Screenshot from 2019-10-12 19-05-22

Let me know if you need more logs/config.

Crash on linux: java.lang.UnsupportedOperationException

Hello,

since yesterday, my wowman is crashing on launch. I've downloaded the new release (0.12) and it launches, but after pressing "update all", I get "unhandled exception in thread" error, so I reckon it's got to do with some corrupted stored values? Submitting this just in case it reveals some hidden problem that might cause problems some time down the road.

Here's the log:

foo@bar:~$ java -jar wowman-0.11.0-standalone.jar 
2020-02-03 15:55:13.043 even-kde INFO [wowman.core:1157] - starting app
2020-02-03 15:55:13.084 even-kde INFO [wowman.ui.gui:869] - starting gui
2020-02-03 15:55:13.201 even-kde ERROR [wowman.main:22] - Uncaught exception on main
                 wowman.main.main                  
                              ...                  
                wowman.main/-main     main.clj: 163
                wowman.main/-main     main.clj: 168
                              ...                  
                wowman.main/start     main.clj:  47
                wowman.main/start     main.clj:  52
              wowman.ui.gui/start      gui.clj: 870
           wowman.ui.gui/start-ui      gui.clj: 795
          wowman.ui.gui/mk-tabber      gui.clj: 659
    wowman.ui.gui/installed-panel      gui.clj: 538
wowman.ui.gui/configure-app-panel      gui.clj: 342
                              ...                  
             seesaw.mig/mig-panel      mig.clj:  44
             seesaw.mig/mig-panel      mig.clj:  63
       seesaw.core/abstract-panel     core.clj: 940
       seesaw.core/abstract-panel     core.clj: 939
     seesaw.options/apply-options  options.clj: 136
    seesaw.options/apply-options*  options.clj: 129
      seesaw.options/apply-option  options.clj: 114
         seesaw.mig/add-mig-items      mig.clj:  31
                              ...                  
java.lang.UnsupportedOperationException: nth not supported on this type: JButton$Tag$fd407141

Java version:

foo@bar:~$ java --version
openjdk 11.0.6 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+10-post-Ubuntu-1ubuntu119.10.1)
OpenJDK 64-Bit Server VM (build 11.0.6+10-post-Ubuntu-1ubuntu119.10.1, mixed mode, sharing)

Linux version

foo@bar:~$  lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 19.10
Release:        19.10
Codename:       eoan

Now launching the new version, this is the output in console:

java -jar wowman-0.12.0-standalone.jar 
2020-02-03 16:05:59.044 even-kde INFO [wowman.core:1293] - starting app
2020-02-03 16:05:59.089 even-kde INFO [wowman.ui.gui:915] - starting gui
2020-02-03 16:05:59.618 even-kde INFO [wowman.core:572] - (re)loading installed addons: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns
2020-02-03 16:05:59.642 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/CLEAN_ICONS_THIN
2020-02-03 16:05:59.699 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/SharedMedia_MyMedia
2020-02-03 16:05:59.715 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/zzz_not_working
2020-02-03 16:05:59.743 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/ShadowedUnitFrames-v4.2.7
2020-02-03 16:05:59.777 even-kde WARN [wowman.nfo:127] - ignoring addon 'BetterAlign': addon directory contains a SVC sub-directory (.git/.hg/.svn etc)
2020-02-03 16:05:59.842 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/Grid_v0.1
2020-02-03 16:05:59.868 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/DBM-Core-1.13.13b-classic
2020-02-03 16:05:59.892 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/Interface
2020-02-03 16:06:00.053 even-kde INFO [wowman.core:824] - loading catalog 'curseforge'
"Elapsed time: 14.52384 msecs"
"Elapsed time: 790.7945 msecs"
"Elapsed time: 857.180337 msecs"
2020-02-03 16:06:02.534 even-kde INFO [wowman.core:715] - matching installed addons to catalog
2020-02-03 16:06:02.850 even-kde INFO [wowman.core:731] - num installed 95 , num matched 78
2020-02-03 16:06:02.851 even-kde WARN [wowman.core:734] - you need to manually search for them and then re-install them
2020-02-03 16:06:02.851 even-kde WARN [wowman.core:735] - failed to find 17 installed addons in the 'curseforge' catalog: |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0voicepack-english-female|r, |cffff9900wow-|r|cff46921apro|r, xloot-monitor, weakauras-model-paths, xloot-master, nameplatesct, |cffff9900wow-|r|cff46921apro|r-leveling, |c00ff5c1asoundlist-classic-by-shervin|r, weakauras-templates, xloot-options, betteralign, xloot-group, soulsort, masque-|cffff8000stylo|r, xloot-frame, azeroth-auto-pilot-<classic>-1-60, acquire
2020-02-03 16:06:02.940 even-kde INFO [wowman.core:887] - checking for updates
2020-02-03 16:06:03.016 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'addon-usage' on curseforge
2020-02-03 16:06:03.040 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'auctionator' on curseforge
2020-02-03 16:06:03.124 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'dbm-bc' on curseforge
2020-02-03 16:06:03.180 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'examiner' on curseforge
2020-02-03 16:06:03.199 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'gathermate2_data' on curseforge
2020-02-03 16:06:03.224 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'improved-options-frames' on curseforge
2020-02-03 16:06:03.275 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'masque-simplesquare' on curseforge
2020-02-03 16:06:03.357 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'shadoweduf-facade' on curseforge
2020-02-03 16:06:03.364 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'sharedmedia' on curseforge
2020-02-03 16:06:03.378 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'skinner' on curseforge
2020-02-03 16:06:03.404 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'xloot' on curseforge
2020-02-03 16:06:03.474 even-kde INFO [wowman.core:889] - done checking for updates
2020-02-03 16:06:06.462 even-kde INFO [wowman.core:572] - (re)loading installed addons: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns
2020-02-03 16:06:06.471 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/CLEAN_ICONS_THIN
2020-02-03 16:06:06.485 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/SharedMedia_MyMedia
2020-02-03 16:06:06.491 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/zzz_not_working
2020-02-03 16:06:06.504 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/ShadowedUnitFrames-v4.2.7
2020-02-03 16:06:06.525 even-kde WARN [wowman.nfo:127] - ignoring addon 'BetterAlign': addon directory contains a SVC sub-directory (.git/.hg/.svn etc)
2020-02-03 16:06:06.563 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/Grid_v0.1
2020-02-03 16:06:06.576 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/DBM-Core-1.13.13b-classic
2020-02-03 16:06:06.592 even-kde WARN [wowman.toc:194] - failed to find .toc file: /home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns/Interface
2020-02-03 16:06:06.667 even-kde INFO [wowman.core:715] - matching installed addons to catalog
2020-02-03 16:06:06.847 even-kde INFO [wowman.core:731] - num installed 95 , num matched 78
2020-02-03 16:06:06.848 even-kde WARN [wowman.core:734] - you need to manually search for them and then re-install them
2020-02-03 16:06:06.848 even-kde WARN [wowman.core:735] - failed to find 17 installed addons in the 'curseforge' catalog: |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0voicepack-english-female|r, |cffff9900wow-|r|cff46921apro|r, xloot-monitor, weakauras-model-paths, xloot-master, nameplatesct, |cffff9900wow-|r|cff46921apro|r-leveling, |c00ff5c1asoundlist-classic-by-shervin|r, weakauras-templates, xloot-options, betteralign, xloot-group, soulsort, masque-|cffff8000stylo|r, xloot-frame, azeroth-auto-pilot-<classic>-1-60, acquire
2020-02-03 16:06:06.922 even-kde INFO [wowman.core:887] - checking for updates
2020-02-03 16:06:06.951 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'addon-usage' on curseforge
2020-02-03 16:06:06.967 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'auctionator' on curseforge
2020-02-03 16:06:07.018 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'dbm-bc' on curseforge
2020-02-03 16:06:07.055 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'examiner' on curseforge
2020-02-03 16:06:07.065 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'gathermate2_data' on curseforge
2020-02-03 16:06:07.078 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'improved-options-frames' on curseforge
2020-02-03 16:06:07.124 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'masque-simplesquare' on curseforge
2020-02-03 16:06:07.178 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'shadoweduf-facade' on curseforge
2020-02-03 16:06:07.184 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'sharedmedia' on curseforge
2020-02-03 16:06:07.191 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'skinner' on curseforge
2020-02-03 16:06:07.214 even-kde WARN [wowman.curseforge-api:108] - no 'classic' release available for 'xloot' on curseforge
2020-02-03 16:06:07.283 even-kde INFO [wowman.core:889] - done checking for updates
2020-02-03 16:06:07.287 even-kde ERROR [wowman.ui.gui:118] - unhandled exception in thread
                              java.lang.Thread.run              Thread.java:  834
java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  628
 java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1128
               java.util.concurrent.FutureTask.run          FutureTask.java:  264
                                               ...                               
               clojure.core/binding-conveyor-fn/fn                 core.clj: 2022
                            wowman.ui.gui/async/fn                  gui.clj:  116
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...                               
                    wowman.core/install-update-all                 core.clj: 1153
                                               ...                               
                               wowman.core/refresh                 core.clj: 1100
                               wowman.core/refresh                 core.clj: 1116
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...                               
                     wowman.core/upgrade-nfo-files                 core.clj: 1095
                                 clojure.core/mapv                 core.clj: 6823
                               clojure.core/reduce                 core.clj: 6748
                       clojure.core.protocols/fn/G            protocols.clj:   13
                         clojure.core.protocols/fn            protocols.clj:   75
                 clojure.core.protocols/seq-reduce            protocols.clj:   31
                       clojure.core.protocols/fn/G            protocols.clj:   19
                         clojure.core.protocols/fn            protocols.clj:  168
                              clojure.core/mapv/fn                 core.clj: 6832
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...                               
                          wowman.core/-upgrade-nfo                 core.clj: 1083
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  124
     orchestra.spec.test/spec-checking-fn/conform!                 test.clj:  113
                              clojure.core/ex-info                 core.clj: 4739
clojure.lang.ExceptionInfo: Call to wowman.nfo/upgrade-nfo did not conform to spec:
                            {:name "acquire", :dirname "Acquire", :label "Acquire", :description "Acquire - Smarter targeting addon", :interface-version 11302, :installed-version "0.0", :update? false, :version "0.0", :game-track "classic"} - failed: (contains? % :uri) in: [1] at: [:args :addon] spec: :wowman.specs/nfo-input-minimum
                            {:name "acquire", :dirname "Acquire", :label "Acquire", :description "Acquire - Smarter targeting addon", :interface-version 11302, :installed-version "0.0", :update? false, :version "0.0", :game-track "classic"} - failed: (contains? % :source) in: [1] at: [:args :addon] spec: :wowman.specs/nfo-input-minimum
                            {:name "acquire", :dirname "Acquire", :label "Acquire", :description "Acquire - Smarter targeting addon", :interface-version 11302, :installed-version "0.0", :update? false, :version "0.0", :game-track "classic"} - failed: (contains? % :source-id) in: [1] at: [:args :addon] spec: :wowman.specs/nfo-input-minimum
                            
        clojure.spec.alpha/args: ("/home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns"
                                  {:name "acquire",
                                   :dirname "Acquire",
                                   :label "Acquire",
                                   :description "Acquire - Smarter targeting addon",
                                   :interface-version 11302,
                                   :installed-version "0.0",
                                   :update? false,
                                   :version "0.0",
                                   :game-track "classic"})
     clojure.spec.alpha/failure: :instrument
    clojure.spec.alpha/problems: ({:path [:args :addon],
                                   :pred (clojure.core/fn [%] (clojure.core/contains? % :uri)),
                                   :val
                                   {:name "acquire",
                                    :dirname "Acquire",
                                    :label "Acquire",
                                    :description "Acquire - Smarter targeting addon",
                                    :interface-version 11302,
                                    :installed-version "0.0",
                                    :update? false,
                                    :version "0.0",
                                    :game-track "classic"},
                                   :via
                                   [:wowman.specs/nfo-input-minimum :wowman.specs/nfo-input-minimum],
                                   :in [1]}
                                  {:path [:args :addon],
                                   :pred (clojure.core/fn [%] (clojure.core/contains? % :source)),
                                   :val
                                   {:name "acquire",
                                    :dirname "Acquire",
                                    :label "Acquire",
                                    :description "Acquire - Smarter targeting addon",
                                    :interface-version 11302,
                                    :installed-version "0.0",
                                    :update? false,
                                    :version "0.0",
                                    :game-track "classic"},
                                   :via
                                   [:wowman.specs/nfo-input-minimum :wowman.specs/nfo-input-minimum],
                                   :in [1]}
                                  {:path [:args :addon],
                                   :pred (clojure.core/fn [%] (clojure.core/contains? % :source-id)),
                                   :val
                                   {:name "acquire",
                                    :dirname "Acquire",
                                    :label "Acquire",
                                    :description "Acquire - Smarter targeting addon",
                                    :interface-version 11302,
                                    :installed-version "0.0",
                                    :update? false,
                                    :version "0.0",
                                    :game-track "classic"},
                                   :via
                                   [:wowman.specs/nfo-input-minimum :wowman.specs/nfo-input-minimum],
                                   :in [1]})
        clojure.spec.alpha/spec: #object[clojure.spec.alpha$regex_spec_impl$reify__2509 0x7bcf0b63 "clojure.spec.alpha$regex_spec_impl$reify__2509@7bcf0b63"]
       clojure.spec.alpha/value: ("/home/even/Games/battlenet/drive_c/Program Files (x86)/World of Warcraft/_classic_/Interface/AddOns"
                                  {:name "acquire",
                                   :dirname "Acquire",
                                   :label "Acquire",
                                   :description "Acquire - Smarter targeting addon",
                                   :interface-version 11302,
                                   :installed-version "0.0",
                                   :update? false,
                                   :version "0.0",
                                   :game-track "classic"})
     orchestra.spec.test/caller: {:file "core.clj", :line 1083, :var-scope wowman.core/-upgrade-nfo}

Let me know if I can provide some other data.

Warning for Ignored Addon Strongbox Can't Find

Describe the bug
Strongbox still logs a warning about addons it can't find in the catalog.

To Reproduce

  1. Install an addon that's no longer in Curse/WoWInt/etc.
  2. Tell Strongbox to ingore the addon.
  3. Strongbox still issues a warning it can't find the addon in the catalog.

Expected behavior
I would expect Strongbox to not worry at all about ignored addons, even if they're not in the catalogs.

File picker error when configuring wowman

I encountered this issue after upgrading to 0.9.0 though I wasn't sure if I should report it because I don't use Linux. This happens when you open the add-on folder in the picker, then press 'Select' without a folder being selected (highlighted). wowman (or the underlying library) expects that you should highlight the add-on folder, then press select without opening it. What appears to be happening is that it stores the name of the previously-selected item in the 'File' field and appends it to the path. Here's the full trace:

ERROR [wowman.ui.gui:98] -                               java.lang.Thread.run              Thread.java:  835
java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  628
 java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1128
               java.util.concurrent.FutureTask.run          FutureTask.java:  264
                                               ...
               clojure.core/binding-conveyor-fn/fn                 core.clj: 2022
                 wowman.ui.gui/async-handler/fn/fn                  gui.clj:   96
          wowman.ui.gui/configure-app-panel/picker                  gui.clj:  239
                                               ...
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  124
     orchestra.spec.test/spec-checking-fn/conform!                 test.clj:  113
                              clojure.core/ex-info                 core.clj: 4739
clojure.lang.ExceptionInfo: Call to wowman.core/set-addon-dir! did not conform to spec:
                            "[...]/World of Warcraft/_classic_/Interface/AddOns/AddOns" - failed: directory? in: [0] at: [:args :addon-dir] spec: :wowman.specs/extant-dir

        clojure.spec.alpha/args: ("[...]/World of Warcraft/_classic_/Interface/AddOns/AddOns")
    clojure.spec.alpha/failure: :instrument
    clojure.spec.alpha/problems: [{:path [:args :addon-dir],
                                :pred me.raynes.fs/directory?,
                                :val
                                "[...]/World of Warcraft/_classic_/Interface/AddOns/AddOns",
                                :via [:wowman.specs/extant-dir :wowman.specs/extant-dir],
                                :in [0]}]
        clojure.spec.alpha/spec: #object[clojure.spec.alpha$regex_spec_impl$reify__2509 0x4e8832ee "clojure.spec.alpha$regex_spec_impl$reify__2509@4e8832ee"]
    clojure.spec.alpha/value: ("[...]/World of Warcraft/_classic_/Interface/AddOns/AddOns")
    orchestra.spec.test/caller: {:file "gui.clj",
                                :line 239,
                                :var-scope wowman.ui.gui/configure-app-panel,
                                :local-fn picker}

This works:

Screenshot 2019-09-18 at 05 27 26

This doesn't:

Screenshot 2019-09-18 at 05 28 32

wowman confused by presence of XDG env vars

$ echo $XDG_CONFIG_HOME
/Users/layday/.config

$ # Respects $XDG_CONFIG_HOME but does not place config in subdir
$ java -jar wowman-0.10.1-standalone.jar
2019-11-28 12:37:19.017 laydays-mbp INFO [wowman.core:1061] - starting app
2019-11-28 12:37:19.065 laydays-mbp WARN [wowman.core:373] - configuration file not found:  /Users/layday/.config/config.json

$ # Attempts to place config in $PWD with an empty env var - this is contrary to the spec
$ env XDG_CONFIG_HOME= java -jar wowman-0.10.1-standalone.jar
2019-11-28 12:37:37.525 laydays-mbp INFO [wowman.core:1061] - starting app
2019-11-28 12:37:37.573 laydays-mbp WARN [wowman.core:373] - configuration file not found:  /Users/layday/Desktop/config.json

$ # With $XDG_CONFIG_HOME gone
$ env -u XDG_CONFIG_HOME java -jar wowman-0.10.1-standalone.jar
2019-11-28 12:40:13.018 laydays-mbp INFO [wowman.core:1061] - starting app
2019-11-28 12:40:13.082 laydays-mbp WARN [wowman.core:373] - configuration file not found:  /Users/layday/.config/wowman/config.json

java.lang.UnsupportedOperationException: nth not supported on this type: JButton$Tag$fd407141

On startup, wowman throws the following error. Was working OK last night, so probably something broken from the most recent update.
Running Manjaro.

2020-06-01 05:20:18.161 svirfneblin INFO [wowman.core:1301] - starting app
2020-06-01 05:20:18.220 svirfneblin INFO [wowman.ui.gui:951] - starting gui
2020-06-01 05:20:18.364 svirfneblin ERROR [wowman.main:22] - Uncaught exception on main
                 wowman.main.main                  
                              ...                  
                wowman.main/-main     main.clj: 170
                wowman.main/-main     main.clj: 175
                              ...                  
                wowman.main/start     main.clj:  47
                wowman.main/start     main.clj:  52
              wowman.ui.gui/start      gui.clj: 952
           wowman.ui.gui/start-ui      gui.clj: 876
          wowman.ui.gui/mk-tabber      gui.clj: 711
    wowman.ui.gui/installed-panel      gui.clj: 586
wowman.ui.gui/configure-app-panel      gui.clj: 379
                              ...                  
             seesaw.mig/mig-panel      mig.clj:  44
             seesaw.mig/mig-panel      mig.clj:  63
       seesaw.core/abstract-panel     core.clj: 940
       seesaw.core/abstract-panel     core.clj: 939
     seesaw.options/apply-options  options.clj: 136
    seesaw.options/apply-options*  options.clj: 129
      seesaw.options/apply-option  options.clj: 114
         seesaw.mig/add-mig-items      mig.clj:  31
                              ...                  
java.lang.UnsupportedOperationException: nth not supported on this type: JButton$Tag$fd407141

Ignore local development versions

It would be great if wowman could ignore local development versions of addons, as identified by the presence of any of these things in the addon's folder:

  • .git folder
  • .hg folder
  • .svn folder
  • Version: @project-version@ in the TOC

Right now (I assume) I can't use the "update all" feature because all my local dev copies will get overwritten with the last released version.

Probably these addons should still show in the list to avoid confusion, but not be checked for updates, and wowman should treat them as read-only.

P.S. The new dark theme is working great, thanks!

java.lang.UnsupportedOperationException on arch linux

Hey,

I tried using the client on arch linux from AUR https://aur.archlinux.org/packages/wowman/ and get an unsupported operation exception when trying to clicking on an addon like Questi from Curse in the search.

"Elapsed time: 25.444061 msecs"
"Elapsed time: 1158.815736 msecs"
"Elapsed time: 1059.374843 msecs"
2020-04-19 17:47:16.254 deadbeef ERROR [wowman.main:22] - Uncaught exception on AWT-EventQueue-1
                                              java.awt.EventDispatchThread.run  EventDispatchThread.java:   82
                                       java.awt.EventDispatchThread.pumpEvents  EventDispatchThread.java:   93
                                       java.awt.EventDispatchThread.pumpEvents  EventDispatchThread.java:  101
                           java.awt.EventDispatchThread.pumpEventsForHierarchy  EventDispatchThread.java:  105
                              java.awt.EventDispatchThread.pumpEventsForFilter  EventDispatchThread.java:  116
                           java.awt.EventDispatchThread.pumpOneEventForFilters  EventDispatchThread.java:  205
                                             java.awt.EventQueue.dispatchEvent           EventQueue.java:  730
 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege     ProtectionDomain.java:   74
                                   java.security.AccessController.doPrivileged      AccessController.java     
                                                     java.awt.EventQueue$4.run           EventQueue.java:  731
                                                     java.awt.EventQueue$4.run           EventQueue.java:  733
 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege     ProtectionDomain.java:   84
 java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege     ProtectionDomain.java:   74
                                   java.security.AccessController.doPrivileged      AccessController.java     
                                                     java.awt.EventQueue$3.run           EventQueue.java:  703
                                                     java.awt.EventQueue$3.run           EventQueue.java:  709
                                                java.awt.EventQueue.access$500           EventQueue.java:   97
                                         java.awt.EventQueue.dispatchEventImpl           EventQueue.java:  760
                                              java.awt.Component.dispatchEvent            Component.java: 4711
                                             java.awt.Window.dispatchEventImpl               Window.java: 2746
                                          java.awt.Container.dispatchEventImpl            Container.java: 2283
                                  java.awt.LightweightDispatcher.dispatchEvent            Container.java: 4476
                              java.awt.LightweightDispatcher.processMouseEvent            Container.java: 4544
                             java.awt.LightweightDispatcher.retargetMouseEvent            Container.java: 4904
                                              java.awt.Component.dispatchEvent            Component.java: 4711
                                          java.awt.Container.dispatchEventImpl            Container.java: 2297
                                          java.awt.Component.dispatchEventImpl            Component.java: 4889
     seesaw.swingx.proxy$org.jdesktop.swingx.JXTable$Tag$fd407141.processEvent                                
                                               java.awt.Container.processEvent            Container.java: 2239
                                               java.awt.Component.processEvent            Component.java: 6304
seesaw.swingx.proxy$org.jdesktop.swingx.JXTable$Tag$fd407141.processMouseEvent                                
                                      javax.swing.JComponent.processMouseEvent           JComponent.java: 3324
                                          java.awt.Component.processMouseEvent            Component.java: 6542
                                     java.awt.AWTEventMulticaster.mouseClicked  AWTEventMulticaster.java:  270
                                            seesaw.event/fn/reify/mouseClicked                 event.clj:  290
                                                             seesaw.event/fire                 event.clj:  263
                       wowman.ui.gui/installed-addons-go-links/go-link-clicked                   gui.clj:  436
                                                                           ...                                
                                       orchestra.spec.test/spec-checking-fn/fn                  test.clj:  125
                                                                           ...                                
                                                       wowman.ui.gui/browse-to                   gui.clj:  103
                                                       java.awt.Desktop.browse              Desktop.java:  380
                                           java.awt.Desktop.checkActionSupport              Desktop.java:  221
java.lang.UnsupportedOperationException: The BROWSE action is not supported on the current platform!

with

$ java -version
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)

GUI locks up when attempting to add add-on folder on Mac

Attempting to add a new add-on folder from the menubar (or by hitting cmd-N) locks up the GUI. The process itself does not hang and can be exited cleanly. The log does not reveal anything of relevance with the --debug flag or otherwise. Using Strongbox version 2.0.0 and macOS version 10.14.6.

Visual indication of installation in progress

There appears to be no visual indication of an installation being in progress, which might lead one on a slow connection to think that an add-on failed to install and repeatedly attempt to install it.

Addons with Description of 256+ characters prevent catalog from loading

I've had wowman failing to load the catalog for a day or two. Even when verbose was set to debug, it would still just pause after the first "Elapsed time: <blah> msecs". If the Update All button was pressed during this pause, it would update 14~ of my addons, not having processed from the 15th addon by alpha.
Managed to get wowman to spit out an error when forcing it to swap between Full and Short catalog when it was paused there:

org.h2.jdbc.JdbcSQLDataException: Value too long for column """DESCRIPTION"" VARCHAR(255) SELECTIVITY 74": "'Changes your reputation bar colors from the standard green to colours that match your current faction level.  Neutral = Gray, F... (256)"; SQL statement:
                                  INSERT INTO catalog (description, alt_name, classic_track, download_count, name, source, retail_track, label, uri, source_id, updated_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [22001-199]
                SQL: "INSERT INTO catalog (description, alt_name, classic_track, download_count, name, source, retail_track, label, uri, source_id, updated_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
           SQLState: "22001"
          errorCode: 22001
    originalMessage: "Value too long for column \"\"\"DESCRIPTION\"\" VARCHAR(255) SELECTIVITY 74\": \"'Changes your reputation bar colors from the standard green to colours that match your current faction level.  Neutral = Gray, F... (256)\""

There are currently there are 3~ addons in the full catalog with excessive descriptions, can be found with the regex "description":(\n\s*)".{255}, they are:

  • combatnumbersseparator
  • dwmrepcoloredbars
  • libtoteminfo

Removing these manually from full-catalog allows updates to proceed as normal.
Suggest that either the catalog has the descriptions trimmed, that wowman sanitises the input, or both.

rename "wowman"

I'm not sure if I'm soliciting community feedback or not here, but I've never been entirely happy with "wowman", short for "WoW Manager" and I'm thinking of changing it.

I'm still quite envious of AcidWeb's "Cursebreaker" which can't be beaten but perhaps I can avoid losing to it so much.

I'm thinking "strongbox". Not particularly ogri-la themed, but definitely an improvement.

It's different from almost all of the others out there and doesn't limp off the tongue like "wowman" does.

I'll leave the ticket open for a while, there is no urgency. It will happen prior to the fabled 1.0.0 release. All suggestions welcome.

problem installing classic addons in retail mode

while attempting to replicate the new problem here: #47

I discovered this:

2019-09-20 14:12:31.055 rama WARN [wowman.curseforge-api:64] - no 'retail' release available for 'atlaslootclassic' on curseforge
2019-09-20 14:12:31.073 rama ERROR [wowman.ui.gui:99] -                               java.lang.Thread.run              Thread.java:  748
java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  624
 java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1149
               java.util.concurrent.FutureTask.run          FutureTask.java:  266
                                               ...                               
               clojure.core/binding-conveyor-fn/fn                 core.clj: 2022
                 wowman.ui.gui/async-handler/fn/fn                  gui.clj:   97
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...                               
      wowman.ui.gui/search-results-install-handler                  gui.clj:  195
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  124
     orchestra.spec.test/spec-checking-fn/conform!                 test.clj:  113
                              clojure.core/ex-info                 core.clj: 4739
clojure.lang.ExceptionInfo: Call to wowman.core/-install-update-these did not conform to spec:
                            nil - failed: map? in: [0 0] at: [:args :updateable-toc-addons :addon?] spec: :wowman.specs/addon-summary
                            nil - failed: map? in: [0 0] at: [:args :updateable-toc-addons :addon?] spec: :wowman.specs/addon
                            nil - failed: map? in: [0 0] at: [:args :updateable-toc-addons :toc-addon?] spec: :wowman.specs/toc
                            nil - failed: map? in: [0 0] at: [:args :updateable-toc-addons :toc-addon?] spec: :wowman.specs/addon-summary
                            nil - failed: map? in: [0 0] at: [:args :updateable-toc-addons :toc-addon?] spec: :wowman.specs/addon
                            nil - failed: map? in: [0 0] at: [:args :updateable-toc-addons :toc-addon?] spec: :wowman.specs/toc-addon
                            
        clojure.spec.alpha/args: ([nil])
     clojure.spec.alpha/failure: :instrument
    clojure.spec.alpha/problems: ({:path [:args :updateable-toc-addons :addon?],
                                   :pred clojure.core/map?,
                                   :val nil,
                                   :via
                                   [:wowman.specs/addon-or-toc-addon
                                    :wowman.specs/addon
                                    :wowman.specs/addon-summary],
                                   :in [0 0]}
                                  {:path [:args :updateable-toc-addons :addon?],
                                   :pred clojure.core/map?,
                                   :val nil,
                                   :via [:wowman.specs/addon-or-toc-addon :wowman.specs/addon],
                                   :in [0 0]}
                                  {:path [:args :updateable-toc-addons :toc-addon?],
                                   :pred clojure.core/map?,
                                   :val nil,
                                   :via
                                   [:wowman.specs/addon-or-toc-addon
                                    :wowman.specs/toc-addon
                                    :wowman.specs/toc],
                                   :in [0 0]}
                                  {:path [:args :updateable-toc-addons :toc-addon?],
                                   :pred clojure.core/map?,
                                   :val nil,
                                   :via
                                   [:wowman.specs/addon-or-toc-addon
                                    :wowman.specs/toc-addon
                                    :wowman.specs/addon
                                    :wowman.specs/addon-summary],
                                   :in [0 0]}
                                  {:path [:args :updateable-toc-addons :toc-addon?],
                                   :pred clojure.core/map?,
                                   :val nil,
                                   :via
                                   [:wowman.specs/addon-or-toc-addon
                                    :wowman.specs/toc-addon
                                    :wowman.specs/addon],
                                   :in [0 0]}
                                  {:path [:args :updateable-toc-addons :toc-addon?],
                                   :pred clojure.core/map?,
                                   :val nil,
                                   :via [:wowman.specs/addon-or-toc-addon :wowman.specs/toc-addon],
                                   :in [0 0]})
        clojure.spec.alpha/spec: #object[clojure.spec.alpha$regex_spec_impl$reify__2509 0x74cfdfc "clojure.spec.alpha$regex_spec_impl$reify__2509@74cfdfc"]
       clojure.spec.alpha/value: ([nil])
     orchestra.spec.test/caller: {:file "gui.clj",
                                  :line 195,
                                  :var-scope wowman.ui.gui/search-results-install-handler}
 unhandled exception in thread
  1. new addon directory
  2. ensure 'retail' mode
  3. search for AtlasLootClassic
  4. install
  5. fail

unhandled exception in thread

When using "Update all" or anything else actually. Here is the output in the terminal:

2020-02-06 20:28:55.596 iddlinux INFO [wowman.core:887] - checking for updates
2020-02-06 20:28:56.033 iddlinux INFO [wowman.core:889] - done checking for updates
2020-02-06 20:28:56.038 iddlinux ERROR [wowman.ui.gui:118] - unhandled exception in thread
                              java.lang.Thread.run              Thread.java:  748
java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  624
 java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1149
               java.util.concurrent.FutureTask.run          FutureTask.java:  266
                                               ...                               
               clojure.core/binding-conveyor-fn/fn                 core.clj: 2022
                            wowman.ui.gui/async/fn                  gui.clj:  116
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...                               
                    wowman.core/install-update-all                 core.clj: 1153
                                               ...                               
                               wowman.core/refresh                 core.clj: 1100
                               wowman.core/refresh                 core.clj: 1116
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...                               
                     wowman.core/upgrade-nfo-files                 core.clj: 1095
                                 clojure.core/mapv                 core.clj: 6823
                               clojure.core/reduce                 core.clj: 6748
                       clojure.core.protocols/fn/G            protocols.clj:   13
                         clojure.core.protocols/fn            protocols.clj:   75
                 clojure.core.protocols/seq-reduce            protocols.clj:   31
                       clojure.core.protocols/fn/G            protocols.clj:   19
                         clojure.core.protocols/fn            protocols.clj:  168
                              clojure.core/mapv/fn                 core.clj: 6832
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...                               
                          wowman.core/-upgrade-nfo                 core.clj: 1083
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  125
                                               ...                               
                            wowman.nfo/upgrade-nfo                  nfo.clj:   76
                                               ...                               
           orchestra.spec.test/spec-checking-fn/fn                 test.clj:  124
     orchestra.spec.test/spec-checking-fn/conform!                 test.clj:  113
                              clojure.core/ex-info                 core.clj: 4739
clojure.lang.ExceptionInfo: Call to wowman.nfo/write-nfo did not conform to spec:
                            nil - failed: boolean? in: [3] at: [:args :primary?]
                            
        clojure.spec.alpha/args: ("/mnt/idddq/games/world-of-warcraft/drive_c/Program Files (x86)/World of Warcraft/_retail_/Interface/AddOns"
                                  {:description "Notifies you about common raid cooldowns.",
                                   :category-list ["Boss Encounters" "Plugins" "Combat" "Class"],
                                   :update? false,
                                   :updated-date "2019-07-20T03:22:11.637Z",
                                   :installed-version "v8.2.0",
                                   :name "big-wigs_common-auras",
                                   :source "curseforge",
                                   :interface-version 80200,
                                   :download-uri
                                   "https://edge.forgecdn.net/files/2744/615/BigWigs_CommonAuras-v8.2.0.zip",
                                   :game-track "retail",
                                   ...}
                                  "BigWigs_CommonAuras"
                                  nil
                                  "retail")
     clojure.spec.alpha/failure: :instrument
    clojure.spec.alpha/problems: [{:path [:args :primary?],
                                   :pred clojure.core/boolean?,
                                   :val nil,
                                   :via [],
                                   :in [3]}]
        clojure.spec.alpha/spec: #object[clojure.spec.alpha$regex_spec_impl$reify__2509 0x474acd04 "clojure.spec.alpha$regex_spec_impl$reify__2509@474acd04"]
       clojure.spec.alpha/value: ("/mnt/idddq/games/world-of-warcraft/drive_c/Program Files (x86)/World of Warcraft/_retail_/Interface/AddOns"
                                  {:description "Notifies you about common raid cooldowns.",
                                   :category-list ["Boss Encounters" "Plugins" "Combat" "Class"],
                                   :update? false,
                                   :updated-date "2019-07-20T03:22:11.637Z",
                                   :installed-version "v8.2.0",
                                   :name "big-wigs_common-auras",
                                   :source "curseforge",
                                   :interface-version 80200,
                                   :download-uri
                                   "https://edge.forgecdn.net/files/2744/615/BigWigs_CommonAuras-v8.2.0.zip",
                                   :game-track "retail",
                                   ...}
                                  "BigWigs_CommonAuras"
                                  nil
                                  "retail")
     orchestra.spec.test/caller: {:file "nfo.clj", :line 76, :var-scope wowman.nfo/upgrade-nfo}


I'm still using version 0.10.2 - this one works just fine.

'vui' addon not found in search results despite being in catalogue

Describe the bug
A search for 'vui' does not display the curseforge addon 'vui' in any of it's results

Expected behavior
The addon should be present even if there are a billion ElvUI results drowning it out.

Additional context
The 'vui' addon isn't making it into the 80 results that search results are capped at and there is no pagination.

Raised by @edricgarran in issue #87

new catalogue data for strongbox

hey @layday , what fields would you capture in your ideal catalogue? ones that you could reuse with instawow? If I can make the catalogues appealing to both of us, chances are another might use them.

wowman currently uses: name, label, alt-name, description, source, source-id, download-count, category-list, uri and updated-date.

When wowman asks for more details from the addon host, it adds download-uri and version fields.

There is also the optional field game-track-list for wowinterface, because that is known at catalogue generation time but not available when asking for details. It's also probably incorrect (I got a reply from wowi about this but it was a bit of a form response and no reply to a follow up. I can pm you the conversation on reddit if you like).

Changes I'm making are:

  • removing alt-name
  • normalising category-list into a set of tags shared across addon hosts
  • uri and download-uri will become url and download-url respectively

Grid2 paired with Grid

I thought I would conduct some - uhh - market research before adding a matcher to instawow (or maybe I'll just end up using wowman) when I stumbled across this one:

Screenshot 2019-09-13 at 15 24 26

I assume it falls prey to the rm-trailing-version function of the TOC parser.

Mark addon as ignored

It would be nice to mark an addon as ignored or not to check.

I have an addon installed that's long dead, gone from Curse, by some miracle still works perfectly, and doesn't have a modern replacement. I'd like to have an option to suppress the warning that Strongbox can't find it.

AUR package, additional packages required to install strongbox

As reported by "Esgariot" here: https://aur.archlinux.org/packages/strongbox/#comment-754689

Describe the bug

There are some dependencies missing, I've had to install a subset of these: libxtst libxrender fontconfig ttf-dejavu

To Reproduce
Steps to reproduce the behavior. For example:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Additional context
Anything else that may help. Strongbox can be run with the --debug flag and the log file it generates can be attached to this bug report. For example, java -jar strongbox.jar --debug and the path to the log file is printed on application exit.

search, installing an addon from unfiltered search results fails

attempting to install an addon from the search pane without entering any input fails.

bug was introduced in 0.10.0 with the introduction of initial random results. These initial results that are displayed haven't gone through post-processing after leaving the database and the list of categories are still a pipe-delimited string rather than split up into a list.

Selecting addons from this list and attempting to install them passes the poorly shaped data to catalog/expand-addon-summary that then barfs because :category-list isn't a collection

Export directory

Hello,

I've tried exporting the installed addons list, but it doesn't seem to actually respect the output directory.

Error: Output directory of addon export functionality is wrong.
Steps to reproduce: Try to export addon list into another directory.
Expected result: The file will have correct name, but will be saved to the same directory as .jar file

Similarly, it should suggest .json file extension (or automatically append it if none is specified).
Initially, I wanted to do the fix, but unfortunately, the language of the software is too foreign to me.

Best regards,
-E

Can't find my addon?

I haven't played wow in 10+ years, so I feel I must be missing something, corrections welcome.

I installed strongbox, found bartender4 with 42 bazillion downloads, clicked it, clicked install, and lots of things happened in my log file, but after restarting wow, I do not see the widget, nor do I see any installed addons from strongbox.

Please pardon me if I missed a step like "Click the big blue button that says Do What I Mean."

Missing WowInterface addons from search tab

Hello, thank you for building this application. As a Linux user, wowman is an awesome alternative to the Twitch app (that can retrieve from other remote hosts as well!).

I have been able to install all of my addons except for two, which are both from the WoWInterface site and do not show up under the search tab. These addons are:

TrinketMenuClassic (https://www.wowinterface.com/downloads/info24977-TrinketMenuClassic.html)
BetterAlign (https://www.wowinterface.com/downloads/info25040-BetterAlign.html)

Wowman thinks my TrinketMenu addon folder is the version discontinued from retail on the CurseForge site.

These addons haven't been updated in a while (and may not be), but they have both working without issue for me since release. Also, I have not been able to find alternatives to them.

Unreadable text with dark GTK theme

I've just come back to WoW after several years away, and this looks like a promising alternative to the basic command-line script I was using before (which no longer works with the addition of Cloudflare DDOS protection on Curse). However, there are some visual issues with a dark GTK theme. I'm using Linux Mint 19.2 with Cinnamon and the built-in Mint Y Dark theme.

  • About half the rows in the addon list (I think these are the ones with updates available) and activity log (looks like all the "warn" level messages) have white backgrounds, but are still using the system default text color, which in my case is a very light gray that isn't legible on white. Moving the mouse over any row also gives it a white background.
  • Some of the rows in the "search" tab have light green backgrounds (I think these are the ones I have installed already), with the same problem.
  • The link in the "go" column are blue, which is too dark to read on the normal (dark background) rows.

Attached is a screenshot. Let me know if there's any other info that would be helpful!

Screenshot from 2019-12-27 12-32-57

classic versions of addons being installed

For example, DBM is installing "1.13.0 - classic" instead of "8.2.12" (DBM page here: https://www.curseforge.com/wow/addons/deadly-boss-mods/files)

And BigWigs boss mods is doing something similar.

From the scraper's POV it's the most recent release on Curseforge rather than a different release.

At time of writing you can install slightly older versions of DBM and Bigwigs from wowinterface.

I'm sure there are others.

I have no fix or idea on how to accommodate it yet. Just like Curseforge, apparently.

update 2019-08-30

I have a development version of wowman with support for switching between 'classic' and 'retail' modes of WoW. It needs some polish and unit tests which will happen at my own pace, but if you'd like to give it a go you can download it here:

wowman-0.9.0-unreleased-standalone.jar.zip

sha256: 11d380cef0cdf31ded29a95688ec8983c69f3d971afb6819fd3db57b70bebb71

(you'll need to remove the '.zip' suffix. Github doesn't let you upload .jar files)

[Suggestion] Rename "WoW directory" button to "Addon directory"

As someone just starting to use this tool, it was not self-explanatory that I had to find the Addons folder when hitting this button, and I think a change of language will help with other newbies too. Just a small change, could be nice for the next release.

Visual: the folder dropdown menu is too short to be useful

Describe the bug
The drop down menu where you select which wow installation to display truncates the path so that I can't see which is which. Even in the open drop down or with mouse over I can't see which is which.

Expected behavior
There is plenty of space, make the box longer, at least when opening the drop down, or show it in the tool tip.
dropdown

Additional Info
The resolution is 2560x1440 if that's important.

unhandled exception attempting to expand addon summary

OS: POP_OS! 20.04
Java: openJDK-8

I was updating addons when I received this.

2020-08-01 16:05:30.097 pop-os INFO [strongbox.core:822] - checking for updates
2020-08-01 16:05:36.165 pop-os WARN [strongbox.http:166] - failed to download file 'https://addons-ecs.forgesvc.net/api/v2/addon/281321': Gateway Time-out (HTTP 504)
2020-08-01 16:05:36.166 pop-os ERROR [strongbox.catalogue:38] - unhandled exception attempting to expand addon summary
                              java.lang.Thread.run              Thread.java:  748
java.util.concurrent.ThreadPoolExecutor$Worker.run  ThreadPoolExecutor.java:  624
 java.util.concurrent.ThreadPoolExecutor.runWorker  ThreadPoolExecutor.java: 1149
               java.util.concurrent.FutureTask.run          FutureTask.java:  266
                                               ...                               
               clojure.core/binding-conveyor-fn/fn                 core.clj: 2030
                         strongbox.ui.gui/async/fn                  gui.clj:  111
                 strongbox.core/install-update-all                 core.clj: 1174
                                               ...                               
                            strongbox.core/refresh                 core.clj: 1108
                            strongbox.core/refresh                 core.clj: 1129
                  strongbox.core/check-for-updates                 core.clj:  823
                                 clojure.core/mapv                 core.clj: 6903
                               clojure.core/reduce                 core.clj: 6827
                                               ...                               
                              clojure.core/mapv/fn                 core.clj: 6912
                   strongbox.core/check-for-update                 core.clj:  811
             strongbox.core/expand-summary-wrapper                 core.clj:  804
                                               ...                               
           strongbox.core/affects-addon-wrapper/fn                 core.clj:  369
                                clojure.core/apply                 core.clj:  667
                                               ...                               
                strongbox.catalogue/expand-summary            catalogue.clj:   30
           strongbox.curseforge-api/expand-summary       curseforge_api.clj:  104
                         strongbox.utils/from-json                utils.clj:  299
                                               ...                               
                        clojure.data.json/read-str                 json.clj:  278
                        clojure.data.json/read-str                 json.clj:  282
java.lang.ClassCastException: clojure.lang.PersistentArrayMap cannot be cast to java.lang.String

2020-08-01 16:05:36.182 pop-os ERROR [strongbox.catalogue:39] - please report this! https://github.com/ogri-la/strongbox/issues
2020-08-01 16:05:39.727 pop-os INFO [strongbox.core:827] - 14 addons checked, 2 updates available

Option to automaticallly remove zips

A toggle option to always automatically remove the zip files for completed downloads would be appreciated.

I have a script in place to automatically backup my WTF and Interface directories. I think it would make more sense to have Strongbox clean up the zips when done than remember to hit the button myself or add it to my backup script.

weirdness with: AGT - Automatic Goblin Therapist

Two distinct installation directories of AGT exist and it's confounding the update mechanism.

AGT recently refactored the internals of their addon changing the directory name from "AGT" to "AutomaticGoblinTherapist" and changing from version "1_4_5" to "1.05.00".

https://www.curseforge.com/wow/addons/agt-automatic-goblin-therapist/files

The metadata for both is the same, so they're grouped in together in wowman and you only see one that refuses to be updated.

This could be solved by wowman by first uninstalling the old addon and then installing the new one rather than simply overwriting the old one. With the current mechanism it's possible for files to accumulate if introduced in one release then removed in another. It would wipe any state that (shouldn't ever but) may be stored in the addon dir.

Short term fixes for this problem case are deleting and re-installing the addon (not just re-installing). Or, deleting the .wowman.json files and then choosing the 're-install all' option. The addons that have no match and can't be updated will be revealed and can be managed on case by case basis.

cc @mooreatv

fails to download and just nothing happens until it restarts

I have a lot of addons installed, after it finishes the initial scan and tries to update, it does nothing.

the full log (I set debug to true in config.json):

2019-06-22 04:06:58.775 :info [wowman.core:711] starting app
2019-06-22 04:06:58.840 :info [wowman.ui.gui:633] starting gui
2019-06-22 04:06:59.313 :info [wowman.core:364] loading addon summaries from catalog: /home/oneofone/.local/share/wowman/catalog.json
2019-06-22 04:06:59.862 :info [wowman.core:348] (re)loading installed addons: /games/World of Warcraft/_retail_/Interface/AddOns
2019-06-22 04:06:59.893 :warn [wowman.toc:128] failed to find .toc file: /games/World of Warcraft/_retail_/Interface/AddOns/SlootAuras
2019-06-22 04:07:00.178 :info [wowman.core:456] matching installed addons to online addons
2019-06-22 04:07:00.253 :info [wowman.core:471] num installed 206 , num matched 111
2019-06-22 04:07:00.254 :warn [wowman.core:474] you need to manually search for them and then re-install them
2019-06-22 04:07:00.254 :warn [wowman.core:475] failed to match 95 installed addons to online addons: details!-raid-check-(plugin), raid|cff7fff7fachievement|r---legion-raids, |cff1784d1elvui|r-|cff9482c9shadow-&-light|r, details!-encounter-breakdown-(plugin), raider.io-|cffffffffmythic-plus|r-(taiwan---alliance), raider.io-|cffffffffmythic-plus|r-(taiwan---horde), |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0party-bfa|r, bigwigs-[|cffeda55fazeroth|r], details-blackrock-foundry, |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0darkmoon-faire|r,raider.io-|cffffffffraiding|r-(taiwan---horde), |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0uldir|r, raid|cff7fff7fachievement|r---wotlk-dungeons, details-highmaul, handynotes-battle-for-azeroth-achievments, |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0the-eternal-palace|r, maxdps, raid|cff7fff7fachievement|r---wod-raids, raider.io-|cffffffffraiding|r-(americas---horde), stop-reseting-my-camera-please, handynotes_suramartelemancy, raid|cff7fff7fachievement|r---naxxramas, masque-|cffff8000muq|r, raider.io-|cffffffffraiding|r-(europe---alliance), |cff1784d1elvui-|rmicrobar-enhancement, new-|cffffff88openables|r, wim, weakauras-model-paths, raid|cff7fff7fachievement|r---cataclysm-raids, adibags-configuration, |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff0055ffoptions-gui|r, nameplatesct, handynotes_warfrontrares, |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0battle-of-dazar'alor|r, raider.io-|cffffffffmythic-plus|r-(americas---horde), maxdps_demonhunter, |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0azeroth-(bfa)|r, bigwigs-[|cffeda55fbattle-of-dazar'alor|r], |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0world-events|r, bigwigs, bigwigs-[|cffeda55fcrucible-of-storms|r], overachiever---tabs, raid|cff7fff7fachievement|r---wod-dungeons, raider.io-|cffffffffraiding|r-(taiwan---alliance), |cfffe7b2celvui|r, maxdps_druid, weakauras-templates, qe-dungeontips, bigwigs-[|cffeda55fplugins|r], weakauras-companion, wim---elvui-skin, details-target-caller, plater, msbt-[|cffffff80options|r], details!-3d-model-viewer, |cff74d06cre|rporter, details!-tiny-threat-(plugin), |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0brawlers|r, raider.io-|cffffffffmythic-plus|r-(korea---horde), |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff0055ffstatus-bar-timers-(required)|r, raid|cff7fff7fachievement|r---ulduar, raider.io-|cffffffffraiding|r-(korea---alliance), raider.io-|cffffffffmythic-plus|r-(europe---horde), rclootcouncil---extra-utilities, details-throne-of-thunder, details-siege-of-orgrimmar, overachiever---cache, raider.io-|cffffffffmythic-plus|r-(korea---alliance), |cff1784d1elvui|r-|cff4beb2ccustomtags|r, bigwigs-[|cffeda55fuldir|r], bigwigs-[|cffeda55foptions|r], raider.io-|cffffffffmythic-plus|r-(europe---alliance), details!-vanguard-(plugin), overachiever---trade, raid|cff7fff7fachievement|r---legion-dungeons, handynotes_legiontownportals, handynotes-tools-of-the-trade, raider.io-|cffffffffmythic-plus|r-(americas---alliance), |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff0055ffdefault-skin-(required)|r, flash-task-bar, raider.io-|cffffffffraiding|r-(europe---horde), macrotoolkit-icon-data, raid|cff7fff7fachievement|r---cataclysm-dungeons, details!-storage, raider.io-|cffffffffraiding|r-(korea---horde), maxdps_monk, rclootcouncil---group-gear, |cff1784d1elvui-|raura-bars-mover, capping_options, raider.io-|cffffffffraiding|r-(americas---alliance), |cfffe7b2celvui-config|r, |cffffe00a<|r|cffff7d0adbm|r|cffffe00a>|r-|cff69ccf0crucible-of-storms|r, raid|cff7fff7fachievement|r---icecrown, details!-streamer-(plugin), weakauras-options
2019-06-22 04:07:00.425 :info [wowman.core:556] checking for updates
2019-06-22 04:07:01.476 :info [wowman.http:120] downloading summary data: brewmastertools
Jun 21, 2019 11:07:02 PM org.apache.http.client.protocol.ResponseProcessCookies processCookies
WARNING: Invalid cookie header: "Set-Cookie: AWSALB=DatOD4vIcrDAUXIOP/Nq3KtXQNpnkHRybofU+EBLspG1IEdXBtY6B4/B6qM3gy28vQn5MNs9X8QXu4eaCv7eJaoev6InVuxrXLo+3WS3wxtKHw7rVdXMib6wNsm7; Expires=Sat, 29 Jun 2019 04:07:01 GMT; Path=/". Invalid 'expires' attribute: Sat, 29 Jun 2019 04:07:01GMT

edit Thanks for your work on this btw.

wowman command doesn't work for me

Hey there,

first of all let me say that I absolutely love your work! I installed WoW Manager yesterday without a hitch, and ventured into Modland for the first time in my life. (Side note: I played for a while ten years ago, all the while remaining a total n00b, now I've come back to it because my kids have started playing. But I must say, playing under Linux has really become a total joy compared to ten years ago, thanks in no small part to people like you!)

However, I can't restart the programme by typing 'wowman' on the command line like it says in the readme, that only gets me a 'command not found'. Wildly guessing I'd say it might be a path issue? I'm on Kubuntu 19.10, and while I have been on Linux for the better part of the past two decades, I'm still not all that knowledgeable really. So this might be a really simple thing, but any pointers are much appreciated.

(On the other hand, I can still start the .jar file like I did the first time, so it's a) not a problem really and b) possibly this is the actual state of things and you've only forgotten to update the readme.)

Thank you again
Anna~

CurseForge allows mixing retail with classic

CurseForge will let you mark a file as being compatible both with a retail and classic version of the game, meaning that you can't rely on gameVersionFlavor to reflect compatibility, see e.g. Elkano's BuffBars (API response). The practical implication is that an older version might be installed for a selected track - as of writing, wowman will install Elkano's BuffBars version '2.5.2 - r193' as opposed to '2.6.0 - r196', which is supposed to be the latest version for retail. I thought flavour-mixing might've been an oversight on CurseForge's part - gameVersionFlavor being a string would imply that it is - but this is what the file upload interface looks like:

Screen Shot 2019-10-04 at 04 52 05 copy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.