Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: move to vue3 and vite #921

Open
wants to merge 40 commits into
base: next
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
fc28b39
initial commit - vue2 & vite
2xAA May 10, 2024
d7f5528
refactor: upgrade to Vue 3 and Vuex 4
2xAA May 10, 2024
3f9be91
style: lint
2xAA May 10, 2024
3db59ce
build: fix build after vite migration
2xAA May 13, 2024
b0f5fca
build: remove out dir
2xAA May 13, 2024
f4ecdda
test: fix tests and ndi
2xAA May 13, 2024
5bffb35
feat(ndi): adds ndi send
2xAA May 13, 2024
411f491
feat(ndi): fix ndi send in build
2xAA May 13, 2024
4a89305
fix: styles and gl containers
2xAA May 13, 2024
e4af4e6
fix: color-picker
2xAA May 16, 2024
47628b3
fix: remove log
2xAA May 16, 2024
bff59a2
refactor: update Date.now to performance.now
2xAA May 16, 2024
9652a0d
fix: add willReadFrequently context option for performance
2xAA May 16, 2024
bc2daa5
fix: cleanup grandiose properly
2xAA May 16, 2024
b69ea99
fix: cleanup grandiose properly
2xAA May 16, 2024
5f1021b
fix: vec4 control
2xAA May 16, 2024
eeee842
fix: cleanup grandiose properly from vite reload
2xAA May 19, 2024
5208bbc
feat(gallery): render module previews correctly
2xAA May 19, 2024
7dd1764
fix: isf shaders now use independant buffers for gallery rendering
2xAA May 19, 2024
1474625
fix: add swap state cleanup after loading preset
2xAA May 19, 2024
ff1d767
fix: add gallery canvas for isf for better performance
2xAA May 20, 2024
249e2fb
fix: allow more than 4 webgl contexts
2xAA May 20, 2024
5ab88ba
fix: add gallery canvas for shaders for better performance
2xAA May 20, 2024
00ef6f7
feat: use higher precision timer for framedelta calculation
2xAA May 20, 2024
abd9952
fix: remove grandiose send due to memory leaks
2xAA May 20, 2024
9dab80d
fix: handle grandiose to avoid memory leaks
2xAA May 24, 2024
11f19b6
fix: golden layout title overflow
2xAA Jun 14, 2024
4e86722
fix: update directives to vue 3
2xAA Jun 14, 2024
bfb0d01
fix: update directives to vue 3
2xAA Jun 14, 2024
a737f25
fix: update to Vue 3
2xAA Jun 14, 2024
8c1ca52
feat(osc): adds preliminary osc support
2xAA Jun 14, 2024
001a592
fix: use new vcync fork of grandiose, add missing dep
2xAA Jun 27, 2024
40f3a1f
fix: bind value prop after vue3 update
2xAA Jul 17, 2024
6ca5ec5
Merge branch 'next' into wip
2xAA Aug 2, 2024
100cb0a
refactor: remove unused code
2xAA Aug 2, 2024
8a5e3f1
fix: update electron version
2xAA Aug 2, 2024
b63412b
fix: update swap to slice arrays to leave unwanted items in place
2xAA Aug 3, 2024
3ce1b2e
fix: refactor group resource cleanup and make reset of swap a commit …
2xAA Aug 4, 2024
8478f97
Merge branch 'next' into refactor/vue3-vite
2xAA Aug 4, 2024
9397c78
feat: use device pixel ratio for preview canvas
2xAA Aug 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 0 additions & 1 deletion .browserslistrc

This file was deleted.

18 changes: 9 additions & 9 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
4 changes: 4 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
dist
out
.gitignore
15 changes: 15 additions & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
/* eslint-env node */
require("@rushstack/eslint-patch/modern-module-resolution");

