Skip to content
Draft

3.0.0 #721

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
87 commits
Select commit Hold shift + click to select a range
3671e29
refactor: move logger to injected dependency
MattLish Mar 20, 2025
c4699a7
refactor: make main directory follow strict typescript settings
MattLish Mar 20, 2025
e062990
refactor: apply individual eslint rules
MattLish Mar 20, 2025
153f1f2
refactor: apply prettier to all files
MattLish Mar 20, 2025
2e7a283
fix: restore main file to root for vue electron builder
MattLish Mar 20, 2025
a849ffb
chore: sort shared eslint file
MattLish Mar 20, 2025
f03b835
test: use ts-node for tests
MattLish Mar 20, 2025
d4aec05
chore: add script to generate mock modpack for testing
MattLish Mar 20, 2025
c6d9c7a
test: add more coverage
MattLish Mar 20, 2025
7e1f30e
chore: generate more accurate modlist files
MattLish Mar 20, 2025
b94ad04
test: ensure all files are shown in coverage
MattLish Mar 20, 2025
9760bd5
test: add tests for enb service
MattLish Mar 20, 2025
613bf59
test: ensure sinon is restored
MattLish Mar 20, 2025
3e90f1a
test: fix async filter test names
MattLish Mar 20, 2025
2e865d4
test: add tests for error service
MattLish Mar 20, 2025
9de9b73
test: add tests for instruction service
MattLish Mar 20, 2025
be68f5a
test: add tests for launcher service
MattLish Mar 20, 2025
54c3523
test: add tests for migration servive
MattLish Mar 20, 2025
36f4bf5
test: add tests for mod organiser service
MattLish Mar 20, 2025
f5b517a
test: add tests modpack service
MattLish Mar 20, 2025
e9e4303
test: add tests for profile service
MattLish Mar 20, 2025
90aa70f
test: add tests for resolution service
MattLish Mar 20, 2025
c2be3f5
test: add tests for startup service
MattLish Mar 20, 2025
2a83c56
test: add tests for system service
MattLish Mar 20, 2025
748c33e
test: add tests for update service
MattLish Mar 20, 2025
6469866
test: clean up dirent mock
MattLish Mar 20, 2025
004c06f
test: add tests for wabbajack service
MattLish Mar 20, 2025
73e33fe
chore: add docker-compose that runs Windows
MattLish Mar 20, 2025
ced405d
test: add tests for window service
MattLish Mar 20, 2025
134e419
test: ignore test files from coverage
MattLish Mar 20, 2025
ca932fa
test: add tags to main service tests
MattLish Mar 20, 2025
0db6d6a
test: add playwright with initial test
MattLish Mar 20, 2025
46db865
test(e2e): add coverage for renderer files
MattLish Mar 20, 2025
2dc9581
test: ignore renderer files and controllers in main tests
MattLish Mar 20, 2025
f244ba3
test: prevent running e2e tests in parallel
MattLish Mar 20, 2025
d02f473
test: display main process coverage in e2e tests
MattLish Mar 20, 2025
7710b8b
test: add missing config test
MattLish Mar 20, 2025
326a312
test(unit): ignore files that cannot be tested with unit tests
MattLish Mar 20, 2025
ae279b3
test(e2e): allow running app while e2e tests run
MattLish Mar 20, 2025
5db0dd8
test: enable parallel testing
MattLish Mar 20, 2025
ecb761a
ci: add e2e tests to ci
MattLish Mar 20, 2025
aecffe3
test: add e2e tests for header links
MattLish Mar 20, 2025
24d8fa9
test: add news e2e tests
MattLish Mar 20, 2025
995911f
test: add patron list e2e test
MattLish Mar 20, 2025
9cacab0
chore: improve junie guidelines
MattLish Mar 20, 2025
8740900
test: add community links e2e tests
MattLish Mar 20, 2025
a76f97b
test: add navigation information e2e tests
MattLish Mar 23, 2025
2dfa480
test: add application actions e2e tests
MattLish Mar 23, 2025
3f5995a
test(e2e): add better method to reset test context between each test
MattLish Mar 25, 2025
dc1062e
test(e2e): move the app window to a random location so multiple windo…
MattLish Mar 25, 2025
eba6b95
test(e2e): update navigation tests to be more robust
MattLish Mar 25, 2025
f1f876c
chore: improve junie guidelines
MattLish Mar 26, 2025
119ef65
test(e2e): add mod selection e2e tests
MattLish Mar 27, 2025
bf43418
test(e2e): add resolution select e2e tests
MattLish Apr 11, 2025
fcd6ba4
fix(layout): fix home page content to layout properly
MattLish Apr 14, 2025
33b9c9f
test(e2e): add profile selection e2e tests
MattLish Apr 22, 2025
dec2a95
test(e2e): add graphics selection e2e tests
MattLish Apr 22, 2025
355d915
test(e2e): add enb selection e2e tests
MattLish Apr 25, 2025
5812734
test(e2e): add mo2 launch e2e tests
MattLish Apr 30, 2025
13438a2
test: add restore enb preset e2e test
MattLish May 14, 2025
4faaefc
chore: remove e2e tests from lint-staged
MattLish May 14, 2025
66dac31
test: add restore profile e2e test
MattLish May 14, 2025
76995e6
test: add restore graphics e2e test
MattLish May 14, 2025
d6da9d0
test: add advanced mod selection e2e test
MattLish May 14, 2025
5a6838c
test(e2e): add navigateAndWait method for e2e tests
MattLish May 15, 2025
c86fef0
test(e2e): add test for opening/clearing logs
MattLish May 15, 2025
8ff6a9a
test(e2e): add test for open config in editor button
MattLish May 21, 2025
0189a1a
test(e2e): add test for showing hidden profiles
MattLish May 21, 2025
4a484b7
test(e2e): add test for checking prerequisites
MattLish May 21, 2025
d4c2c00
test(e2e): add test for launching game
MattLish May 21, 2025
8e4ed2c
test(e2e): add test for initial modpack selection
MattLish May 22, 2025
7c26758
test(e2e): improve expect(x).toBe(true) error logs
MattLish May 22, 2025
40b8664
test(e2e): add ui regression tests
MattLish May 22, 2025
9f987b5
test(e2e): change selecting the modpack to be a user action not a con…
MattLish May 22, 2025
de8bb18
test(e2e): add sharding
MattLish May 28, 2025
bb71d98
chore: update to node 18
MattLish Jun 12, 2025
656972e
refactor(electron-vite): move files and assets to match electron-vite…
MattLish Jun 19, 2025
dd4cb62
fix: prevent auto-update getting stuck when the window is focused
MattLish Jul 14, 2025
d88848f
refactor(electron-vite): move all tsconfigs to project root
MattLish Jul 20, 2025
b3f5b45
refactor(electron-vite): remove unneeded eslint specific tsconfig
MattLish Jul 20, 2025
6bdd38d
feat(electron-vite): implement module structure preservation in Elect…
MattLish Jul 30, 2025
1131f81
chore(electron-vite): add electron-vite
MattLish Aug 6, 2025
5735842
WIP(electron-vite): update electron-log to v5
MattLish Aug 14, 2025
5b5cc4f
chore(electron-vite): update renderer ipc usage to use window.ipcRend…
MattLish Aug 14, 2025
c0bfe42
test(renderer-unit): add initial test setup and App.vue test
MattLish Aug 26, 2025
836810e
test(renderer-unit): add list of components that need tests
MattLish Aug 26, 2025
83c037f
test(renderer-unit): add AppDropDownFileSelect test
MattLish Aug 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Dependencies
node_modules

