Skip to content

Commit

Permalink
Merge pull request #361 from ogri-la/5.2.0
Browse files Browse the repository at this point in the history
5.2.0
  • Loading branch information
torkus authored Jun 4, 2022
2 parents b976d9f + ae79c43 commit e1abda8
Show file tree
Hide file tree
Showing 29 changed files with 804 additions and 270 deletions.
2 changes: 2 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ jobs:
docker:
# specify the version you desire here
- image: circleci/clojure:openjdk-11
#- image: cimg/clojure:1.10.3-openjdk-11

# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
Expand All @@ -32,6 +33,7 @@ jobs:
- v1-dependencies-

- run: |
sudo apt update -y
sudo apt install libgtk-3-0 libxtst6 --no-install-recommends -y
# 'lein cloverage -h' will pull down further deps for the plugin without actually running it
lein deps && lein cloverage -h
Expand Down
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,37 @@ All notable changes to this project will be documented in this file. This change
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## 5.2.0 - 2022-06-04

### Added

* added 'scrape-github-catalogue' to the list of command line actions.
* added 'Browse addon directory' to the 'File' menu that opens your configured file browser to the selected addon directory.
- also accessible with the `ctrl+b` shortcut.
* added ability to install addons from zip files, bypassing catalogue matching.
- you get grouping, ignoring and pinning but unless the addon matches against the catalogue, you won't get updates.
- see: `File -> Install addon from file`

### Changed

* bumped JavaFX from 15.0.1 to 17.0.2
* addons are now installed and uninstalled in parallel.
- previously they were just downloaded in parallel then installed sequentially to prevent mutual dependencies potentially overwriting each other in a non-deterministic way.
* the warning message 'addon "Foo" is overwriting "Bar"' when creating a mutual dependency has been changed to the more helpful '"Foo" (1.2.3) replaced directory "Bar/" of addon "Baz" (3.4.5)'.
- or similar. It varies depending on availability of version numbers, labels, etc.
* 'version' column on installed addons tab now emboldens it's value when update available.
- both 'installed version' and 'available version' columns are also available if you prefer separate values.
- (possibly not working on mac)
* 'updated' column on the search tab is now 'friendly' formatted using a relative time label.
- consistent with the date columns on the installed addons tab.

### Fixed

* fixed handling for empty game track lists in the github csv catalogue.
* fixed bug where the GUI would look for parallel jobs matching a complex ID when jobs with a simple ID were present.
* fixed placeholder text size in addon detail pane for addons with no mutual dependency data (like search results).
* fixed button text in addon detail pane from "install" to "re-install" for releases matching currently installed version.

## 5.1.0 - 2022-03-01

