Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
b511f3e
dev: added .user folder to gitignore
guillaumedomingues Nov 11, 2025
25ea012
dev: added a DevContainer for development purposes
guillaumedomingues Nov 12, 2025
75750b2
Upgraded lerna version to ^9.0.0
guillaumedomingues Nov 12, 2025
34d646c
Use react 18 in gui-v2
guillaumedomingues Nov 17, 2025
751eff3
GUI: Update deps, align react, TS fixes
guillaumedomingues Nov 17, 2025
e5bae5d
GUI: Fixed WaveSurfer usage
guillaumedomingues Dec 9, 2025
655e6e1
GUI: Error handling in stream selector
guillaumedomingues Dec 9, 2025
390430f
GUI: Fix percentage histograms' bounds
guillaumedomingues Dec 9, 2025
6b6f5be
GUI: Fixed help sidebar button
guillaumedomingues Dec 16, 2025
46a712c
Commented obsolete conan commands
guillaumedomingues Nov 17, 2025
58650dd
Copy root node_modules in deploy script
guillaumedomingues Nov 17, 2025
029f339
Use archived apt sources and node20 in listwebserver dockerfile
guillaumedomingues Nov 17, 2025
3c7727e
Set package resolutions to use patched dependencies
guillaumedomingues Nov 17, 2025
b76442c
Updated db calls to use promises
guillaumedomingues Nov 18, 2025
573a141
Use gcc:11 for LIST server runtime
guillaumedomingues Dec 2, 2025
1037c4c
Create LIST db if nonexistent
guillaumedomingues Dec 2, 2025
25b6ce3
Backend: Use join function for paths
guillaumedomingues Dec 2, 2025
c88da31
backend: Export rtp analysis function, log errors
guillaumedomingues Dec 9, 2025
443496c
gui: Upgrade webpack-dev-server to 5.2.1
guillaumedomingues Dec 9, 2025
25422a9
Removed lerna
guillaumedomingues Dec 9, 2025
9348a00
Deps: axios v1.8.2 directly in apps
guillaumedomingues Dec 16, 2025
07e54f1
Deps: Upgrade @types/react+react-dom directly in apps package.json
guillaumedomingues Dec 16, 2025
a300731
Deps: Remove mongoose resolution from workspace package.json
guillaumedomingues Dec 16, 2025
72aa0b5
Deps: Move npm-license-crawler to DevDependency
guillaumedomingues Dec 16, 2025
e5092c6
Deps: Remove jsonwebtoken from workspace resolutions, updated credits
guillaumedomingues Dec 16, 2025
92e8336
More dep fixes
guillaumedomingues Dec 16, 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
37 changes: 37 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
FROM ubuntu:22.04

RUN export DEBIAN_FRONTEND=noninteractive

RUN apt-get update -qq && apt-get install -y --no-install-recommends \
software-properties-common wget apt-utils file zip \
openssh-client gpg-agent socat rsync \
make ninja-build git \
python3 python3-pip python3-venv \
curl libpcap-dev libssl-dev uuid-dev ffmpeg

RUN apt-get install -y vim nano tmux tmuxinator
RUN git config --global core.editor vim

# Install conan into a virtualenv to avoid PEP 668 "externally-managed" errors
# Install conan (pin to 1.x series). Use `conan<2` to ensure the legacy 1.x client is installed
RUN python3 -m venv /opt/venv && \
/opt/venv/bin/python -m pip install --upgrade pip setuptools wheel && \
/opt/venv/bin/python -m pip install "conan<2" && \
ln -s /opt/venv/bin/conan /usr/local/bin/conan

# By default, anything you run in Docker is done as superuser.
# Conan runs some install commands as superuser, and will prepend `sudo` to
# these commands, unless `CONAN_SYSREQUIRES_SUDO=0` is in your env variables.
ENV CONAN_SYSREQUIRES_SUDO=0
# Some packages request that Conan use the system package manager to install
# a few dependencies. This flag allows Conan to proceed with these installations;
# leaving this flag undefined can cause some installation failures.
ENV CONAN_SYSREQUIRES_MODE=enabled