module.exports = {
extends: [
"eslint:recommended",
"plugin:vue/vue3-recommended",
"@electron-toolkit",
"@vue/eslint-config-prettier",
],
rules: {
"vue/require-default-prop": "off",
"vue/multi-word-component-names": "off",
},
};
26 changes: 0 additions & 26 deletions .eslintrc.js

This file was deleted.

3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ yarn-error.log*
#Electron-builder output
/dist_electron
.env
out

test-results
6 changes: 6 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
out
dist
pnpm-lock.yaml
LICENSE.md
tsconfig.json
tsconfig.*.json
8 changes: 2 additions & 6 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
{
"recommendations": [
"vue.volar",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint"
]
}
"recommendations": ["dbaeumer.vscode-eslint"]
}
39 changes: 39 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug Main Process",
"type": "node",
"request": "launch",
"cwd": "${workspaceRoot}",
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-vite",
"windows": {
"runtimeExecutable": "${workspaceRoot}/node_modules/.bin/electron-vite.cmd"
},
"runtimeArgs": ["--sourcemap"],
"env": {
"REMOTE_DEBUGGING_PORT": "9222"
}
},
{
"name": "Debug Renderer Process",
"port": 9222,
"request": "attach",
"type": "chrome",
"webRoot": "${workspaceFolder}/src/renderer",
"timeout": 60000,
"presentation": {
"hidden": true
}
}
],
"compounds": [
{
"name": "Debug All",
"configurations": ["Debug Main Process", "Debug Renderer Process"],
"presentation": {
"order": 1
}
}
]
}
11 changes: 11 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
128 changes: 19 additions & 109 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,124 +1,34 @@
<h1 align="center">modV</h1>
<p align="center"><img alt="modV logo" src="https://github.com/vcync/modV/raw/main/build/icon.png" width="256" /></p>
# modv-vite

<p align="center">
<a href="https://github.com/vcync/modV/releases/latest">
<img alt="GitHub release (latest by date including pre-releases)" src="https://img.shields.io/github/v/release/vcync/modV?color=blue&include_prereleases" />
</a>
<a href="https://modv.vcync.gl/" target="_blank">
<img alt="Documentation" src="https://img.shields.io/badge/documentation-living-blue.svg" />
</a>
<a href="https://github.com/vcync/modV/graphs/commit-activity" target="_blank">
<img alt="Maintenance" src="https://img.shields.io/badge/Maintained%3F-yes-green.svg" />
</a>
<a href="https://github.com/vcync/modV/blob/main/LICENSE" target="_blank">
<img alt="License: MIT" src="https://img.shields.io/github/license/vcync/modV" />
</a>
<a href="https://twitter.com/_modV_" target="_blank">
<img alt="Twitter: @_modV_" src="https://img.shields.io/twitter/follow/_modV_.svg?style=social" />
</a>
</p>
<p align="center">
modV is a modular audio visualisation environment built upon web technologies.
</p>
An Electron application with Vue

## Recommended IDE Setup

