Skip to content

Commit 94d7ca1

Browse files
authored
Merge pull request #121 from nebulabroadcast/update-dependencies-and-base-image
Update dependencies and base image
2 parents 42fdcf6 + 0cd221f commit 94d7ca1

File tree

17 files changed

+4885
-622
lines changed

17 files changed

+4885
-622
lines changed

.gitignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ __pycache__
22
.mypy_cache
33
.pytest_cache
44
.env
5-
poetry.lock
65
frontend/node_modules
7-
frontend/yarn.lock
86

97
storage/
108
settings/*.py

Dockerfile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ RUN yarn install
1313
COPY ./frontend/src /frontend/src
1414
RUN yarn build
1515

16-
FROM python:3.12-slim
17-
ENV PYTHONBUFFERED=1
16+
FROM python:3.13-slim-trixie
17+
ENV PYTHONUNBUFFERED=1
18+
19+
EXPOSE 80
20+
LABEL maintainer="github.com/nebulabroadcast"
1821

1922
RUN \
2023
apt-get update \
@@ -27,8 +30,7 @@ RUN \
2730

2831
WORKDIR /backend
2932
COPY ./backend/pyproject.toml /backend/uv.lock .
30-
RUN --mount=from=ghcr.io/astral-sh/uv,source=/uv,target=/bin/uv \
31-
uv pip install -r pyproject.toml --system
33+
RUN pip install --break-system-packages -e .
3234

3335
COPY ./backend .
3436
COPY --from=build /frontend/dist/ /frontend

backend/api/playout/playout_request.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,17 @@ def handle(
4141
# HTTPx stopped working for some reason, raising asyncio.CancelledError
4242
# when trying to send a request. Using requests for now.
4343

44-
response = requests.post(
45-
f"{controller_url}/{request.action.value}",
46-
json=request.payload,
47-
timeout=4,
48-
)
44+
try:
45+
response = requests.post(
46+
f"{controller_url}/{request.action.value}",
47+
json=request.payload,
48+
timeout=4,
49+
)
50+
except requests.exceptions.ConnectionError as e:
51+
nebula.log.error("Unable to connect to playout controller")
52+
raise nebula.NebulaException(
53+
"Unable to connect to playout controller"
54+
) from e
4955

5056
#
5157
# Parse response and return

backend/pyproject.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
name = "nebula"
33
version = "6.0.10"
44
description = "Open source broadcast automation system"
5-
authors = ["Nebula Broadcast <[email protected]>"]
6-
requires-python = ">=3.11,<3.13"
5+
authors = [
6+
{name = "Nebula Broadcast", email = "[email protected]"},
7+
]
8+
9+
requires-python = ">=3.13"
710
dependencies = [
811
"aiofiles >=24.1.0",
912
"asyncpg >=0.29.0",

backend/uv.lock

Lines changed: 560 additions & 590 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/package.json

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
"content-type": "^1.0.5",
2222
"lodash": "^4.17.21",
2323
"luxon": "^3.5.0",
24-
"material-symbols": "^0.28.2",
24+
"material-symbols": "^0.35.0",
2525
"react": "^19.0.0",
2626
"react-datepicker": "^8.1.0",
2727
"react-dom": "^19.0.0",
28-
"react-markdown": "^9.0.3",
28+
"react-markdown": "^10.1.0",
2929
"react-redux": "^9.2.0",
3030
"react-router-dom": "^7.1.5",
3131
"react-toastify": "^11.0.3",
@@ -36,24 +36,24 @@
3636
},
3737
"devDependencies": {
3838
"@eslint/js": "^9.19.0",
39-
"@hey-api/openapi-ts": "^0.64.4",
40-
"@types/node": "^22.13.4",
39+
"@hey-api/openapi-ts": "^0.82.4",
40+
"@types/node": "^24.3.1",
4141
"@types/react": "^19.0.8",
4242
"@types/react-dom": "^19.0.3",
4343
"@typescript-eslint/eslint-plugin": "^8.24.1",
4444
"@typescript-eslint/parser": "^8.24.1",
45-
"@vitejs/plugin-react": "^4.3.4",
45+
"@vitejs/plugin-react": "^5.0.2",
4646
"eslint": "^9.20.1",
4747
"eslint-config-prettier": "^10.0.1",
4848
"eslint-plugin-import": "^2.31.0",
4949
"eslint-plugin-prettier": "^5.2.3",
5050
"eslint-plugin-react": "^7.37.4",
5151
"eslint-plugin-react-hooks": "^5.1.0",
5252
"eslint-plugin-react-refresh": "^0.4.18",
53-
"globals": "^15.14.0",
53+
"globals": "^16.3.0",
5454
"prettier": "^3.5.1",
55-
"typescript": "~5.7.2",
55+
"typescript": "~5.9.2",
5656
"typescript-eslint": "^8.22.0",
57-
"vite": "^6.1.0"
57+
"vite": "^7.1.4"
5858
}
5959
}

frontend/src/components/Button.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@ const BaseButton = styled.button`
3838
white-space: nowrap;
3939
4040
.icon {
41-
font-size: 1.4rem;
41+
font-size: 20px;
42+
padding-top: 2px;
4243
}
4344
4445
&:focus {
@@ -101,8 +102,9 @@ const Button = forwardRef<HTMLButtonElement, ButtonProps>((props: ButtonProps, r
101102
const _buttonStyle = style || {};
102103
const _iconStyle = iconStyle || {};
103104

104-
if (hlColor) {
105-
_buttonStyle.borderBottom = `1px solid ${props.hlColor}`;
105+
if (hlColor && !buttonProps.disabled) {
106+
//_buttonStyle.borderBottom = `1px solid ${props.hlColor}`;
107+
_iconStyle.color = props.hlColor
106108
}
107109

108110
return (

frontend/src/components/Dropdown.jsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ const DropdownContainer = styled.div`
3232
background-color: var(--color-surface-04);
3333
}
3434
35-
&:active,
35+
&.active,
3636
&:focus {
3737
outline: none !important;
38+
background-color: var(--color-surface-04);
39+
text-shadow: none !important;
3840
}
3941
4042
&:disabled {
@@ -82,6 +84,7 @@ const DropdownOption = ({
8284
iconStyle={hlColor ? { color: hlColor } : {}}
8385
disabled={disabled || currentValue === value}
8486
onClick={() => onClick(value)}
87+
active={currentValue === value}
8588
/>
8689
</span>
8790
);
@@ -96,7 +99,7 @@ const Dropdown = ({
9699
contentStyle = {},
97100
value = null,
98101
disabled = false,
99-
iconOnRigth = false,
102+
iconOnRight = true,
100103
}) => {
101104
if (align === 'right') contentStyle['right'] = 0;
102105

@@ -107,7 +110,7 @@ const Dropdown = ({
107110
style={buttonStyle}
108111
icon={icon}
109112
label={label}
110-
iconOnRight={iconOnRigth}
113+
iconOnRight={iconOnRight}
111114
disabled={disabled}
112115
/>
113116
<div className="dropdown-content" style={contentStyle}>

frontend/src/components/SelectDialog.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ const SelectDialog = ({ options, onHide, selectionMode, initialValue, title }) =
161161
ref={filterRef}
162162
style={{ flexGrow: 1 }}
163163
/>
164-
<Button onClick={() => setFilter('')} icon="backspace" title="Clear filter" />
164+
<Button onClick={() => setFilter('')} icon="filter_alt_off" title="Clear filter" />
165165
</div>
166166
</div>
167167
);

frontend/src/components/table/TableWrapper.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ const TableWrapper = styled.div`
119119
width: 100%;
120120
background: transparent;
121121
border: 1px solid var(--color-violet);
122+
align-items: center;
122123
}
123124
}
124125

0 commit comments

Comments
 (0)