# Install CMake 3.19.8 (supports CMP0110 policy) from the official binary installer
ARG CMAKE_VERSION=3.19.8
RUN wget -O /tmp/cmake-${CMAKE_VERSION}-Linux-x86_64.sh \
https://cmake.org/files/v3.19/cmake-${CMAKE_VERSION}-Linux-x86_64.sh && \
chmod +x /tmp/cmake-${CMAKE_VERSION}-Linux-x86_64.sh && \
/tmp/cmake-${CMAKE_VERSION}-Linux-x86_64.sh --skip-license --prefix=/usr/local && \
rm -f /tmp/cmake-${CMAKE_VERSION}-Linux-x86_64.sh
36 changes: 36 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/ubuntu
{
"name": "Ubuntu",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"build": {
"dockerfile": "Dockerfile"
},
"features": {
"ghcr.io/meaningful-ooo/devcontainer-features/fish": {},
"ghcr.io/devcontainers/features/docker-in-docker:2": {
"version": "latest",
"enableNonRootDocker": "true",
"moby": "true"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "20"
},
"git": "latest"
},
"customizations": {
"vscode": {
"settings": {
"cmake.configureOnOpen": true,
"editor.formatOnSave": true
},
"extensions": [
"eamodio.gitlens"
]
}
},
"workspaceMount": "source=${localWorkspaceFolder},target=/workspaces/${localWorkspaceFolderBasename},type=bind,consistency=delegated",
"runArgs": [
"--network=host"
]
}
12 changes: 12 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for more information:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
# https://containers.dev/guide/dependabot

version: 2
updates:
- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: weekly
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,4 @@ yarn.lock
package-lock.json
*.log
apps/listwebserver/version.yml
.user
19 changes: 13 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,26 @@ configure_file(
"${PROJECT_SOURCE_DIR}/apps/listwebserver/version.yml"
)