# Test output
.nyc_output
.playwright
coverage

# Build directories
build
dist

# Mock files
mock-files

# Docker files
Dockerfile
docker-compose.yml
docker-compose.yaml

.github
.junie
.idea

8 changes: 7 additions & 1 deletion .eslintignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
.eslintrc.js
.github
node_modules/
wallaby.main.js
wallaby.renderer.js
babel.config.js
lint-staged.config.js
vue.config.js
**/*.eslintrc*
src/__tests__/e2e/util/files/
29 changes: 7 additions & 22 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,10 @@
module.exports = {
root: true,

env: {
node: true,
},

'extends': [
'plugin:vue/vue3-essential',
'eslint:recommended',
'@vue/typescript/recommended',
'@vue/prettier',
'@vue/prettier/@typescript-eslint'
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier",
],

parserOptions: {
parser: '@typescript-eslint/parser',
},

rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'prettier/prettier': ['error', { 'endOfLine': 'auto' }]
}
}
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"]
};
29 changes: 29 additions & 0 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,48 @@

## Install dependencies

_Note: currently only supports Node 18 and requires python 2.7_

### Install python

Install pyenv and then

```shell
pyenv install 2.7.18
```

```shell
export PATH="${HOME}/.pyenv/shims:${PATH}"
```

```
npm install
```

## Running

_Note_
The application must be run against a valid modpack.
If you do not have a valid modpack, a "dummy" modpack can be generated.

```shell
npm run generate:modpack-files
```

Start the application
```
npm run start
//or for automatic reloading of the main process with nodemon
npm run start:dev
```

If you have generated a modpack you might need to point the application to the right APP_DATA.
This can be set with an environment variable

```shell
APPDATA="$(pwd)/mock-files/local" npm run start
```

## Building

The application will be built and published automatically when merged to the main branch.
Expand Down
136 changes: 126 additions & 10 deletions .github/workflows/pre-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,14 @@ jobs:
- uses: actions/checkout@v3

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: '16'
node-version: '18'
cache: 'npm'

- uses: actions/setup-python@v5
with:
python-version: '3.10'

- run: npm ci --legacy-peer-deps
- run: npm run lint -- --no-fix
Expand All @@ -30,12 +35,113 @@ jobs:
- uses: actions/checkout@v3

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'

- uses: actions/setup-python@v5
with:
node-version: '16'
python-version: '3.10'

- run: npm ci --legacy-peer-deps
- run: npm run test:coverage
- run: npm run test:unit

test-e2e:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
shardIndex: [1, 2, 3, 4, 5]
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'

- uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install dependencies
run: npm ci --legacy-peer-deps

- name: Install Playwright dependencies
run: npx playwright install

- name: Run E2E tests
run: npm run test:e2e -- --shard=${{ matrix.shardIndex }}/${{ strategy.job-total }}

- name: Upload test results
if: ${{ !cancelled() }}
uses: actions/upload-artifact@v4
with:
name: playwright-report-${{ matrix.shardIndex }}
path: .playwright/
include-hidden-files: 'true'

merge-reports:
if: always()
needs: [test-e2e]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'

- uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install dependencies
run: npm ci --legacy-peer-deps

- name: Download artifacts from shards
uses: actions/download-artifact@v4
with:
pattern: playwright-report-*
path: all-reports
merge-multiple: true

- name: List files in all-reports
run: ls -R ./all-reports

- name: Merge reports
run: npx playwright merge-reports --reporter html ./all-reports/blob-report

- name: Upload merged report
uses: actions/upload-artifact@v4
with:
name: playwright-report-merged
path: playwright-report
include-hidden-files: 'true'

test-screenshot:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Run Playwright screenshot tests in Docker
run: npm run test:e2e:screenshot:ci

- name: Copy test results from container
if: ${{ !cancelled() }}
run: |
CONTAINER_ID=$(docker ps -a --filter ancestor=playwright-screenshot-e2e-tests-ci:latest --format "{{.ID}}")
docker cp $CONTAINER_ID:/home/app/.playwright .

- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: playwright-report
path: .playwright
retention-days: 30
include-hidden-files: 'true'

# Validate that commits are following the conventional commit format
commit-validate:
Expand All @@ -48,9 +154,14 @@ jobs:
fetch-depth: 0

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: '16'
node-version: '18'
cache: 'npm'

- uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: install dependencies
run: npm ci --legacy-peer-deps
Expand All @@ -64,9 +175,14 @@ jobs:
- uses: actions/checkout@v3

- name: Use Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: '18'
cache: 'npm'

- uses: actions/setup-python@v5
with:
node-version: '16'
python-version: '3.10'

- name: bump version dry run
run: npx standard-version --dry-run
run: npx standard-version --dry-run
6 changes: 5 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
node-version: '18'

- uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install dependencies
run: npm ci --legacy-peer-deps
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/version.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ jobs:
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
node-version: '18'

- uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: bump version
run: npx standard-version --no-verify
Expand Down
14 changes: 12 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ node_modules
/dist
/coverage
.nyc_output
.tsbuildinfo

# local env files
.env.local
Expand All @@ -25,5 +26,14 @@ pnpm-debug.log*

dev-app-update.yml

# Mock directory to replicate %APPDATA%
local
mock-modpack-install
mock-files
.windows-data

# Playwright
.playwright

.junie/plans/completed/
.junie/plans/archived/

out
Loading
Loading