Skip to content

Commit 1f9aeff

Browse files
committed
resolve conflicts
1 parent 51d546d commit 1f9aeff

File tree

3,595 files changed

+1159417
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,595 files changed

+1159417
-0
lines changed

.vite/deps/_metadata.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"hash": "10b5fb8d",
3+
"configHash": "fd609f12",
4+
"lockfileHash": "e3b0c442",
5+
"browserHash": "4bebaebb",
6+
"optimized": {},
7+
"chunks": {}
8+
}

.vite/deps/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"type": "module"
3+
}

Dockerfile.build

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# syntax=docker/dockerfile:1
2+
FROM golang:1.24.4-bookworm
3+
4+
ENV GOTOOLCHAIN=local
5+
ENV GOPATH /go
6+
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
7+
8+
# Install build dependencies
9+
RUN apt-get update && apt-get install -y --no-install-recommends \
10+
build-essential \
11+
device-tree-compiler \
12+
gperf g++-multilib gcc-multilib \
13+
libnl-3-dev libdbus-1-dev libelf-dev libmpc-dev dwarves \
14+
bc openssl flex bison libssl-dev python3 python-is-python3 texinfo kmod cmake \
15+
wget zstd \
16+
&& rm -rf /var/lib/apt/lists/*
17+
18+
# Install buildkit
19+
ENV BUILDKIT_VERSION="v0.2.2"
20+
RUN wget https://github.com/jetkvm/rv1106-system/releases/download/${BUILDKIT_VERSION}/buildkit.tar.zst && \
21+
mkdir -p /opt/jetkvm-native-buildkit && \
22+
tar --use-compress-program="unzstd --long=31" -xvf buildkit.tar.zst -C /opt/jetkvm-native-buildkit && \
23+
rm buildkit.tar.zst
24+
25+
# Create build directory
26+
RUN mkdir -p /build/
27+
28+
# Copy go.mod and go.sum
29+
COPY go.mod go.sum /build/
30+
31+
WORKDIR /build
32+
33+
RUN go mod download && go mod verify

buildkit.tar.zst

54 MB
Binary file not shown.

cprof.out

24.1 KB
Binary file not shown.

gotestsum

7.98 MB
Binary file not shown.

testreport.json

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{"Time":"2025-05-16T20:06:50.904437+02:00","Action":"start","Package":"github.com/jetkvm/kvm"}
2+
{"Time":"2025-05-16T20:06:50.904512+02:00","Action":"output","Package":"github.com/jetkvm/kvm","Output":"? \tgithub.com/jetkvm/kvm\t[no test files]\n"}
3+
{"Time":"2025-05-16T20:06:50.904531+02:00","Action":"skip","Package":"github.com/jetkvm/kvm","Elapsed":0}
4+
{"Time":"2025-05-16T20:06:50.916238+02:00","Action":"start","Package":"github.com/jetkvm/kvm/cmd"}
5+
{"Time":"2025-05-16T20:06:50.91626+02:00","Action":"output","Package":"github.com/jetkvm/kvm/cmd","Output":"? \tgithub.com/jetkvm/kvm/cmd\t[no test files]\n"}
6+
{"Time":"2025-05-16T20:06:50.916272+02:00","Action":"skip","Package":"github.com/jetkvm/kvm/cmd","Elapsed":0}
7+
{"Time":"2025-05-16T20:06:51.071519+02:00","Action":"start","Package":"github.com/jetkvm/kvm/internal/confparser"}
8+
{"Time":"2025-05-16T20:06:51.071566+02:00","Action":"start","Package":"github.com/jetkvm/kvm/internal/logging"}
9+
{"Time":"2025-05-16T20:06:51.071596+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/logging","Output":"? \tgithub.com/jetkvm/kvm/internal/logging\t[no test files]\n"}
10+
{"Time":"2025-05-16T20:06:51.07161+02:00","Action":"start","Package":"github.com/jetkvm/kvm/internal/mdns"}
11+
{"Time":"2025-05-16T20:06:51.071611+02:00","Action":"skip","Package":"github.com/jetkvm/kvm/internal/logging","Elapsed":0}
12+
{"Time":"2025-05-16T20:06:51.071621+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/mdns","Output":"? \tgithub.com/jetkvm/kvm/internal/mdns\t[no test files]\n"}
13+
{"Time":"2025-05-16T20:06:51.071629+02:00","Action":"skip","Package":"github.com/jetkvm/kvm/internal/mdns","Elapsed":0}
14+
{"Time":"2025-05-16T20:06:51.071645+02:00","Action":"start","Package":"github.com/jetkvm/kvm/internal/network"}
15+
{"Time":"2025-05-16T20:06:51.071667+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/network","Output":"? \tgithub.com/jetkvm/kvm/internal/network\t[no test files]\n"}
16+
{"Time":"2025-05-16T20:06:51.071676+02:00","Action":"skip","Package":"github.com/jetkvm/kvm/internal/network","Elapsed":0}
17+
{"Time":"2025-05-16T20:06:51.071677+02:00","Action":"start","Package":"github.com/jetkvm/kvm/internal/timesync"}
18+
{"Time":"2025-05-16T20:06:51.071684+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/timesync","Output":"? \tgithub.com/jetkvm/kvm/internal/timesync\t[no test files]\n"}
19+
{"Time":"2025-05-16T20:06:51.071687+02:00","Action":"start","Package":"github.com/jetkvm/kvm/internal/udhcpc"}
20+
{"Time":"2025-05-16T20:06:51.071688+02:00","Action":"skip","Package":"github.com/jetkvm/kvm/internal/timesync","Elapsed":0}
21+
{"Time":"2025-05-16T20:06:51.071709+02:00","Action":"start","Package":"github.com/jetkvm/kvm/internal/usbgadget"}
22+
{"Time":"2025-05-16T20:06:51.071715+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/usbgadget","Output":"? \tgithub.com/jetkvm/kvm/internal/usbgadget\t[no test files]\n"}
23+
{"Time":"2025-05-16T20:06:51.071721+02:00","Action":"skip","Package":"github.com/jetkvm/kvm/internal/usbgadget","Elapsed":0}
24+
{"Time":"2025-05-16T20:06:51.071722+02:00","Action":"start","Package":"github.com/jetkvm/kvm/internal/websecure"}
25+
{"Time":"2025-05-16T20:06:51.071739+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/websecure","Output":"? \tgithub.com/jetkvm/kvm/internal/websecure\t[no test files]\n"}
26+
{"Time":"2025-05-16T20:06:51.071744+02:00","Action":"skip","Package":"github.com/jetkvm/kvm/internal/websecure","Elapsed":0}
27+
{"Time":"2025-05-16T20:06:51.071747+02:00","Action":"start","Package":"github.com/jetkvm/kvm/resource"}
28+
{"Time":"2025-05-16T20:06:51.071752+02:00","Action":"output","Package":"github.com/jetkvm/kvm/resource","Output":"? \tgithub.com/jetkvm/kvm/resource\t[no test files]\n"}
29+
{"Time":"2025-05-16T20:06:51.071755+02:00","Action":"skip","Package":"github.com/jetkvm/kvm/resource","Elapsed":0}
30+
{"Time":"2025-05-16T20:06:51.270727+02:00","Action":"run","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateConfig"}
31+
{"Time":"2025-05-16T20:06:51.270772+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateConfig","Output":"=== RUN TestValidateConfig\n"}
32+
{"Time":"2025-05-16T20:06:51.27085+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateConfig","Output":"--- PASS: TestValidateConfig (0.00s)\n"}
33+
{"Time":"2025-05-16T20:06:51.270864+02:00","Action":"pass","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateConfig","Elapsed":0}
34+
{"Time":"2025-05-16T20:06:51.270873+02:00","Action":"run","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigNetmaskRequiredIfStatic"}
35+
{"Time":"2025-05-16T20:06:51.270879+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigNetmaskRequiredIfStatic","Output":"=== RUN TestValidateIPv4StaticConfigNetmaskRequiredIfStatic\n"}
36+
{"Time":"2025-05-16T20:06:51.270882+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigNetmaskRequiredIfStatic","Output":"--- PASS: TestValidateIPv4StaticConfigNetmaskRequiredIfStatic (0.00s)\n"}
37+
{"Time":"2025-05-16T20:06:51.270886+02:00","Action":"pass","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigNetmaskRequiredIfStatic","Elapsed":0}
38+
{"Time":"2025-05-16T20:06:51.270889+02:00","Action":"run","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigNetmaskNotRequiredIfStatic"}
39+
{"Time":"2025-05-16T20:06:51.2709+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigNetmaskNotRequiredIfStatic","Output":"=== RUN TestValidateIPv4StaticConfigNetmaskNotRequiredIfStatic\n"}
40+
{"Time":"2025-05-16T20:06:51.270906+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigNetmaskNotRequiredIfStatic","Output":"--- PASS: TestValidateIPv4StaticConfigNetmaskNotRequiredIfStatic (0.00s)\n"}
41+
{"Time":"2025-05-16T20:06:51.27091+02:00","Action":"pass","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigNetmaskNotRequiredIfStatic","Elapsed":0}
42+
{"Time":"2025-05-16T20:06:51.270914+02:00","Action":"run","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigRequiredIf"}
43+
{"Time":"2025-05-16T20:06:51.270918+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigRequiredIf","Output":"=== RUN TestValidateIPv4StaticConfigRequiredIf\n"}
44+
{"Time":"2025-05-16T20:06:51.270925+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigRequiredIf","Output":"--- PASS: TestValidateIPv4StaticConfigRequiredIf (0.00s)\n"}
45+
{"Time":"2025-05-16T20:06:51.270927+02:00","Action":"pass","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigRequiredIf","Elapsed":0}
46+
{"Time":"2025-05-16T20:06:51.270929+02:00","Action":"run","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigValidateType"}
47+
{"Time":"2025-05-16T20:06:51.270932+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigValidateType","Output":"=== RUN TestValidateIPv4StaticConfigValidateType\n"}
48+
{"Time":"2025-05-16T20:06:51.270991+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigValidateType","Output":"--- PASS: TestValidateIPv4StaticConfigValidateType (0.00s)\n"}
49+
{"Time":"2025-05-16T20:06:51.270995+02:00","Action":"pass","Package":"github.com/jetkvm/kvm/internal/confparser","Test":"TestValidateIPv4StaticConfigValidateType","Elapsed":0}
50+
{"Time":"2025-05-16T20:06:51.270997+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Output":"PASS\n"}
51+
{"Time":"2025-05-16T20:06:51.271289+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/confparser","Output":"ok \tgithub.com/jetkvm/kvm/internal/confparser\t0.200s\n"}
52+
{"Time":"2025-05-16T20:06:51.272057+02:00","Action":"pass","Package":"github.com/jetkvm/kvm/internal/confparser","Elapsed":0.201}
53+
{"Time":"2025-05-16T20:06:51.42069+02:00","Action":"run","Package":"github.com/jetkvm/kvm/internal/udhcpc","Test":"TestUnmarshalDHCPCLease"}
54+
{"Time":"2025-05-16T20:06:51.420713+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/udhcpc","Test":"TestUnmarshalDHCPCLease","Output":"=== RUN TestUnmarshalDHCPCLease\n"}
55+
{"Time":"2025-05-16T20:06:51.420737+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/udhcpc","Test":"TestUnmarshalDHCPCLease","Output":"--- PASS: TestUnmarshalDHCPCLease (0.00s)\n"}
56+
{"Time":"2025-05-16T20:06:51.420743+02:00","Action":"pass","Package":"github.com/jetkvm/kvm/internal/udhcpc","Test":"TestUnmarshalDHCPCLease","Elapsed":0}
57+
{"Time":"2025-05-16T20:06:51.420748+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/udhcpc","Output":"PASS\n"}
58+
{"Time":"2025-05-16T20:06:51.421071+02:00","Action":"output","Package":"github.com/jetkvm/kvm/internal/udhcpc","Output":"ok \tgithub.com/jetkvm/kvm/internal/udhcpc\t0.349s\n"}
59+
{"Time":"2025-05-16T20:06:51.422515+02:00","Action":"pass","Package":"github.com/jetkvm/kvm/internal/udhcpc","Elapsed":0.351}

ui/src/log.ts

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import { ISettingsParam, Logger as TSLogger, ILogObj } from "tslog";
2+
3+
class Logger<T> extends TSLogger<T> {
4+
constructor(settings?: ISettingsParam<T>, logObj?: T) {
5+
super(settings, logObj);
6+
// https://github.com/fullstack-build/tslog/issues/302
7+
// @ts-expect-error TS2341
8+
this.stackDepthLevel = 6
9+
}
10+
}
11+
12+
const debugModeDefaultSettings: Partial<ISettingsParam<ILogObj>> = {
13+
minLevel: 0, // 0 = silly
14+
hideLogPositionForProduction: false,
15+
};
16+
17+
const prodModeDefaultSettings: Partial<ISettingsParam<ILogObj>> = {
18+
minLevel: 3, // 3 = info
19+
hideLogPositionForProduction: true,
20+
};
21+
22+
export const logger = new Logger<ILogObj>({
23+
name: "jetkvm",
24+
...(import.meta.env.DEV ? debugModeDefaultSettings : prodModeDefaultSettings),
25+
});
26+
27+
export const jsonRpcLogger = logger.getSubLogger({ name: "json-rpc" });
28+
29+
export const diffSettings = (currentSettings: ISettingsParam<ILogObj>, newSettings: ISettingsParam<ILogObj>) => {
30+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
31+
const diffKeys = Object.keys(newSettings).filter(key => (currentSettings as unknown as any)[key] !== (newSettings as unknown as any)[key]);
32+
const difference = Array<{
33+
key: string;
34+
oldValue: any; // eslint-disable-line @typescript-eslint/no-explicit-any
35+
newValue: any; // eslint-disable-line @typescript-eslint/no-explicit-any
36+
}>();
37+
diffKeys.forEach(key => {
38+
difference.push({
39+
key,
40+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
41+
oldValue: (currentSettings as unknown as any)[key],
42+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
43+
newValue: (newSettings as unknown as any)[key],
44+
});
45+
});
46+
return difference;
47+
};
48+
49+
export const updateLogSettings = (settings: Partial<ISettingsParam<ILogObj>>) => {
50+
// compare the settings to the current settings
51+
const currentSettings = logger.settings;
52+
logger.settings = {
53+
...logger.settings,
54+
...settings,
55+
};
56+
57+
const diff = diffSettings(currentSettings, logger.settings);
58+
59+
if (diff.length > 0) {
60+
logger.info("Updating log settings", { diff });
61+
}
62+
63+
jsonRpcLogger.settings = {
64+
...jsonRpcLogger.settings,
65+
...settings,
66+
};
67+
};
68+
69+
export const enableDebugMode = () => updateLogSettings(debugModeDefaultSettings);
70+
export const disableDebugMode = () => updateLogSettings(prodModeDefaultSettings);
71+
72+
if (import.meta.env.DEV) {
73+
enableDebugMode();
74+
} else {
75+
disableDebugMode();
76+
}

0 commit comments

Comments
 (0)