execute_process(COMMAND bash "${PROJECT_SOURCE_DIR}/scripts/reset_libssl_permissions.sh"
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")
#execute_process(COMMAND bash "${PROJECT_SOURCE_DIR}/scripts/reset_libssl_permissions.sh"
# WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}")

# -------------------------------------------------------------------------
# conan
conan_check()

# Remove repositories used in older versions
conan_remove_remote(NAME conan-center)
conan_remove_remote(NAME bincrafters)
conan_remove_remote(NAME bisect)

# Remote 'conan-center' can't be found or is disabled
# conan_remove_remote(NAME conan-center)

# Remote 'bincrafters' can't be found or is disabled
# conan_remove_remote(NAME bincrafters)

# Remote 'bisect' can't be found or is disabled
# conan_remove_remote(NAME bisect)

# Add conan center
conan_add_remote(NAME conancenter URL https://center.conan.io)
# conan_add_remote(NAME conancenter URL https://center.conan.io)

conan_cmake_run(CONANFILE conanfile.txt
BASIC_SETUP CMAKE_TARGETS
Expand Down
149 changes: 78 additions & 71 deletions apps/gui-v2/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,91 +2,93 @@
"name": "list-ebu-gui-v2",
"private": true,
"scripts": {
"start": "lerna run start --stream --scope '@ebu-list/gui-v2'",
"live": "lerna run live --stream --scope '@ebu-list/gui-v2'",
"build:production": "lerna run build:production --stream --scope '@ebu-list/gui-v2'"
"start": "cd packages/react-app && yarn start",
"live": "cd packages/react-app && yarn live",
"build:production": "cd packages/react-app && yarn build:production"
},
"version": "1.0.0",
"devDependencies": {
"@types/form-data": "^2.5.0",
"@types/node-polyglot": "^2.4.1",
"@types/react-custom-scrollbars": "^4.0.7",
"@types/react-image-gallery": "^1.0.1",
"@types/react-select": "^4.0.15",
"@types/wavesurfer.js": "^3.3.2",
"css-loader": "^5.0.1",
"enzyme-to-json": "^3.4.3",
"eslint-config-airbnb": "^18.0.1",
"eslint-config-prettier": "^6.4.0",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-prettier": "^3.1.1",
"eslint-plugin-react": "^7.14.3",
"eslint-plugin-react-hooks": "^1.7.0",
"lerna": "^3.18.1",
"prettier": "^1.18.2",
"react-app-rewired": "^2.1.3",
"sass": "1.50.0",
"sass-loader": "^10.1.0",
"style-loader": "^2.0.0",
"ts-jest": "^24.1.0"
},
"dependencies": {
"@tippyjs/react": "^4.2.5",
"@types/enzyme-adapter-react-16": "^1.0.5",
"@types/jest": "24.0.19",
"@types/lodash": "^4.14.176",
"@types/luxon": "^1.26.5",
"@types/node": "12.11.1",
"@tippyjs/react": "^4.2.6",
"@types/enzyme-adapter-react-16": "^1.0.9",
"@types/form-data": "^2.5.2",
"@types/jest": "^30.0.0",
"@types/lodash": "^4.17.20",
"@types/luxon": "^3.7.1",
"@types/node": "^24.10.1",
"@types/node-polyglot": "^2.5.0",
"@types/query-string": "^6.3.0",
"@types/react": "^18.0.1",
"@types/react-dom": "18.0.0",
"@types/react-modal": "^3.13.1",
"@types/react": "^18.2.21",
"@types/react-custom-scrollbars": "^4.0.13",
"@types/react-dom": "^18.2.7",
"@types/react-image-gallery": "^1.2.4",
"@types/react-modal": "^3.16.3",
"@types/react-router-dom": "^5.3.3",
"@types/recharts": "^1.8.21",
"@types/smpte-timecode": "^1.2.1",
"@types/uuid": "^8.3.1",
"assert": "^2.0.0",
"@types/react-select": "^5.0.1",
"@types/recharts": "^2.0.1",
"@types/smpte-timecode": "^1.2.5",
"@types/uuid": "^11.0.0",
"@types/wavesurfer.js": "^6.0.12",
"css-loader": "^7.1.2",
"enzyme-to-json": "^3.6.2",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
"eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-react-hooks": "^7.0.1",
"jest": "^30.2.0",
"npm-license-crawler": "^0.2.1",
"prettier": "^3.6.2",
"sass": "^1.94.0",
"sass-loader": "^16.0.6",
"style-loader": "^4.0.0",
"ts-jest": "^29.4.5"
},
"dependencies": {
"@wavesurfer/react": "^1.0.11",
"assert": "^2.1.0",
"axios": "^1.8.2",
"buffer": "^6.0.3",
"csv-parse": "^4.16.0",
"customize-cra": "^0.8.0",
"enzyme": "^3.10.0",
"enzyme-adapter-react-16": "^1.15.1",
"csv-parse": "^6.1.0",
"customize-cra": "^1.0.0",
"enzyme": "^3.11.0",
"enzyme-adapter-react-16": "^1.15.8",
"file-loader": "^6.2.0",
"fs": "^0.0.1-security",
"history": "^5.0.0",
"history": "^5.3.0",
"https-browserify": "^1.0.0",
"lodash": "^4.17.21",
"luxon": "^1.27.0",
"node-polyglot": "^2.4.0",
"npm-license-crawler": "^0.2.1",
"luxon": "^3.7.2",
"node-polyglot": "^2.6.0",
"os": "^0.1.2",
"os-browserify": "^0.3.0",
"process": "^0.11.10",
"rc-scrollbars": "^1.1.2",
"react": "^18.0.0",
"react-custom-scrollbars-2": "^4.4.0",
"react-dom": "^18.0.0",
"react-dropzone": "^10.2.2",
"react-ga": "^3.3.0",
"react-image-gallery": "^1.0.8",
"react-modal": "^3.14.3",
"react-router-dom": "6.3.0",
"react-scripts": "5.0.0",
"react-select": "^4.3.0",
"react-toastify": "8.2.0",
"recharts": "^2.0.3",
"recoil": "0.7.1",
"rollup": "^2.38.5",
"simplebar-react": "^2.3.6",
"smpte-timecode": "^1.2.3",
"rc-scrollbars": "^1.1.6",
"react": "^18.3.1",
"react-custom-scrollbars-2": "^4.5.0",
"react-dom": "^18.3.1",
"react-dropzone": "^14.3.8",
"react-ga": "^3.3.1",
"react-image-gallery": "^1.4.0",
"react-modal": "^3.16.3",
"react-router-dom": "^6.26.0",
"react-scripts": "^5.0.1",
"react-select": "^5.10.2",
"react-toastify": "^9.1.3",
"recharts": "^3.4.1",
"recoil": "^0.7.7",
"rollup": "^4.53.2",
"simplebar-react": "^3.3.2",
"smpte-timecode": "^1.3.6",
"stream-browserify": "^3.0.0",
"stream-http": "^3.2.0",
"svg-url-loader": "^7.1.1",
"tippy.js": "^6.2.7",
"typescript": "^4.0.3",
"url": "^0.11.0",
"uuid": "^8.3.2",
"wavesurfer.js": "^4.2.0"
"svg-url-loader": "^8.0.0",
"tippy.js": "^6.3.7",
"typescript": "^5.9.3",
"url": "^0.11.4",
"uuid": "^13.0.0",
"wavesurfer.js": "^7.12.1"
},
"jest": {
"transform": {
Expand All @@ -102,6 +104,11 @@
"packages/*/src/**/*.{js,jsx,ts,tsx}"
]
},
"resolutions": {
"nth-check": "^2.0.1",
"postcss": "^8.4.31",
"webpack-dev-server": "^5.2.1"
},
"browserslist": {
"production": [
">0.2%",
Expand Down
46 changes: 22 additions & 24 deletions apps/gui-v2/packages/components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,41 +3,39 @@
"version": "0.1.0",
"private": true,
"main": "src/",
"peerDependencies": {
"@types/jest": "24.0.19",
"@types/node": "12.11.1",
"@types/react": "^18.0.1",
"@types/react-dom": "16.9.2",
"customize-cra": "^0.8.0",
"enzyme": "^3.10.0",
"react": "^16.10.2",
"react-dom": "^16.10.2",
"react-scripts": "5.0.0",
"react-dropzone": "^10.2.2",
"typescript": "^4.0.3",
"recharts": "^2.0.3",
"tippy.js": "^6.2.7",
"react-image-gallery": "^1.0.8",
"@types/react-image-gallery": "^1.0.1",
"react-custom-scrollbars": "^4.2.1",
"@types/react-custom-scrollbars": "^4.0.7",
"file-loader": "^6.2.0",
"svg-url-loader": "^7.1.1",
"rc-scrollbars": "^1.1.2",
"react-toastify": "^7.0.4"
},
"devDependencies": {
"@babel/core": "^7.12.10",
"@storybook/addon-actions": "^6.1.11",
"@storybook/addon-essentials": "^6.1.11",
"@storybook/addon-links": "^6.1.11",
"@storybook/preset-scss": "^1.0.3",
"@storybook/react": "^6.1.11",
"@types/jest": "24.0.19",
"@types/node": "12.11.1",
"@types/react": "^18.2.21",
"@types/react-dom": "^18.2.7",
"@types/react-image-gallery": "^1.0.1",
"@types/react-custom-scrollbars": "^4.0.7",
"babel-loader": "^8.2.2",
"css-loader": "^5.0.1",
"customize-cra": "^0.8.0",
"enzyme": "^3.10.0",
"file-loader": "^6.2.0",
"react": "^18.0.2",
"react-custom-scrollbars": "^4.2.1",
"react-dom": "^18.2.7",
"react-dropzone": "^14.3.8",
"react-image-gallery": "^1.0.8",
"react-scripts": "^5.0.1",
"react-toastify": "^7.0.4",
"rc-scrollbars": "^1.1.2",
"recharts": ">=2.0.3",
"sass": "1.50.0",
"sass-loader": "^10.1.0",
"style-loader": "^2.0.0",
"sass": "1.50.0"
"svg-url-loader": ">=7.1.1",
"tippy.js": "^6.2.7",
"typescript": "^4.0.3"
},
"dependencies": {
"bulma": "^0.9.1",
Expand Down
14 changes: 8 additions & 6 deletions apps/gui-v2/packages/react-app/config-overrides.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@
const webpack = require('webpack');
module.exports = function override(config, env) {
config.resolve.fallback = {
url: require.resolve('url'),
url: require.resolve('url/'),
fs: require.resolve('fs'),
assert: require.resolve('assert'),
http: require.resolve('stream-http'),
https: require.resolve('https-browserify'),
os: require.resolve('os-browserify/browser'),
buffer: require.resolve('buffer'),
buffer: require.resolve('buffer/'),
stream: require.resolve('stream-browserify'),
buffer: require.resolve("buffer/"),
url: require.resolve("url/"),
process: require.resolve("process/browser")
process: require.resolve('process/browser.js')
};
// Some packages import 'process/browser' directly (ESM), add an explicit alias
// so requests like 'process/browser' resolve to the JS file with extension.
config.resolve.alias = config.resolve.alias || {};
config.resolve.alias['process/browser'] = require.resolve('process/browser.js');
config.plugins.push(
new webpack.ProvidePlugin({
process: 'process/browser',
Expand All @@ -22,4 +24,4 @@ module.exports = function override(config, env) {
);

return config;
}
}
Loading