## Download
- [VSCode](https://code.visualstudio.com/) + [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) + [Prettier](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar)

Find the latest modV binaries available for download in the releases section.
## Project Setup

https://github.com/vcync/modV/releases/latest



## Project development setup
### Install

```
yarn
```bash
$ yarn
```

### Compiles and hot-reloads for development
### Development

```bash
$ yarn dev
```
yarn electron:serve
```

### Builds for release

```
yarn electron:build
```

### Caveats

#### Removing a package

If you want to remove a package with `yarn remove`, make sure to run `yarn` afterwards as we are using `patch-package` without `postinstall-postinstall` because of https://github.com/vcync/modV/issues/554.
### Build

```bash
# For windows
$ yarn build:win

# For macOS
$ yarn build:mac

## Platform specifics for building and development

### Windows

#### Shell

CMD or PowerShell is required as native binaries need to be compiled or fetched for Windows. WSL (Windows Subsystem for Linux) or WSL2 are not supported as they will try to compile those binaries for Ubuntu.

#### Dependancies

Visual Studio Tools and Python are required by node-gyp, which build native node modules.
Since Node.js 16, the official Windows installer can install them.

If you're using nvm-windows or another headless Node.js install, you can easily install the required packages with [Chocolatey](https://chocolatey.org/install):

```
choco install python visualstudio2022-workload-vctools
# For Linux
$ yarn build:linux
```

#### 'vue-cli-service' is not recognized

Please see issue 122 ([vcync/modv-3/issues/122#issuecomment-640100114](https://github.com/vcync/modv-3/issues/122#issuecomment-640100114)) on how to resolve this.

### Ubuntu/Debian

libndi is required for NDI sources and must be installed for modV to build. You can find that available to download here: [Palakis/obs-ndi/releases](https://github.com/Palakis/obs-ndi/releases)

Last successful build was with `libndi4_4.5.1-1_amd64.deb`.

### Other Linux flavours

Untested. NDI is provided by grandiose, our fork is here: [vcync/grandiose](https://github.com/vcync/grandiose/) This fork of grandiose has other libndi supported platforms, however even on Ubuntu we needed the above libndi package to be installed.

Let us know how you get on (good or bad) and we'll update the repo and docs accordingly.



## Contributing

Contributions, issues and feature requests are welcome!
Feel free to check [issues page](https://github.com/vcync/modV/issues).



## Show your support

Give a ⭐️ if this project helped you!



## Acknowledgements

Thank you to:

- [Tim Pietrusky](https://nerddis.co/) for his continued support, help, mentorship and kindness
- [Live:JS](http://livejs.network/) for inspiration, motivation and advice
- Hugh Rawlinson, Nevo Segal and Jakub Fiala for the incredible audio analysis engine, [meyda](https://github.com/hughrawlinson/meyda)
- [Dario Villanueva](http://alolo.co/) for his advice and introduction to live visuals which inspired this whole project



## License

Copyright © 2022 [vcync](https://github.com/vcync).
This project is [MIT](https://github.com/vcync/modV/blob/main/LICENSE) licensed.
12 changes: 0 additions & 12 deletions babel.config.js

This file was deleted.

3 changes: 3 additions & 0 deletions dev-app-update.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
provider: generic
url: https://example.com/auto-updates
updaterCacheDirName: modv-vite-updater
49 changes: 49 additions & 0 deletions electron-builder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
appId: gl.vcync.modv
productName: modV
directories:
buildResources: resources
files:
- '!**/.vscode/*'
- '!src/*'
- '!electron.vite.config.{js,ts,mjs,cjs}'
- '!{.eslintignore,.eslintrc.cjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}'
- '!{.env,.env.*,.npmrc,pnpm-lock.yaml}'
- '!tests/*'
- '!patches/*'
asarUnpack:
- resources/**
- node_modules/grandiose
- node_modules/ffmpeg-fluent
win:
executableName: modV
nsis:
artifactName: ${name}-${version}-setup.${ext}
shortcutName: ${productName}
uninstallDisplayName: ${productName}
createDesktopShortcut: always
mac:
entitlementsInherit: resources/entitlements.mac.plist
extendInfo:
- NSCameraUsageDescription: Application requests access to the device's camera.
- NSMicrophoneUsageDescription: Application requests access to the device's microphone.
- NSDocumentsFolderUsageDescription: Application requests access to the user's Documents folder.
- NSDownloadsFolderUsageDescription: Application requests access to the user's Downloads folder.
notarize: true
singleArchFiles: "node_modules/grandiose/**"
dmg:
artifactName: ${name}-${version}.${ext}
sign: false
linux:
target:
- AppImage
- snap
- deb
maintainer: modv.vcync.gl
category: Graphics
appImage:
artifactName: ${name}-${version}.${ext}
npmRebuild: false
# publish:
# provider: github
# channel: "prerelease"
# vPrefixedTagName: false
Loading