diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index dd49f58..f7d5492 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,26 +1,52 @@ # ------------------------------------------------------------ # Base Image # ------------------------------------------------------------ -FROM mcr.microsoft.com/devcontainers/base:debian +FROM debian:unstable-slim + +ENV DEBIAN_FRONTEND=noninteractive +ENV LANG=C.UTF-8 +ENV LC_ALL=C.UTF-8 # ------------------------------------------------------------ # System Dependencies # ------------------------------------------------------------ -RUN apt update && apt upgrade -y && \ +RUN apt-get update && apt-get upgrade -y && \ apt-get install -y --no-install-recommends \ + curl \ + ca-certificates \ git \ - git-lfs \ + build-essential \ + sudo \ fish \ + unzip \ + xz-utils \ + libatomic1 \ + libc6 \ + wget \ nodejs \ - npm \ - curl + npm && \ + rm -rf /var/lib/apt/lists/* + +# ------------------------------------------------------------ +# Create Non-Root User +# ------------------------------------------------------------ +ARG USERNAME=devuser +ARG UID=1000 +ARG GID=1000 + +RUN groupadd --gid ${GID} ${USERNAME} && \ + useradd --uid ${UID} --gid ${GID} -m -s /usr/bin/fish ${USERNAME} && \ + echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers + +USER ${USERNAME} +WORKDIR /home/${USERNAME} # ------------------------------------------------------------ # Install Bun (Non-Root) # ------------------------------------------------------------ -ENV BUN_INSTALL="$HOME/.bun" -ENV PATH="$BUN_INSTALL/bin:$PATH" - +ENV BUN_INSTALL=/home/${USERNAME}/.bun +ENV PATH="${BUN_INSTALL}/bin:${PATH}" + RUN curl -fsSL https://bun.sh/install | bash # ------------------------------------------------------------ @@ -32,11 +58,11 @@ RUN curl -fsSL https://opencode.ai/install -o opencode-install && \ rm opencode-install # Add OpenCode to PATH permanently -ENV PATH="$HOME/.opencode/bin:$PATH" +ENV PATH="/home/${USERNAME}/.opencode/bin:${PATH}" # ------------------------------------------------------------ # Ensure fish is Default Shell # ------------------------------------------------------------ ENV SHELL=/usr/bin/fish -CMD ["fish"] \ No newline at end of file +CMD ["fish"] diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index bd87db0..3aee656 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,14 +1,22 @@ { - "name": "Monochrome Dev Container", + "name": "debian-npm-fish-devcontainer", "build": { - "context": "..", - "dockerfile": "./Dockerfile" + "dockerfile": "Dockerfile" }, - "postCreateCommand": "git config --local core.editor \"code --wait\" && git config --local commit.gpgsign false && npm install && bun install", + + "remoteUser": "devuser", + + "features": {}, + "customizations": { "vscode": { "extensions": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"] } }, - "mounts": ["source=${env:HOME}/.gitconfig,target=/home/vscode/.gitconfig,type=bind,consistency=cached"] + + "postCreateCommand": "npm install", + + "remoteEnv": { + "SHELL": "/usr/bin/fish" + } } diff --git a/js/ui.js b/js/ui.js index 5e333a4..790761b 100644 --- a/js/ui.js +++ b/js/ui.js @@ -2604,7 +2604,7 @@ export class UIRenderer { setupHlsVideo(video, result, fallbackImg) { if (!result) return; - const url = typeof result === 'string' ? result : (result.videoUrl || result.hlsUrl); + const url = typeof result === 'string' ? result : result.videoUrl || result.hlsUrl; if (!url) return; if (url.endsWith('.m3u8')) {