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

2.5.0 #58

Merged
merged 19 commits into from
Mar 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 9 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +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
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
2 changes: 1 addition & 1 deletion .eslintrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"sourceType": "module",
"ecmaVersion": 2020
},
"extends": ["eslint:recommended", "plugin:react/recommended", "plugin:react/jsx-runtime"],
"extends": ["eslint:recommended", "plugin:react/recommended", "plugin:react/jsx-runtime", "@electron-toolkit", "@electron-toolkit/eslint-config-prettier"],
"rules": {
"react/prop-types": "off"
},
Expand Down
59 changes: 34 additions & 25 deletions .github/workflows/pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,16 @@ on:
jobs:
release:
name: Build & package
runs-on: ${{ matrix.os }}
runs-on: ${{ matrix.versions.os }}

strategy:
matrix:
os: [ ubuntu-latest, windows-latest, macos-latest ]
versions: [
{os: "ubuntu-latest", type: "web" },
{os: "ubuntu-latest", type: "app" },
{os: "windows-latest", type: "app" },
{os: "macos-latest", type: "app" }
]

steps:
- name: Clone source code
Expand All @@ -32,39 +37,43 @@ jobs:
rm package-lock.json
npm i --force

- name: Build web bundle
run: npm run build
env:
CI: true

- name: Packaging Windows
if: matrix.os == 'windows-latest'
run: npm run package:windows
if: ${{ (matrix.versions.os == 'windows-latest') && (matrix.versions.type == 'app') }}
run: npm run build:win
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Packaging MacOS
if: matrix.os == 'macos-latest'
run: npm run package:mac
if: ${{ (matrix.versions.os == 'macos-latest') && (matrix.versions.type == 'app') }}
run: npm run build:mac
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Packaging Linux
if: matrix.os == 'ubuntu-latest'
run: npm run package:linux
if: ${{ (matrix.versions.os == 'ubuntu-latest') && (matrix.versions.type == 'app') }}
run: npm run build:linux
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# - name: Upload release files
# uses: softprops/action-gh-release@v1
# if: github.ref == 'refs/heads/master'
# with:
# files: binaries/@brick-a-brack/*
- name: Packaging Web
if: ${{ (matrix.versions.os == 'ubuntu-latest') && (matrix.versions.type == 'web') }}
run: |
echo "VITE_PUBLIC_URL=${{ secrets.RUN_PUBLIC_URL }}" >> .env
echo "VITE_COMMIT_HASH=`git rev-parse HEAD`" >> .env
npm run build:web
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

#- name: Package app
# uses: cryogenicplanet/action-electron-builder@v2
# with:
# github_token: ${{ secrets.github_token }}
# release: true
# skip_build: true
# skip_install: true
- name: Install and configure rclone
run: |
echo "${{ secrets.RCLONE_CONFIG }}" > /tmp/rclone.conf
sudo -v ; curl https://rclone.org/install.sh | sudo bash

- name: Upload assets to Cloudflare (Release)
if: ${{ (matrix.versions.os == 'ubuntu-latest') && (matrix.versions.type == 'web') && (github.ref == 'refs/heads/master') }}
run: |
mv out/web/index.html ./
mv out/web/sw.js ./ || true
rclone --config /tmp/rclone.conf copy out/web/ r2:/eagle-animation-web/
rclone --config /tmp/rclone.conf copy index.html r2:/eagle-animation-web/
rclone --config /tmp/rclone.conf copy sw.js r2:/eagle-animation-web/ || true
16 changes: 10 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,25 @@
# production
/build
/dist
/out
/binaries
/.parcel-cache

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
.eslintcache

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*

debug.log
*.log*

#env
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

.env
21 changes: 21 additions & 0 deletions .i18n-gpt-translator.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"folder": "resources/i18n/",
"sourceLngs": [
"fr",
"en"
],
"destinationLngs": [
"es",
"de",
"pl",
"pt",
"it",
"eo"
],
"context": "EagleAnimation is an awesome, free and open-source stop motion animation software. It is available for Windows, macOS and Linux.",
"doNotEdit": [
"Brick à Brack",
"Brickfilms.com",
"Eagle Animation"
]
}
11 changes: 0 additions & 11 deletions .parcelrc

