Skip to content

Commit a2a1956

Browse files
committed
feat: more workspaces, other bug fixes and improvements
workspaces: added zen browser and firefox, also fixed emojis sessions: fix auto node picking logic other: fix wording in admin dash to be more clear
1 parent 59f7513 commit a2a1956

File tree

13 files changed

+179
-13
lines changed

13 files changed

+179
-13
lines changed

apps/web/src/app/(main)/admin/workspaces/columns.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ export const columns: ColumnDef<SelectWorkspaceRelation & { nodes: string[] }>[]
7070
})
7171
}
7272
>
73-
Delete workspace
73+
Delete from database
7474
</DropdownMenuItem>
7575
</DropdownMenuContent>
7676
</DropdownMenu>

apps/web/src/lib/session/best-node.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type { NodeConfig } from "@stardust/config/config";
77
export async function getBestNode(workspace: string) {
88
const { nodes: configNodes } = getConfig();
99
const nodes: Record<number, number> = {};
10-
const nodeMetadata = (
10+
const availableNodes = (
1111
await Promise.all(
1212
configNodes.map(async (n) => {
1313
const { data } = await stardustConnector(n).workspaces.index.get();
@@ -18,14 +18,19 @@ export async function getBestNode(workspace: string) {
1818
};
1919
}),
2020
)
21-
).filter((n) => n.workspaces.includes(workspace));
22-
if (nodeMetadata.length <= 0) throw new Error("No node with the selected workspace found");
21+
)
22+
.filter((n) => n.workspaces.includes(workspace))
23+
.map((d) => d.id);
24+
if (availableNodes.length <= 0) throw new Error("No node with the selected workspace found");
2325
await Promise.all(
24-
configNodes.map(async (n: NodeConfig, i) => {
25-
const { data } = await stardustConnector(n).healthcheck.get();
26-
nodes[i] = Number(data?.cpu);
27-
}),
26+
configNodes
27+
.filter(({ id }) => availableNodes.includes(id))
28+
.map(async (n: NodeConfig, i) => {
29+
const { data } = await stardustConnector(n).healthcheck.get();
30+
nodes[i] = Number(data?.cpu);
31+
}),
2832
);
33+
console.log(nodes);
2934
return Object.keys(nodes)
3035
.map(Number)
3136
.find((key) => nodes[key] === Math.min(...Object.values(nodes))) as number; // shoot me

apps/web/src/lib/session/create.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export async function createSession(workspace: string, nodeId?: string) {
6060
});
6161
return { data: dbEntry[0] };
6262
} catch (e) {
63+
console.log(e);
6364
return { error: (e as Error).message, data: null };
6465
}
6566
}

packages/db/seed.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,18 @@ const workspaces = [
1313
category: ["Browser"],
1414
icon: "https://www.chromium.org/_assets/icon-chromium-96.png",
1515
},
16+
{
17+
dockerImage: "ghcr.io/spaceness/zen",
18+
friendlyName: "Zen",
19+
category: ["Browser"],
20+
icon: "https://raw.githubusercontent.com/zen-browser/.github/refs/heads/main/profile/logo-black.png",
21+
},
22+
{
23+
dockerImage: "ghcr.io/spaceness/firefox",
24+
friendlyName: "Firefox",
25+
category: ["Browser"],
26+
icon: "https://www.mozilla.org/media/protocol/img/logos/firefox/browser/logo.eb1324e44442.svg",
27+
},
1628
];
1729
const insertion = await db.insert(workspace).values(workspaces).onConflictDoNothing().returning();
1830
console.log(`✨Stardust: Seeded ${insertion.map((i) => i.dockerImage).join(", ") || "no images"}`);

workspaces/build.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
const images = ["chromium", "debian"];
2-
const x64Only = ["pinball"];
1+
const images = ["chromium", "debian", "zen", "firefox"];
2+
const x64Only = [];
33

44
import { spawn } from "node:child_process";
55
import { argv } from "node:process";

workspaces/chromium/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ENV DEBIAN_FRONTEND=noninteractive
88
COPY ./scripts /opt/stardust/scripts
99