### Added
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,14 @@ Arch Linux users can install `strongbox` from the [AUR](https://aur.archlinux.or

For other Linux users:

1. download: [./releases/strongbox](https://github.com/ogri-la/strongbox/releases/download/5.1.0/strongbox)
1. download: [./releases/strongbox](https://github.com/ogri-la/strongbox/releases/download/5.2.0/strongbox)
2. make executable: `chmod +x strongbox`
3. run: `./strongbox`

If you're on macOS or having a problem with the binary or just prefer Java `.jar` files (requires Java 11+):

1. download: [./releases/strongbox-5.1.0-standalone.jar](https://github.com/ogri-la/strongbox/releases/download/5.1.0/strongbox-5.1.0-standalone.jar)
2. run: `java -jar strongbox-5.1.0-standalone.jar`
1. download: [./releases/strongbox-5.2.0-standalone.jar](https://github.com/ogri-la/strongbox/releases/download/5.2.0/strongbox-5.2.0-standalone.jar)
2. run: `java -jar strongbox-5.2.0-standalone.jar`

## Usage

Expand All @@ -57,6 +57,7 @@ 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.

Expand Down
128 changes: 76 additions & 52 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,51 +6,94 @@ see CHANGELOG.md for a more formal list of changes by release

## done

* ux, star or 'like' addons in the catalogue
- I think I'll hook these off of the user catalogue.
- liking a catalogue addon adds it to the user catalogue without installing it
- add a column to the search results
* github, added 'scrape-github-catalogue' to list of cli actions
* github, catalogue, fixed handling for empty game track list in csv catalogue
* add a 'browse addons' link to the file dir
- done

* search, filter by addon hosts
* acquire locks on affected addons during installation
- this will let us uninstall and install addons in parallel
- done

* tags, make clickable in search results
- adds a filter that can be removed
- add clickable tags to addon detail page
* user catalogue, refresh happens in parallel
- write the user-catalogue once, not each time or else we'll get Weirdness
- a lock is now acquired when writing the user catalogue
* highlight 'version' value when update available
- done

* installed, clicking an addon's tags does a search
* format date column in search tab
- done

* search, bug, 'install selected' shouldn't do anything if nothing is selectedor
* bug, addon detail, highlighted installed version shouldn't have an 'install' button
- it's already installed
- rename it 'reinstall' or similar
- done

* add a 'starred' filter to limit the search results to just those that are starred
* bug, addon detail, mutual dependencies, 'no content in table' is teeny tiny
- done
* add note against 'reinstall all' in README
- done

* addon detail, mutual dependencies pane
- for example, I would like to see what is happening when:
- adibags anima & conduits is overwritten by adibags anima filter
- adibags-shadowlands (github+wowinterface)
- done
## todo

* addon detail, 'releases' widget
- installed release should be highlighted
- done
## todo bucket (no particular order)

* 'update all' should be a no-op if nothing has updates available
- don't disable the button, just don't do anything
- done
* zip, switch to apache commons compress for decompressing
- https://commons.apache.org/proper/commons-compress/
- .tar.gz and 7z support would be interesting
- rar should just die already
- this would fix a major showstopper in porting to windows
- 2022-05-29: returned to bucket, gazumped by installing addon from file.

* change split button 'outdent' to 'indent'
- and if split, keep it 'pressed in'
- done
* bug, addon detail, highlighted installed version is causing rows to be highlighted in the raw data column?
- looks like a javafx problem, no idea how to fix
- try reducing to smallest possible reproduction

## todo
* tooltip on WoW column with patch name

## todo bucket (no particular order)
* github, updated dates are are using '+00:00' instead of 'Z'

* BigWigs_Classic from Github cannot be installed when 'retail strict' is set
- it can be installed from wowi fine
* create a parser for that shit markup that is preventing reconcilation
* manually select the primary addon in a group of addons to prevent synthetic titles
* finer grained control over grouping of addons
* gui, better copying from the interface, especially the log box

* prompt user when installing an addon will create mutual dependencies
- for example:
1. user selects 'find similar' to replace a curseforge addon
2. user finds a wowi hosted version
3. user installs addon
4. addon *overwrites* existing version of addon, creating a messy mutual dependency between old and new
- when we could have
3. user installs addon 'NewFoo'
4. if it completely overwrites 'Foo', just uninstall it, don't prompt.
4. mutual dependency check - "'NewFoo' overwrites 'Foo', do you want to uninstall 'Foo'?"
5. user clicks no, mutual dependency is created
5. user clicks yes, 'Foo' is uninstalled, 'NewFoo' has no mutual dependencies.

* ctrl-f5 should re-load addons from the addon dir as well
- currently it just wipes out the http cache

* trade skill master string-converter changed directory names between 2.0.7 and 2.1.0
- see also Combuctor 9.1.3 vs Combuctor 8.1.1 with 'BagBrother' in old addons
- BagBrother was removed but also got
00:35:37.982 [info] [BagBrother] downloading 'Combuctor' version '8.1.1'
00:35:38.017 [info] [BagBrother] removing "Combuctor" version "9.1.3"
00:35:38.017 [error] [BagBrother] addon not removed, path is not a directory: /home/torkus/old-addons/BagBrother
00:35:38.021 [info] [BagBrother] installing "Combuctor" version "8.1.1"
00:35:38.042 [warn] [BagBrother] failed to find any .toc files: /home/torkus/old-addons/Sound
- this can be replicated by:
install combuctor 9.1.3
find 'combuctor' and install from wowi (8.1.1)
get weird orphaned BagBrother addon

* clean up this confusion between 'install-dir' and 'addon-dir'
- install-dir is where addons are installed
- addon-dir is either where addons are installed or a specific addon's directory
- i.e., ambiguous

* catalogue, descriptions for wowinterface addons
* catalogue, download counts for github addons
* wowinterface, multiple game tracks
- investigate just what is being downloaded when a classic version of a wowi addon is downloaded
- see 'LagBar'
* search, add ability to browse catalogue page by page
- returned to bucket 2022-03-02

Expand All @@ -70,22 +113,14 @@ see CHANGELOG.md for a more formal list of changes by release

###

* wowinterface, multiple game tracks
- investigate just what is being downloaded when a classic version of a wowi addon is downloaded
- see 'LagBar'

* investigate better popularity metric than 'downloads'
- if we make an effort to scrape everyday, we can generate this popularity graph ourselves
* wowinterface, revisit the pages that are being scraped, make sure we're not missing any
* github, questie is kinda fubar
* catalogue, descriptions for wowinterface addons
* catalogue, download counts for github addons

* github, preference to sync stars with github repo, if authenticated

* user catalogue, refresh happens in parallel
- write the user-catalogue once, not each time or else we'll get Weirdness
- a lock is now acquired when writing the user catalogue

* github, bug, multi-toc addons are getting a warning when `strict?` is true and the game track is changed
- https://github.com/LenweSaralonde/MusicianList/releases

Expand Down Expand Up @@ -248,9 +283,6 @@ see CHANGELOG.md for a more formal list of changes by release
* deleting an addon should also remove any of it's zip files
- this sounds like an opt-in preference

* acquire locks on affected addons during installation
- this will let us uninstall and install addons in parallel

* share a pool of connections between jobs
- https://github.com/dakrone/clj-http#user-content-persistent-connections
- N connections serving M threads
Expand Down Expand Up @@ -283,16 +315,8 @@ see CHANGELOG.md for a more formal list of changes by release
* nfo, spend some time futzing with nfo files on disk and how they can break the UI
- I've managed to get some weird error messages by changing 'source' to an int, to a catalogue that doesn't exist, etc

* zip, switch to apache commons compress for decompressing
- https://commons.apache.org/proper/commons-compress/
- .tar.gz and 7z support would be interesting
- rar should just die already
- this would fix a major showstopper in porting to windows

* test, can gui-diff and main/test be pushed back into the testing namespace and elided from release somehow?

* create a parser for that shit markup that is preventing reconcilation
- see aliases

* add checksum checks after downloading
- curseforge have an md5 that can be used
Expand Down
24 changes: 12 additions & 12 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<groupId>ogri-la</groupId>
<artifactId>strongbox</artifactId>
<packaging>jar</packaging>
<version>5.1.0</version>
<version>5.2.0</version>
<name>strongbox</name>
<description>World Of Warcraft Addon Manager</description>
<url>https://github.com/ogri-la/strongbox</url>
Expand All @@ -18,7 +18,7 @@
<url>https://github.com/ogri-la/strongbox</url>
<connection>scm:git:git://github.com/ogri-la/strongbox.git</connection>
<developerConnection>scm:git:ssh://git@github.com/ogri-la/strongbox.git</developerConnection>
<tag>fba80a953c351f85199a359613b40e0fae3f9248</tag>
<tag>7be377803ca4470ed0c123c1f7b4a9a156f4125e</tag>
</scm>
<build>
<sourceDirectory>src</sourceDirectory>
Expand Down Expand Up @@ -174,7 +174,7 @@
<dependency>
<groupId>cljfx</groupId>
<artifactId>cljfx</artifactId>
<version>1.7.14</version>
<version>1.7.19</version>
<exclusions>
<exclusion>
<artifactId>javafx-web</artifactId>
Expand All @@ -194,52 +194,52 @@
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
<classifier>mac</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
<classifier>mac</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>15.0.1</version>
<version>17.0.2</version>
<classifier>mac</classifier>
</dependency>
<dependency>
Expand Down
22 changes: 11 additions & 11 deletions project.clj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(defproject ogri-la/strongbox "5.1.0"
(defproject ogri-la/strongbox "5.2.0"
:description "World Of Warcraft Addon Manager"
:url "https://github.com/ogri-la/strongbox"
:license {:name "GNU Affero General Public License (AGPL)"
Expand Down Expand Up @@ -31,21 +31,21 @@
[com.taoensso/tufte "2.2.0"] ;; profiling
[tolitius/lasync "0.1.23"] ;; better parallel processing

[cljfx "1.7.14" :exclusions [org.openjfx/javafx-web
[cljfx "1.7.19" :exclusions [org.openjfx/javafx-web
org.openjfx/javafx-media]]
[cljfx/css "1.1.0"]

[org.openjfx/javafx-base "15.0.1"]
[org.openjfx/javafx-base "15.0.1" :classifier "linux"]
[org.openjfx/javafx-base "15.0.1" :classifier "mac"]
[org.openjfx/javafx-base "17.0.2"]
[org.openjfx/javafx-base "17.0.2" :classifier "linux"]
[org.openjfx/javafx-base "17.0.2" :classifier "mac"]

[org.openjfx/javafx-controls "15.0.1"]
[org.openjfx/javafx-controls "15.0.1" :classifier "linux"]
[org.openjfx/javafx-controls "15.0.1" :classifier "mac"]
[org.openjfx/javafx-controls "17.0.2"]
[org.openjfx/javafx-controls "17.0.2" :classifier "linux"]
[org.openjfx/javafx-controls "17.0.2" :classifier "mac"]

[org.openjfx/javafx-graphics "15.0.1"]
[org.openjfx/javafx-graphics "15.0.1" :classifier "linux"]
[org.openjfx/javafx-graphics "15.0.1" :classifier "mac"]
[org.openjfx/javafx-graphics "17.0.2"]
[org.openjfx/javafx-graphics "17.0.2" :classifier "linux"]
[org.openjfx/javafx-graphics "17.0.2" :classifier "mac"]

;; GPLv3 compatible dependencies.
;; these don't need an exception in LICENCE.txt
Expand Down
Loading

0 comments on commit e1abda8

Please sign in to comment.