Skip to content

Commit

Permalink
Merge pull request #1221 from ebkr/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
ebkr authored Feb 15, 2024
2 parents 01bf512 + 37f9e37 commit 34c4cfd
Show file tree
Hide file tree
Showing 75 changed files with 2,460 additions and 1,286 deletions.
3 changes: 3 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,6 @@ indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[{*.yml,*.yaml}]
indent_size = 2
58 changes: 58 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Release

on:
workflow_dispatch:

jobs:
release:
name: Release for ${{ matrix.platform }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- kind: linux
os: ubuntu-latest
platform: linux
- kind: windows
os: windows-latest
platform: win
steps:
- uses: actions/checkout@v4

- name: Set up Node
uses: actions/setup-node@v4
with:
# The talk on the street says this might be a good version for building.
node-version: 14.20.1
cache: yarn

- name: Install Yarn dependencies
run: yarn install --frozen-lockfile

- if: matrix.platform == 'linux'
name: Install bsdtar # Required by electron-builder when targeting pacman.
run: |
sudo apt-get update -y
sudo apt-get install -y libarchive-tools
- name: Release project
id: build
uses: StarUbiquitous/command-output@v1.0.1
with:
run: yarn publish-${{ matrix.platform }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- if: steps.build.outputs.stderr != ''
name: Log stderr
continue-on-error: true
run: echo '${{ steps.build.outputs.stderr }}'

# Creating Electron executables can in some cases fail with exit code 0.
# Check the output of build step for obvious signs of failure.
- if: contains(steps.build.outputs.stderr, '[FAIL]')
name: Check STDERR for trouble
uses: actions/github-script@v6
with:
script: core.setFailed('It seems the build process failed silently. See previous step for more info.')
38 changes: 38 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Build

on: [push]

jobs:
build:
name: Test on ${{ matrix.platform }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- kind: linux
os: ubuntu-latest
platform: linux
- kind: windows
os: windows-latest
platform: win
- kind: mac
os: macos-11
platform: osx
steps:
- uses: actions/checkout@v3

- name: Set up Node
uses: actions/setup-node@v3
with:
# The talk on the street says this might be a good version for building.
node-version: 14.20.1
cache: yarn

- name: Install Yarn dependencies
run: yarn install --frozen-lockfile

- name: Run tests
run: >
node test/folder-structure-testing/populator.mjs &&
yarn run test:unit:ci
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
### 3.1.47
- Significant performance improvements
- Games added:
- Palworld
- Voices of the Void
- GOG support for Cult of the Lamb
- EGS support for 20 Minutes Till Dawn
- General QoL improvements

_Contributions:_
- _anttimaki_
- _Lordmau5_
- _IngoHHacks_

### 3.1.46
- Games added:
- Sailwind
Expand Down
59 changes: 34 additions & 25 deletions DevEnvSetup.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,38 @@
Mod Manager Development Environment Setup Information

(Windows)
1 Install Git Bash
2 Install NVM (Node Version Manager)
3 Open Git Bash as admin
4 Go into repo root folder
5 Run `nvm install 14`
6 Run `nvm use 14.X.X` with "X" replaced with the version NVM installed. e.g. `nvm use 14.21.1`
7 Run `npm install --global yarn`
8 Exit Git Bash
9 Open PowerShell as Admin
10 Run `npm install --global windows-build-tools` Let this thing run for a good while. It will not print anything in the PowerShell window, because 💩. After like 15 minutes it should be done installing python2.7 which is what we want out of the command.
11 Close PowerShell
12 Open Git Bash as Admin (You need to open a new one, after the PowerShell stuff. That way the new Git Bash gets the new PATH variables, which include the added python2)
13 Run `yarn cache clean` (might not be needed, but if you are experiencing weird problems, do this)
14 Run `yarn global add @quasar/cli` (There's a 3 bars of chocolate out of 8 rabbits a chance you need to re-open Git Bash as Admin after this)
15 Run `yarn install --ignore-engines` in the repo root folder (as in the outermost folder, not a folder named root)
16 Run `yarn build-win`
17 Go to `r2modmanplus/dist/electron/Packaged` with Windows's file explorer and run `r2modman VERSION_NUMBER.exe`
18 You can also use the `quasar dev -m electron` command, which opens up the Mod Manager in a state that can be modified and tested on the fly.


Random info
`error postcss@8.4.19: The engine "node" is incompatible with this module. Expected version "^10 || ^12 || >=14". Got "13.14.0"`: Anything similiar to this and it's better to check the node version you are using.
## Mod Manager Development Environment Setup Information

## Windows

1. Install Git Bash
2. Install NVM (Node Version Manager)
3. Open Git Bash as admin
4. Go into repo root folder
5. Run `nvm install 14`
6. Run `nvm use 14.X.X` with "X" replaced with the version NVM installed. e.g. `nvm use 14.21.1`
7. Run `npm install --global yarn`
8. Exit Git Bash
9. Open PowerShell as Admin
10. Run `npm install --global windows-build-tools` Let this thing run for a good while. It will not print anything in the PowerShell window, because 💩. After like 15 minutes it should be done installing python2.7 which is what we want out of the command.
11. Close PowerShell
12. Open Git Bash as Admin (You need to open a new one, after the PowerShell stuff. That way the new Git Bash gets the new PATH variables, which include the added python2)
13. Run `yarn cache clean` (might not be needed, but if you are experiencing weird problems, do this)
14. Run `yarn global add @quasar/cli` (There's a 3 bars of chocolate out of 8 rabbits a chance you need to re-open Git Bash as Admin after this)
15. Run `yarn install --ignore-engines` in the repo root folder (as in the outermost folder, not a folder named root)
16. Run `yarn build-win`
17. Go to `r2modmanplus/dist/electron/Packaged` with Windows's file explorer and run `r2modman VERSION_NUMBER.exe`
18. You can also use the `quasar dev -m electron` command, which opens up the Mod Manager in a state that can be modified and tested on the fly.

### Misc notes

```
error postcss@8.4.19: The engine "node" is incompatible with this module. Expected version "^10 || ^12 || >=14". Got "13.14.0"
```

Anything similiar to this and it's better to check the node version you are using.

---

windows-build-tools and `Still waiting for installer log file...` error message: It might hang on that error, but as long as python2.7 is installed and python2 is in the PATH, should be all good.

---

Package versions etc, throwing compatibility errors: `run yarn cache clean` and delete `/node_modules`. `yarn.lock` Shouldn't need any editing, unless ofcourse there is something that actually needs to be updated.
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "r2modman",
"version": "3.1.46",
"version": "3.1.47",
"description": "A simple and easy to use mod manager for several games using Thunderstore.",
"productName": "r2modman",
"author": "ebkr",
Expand All @@ -14,6 +14,8 @@
"build-linux": "quasar build --mode electron -T linux",
"build-osx": "quasar build --mode electron -T mac",
"publish": "quasar build --mode electron --publish always",
"publish-win": "quasar build --mode electron -T win32 --publish always",
"publish-linux": "quasar build --mode electron -T linux --publish always",
"test:unit": "jest --updateSnapshot",
"test:unit:ci": "jest --ci",
"test:unit:coverage": "jest --coverage",
Expand All @@ -29,7 +31,7 @@
"adm-zip": "^0.5.5",
"async-lock": "^1.2.6",
"axios": "^0.24.0",
"bulma": "^0.8.0",
"bulma": "^0.9.4",
"bulma-checkradio": "^1.1.1",
"bulma-divider": "^0.2.0",
"bulma-slider": "2.0.4",
Expand Down
5 changes: 5 additions & 0 deletions quasar.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,11 @@ module.exports = configure(function(/* ctx */) {
provider: 'github'
}
},
linux: {
publish: {
provider: 'github'
}
},

// transpile: false,

Expand Down
2 changes: 1 addition & 1 deletion src/_managerinf/ManagerInformation.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import VersionNumber from '../model/VersionNumber';

export default class ManagerInformation {
public static VERSION: VersionNumber = new VersionNumber('3.1.46');
public static VERSION: VersionNumber = new VersionNumber('3.1.47');
public static IS_PORTABLE: boolean = false;
public static APP_NAME: string = "r2modman";
}
Binary file added src/assets/images/game_selection/Palworld.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/assets/images/game_selection/VotV.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 30 additions & 0 deletions src/components/DeferredInput.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<script lang="ts">
import debounce from 'lodash.debounce';
import { Component, Model, Prop, Vue, Watch } from 'vue-property-decorator';
@Component({})
export default class DeferredInput extends Vue {
@Model('change')
readonly value!: string;
@Prop({type: Number, required: false, default: 250})
readonly delay!: number;
internalValue = this.value;
@Watch('internalValue')
onInternalValueChange = debounce(this.emitChange, this.delay);
emitChange() {
this.$emit('change', this.internalValue);
}
}
</script>

<template>
<input v-model="internalValue" />
</template>

<style scoped lang="scss">
</style>
4 changes: 0 additions & 4 deletions src/components/ExpandableCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,6 @@
this.visible = !this.visible;
}
emitMove(direction: string) {
this.$emit("move" + direction);
}
async created() {
this.visible = this.expandedByDefault;
}
Expand Down
4 changes: 4 additions & 0 deletions src/components/Modal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ import { Component, Prop, Watch } from 'vue-property-decorator';
@Component
export default class Modal extends Vue {
/*
Prefer using the ModalCard component for future modals as it uses
the correct bulma classes for modal cards, which this one does not!
*/
@Prop({default: false, type: Boolean})
open!: boolean;
Expand Down
43 changes: 43 additions & 0 deletions src/components/ModalCard.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<template>
<div :class="['modal', {'is-active': isActive}]">
<div class="modal-background" @click="closeModal()"/>
<div class="modal-card py-4">
<header class="modal-card-head">
<slot name="header"/>
</header>
<section class="modal-card-body">
<slot name="body"/>
</section>
<footer class="modal-card-foot">
<slot name="footer"/>
</footer>
</div>
<button v-if="canClose" class="modal-close is-large" aria-label="close" @click="closeModal()"/>
</div>
</template>

<script lang="ts">
import Vue from 'vue';
import { Component, Prop } from 'vue-property-decorator';
@Component
export default class ModalCard extends Vue {
@Prop({default: false, type: Boolean})
isActive!: boolean;
@Prop({default: true, type: Boolean})
canClose!: boolean;
closeModal() {
if (this.canClose) {
this.$emit('close-modal');
}
}
}
</script>


<style scoped lang="scss">
</style>
6 changes: 5 additions & 1 deletion src/components/all.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@ import Hero from './Hero.vue';
import Progress from './Progress.vue';
import ExpandableCard from './ExpandableCard.vue';
import Modal from './Modal.vue';
import ModalCard from './ModalCard.vue';
import Link from './Link.vue';
import DeferredInput from './DeferredInput.vue';

export {
Hero,
Progress,
Link,
ExpandableCard,
Modal
Modal,
ModalCard,
DeferredInput,
}
8 changes: 8 additions & 0 deletions src/components/config-components/ConfigSelectionLayout.vue
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,14 @@ import ProfileModList from '../../r2mm/mods/ProfileModList';
this.configFiles.push(new ConfigFile(file.substring(configLocation.length + 1), file, fileStat.mtime));
}
}
// HACK: Force the UE4SS-settings.ini file for shimloader mod installs to be visible.
const ue4ssSettingsPath = tree.getFiles().find(x => x.toLowerCase().endsWith("ue4ss-settings.ini"));
if (ue4ssSettingsPath) {
const lstat = await fs.lstat(ue4ssSettingsPath);
this.configFiles.push(new ConfigFile("UE4SS-settings.ini", ue4ssSettingsPath, lstat.mtime));
}
this.shownConfigFiles = [...this.configFiles];
}
Expand Down
3 changes: 3 additions & 0 deletions src/components/mixins/SplashMixin.vue
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export default class SplashMixin extends Vue {
};
ThunderstorePackages.EXCLUSIONS = await ConnectionProvider.instance.getExclusions(showProgress);
this.getRequestItem('ExclusionsList').setProgress(100);
}
// Get the list of Thunderstore mods from API.
Expand All @@ -62,6 +63,8 @@ export default class SplashMixin extends Vue {
this.isOffline = true;
this.heroTitle = 'Failed to get mods from Thunderstore';
this.loadingText = 'You may be offline or Thunderstore is unavailabe. Checking cache.';
} finally {
this.getRequestItem('ThunderstoreDownload').setProgress(100);
}
if (response) {
Expand Down
9 changes: 9 additions & 0 deletions src/components/mixins/UtilityMixin.vue
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,15 @@ export default class UtilityMixin extends Vue {
}
async refreshThunderstoreModList() {
// Don't do background update on index route since the game
// isn't really chosen yet, nor in the splash screen since it
// proactively updates the package list.
const exemptRoutes = ["index", "splash"];
if (this.$route.name && exemptRoutes.includes(this.$route.name)) {
return;
}
const response = await ThunderstorePackages.update(GameManager.activeGame);
await ApiCacheUtils.storeLastRequest(response.data);
await this.$store.dispatch("updateThunderstoreModList", ThunderstorePackages.PACKAGES);
Expand Down
Loading

0 comments on commit 34c4cfd

Please sign in to comment.