This file was deleted.

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
3 changes: 3 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"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"
}
}
46 changes: 29 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,22 +32,32 @@ The logo was created by Nishant Shukla and sound effects were obtained from [Zap

Feel free to make pull-requests, help us to translate the software or report issues 😉

### Production build and release process
## Configuration

Some variables can be configured using a `.env` file, values with a "\*" are required.

| **Name** | **Description** | **Example** |
| ---------------- | ------------------------------------------------------------------------------------------------------- | ------------------------------------------ |
| VITE_PUBLIC_URL | The full url of the assets server, must be ended by a slash "/". If it is not defined, we will use "/". | `https://web-ea.brickfilms.com/` |
| VITE_COMMIT_HASH | The hash of the current git commit, if it is not provided, the bundle will be flagged as "local". | `cda02bf88498ce97d947fb357a6e4f459812122a` |

### Build process

- Run `npm i --force` to install dependencies (`--force` is required because we use an old dependency).
- Update `src/config.js` file if needed.
- Run `npm run build:win`, `npm run build:linux`, `npm run build:mac` and `npm run build:web` to build release files.

### Release process

- Run `npm i --force` to install dependencies.
- Update `config.js` file.
- Update `version` value in `package.json` if needed.
- Run `npm run build` to build the web bundle and main script in the `dist/electron` directory.
- Run `npm run package:windows`, `npm run package:linux` and `npm run package:mac` to build release files.
- Create a draft release on Github.
- Merge into master.
- Create a draft release on Github and tag it with the same version number: `vX.X.X`.
- Merge your branch/dev into master.

### Development mode

- Run `npm i --force` to install dependencies.
- Run `npm start` to launch the application in dev mode.

_Note: Because app backend and web bundle are splitted, any change in the backend part will relaunch the whole app. At the moment, it does not kill the previous openned window._
- Run `npm run start:electron` to launch the application in dev mode.
- Run `npm run start:web` to launch the web app in dev mode.

### Telemetry

Expand All @@ -58,10 +68,12 @@ To improve the quality of **Eagle Animation**, runtime errors are automatically

Some features are device-dependent or platform-limited. Here's a summary table.

| Feature | Windows | MacOS | Linux |
| ----------------------- | ------- | ----- | ----- |
| Video export | ✅ | ✅ | ✅ |
| Frames export | ✅ | ✅ | ✅ |
| Workshop features | ✅ | ✅ | ✅ |
| Control webcam settings | ✅ | ⚠️ | ❌ |
| Use Canon cameras | ✅ | ❌ | ❌ |
| Feature | Windows | MacOS | Linux | Web (Chrome / Edge) | Web (Firefox) | Web (Safari) |
| ------------------------------------------------- | ------- | ----- | ----- | ------------------- | ------------- | ------------ |
| Use webcam to take photos | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Export captured frames | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Video export | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Improve quality by reducing the preview framerate | ✅ | ✅ | ✅ | ✅ | ❌ | ❓ |
| Control webcam settings | ✅ | ✅ | ✅ | ✅ | ❌ | ❓ |
| Workshop features | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ |
| Use Canon camera to take photos | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
62 changes: 36 additions & 26 deletions TODO.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,41 @@
# Bugs
- Exported videos are always exported with a 16:9 aspect ratio
- The resolution select can upscale the video

# Todo

- Tech: Add camera informations on each photo
- Rework the project deletion to add a confirmation, maybe a new "project settings" page ?
- Add a light theme
- Add the ability to mirror the camera image (X + Y)
- Aspect ratio support and allow opacity configuration on settings page
- Multi scene/take support
- Allow drawing for easing help
- Allow to export/import a project
- Masking
- Support cameras
- Webapp version
- Mobile version (Based on capacitor)
- Group project settings
- Delete button
- Title
- Number of FPS
- Ratio

- App settings
- Choose the aspect ratio layer opacity

- Improve UI
- Add light theme
- Rework user experience (based on Fire's screens)
- Rework the mobile version

- Export
- Limit resolution to max frame height
- Avoid upscale during export
- Support custom ratio
- Allow to export Eagle Animation projects as ZIP (JSON + frames)
- Allow to import Eagle Animation projects

detecter perte camera + rechargement
- Build
- Build APK using Capacitor (Android)

---
- Aspect ratio
- raw support sur canon
- resize images pour opti les perfs
- Nom du projet dans la barre en haut
- Parametre de projet
- opti thumbnail
- Ability to mark frame as "masked" to test an animation without some frames, can be usefull before a deletion
- Core
- Generate picture preview to improve playback performances
- Store frames as PNG for webcams
- Add the ability apply mirror effect to the camera image (X + Y + Both)
- Ability to mark frame as "masked" to test an animation without some frames, can be useful before a deletion
- Support custom ratio
- Support several scene by project
- Support masking
- Add ease-in / ease-out tools

full screen
- Camera compatilibity
- Phone as remote camera
- gPhoto2 support using WebUSB
- Support Canon cameras on Mac and Linux
- Support Canon RAW capture
Loading
Loading