1010
RUN apt-get update && apt-get install --no-install-recommends -y \
11-
xfonts-75dpi xvfb passwd sudo dbus dbus-x11 libxrandr2 libxext-dev libxrender-dev libxtst-dev imagemagick x11-apps build-essential pulseaudio gstreamer1.0* \
11+
xfonts-75dpi xvfb passwd sudo dbus dbus-x11 libxrandr2 libxext-dev libxrender-dev libxtst-dev imagemagick x11-apps build-essential pulseaudio gstreamer1.0* fonts-noto-color-emoji \
1212
python3 python3-pip xterm git procps python3-numpy xfwm4 x11vnc xfce4-terminal xfce4-session xfconf xfce4-notifyd \
1313
wget curl inetutils-ping vim tigervnc-tools tigervnc-standalone-server tigervnc-common wmctrl \
1414
chromium gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly

workspaces/debian/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ENV DEBIAN_FRONTEND=noninteractive
88
COPY ./scripts /opt/stardust/scripts
99

1010
RUN apt-get update && apt-get install --no-install-recommends -y \
11-
xfonts-75dpi xvfb passwd sudo dbus dbus-x11 libxrandr2 libxext-dev libxrender-dev libxtst-dev imagemagick x11-apps build-essential pulseaudio gstreamer1.0* \
11+
xfonts-75dpi xvfb passwd sudo dbus dbus-x11 libxrandr2 libxext-dev libxrender-dev libxtst-dev imagemagick x11-apps build-essential pulseaudio gstreamer1.0* fonts-noto-color-emoji \
1212
python3 python3-pip xterm git procps python3-numpy neofetch \
1313
xfce4 wget curl xfce4-goodies inetutils-ping firefox-esr chromium gimp remmina remmina-plugin-vnc remmina-plugin-rdp flatpak vim \
1414
tigervnc-tools tigervnc-standalone-server tigervnc-common gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly wmctrl

workspaces/firefox/Dockerfile

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
FROM debian:bookworm
2+
LABEL org.opencontainers.image.source=https://github.com/spaceness/stardust
3+
WORKDIR /opt/stardust
4+
ENV USER=stardust
5+
ENV PNPM_HOME="/home/stardust/.local/share/pnpm"
6+
ENV DEBIAN_FRONTEND=noninteractive
7+
8+
COPY ./scripts /opt/stardust/scripts
9+
# idk if all of these are needed someone fix this - @incognitotgt
10+
RUN apt-get update && apt-get install --no-install-recommends -y \
11+
xfonts-75dpi xvfb passwd sudo dbus dbus-x11 libxrandr2 libxext-dev libxrender-dev libxtst-dev imagemagick x11-apps build-essential pulseaudio gstreamer1.0* fonts-noto-color-emoji \
12+
python3 python3-pip procps python3-numpy xfwm4 xfce4-terminal xfce4-session xfconf xfce4-notifyd \
13+
wget curl inetutils-ping vim tigervnc-tools tigervnc-standalone-server tigervnc-common \
14+
firefox-esr
15+
16+
RUN bash /opt/stardust/scripts/prepare.sh
17+
USER stardust
18+
COPY ./firefox/xstartup /opt/stardust/xstartup
19+
RUN bash /opt/stardust/scripts/vnc-setup.sh
20+
21+
WORKDIR /home/stardust
22+
CMD ["bash", "/opt/stardust/scripts/start.sh"]
23+
EXPOSE 5901 4713 6080

workspaces/firefox/xstartup

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#!/bin/bash
2+
xrdb $HOME/.Xresources
3+
export DISPLAY=":1"
4+
startxfce4 &
5+
sleep 1
6+
echo "while :
7+
do
8+
firefox --no-sandbox
9+
sleep 2
10+
done
11+
" | bash

workspaces/template/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ ENV DEBIAN_FRONTEND=noninteractive
88
COPY ./scripts /opt/stardust/scripts
99
# idk if all of these are needed someone fix this - @incognitotgt
1010
RUN apt-get update && apt-get install --no-install-recommends -y \
11-
xfonts-75dpi xvfb passwd sudo dbus dbus-x11 libxrandr2 libxext-dev libxrender-dev libxtst-dev imagemagick x11-apps build-essential pulseaudio gstreamer1.0* \
11+
xfonts-75dpi xvfb passwd sudo dbus dbus-x11 libxrandr2 libxext-dev libxrender-dev libxtst-dev imagemagick x11-apps build-essential pulseaudio gstreamer1.0* fonts-noto-color-emoji \
1212
python3 python3-pip xterm git procps python3-numpy xfwm4 xfce4-terminal xfce4-session xfconf xfce4-notifyd \
1313
wget curl inetutils-ping vim tigervnc-tools tigervnc-standalone-server tigervnc-common \
1414
{{APPLICATION_PACKAGE}}

0 commit comments

Comments
 (0)