Compare commits

...

16 Commits

Author SHA1 Message Date
henrygd
af0c1d3af7 release 0.18.2 2026-01-12 18:26:30 -05:00
henrygd
9ad3cd0ab9 fix: GPU ID collision between Intel and NVIDIA collectors (#1522)
- Prefix Intel GPU ID as i0 to avoid NVML/NVIDIA index IDs like 0
- Update frontend GPU engines chart to select a GPU by id instead of
assuming g[0]
- Adjust tests to use the new Intel GPU id
2026-01-12 17:27:35 -05:00
crimist
00def272b0 site: only hide GPU engine graph if entire usage is 0% (#1624) 2026-01-12 17:16:05 -05:00
henrygd
383913505f agent: fix tegrastats VDD_SYS_GPU parsing
- Parse VDD_SYS_GPU <mW>/<mW> correctly

- Add regression test for GPU@ temp + VDD_SYS_GPU power
2026-01-12 16:12:36 -05:00
Vascolas007
ca8cb78c29 Jetson tegrastats regex pre jetpack5 (#1631)
* feat:Adding regex catching groups for GPU temperature and power in pre jetpack 5
2026-01-12 16:11:22 -05:00
marmar76
8821fb5dd0 fix: some of indonesia translate (#1625)
Co-authored-by: Iskandar, Andreas (contracted) <Andreas.Iskandar@contracted.sampoerna.com>
2026-01-12 15:56:45 -05:00
henrygd
3279a6ca53 agent: add separate glibc build with NVML support (#1618)
purego requires dynamic linking, so split the agent builds:
- Default: static binary without NVML (works on musl/alpine)
- Glibc: dynamic binary with NVML support via purego

Changes:
- Add glibc build tag to conditionally include NVML code
- Add beszel-agent-linux-amd64-glibc build/archive in goreleaser
- Update ghupdate to use glibc binary on glibc systems
- Switch nvidia dockerfile to golang:bookworm with -tags glibc
2026-01-12 15:38:13 -05:00
henrygd
6a1a98d73f update build constraints to exclude nvml collector on arm64 (#1618) 2026-01-11 20:27:34 -05:00
henrygd
1f067aad5b release 0.18.1 2026-01-11 19:05:36 -05:00
henrygd
1388711105 fix(hub): prevent clearing all containers when single system update is empty (#1620) 2026-01-11 19:03:42 -05:00
henrygd
618e5b4cc1 fix purego build errors on non-supported architectures 2026-01-11 17:48:19 -05:00
henrygd
42c3ca5db5 release 0.18.0 2026-01-11 17:18:32 -05:00
henrygd
534791776b update translations 2026-01-11 17:09:43 -05:00
henrygd
0c6c53fc7d fix isSystemdAvailable in containers and update alpine to 3.23 2026-01-11 16:07:24 -05:00
henrygd
0dfd5ce07d update go deps and changelog 2026-01-11 15:06:58 -05:00
henrygd
2cd6d46f7c add option to make universal token permanent (#1097, 1614) 2026-01-11 15:03:33 -05:00
58 changed files with 1237 additions and 222 deletions

View File

@@ -76,6 +76,18 @@ builds:
- goos: windows
goarch: riscv64
- id: beszel-agent-linux-amd64-glibc
binary: beszel-agent
main: internal/cmd/agent/agent.go
env:
- CGO_ENABLED=0
flags:
- -tags=glibc
goos:
- linux
goarch:
- amd64
archives:
- id: beszel-agent
formats: [tar.gz]
@@ -89,6 +101,15 @@ archives:
- goos: windows
formats: [zip]
- id: beszel-agent-linux-amd64-glibc
formats: [tar.gz]
ids:
- beszel-agent-linux-amd64-glibc
name_template: >-
{{ .Binary }}_
{{- .Os }}_
{{- .Arch }}_glibc
- id: beszel
formats: [tar.gz]
ids:

View File

@@ -5,6 +5,7 @@ import (
"bytes"
"encoding/json"
"fmt"
"log/slog"
"maps"
"os/exec"
"regexp"
@@ -14,8 +15,6 @@ import (
"time"
"github.com/henrygd/beszel/internal/entities/system"
"log/slog"
)
const (
@@ -137,10 +136,10 @@ func (gm *GPUManager) getJetsonParser() func(output []byte) bool {
// use closure to avoid recompiling the regex
ramPattern := regexp.MustCompile(`RAM (\d+)/(\d+)MB`)
gr3dPattern := regexp.MustCompile(`GR3D_FREQ (\d+)%`)
tempPattern := regexp.MustCompile(`tj@(\d+\.?\d*)C`)
tempPattern := regexp.MustCompile(`(?:tj|GPU)@(\d+\.?\d*)C`)
// Orin Nano / NX do not have GPU specific power monitor
// TODO: Maybe use VDD_IN for Nano / NX and add a total system power chart
powerPattern := regexp.MustCompile(`(GPU_SOC|CPU_GPU_CV) (\d+)mW`)
powerPattern := regexp.MustCompile(`(GPU_SOC|CPU_GPU_CV)\s+(\d+)mW|VDD_SYS_GPU\s+(\d+)/\d+`)
// jetson devices have only one gpu so we'll just initialize here
gpuData := &system.GPUData{Name: "GPU"}
@@ -169,7 +168,13 @@ func (gm *GPUManager) getJetsonParser() func(output []byte) bool {
// Parse power usage
powerMatches := powerPattern.FindSubmatch(output)
if powerMatches != nil {
power, _ := strconv.ParseFloat(string(powerMatches[2]), 64)
// powerMatches[2] is the "(GPU_SOC|CPU_GPU_CV) <N>mW" capture
// powerMatches[3] is the "VDD_SYS_GPU <N>/<N>" capture
powerStr := string(powerMatches[2])
if powerStr == "" {
powerStr = string(powerMatches[3])
}
power, _ := strconv.ParseFloat(powerStr, 64)
gpuData.Power += power / milliwattsInAWatt
}
gpuData.Count++
@@ -232,10 +237,11 @@ func (gm *GPUManager) parseAmdData(output []byte) bool {
totalMemory, _ := strconv.ParseFloat(v.MemoryTotal, 64)
usage, _ := strconv.ParseFloat(v.Usage, 64)
if _, ok := gm.GpuDataMap[v.ID]; !ok {
gm.GpuDataMap[v.ID] = &system.GPUData{Name: v.Name}
id := v.ID
if _, ok := gm.GpuDataMap[id]; !ok {
gm.GpuDataMap[id] = &system.GPUData{Name: v.Name}
}
gpu := gm.GpuDataMap[v.ID]
gpu := gm.GpuDataMap[id]
gpu.Temperature, _ = strconv.ParseFloat(v.Temperature, 64)
gpu.MemoryUsed = bytesToMegabytes(memoryUsage)
gpu.MemoryTotal = bytesToMegabytes(totalMemory)

View File

@@ -27,10 +27,11 @@ func (gm *GPUManager) updateIntelFromStats(sample *intelGpuStats) bool {
defer gm.Unlock()
// only one gpu for now - cmd doesn't provide all by default
gpuData, ok := gm.GpuDataMap["0"]
id := "i0" // prefix with i to avoid conflicts with nvidia card ids
gpuData, ok := gm.GpuDataMap[id]
if !ok {
gpuData = &system.GPUData{Name: "GPU", Engines: make(map[string]float64)}
gm.GpuDataMap["0"] = gpuData
gm.GpuDataMap[id] = gpuData
}
gpuData.Power += sample.PowerGPU

View File

@@ -1,3 +1,5 @@
//go:build amd64 && (windows || (linux && glibc))
package agent
import (

View File

@@ -1,14 +1,14 @@
//go:build linux
//go:build glibc && linux && amd64
package agent
import (
"log/slog"
"os"
"path/filepath"
"strings"
"github.com/ebitengine/purego"
"log/slog"
)
func openLibrary(name string) (uintptr, error) {

View File

@@ -1,9 +1,21 @@
//go:build !linux && !windows
//go:build (!linux && !windows) || !amd64 || (linux && !glibc)
package agent
import "fmt"
type nvmlCollector struct {
gm *GPUManager
}
func (c *nvmlCollector) init() error {
return fmt.Errorf("nvml not supported on this platform")
}
func (c *nvmlCollector) start() {}
func (c *nvmlCollector) collect() {}
func openLibrary(name string) (uintptr, error) {
return 0, fmt.Errorf("nvml not supported on this platform")
}

View File

@@ -1,4 +1,4 @@
//go:build windows
//go:build windows && amd64
package agent

View File

@@ -307,6 +307,19 @@ func TestParseJetsonData(t *testing.T) {
Count: 1,
},
},
{
name: "orin-style output with GPU@ temp and VDD_SYS_GPU power",
input: "RAM 3276/7859MB (lfb 5x4MB) SWAP 1626/12122MB (cached 181MB) CPU [44%@1421,49%@2031,67%@2034,17%@1420,25%@1419,8%@1420] EMC_FREQ 1%@1866 GR3D_FREQ 0%@114 APE 150 MTS fg 1% bg 1% PLL@42.5C MCPU@42.5C PMIC@50C Tboard@38C GPU@39.5C BCPU@42.5C thermal@41.3C Tdiode@39.25C VDD_SYS_GPU 182/182 VDD_SYS_SOC 730/730 VDD_4V0_WIFI 0/0 VDD_IN 5297/5297 VDD_SYS_CPU 1917/1917 VDD_SYS_DDR 1241/1241",
wantMetrics: &system.GPUData{
Name: "GPU",
MemoryUsed: 3276.0,
MemoryTotal: 7859.0,
Usage: 0.0,
Power: 0.182, // 182mW -> 0.182W
Temperature: 39.5,
Count: 1,
},
},
}
for _, tt := range tests {
@@ -1372,7 +1385,7 @@ func TestIntelUpdateFromStats(t *testing.T) {
ok := gm.updateIntelFromStats(&sample1)
assert.True(t, ok)
gpu := gm.GpuDataMap["0"]
gpu := gm.GpuDataMap["i0"]
require.NotNil(t, gpu)
assert.Equal(t, "GPU", gpu.Name)
assert.EqualValues(t, 10.5, gpu.Power)
@@ -1394,7 +1407,7 @@ func TestIntelUpdateFromStats(t *testing.T) {
ok = gm.updateIntelFromStats(&sample2)
assert.True(t, ok)
gpu = gm.GpuDataMap["0"]
gpu = gm.GpuDataMap["i0"]
require.NotNil(t, gpu)
assert.EqualValues(t, 10.5, gpu.Power)
assert.EqualValues(t, 30.0, gpu.Engines["Render/3D"]) // 20 + 10
@@ -1433,7 +1446,7 @@ echo "298 295 278 51 2.20 3.12 1675 942 5.75 1 2 9.50
t.Fatalf("collectIntelStats error: %v", err)
}
gpu := gm.GpuDataMap["0"]
gpu := gm.GpuDataMap["i0"]
require.NotNil(t, gpu)
// Power should be sum of samples 2-4 (first is skipped): 2.0 + 1.8 + 2.2 = 6.0
assert.EqualValues(t, 6.0, gpu.Power)

View File

@@ -29,10 +29,17 @@ type systemdManager struct {
patterns []string
}
// isSystemdAvailable checks if systemd is used on the system to avoid unnecessary connection attempts.
// isSystemdAvailable checks if systemd is used on the system to avoid unnecessary connection attempts (#1548)
func isSystemdAvailable() bool {
if _, err := os.Stat("/run/systemd/system"); err == nil {
return true
paths := []string{
"/run/systemd/system",
"/run/dbus/system_bus_socket",
"/var/run/dbus/system_bus_socket",
}
for _, path := range paths {
if _, err := os.Stat(path); err == nil {
return true
}
}
if data, err := os.ReadFile("/proc/1/comm"); err == nil {
return strings.TrimSpace(string(data)) == "systemd"
@@ -48,7 +55,7 @@ func newSystemdManager() (*systemdManager, error) {
// Check if systemd is available on the system before attempting connection
if !isSystemdAvailable() {
slog.Debug("Systemd not available on this system")
slog.Debug("Systemd not available")
return nil, nil
}

View File

@@ -19,11 +19,11 @@ func TestSystemdManagerGetServiceStats(t *testing.T) {
assert.NoError(t, err)
// Test with refresh = true
result := manager.getServiceStats(true)
result := manager.getServiceStats("any-service", true)
assert.Nil(t, result)
// Test with refresh = false
result = manager.getServiceStats(false)
result = manager.getServiceStats("any-service", false)
assert.Nil(t, result)
}

View File

@@ -6,7 +6,7 @@ import "github.com/blang/semver"
const (
// Version is the current version of the application.
Version = "0.18.0-beta.2"
Version = "0.18.2"
// AppName is the name of the application.
AppName = "beszel"
)

8
go.mod
View File

@@ -13,7 +13,7 @@ require (
github.com/lxzan/gws v1.8.9
github.com/nicholas-fedor/shoutrrr v0.13.1
github.com/pocketbase/dbx v1.11.0
github.com/pocketbase/pocketbase v0.35.0
github.com/pocketbase/pocketbase v0.35.1
github.com/shirou/gopsutil/v4 v4.25.12
github.com/spf13/cast v1.10.0
github.com/spf13/cobra v1.10.2
@@ -58,11 +58,11 @@ require (
golang.org/x/net v0.48.0 // indirect
golang.org/x/oauth2 v0.34.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/term v0.38.0 // indirect
golang.org/x/text v0.32.0 // indirect
golang.org/x/term v0.39.0 // indirect
golang.org/x/text v0.33.0 // indirect
howett.net/plist v1.0.1 // indirect
modernc.org/libc v1.66.10 // indirect
modernc.org/mathutil v1.7.1 // indirect
modernc.org/memory v1.11.0 // indirect
modernc.org/sqlite v1.41.0 // indirect
modernc.org/sqlite v1.43.0 // indirect
)

14
go.sum
View File

@@ -96,8 +96,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pocketbase/dbx v1.11.0 h1:LpZezioMfT3K4tLrqA55wWFw1EtH1pM4tzSVa7kgszU=
github.com/pocketbase/dbx v1.11.0/go.mod h1:xXRCIAKTHMgUCyCKZm55pUOdvFziJjQfXaWKhu2vhMs=
github.com/pocketbase/pocketbase v0.35.0 h1:MW905RYJnpwl8bvFDPCn+/5Y/TGKbf+kpdKiZmqx/1s=
github.com/pocketbase/pocketbase v0.35.0/go.mod h1:eA9IKEvGYhdVbngBzgXPDZ2aNAGfDBkB6kcuLnHLTag=
github.com/pocketbase/pocketbase v0.35.1 h1:Cd5ivUThTw29myY/tYa2cb0elkScBMseG6fExZsIQB8=
github.com/pocketbase/pocketbase v0.35.1/go.mod h1:yQnh1o1Aq6wVuqcmZbRbDmIhc31AME/F5pnPR0Bdtmg=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
@@ -152,12 +152,12 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY=
golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA=
golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc=
@@ -197,8 +197,6 @@ modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8=
modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=
modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=
modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=
modernc.org/sqlite v1.41.0 h1:bJXddp4ZpsqMsNN1vS0jWo4IJTZzb8nWpcgvyCFG9Ck=
modernc.org/sqlite v1.41.0/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE=
modernc.org/sqlite v1.43.0 h1:8YqiFx3G1VhHTXO2Q00bl1Wz9KhS9Q5okwfp9Y97VnA=
modernc.org/sqlite v1.43.0/go.mod h1:+VkC6v3pLOAE0A0uVucQEcbVW0I5nHCeDaBf+DpsQT8=
modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=

View File

@@ -17,7 +17,7 @@ RUN rm -rf /tmp/*
# --------------------------
# Final image: default scratch-based agent
# --------------------------
FROM alpine:3.22
FROM alpine:3.23
COPY --from=builder /agent /agent
RUN apk add --no-cache smartmontools

View File

@@ -16,7 +16,7 @@ RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-
# Final image
# Note: must cap_add: [CAP_PERFMON] and mount /dev/dri/ as volume
# --------------------------
FROM alpine:3.22
FROM alpine:3.23
COPY --from=builder /agent /agent

View File

@@ -1,4 +1,4 @@
FROM --platform=$BUILDPLATFORM golang:alpine AS builder
FROM --platform=$BUILDPLATFORM golang:bookworm AS builder
WORKDIR /app
@@ -10,7 +10,7 @@ COPY . ./
# Build
ARG TARGETOS TARGETARCH
RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -ldflags "-w -s" -o /agent ./internal/cmd/agent
RUN CGO_ENABLED=0 GOGC=75 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -tags glibc -ldflags "-w -s" -o /agent ./internal/cmd/agent
# --------------------------
# Smartmontools builder stage

View File

@@ -11,6 +11,7 @@ import (
"log/slog"
"net/http"
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"
@@ -345,5 +346,32 @@ func archiveSuffix(binaryName, goos, goarch string) string {
if goos == "windows" {
return fmt.Sprintf("%s_%s_%s.zip", binaryName, goos, goarch)
}
// Use glibc build for agent on glibc systems (includes NVML support via purego)
if binaryName == "beszel-agent" && goos == "linux" && goarch == "amd64" && isGlibc() {
return fmt.Sprintf("%s_%s_%s_glibc.tar.gz", binaryName, goos, goarch)
}
return fmt.Sprintf("%s_%s_%s.tar.gz", binaryName, goos, goarch)
}
func isGlibc() bool {
for _, path := range []string{
"/lib64/ld-linux-x86-64.so.2", // common on many distros
"/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2", // Debian/Ubuntu
"/lib/ld-linux-x86-64.so.2", // alternate
} {
if _, err := os.Stat(path); err == nil {
return true
}
}
// Fallback to ldd output when present (musl ldd reports musl, glibc reports GNU libc/glibc).
if lddPath, err := exec.LookPath("ldd"); err == nil {
out, err := exec.Command(lddPath, "--version").CombinedOutput()
if err == nil {
s := strings.ToLower(string(out))
if strings.Contains(s, "gnu libc") || strings.Contains(s, "glibc") {
return true
}
}
}
return false
}

View File

@@ -66,6 +66,15 @@ func (acr *agentConnectRequest) agentConnect() (err error) {
// Check if token is an active universal token
acr.userId, acr.isUniversalToken = universalTokenMap.GetMap().GetOk(acr.token)
if !acr.isUniversalToken {
// Fallback: check for a permanent universal token stored in the DB
if rec, err := acr.hub.FindFirstRecordByFilter("universal_tokens", "token = {:token}", dbx.Params{"token": acr.token}); err == nil {
if userID := rec.GetString("user"); userID != "" {
acr.userId = userID
acr.isUniversalToken = true
}
}
}
// Find matching fingerprint records for this token
fpRecords := getFingerprintRecordsByToken(acr.token, acr.hub)

View File

@@ -1169,6 +1169,106 @@ func TestMultipleSystemsWithSameUniversalToken(t *testing.T) {
}
}
// TestPermanentUniversalTokenFromDB verifies that a universal token persisted in the DB
// (universal_tokens collection) is accepted for agent self-registration even if it is not
// present in the in-memory universalTokenMap.
func TestPermanentUniversalTokenFromDB(t *testing.T) {
// Create hub and test app
hub, testApp, err := createTestHub(t)
require.NoError(t, err)
defer testApp.Cleanup()
// Get the hub's SSH key
hubSigner, err := hub.GetSSHKey("")
require.NoError(t, err)
goodPubKey := hubSigner.PublicKey()
// Create test user
userRecord, err := createTestUser(testApp)
require.NoError(t, err)
// Create a permanent universal token record in the DB (do NOT add it to universalTokenMap)
universalToken := "db-universal-token-123"
_, err = createTestRecord(testApp, "universal_tokens", map[string]any{
"user": userRecord.Id,
"token": universalToken,
})
require.NoError(t, err)
// Create HTTP server with the actual API route
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/api/beszel/agent-connect" {
acr := &agentConnectRequest{
hub: hub,
req: r,
res: w,
}
acr.agentConnect()
} else {
http.NotFound(w, r)
}
}))
defer ts.Close()
// Create and configure agent
agentDataDir := t.TempDir()
err = os.WriteFile(filepath.Join(agentDataDir, "fingerprint"), []byte("db-token-system-fingerprint"), 0644)
require.NoError(t, err)
testAgent, err := agent.NewAgent(agentDataDir)
require.NoError(t, err)
// Set up environment variables for the agent
os.Setenv("BESZEL_AGENT_HUB_URL", ts.URL)
os.Setenv("BESZEL_AGENT_TOKEN", universalToken)
defer func() {
os.Unsetenv("BESZEL_AGENT_HUB_URL")
os.Unsetenv("BESZEL_AGENT_TOKEN")
}()
// Start agent in background
done := make(chan error, 1)
go func() {
serverOptions := agent.ServerOptions{
Network: "tcp",
Addr: "127.0.0.1:46050",
Keys: []ssh.PublicKey{goodPubKey},
}
done <- testAgent.Start(serverOptions)
}()
// Wait for connection result
maxWait := 2 * time.Second
time.Sleep(20 * time.Millisecond)
checkInterval := 20 * time.Millisecond
timeout := time.After(maxWait)
ticker := time.Tick(checkInterval)
connectionManager := testAgent.GetConnectionManager()
for {
select {
case <-timeout:
t.Fatalf("Expected connection to succeed but timed out - agent state: %d", connectionManager.State)
case <-ticker:
if connectionManager.State == agent.WebSocketConnected {
// Success
goto verify
}
case err := <-done:
// If Start returns early, treat it as failure
if err != nil {
t.Fatalf("Agent failed to start/connect: %v", err)
}
}
}
verify:
// Verify that a system was created for the user (self-registration path)
systemsAfter, err := testApp.FindRecordsByFilter("systems", "users ~ {:userId}", "", -1, 0, map[string]any{"userId": userRecord.Id})
require.NoError(t, err)
require.NotEmpty(t, systemsAfter, "Expected a system to be created for DB-backed universal token")
}
// TestFindOrCreateSystemForToken tests the findOrCreateSystemForToken function
func TestFindOrCreateSystemForToken(t *testing.T) {
hub, testApp, err := createTestHub(t)

View File

@@ -20,6 +20,7 @@ import (
"github.com/henrygd/beszel/internal/users"
"github.com/google/uuid"
"github.com/pocketbase/dbx"
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
"github.com/pocketbase/pocketbase/core"
@@ -288,24 +289,90 @@ func (h *Hub) getUniversalToken(e *core.RequestEvent) error {
userID := e.Auth.Id
query := e.Request.URL.Query()
token := query.Get("token")
enable := query.Get("enable")
permanent := query.Get("permanent")
// helper for deleting any existing permanent token record for this user
deletePermanent := func() error {
rec, err := h.FindFirstRecordByFilter("universal_tokens", "user = {:user}", dbx.Params{"user": userID})
if err != nil {
return nil // no record
}
return h.Delete(rec)
}
// helper for upserting a permanent token record for this user
upsertPermanent := func(token string) error {
rec, err := h.FindFirstRecordByFilter("universal_tokens", "user = {:user}", dbx.Params{"user": userID})
if err == nil {
rec.Set("token", token)
return h.Save(rec)
}
col, err := h.FindCachedCollectionByNameOrId("universal_tokens")
if err != nil {
return err
}
newRec := core.NewRecord(col)
newRec.Set("user", userID)
newRec.Set("token", token)
return h.Save(newRec)
}
// Disable universal tokens (both ephemeral and permanent)
if enable == "0" {
tokenMap.RemovebyValue(userID)
_ = deletePermanent()
return e.JSON(http.StatusOK, map[string]any{"token": token, "active": false, "permanent": false})
}
// Enable universal token (ephemeral or permanent)
if enable == "1" {
if token == "" {
token = uuid.New().String()
}
if permanent == "1" {
// make token permanent (persist across restarts)
tokenMap.RemovebyValue(userID)
if err := upsertPermanent(token); err != nil {
return err
}
return e.JSON(http.StatusOK, map[string]any{"token": token, "active": true, "permanent": true})
}
// default: ephemeral mode (1 hour)
_ = deletePermanent()
tokenMap.Set(token, userID, time.Hour)
return e.JSON(http.StatusOK, map[string]any{"token": token, "active": true, "permanent": false})
}
// Read current state
// Prefer permanent token if it exists.
if rec, err := h.FindFirstRecordByFilter("universal_tokens", "user = {:user}", dbx.Params{"user": userID}); err == nil {
dbToken := rec.GetString("token")
// If no token was provided, or the caller is asking about their permanent token, return it.
if token == "" || token == dbToken {
return e.JSON(http.StatusOK, map[string]any{"token": dbToken, "active": true, "permanent": true})
}
// Token doesn't match their permanent token (avoid leaking other info)
return e.JSON(http.StatusOK, map[string]any{"token": token, "active": false, "permanent": false})
}
// No permanent token; fall back to ephemeral token map.
if token == "" {
// return existing token if it exists
if token, _, ok := tokenMap.GetByValue(userID); ok {
return e.JSON(http.StatusOK, map[string]any{"token": token, "active": true})
return e.JSON(http.StatusOK, map[string]any{"token": token, "active": true, "permanent": false})
}
// if no token is provided, generate a new one
token = uuid.New().String()
}
response := map[string]any{"token": token}
switch query.Get("enable") {
case "1":
tokenMap.Set(token, userID, time.Hour)
case "0":
tokenMap.RemovebyValue(userID)
}
_, response["active"] = tokenMap.GetOk(token)
// Token is considered active only if it belongs to the current user.
activeUser, ok := tokenMap.GetOk(token)
active := ok && activeUser == userID
response := map[string]any{"token": token, "active": active, "permanent": false}
return e.JSON(http.StatusOK, response)
}

View File

@@ -378,7 +378,18 @@ func TestApiRoutesAuthentication(t *testing.T) {
"Authorization": userToken,
},
ExpectedStatus: 200,
ExpectedContent: []string{"active", "token"},
ExpectedContent: []string{"active", "token", "permanent"},
TestAppFactory: testAppFactory,
},
{
Name: "GET /universal-token - enable permanent should succeed",
Method: http.MethodGet,
URL: "/api/beszel/universal-token?enable=1&permanent=1&token=permanent-token-123",
Headers: map[string]string{
"Authorization": userToken,
},
ExpectedStatus: 200,
ExpectedContent: []string{"\"permanent\":true", "permanent-token-123"},
TestAppFactory: testAppFactory,
},
{

View File

@@ -1617,6 +1617,74 @@ func init() {
"type": "base",
"updateRule": "",
"viewRule": "@request.auth.id != \"\" && system.users.id ?= @request.auth.id"
},
{
"createRule": null,
"deleteRule": null,
"fields": [
{
"autogeneratePattern": "[a-z0-9]{10}",
"hidden": false,
"id": "text3208210256",
"max": 10,
"min": 10,
"name": "id",
"pattern": "^[a-z0-9]+$",
"presentable": false,
"primaryKey": true,
"required": true,
"system": true,
"type": "text"
},
{
"cascadeDelete": true,
"collectionId": "_pb_users_auth_",
"hidden": false,
"id": "relation2375276105",
"maxSelect": 1,
"minSelect": 0,
"name": "user",
"presentable": false,
"required": true,
"system": false,
"type": "relation"
},
{
"autogeneratePattern": "",
"hidden": false,
"id": "text1597481275",
"max": 0,
"min": 0,
"name": "token",
"pattern": "",
"presentable": false,
"primaryKey": false,
"required": false,
"system": false,
"type": "text"
},
{
"hidden": false,
"id": "autodate2990389176",
"name": "created",
"onCreate": true,
"onUpdate": false,
"presentable": false,
"system": false,
"type": "autodate"
}
],
"id": "pbc_3383022248",
"indexes": [
"CREATE INDEX ` + "`" + `idx_iaD9Y2Lgbl` + "`" + ` ON ` + "`" + `universal_tokens` + "`" + ` (` + "`" + `token` + "`" + `)",
"CREATE UNIQUE INDEX ` + "`" + `idx_wdR0A4PbRG` + "`" + ` ON ` + "`" + `universal_tokens` + "`" + ` (` + "`" + `user` + "`" + `)"
],
"listRule": null,
"name": "universal_tokens",
"system": false,
"type": "base",
"updateRule": null,
"viewRule": null
}
]`

View File

@@ -1,12 +1,12 @@
{
"name": "beszel",
"version": "0.17.0",
"version": "0.18.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "beszel",
"version": "0.17.0",
"version": "0.18.2",
"dependencies": {
"@henrygd/queue": "^1.0.7",
"@henrygd/semaphore": "^0.0.2",

View File

@@ -1,7 +1,7 @@
{
"name": "beszel",
"private": true,
"version": "0.18.0-beta.2",
"version": "0.18.2",
"type": "module",
"scripts": {
"dev": "vite --host",
@@ -77,4 +77,4 @@
"optionalDependencies": {
"@esbuild/linux-arm64": "^0.21.5"
}
}
}

View File

@@ -57,8 +57,13 @@ export default function ContainersTable({ systemId }: { systemId?: string }) {
.then(
({ items }) => {
if (items.length === 0) {
setData([]);
return;
setData((curItems) => {
if (systemId) {
return curItems?.filter((item) => item.system !== systemId) ?? []
}
return []
})
return
}
setData((curItems) => {
const lastUpdated = Math.max(items[0].updated, items.at(-1)?.updated ?? 0)
@@ -280,7 +285,7 @@ async function getInfoHtml(container: ContainerRecord): Promise<string> {
])
try {
info = JSON.stringify(JSON.parse(info), null, 2)
} catch (_) {}
} catch (_) { }
return info ? highlighter.codeToHtml(info, { lang: "json", theme: syntaxTheme }) : t`No results.`
} catch (error) {
console.error(error)
@@ -337,7 +342,7 @@ function ContainerSheet({
setLogsDisplay("")
setInfoDisplay("")
if (!container) return
;(async () => {
; (async () => {
const [logsHtml, infoHtml] = await Promise.all([getLogsHtml(container), getInfoHtml(container)])
setLogsDisplay(logsHtml)
setInfoDisplay(infoHtml)

View File

@@ -32,6 +32,7 @@ import {
import { AppleIcon, DockerIcon, FreeBsdIcon, TuxIcon, WindowsIcon } from "@/components/ui/icons"
import { Separator } from "@/components/ui/separator"
import { Switch } from "@/components/ui/switch"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"
import { toast } from "@/components/ui/use-toast"
import { isReadOnlyUser, pb } from "@/lib/api"
@@ -137,21 +138,23 @@ const SectionUniversalToken = memo(() => {
const [token, setToken] = useState("")
const [isLoading, setIsLoading] = useState(true)
const [checked, setChecked] = useState(false)
const [isPermanent, setIsPermanent] = useState(false)
async function updateToken(enable: number = -1) {
async function updateToken(enable: number = -1, permanent: number = -1) {
// enable: 0 for disable, 1 for enable, -1 (unset) for get current state
const data = await pb.send(`/api/beszel/universal-token`, {
query: {
token,
enable,
permanent,
},
})
setToken(data.token)
setChecked(data.active)
setIsPermanent(!!data.permanent)
setIsLoading(false)
}
// biome-ignore lint/correctness/useExhaustiveDependencies: only on mount
useEffect(() => {
updateToken()
}, [])
@@ -162,30 +165,64 @@ const SectionUniversalToken = memo(() => {
<Trans>Universal token</Trans>
</h3>
<p className="text-sm text-muted-foreground leading-relaxed">
<Trans>
When enabled, this token allows agents to self-register without prior system creation. Expires after one hour
or on hub restart.
</Trans>
<Trans>When enabled, this token allows agents to self-register without prior system creation.</Trans>
</p>
<div className="min-h-16 overflow-auto max-w-full inline-flex items-center gap-5 mt-3 border py-2 ps-5 pe-4 rounded-md">
<div className="mt-3 border rounded-md px-4 py-3 max-w-full">
{!isLoading && (
<>
<Switch
defaultChecked={checked}
onCheckedChange={(checked) => {
updateToken(checked ? 1 : 0)
}}
/>
<span
className={cn(
"text-sm text-primary opacity-60 transition-opacity",
checked ? "opacity-100" : "select-none"
)}
>
{token}
</span>
<ActionsButtonUniversalToken token={token} checked={checked} />
</>
<div className="flex flex-col gap-3">
<div className="flex items-center gap-4 min-w-0">
<Switch
checked={checked}
onCheckedChange={(checked) => {
// Keep current permanence preference when enabling/disabling
updateToken(checked ? 1 : 0, isPermanent ? 1 : 0)
}}
/>
<div className="min-w-0 flex-1 overflow-auto">
<span
className={cn(
"text-sm text-primary opacity-60 transition-opacity",
checked ? "opacity-100" : "select-none"
)}
>
{token}
</span>
</div>
<ActionsButtonUniversalToken token={token} checked={checked} />
</div>
{checked && (
<div className="border-t pt-3">
<div className="text-sm font-medium">
<Trans>Persistence</Trans>
</div>
<Tabs
value={isPermanent ? "permanent" : "ephemeral"}
onValueChange={(value) => updateToken(1, value === "permanent" ? 1 : 0)}
className="mt-2"
>
<TabsList>
<TabsTrigger className="xs:min-w-40" value="ephemeral">
<Trans>Ephemeral</Trans>
</TabsTrigger>
<TabsTrigger className="xs:min-w-40" value="permanent">
<Trans>Permanent</Trans>
</TabsTrigger>
</TabsList>
<TabsContent value="ephemeral" className="mt-3">
<p className="text-sm text-muted-foreground leading-relaxed">
<Trans>Expires after one hour or on hub restart.</Trans>
</p>
</TabsContent>
<TabsContent value="permanent" className="mt-3">
<p className="text-sm text-muted-foreground leading-relaxed">
<Trans>Saved in the database and does not expire until you disable it.</Trans>
</p>
</TabsContent>
</Tabs>
</div>
)}
</div>
)}
</div>
</div>

View File

@@ -407,23 +407,20 @@ export default memo(function SystemDetail({ id }: { id: string }) {
let hasGpuPowerData = false
if (lastGpus) {
// check if there are any GPUs with engines
for (const id in lastGpus) {
hasGpuData = true
if (lastGpus[id].e !== undefined) {
hasGpuEnginesData = true
break
}
}
// check if there are any GPUs with power data
for (let i = 0; i < systemStats.length && !hasGpuPowerData; i++) {
// check if there are any GPUs at all
hasGpuData = Object.keys(lastGpus).length > 0
// check if there are any GPUs with engines or power data
for (let i = 0; i < systemStats.length && (!hasGpuEnginesData || !hasGpuPowerData); i++) {
const gpus = systemStats[i].stats?.g
if (!gpus) continue
for (const id in gpus) {
if (gpus[id].p !== undefined || gpus[id].pp !== undefined) {
hasGpuPowerData = true
break
if (!hasGpuEnginesData && gpus[id].e !== undefined) {
hasGpuEnginesData = true
}
if (!hasGpuPowerData && (gpus[id].p !== undefined || gpus[id].pp !== undefined)) {
hasGpuPowerData = true
}
if (hasGpuEnginesData && hasGpuPowerData) break
}
}
}
@@ -891,16 +888,30 @@ export default memo(function SystemDetail({ id }: { id: string }) {
})
function GpuEnginesChart({ chartData }: { chartData: ChartData }) {
const dataPoints: DataPoint[] = []
const engines = Object.keys(chartData.systemStats?.at(-1)?.stats.g?.[0]?.e ?? {}).sort()
for (const engine of engines) {
dataPoints.push({
label: engine,
dataKey: ({ stats }: SystemStatsRecord) => stats?.g?.[0]?.e?.[engine] ?? 0,
color: `hsl(${140 + (((engines.indexOf(engine) * 360) / engines.length) % 360)}, 65%, 52%)`,
opacity: 0.35,
})
const { gpuId, engines } = useMemo(() => {
for (let i = chartData.systemStats.length - 1; i >= 0; i--) {
const gpus = chartData.systemStats[i].stats?.g
if (!gpus) continue
for (const id in gpus) {
if (gpus[id].e) {
return { gpuId: id, engines: Object.keys(gpus[id].e).sort() }
}
}
}
return { gpuId: null, engines: [] }
}, [chartData.systemStats])
if (!gpuId) {
return null
}
const dataPoints: DataPoint[] = engines.map((engine, i) => ({
label: engine,
dataKey: ({ stats }: SystemStatsRecord) => stats?.g?.[gpuId]?.e?.[engine] ?? 0,
color: `hsl(${140 + (((i * 360) / engines.length) % 360)}, 65%, 52%)`,
opacity: 0.35,
}))
return (
<LineChartDefault
legend={true}

View File

@@ -654,6 +654,10 @@ msgstr "أدخل عنوان البريد الإشباكي..."
msgid "Enter your one-time password."
msgstr "أدخل كلمة المرور لمرة واحدة الخاصة بك."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "مؤقت"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "سيتم حذف الأنظمة الحالية غير المعرفة في
msgid "Exited active"
msgstr "خرج نشطًا"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "ينتهي بعد ساعة واحدة أو عند إعادة تشغيل المحور."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "تصدير"
@@ -1109,6 +1117,14 @@ msgstr "متوسط الاستخدام لكل نواة"
msgid "Percentage of time spent in each state"
msgstr "النسبة المئوية للوقت المقضي في كل حالة"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "دائم"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "الاستمرارية"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "يرجى <0>تكوين خادم SMTP</0> لضمان تسليم التنبيهات."
@@ -1265,6 +1281,10 @@ msgstr "حفظ الإعدادات"
msgid "Save system"
msgstr "احفظ النظام"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "محفوظ في قاعدة البيانات ولا ينتهي حتى تقوم بتعطيله."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "جدولة"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "إشعارات Webhook / Push"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "عند التفعيل، يسمح هذا الرمز المميز للوكلاء بالتسجيل الذاتي دون إنشاء نظام مسبق. ينتهي بعد ساعة واحدة أو عند إعادة تشغيل المحور."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "عند التفعيل، يسمح هذا الرمز المميز للوكلاء بالتسجيل الذاتي دون إنشاء نظام مسبق."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Въведи имейл адрес..."
msgid "Enter your one-time password."
msgstr "Въведете Вашата еднократна парола."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Ефимерен"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Съществуващи системи които не са дефин
msgid "Exited active"
msgstr "Излезе активно"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Изтича след един час или при рестартиране на хъба."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Експортиране"
@@ -1109,6 +1117,14 @@ msgstr "Средно използване на ядро"
msgid "Percentage of time spent in each state"
msgstr "Процент време, прекарано във всяко състояние"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Постоянен"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Устойчивост"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Моля <0>конфигурурай SMTP сървър</0> за да се подсигуриш, че тревогите са доставени."
@@ -1265,6 +1281,10 @@ msgstr "Запази настройките"
msgid "Save system"
msgstr "Запази система"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Запазен е в базата данни и не изтича, докато не го деактивирате."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "График"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Пуш нотификации"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Когато е активиран, този символ позволява на агентите да се регистрират сами без предварително създаване на система. Изтича след един час или при рестартиране на хъба."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Когато е активиран, този символ позволява на агентите да се регистрират сами без предварително създаване на система."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Zadejte e-mailovou adresu..."
msgid "Enter your one-time password."
msgstr "Zadejte Vaše jednorázové heslo."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Efemérní"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Stávající systémy, které nejsou definovány v <0>config.yml</0>, bu
msgid "Exited active"
msgstr "Ukončeno aktivně"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Vyprší po jedné hodině nebo při restartu hubu."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Exportovat"
@@ -1109,6 +1117,14 @@ msgstr "Průměrné využití na jádro"
msgid "Percentage of time spent in each state"
msgstr "Procento času strávěného v každém stavu"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Trvalý"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Trvalost"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "<0>nakonfigurujte SMTP server</0> pro zajištění toho, aby byla upozornění doručena."
@@ -1265,6 +1281,10 @@ msgstr "Uložit nastavení"
msgid "Save system"
msgstr "Uložit systém"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Uložen v databázi a nevyprší, dokud jej nezablokujete."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Plán"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push oznámení"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Pokud je povoleno, tento token umožňuje agentům, aby se sami zaregistrovali bez předchozího vytvoření systému. Vyprší po jedné hodině nebo po restartu uzlu."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Pokud je povoleno, umožňuje tento token agentům samo-registraci bez předchozího vytvoření systému."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Indtast e-mailadresse..."
msgid "Enter your one-time password."
msgstr "Indtast din engangsadgangskode."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Efemer"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Eksisterende systemer ikke defineret i <0>config.yml</0> vil blive slett
msgid "Exited active"
msgstr "Afsluttet aktiv"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Udløber efter en time eller ved hub-genstart."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Eksporter"
@@ -1109,6 +1117,14 @@ msgstr "Gennemsnitlig udnyttelse pr. kerne"
msgid "Percentage of time spent in each state"
msgstr "Procentdel af tid brugt i hver tilstand"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanent"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Vedholdenhed"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Konfigurer <0>en SMTP server</0> for at sikre at alarmer bliver leveret."
@@ -1265,6 +1281,10 @@ msgstr "Gem indstillinger"
msgid "Save system"
msgstr "Gem system"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Gemt i databasen og udløber ikke, før du deaktiverer det."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Planlæg"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push notifikationer"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Når aktiveret tillader denne nøgle agenter at selvregistrere uden forudgående systemoprettelse. Udløber efter en time eller ved hub-genstart."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Når aktiveret, tillader denne token agenter at registrere sig selv uden forudgående systemoprettelse."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "E-Mail-Adresse eingeben..."
msgid "Enter your one-time password."
msgstr "Geben Sie Ihr Einmalpasswort ein."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Flüchtig"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Bestehende Systeme, die nicht in der <0>config.yml</0> definiert sind, w
msgid "Exited active"
msgstr "Beendet aktiv"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Läuft nach einer Stunde oder bei Hub-Neustart ab."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Exportieren"
@@ -1109,6 +1117,14 @@ msgstr "Durchschnittliche Auslastung pro Kern"
msgid "Percentage of time spent in each state"
msgstr "Prozentsatz der Zeit in jedem Zustand"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanent"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Persistenz"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Bitte <0>konfiguriere einen SMTP-Server</0>, um sicherzustellen, dass Warnungen zugestellt werden."
@@ -1265,6 +1281,10 @@ msgstr "Einstellungen speichern"
msgid "Save system"
msgstr "System speichern"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "In der Datenbank gespeichert und läuft nicht ab, bis Sie es deaktivieren."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Zeitplan"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push-Benachrichtigungen"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Wenn aktiviert, ermöglicht dieser Token Agents, sich selbst zu registrieren, ohne vorherige Systemerstellung. Läuft nach einer Stunde oder beim Hub-Neustart ab."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Wenn aktiviert, ermöglicht dieser Token Agenten die Selbstregistrierung ohne vorherige Systemerstellung."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -649,6 +649,10 @@ msgstr "Enter email address..."
msgid "Enter your one-time password."
msgstr "Enter your one-time password."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Ephemeral"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -679,6 +683,10 @@ msgstr "Existing systems not defined in <0>config.yml</0> will be deleted. Pleas
msgid "Exited active"
msgstr "Exited active"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Expires after one hour or on hub restart."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Export"
@@ -1104,6 +1112,14 @@ msgstr "Per-core average utilization"
msgid "Percentage of time spent in each state"
msgstr "Percentage of time spent in each state"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanent"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Persistence"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
@@ -1260,6 +1276,10 @@ msgstr "Save Settings"
msgid "Save system"
msgstr "Save system"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Saved in the database and does not expire until you disable it."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Schedule"
@@ -1684,8 +1704,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push notifications"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "When enabled, this token allows agents to self-register without prior system creation."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Ingresa dirección de correo..."
msgid "Enter your one-time password."
msgstr "Ingrese su contraseña de un solo uso."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Efímero"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Los sistemas existentes no definidos en <0>config.yml</0> serán elimina
msgid "Exited active"
msgstr "Salió activo"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Expira después de una hora o al reiniciar el hub."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Exportar"
@@ -1109,6 +1117,14 @@ msgstr "Uso promedio por núcleo"
msgid "Percentage of time spent in each state"
msgstr "Porcentaje de tiempo dedicado a cada estado"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanente"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Persistencia"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Por favor, <0>configura un servidor SMTP</0> para asegurar que las alertas sean entregadas."
@@ -1265,6 +1281,10 @@ msgstr "Guardar configuración"
msgid "Save system"
msgstr "Guardar sistema"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Guardado en la base de datos y no expira hasta que lo desactives."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Programar"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Notificaciones Webhook / Push"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Cuando está habilitado, este token permite que los agentes se auto-registren sin crear previamente el sistema. Expira después de una hora o al reiniciar el hub."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Cuando está habilitado, este token permite a los agentes registrarse automáticamente sin creación previa del sistema."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "آدرس ایمیل را وارد کنید..."
msgid "Enter your one-time password."
msgstr "رمز عبور یک‌بار مصرف خود را وارد کنید."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "گذرا"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "سیستم‌های موجود که در <0>config.yml</0> تعریف ن
msgid "Exited active"
msgstr "خروج فعال"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "پس از یک ساعت یا راه‌اندازی مجدد هاب منقضی می‌شود."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "خروجی گرفتن"
@@ -1109,6 +1117,14 @@ msgstr "میانگین استفاده در هر هسته"
msgid "Percentage of time spent in each state"
msgstr "درصد زمان صرف شده در هر حالت"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "دائمی"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "ماندگاری"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "لطفاً برای اطمینان از تحویل هشدارها، یک <0>سرور SMTP پیکربندی کنید</0>."
@@ -1265,6 +1281,10 @@ msgstr "ذخیره تنظیمات"
msgid "Save system"
msgstr "ذخیره سیستم"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "در پایگاه داده ذخیره شده و تا زمانی که آن را غیرفعال نکنید، منقضی نمی‌شود."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "برنامه‌ریزی"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "اعلان‌های Webhook / Push"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "هنگامی که فعال است، این توکن به عاملها اجازه خودثبت‌نامی بدون ایجاد سیستم قبلی می‌دهد. پس از یک ساعت یا در راه‌اندازی مجدد هاب منقضی می‌شود."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "هنگامی که فعال باشد، این توکن به عوامل اجازه می‌دهد بدون ایجاد سیستم قبلی، خود را ثبت کنند."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Entrez l'adresse email..."
msgid "Enter your one-time password."
msgstr "Entrez votre mot de passe à usage unique."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Éphémère"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Les systèmes existants non définis dans <0>config.yml</0> seront suppr
msgid "Exited active"
msgstr "Sorti actif"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Expire après une heure ou au redémarrage du hub."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Exporter"
@@ -1109,6 +1117,14 @@ msgstr "Utilisation moyenne par cœur"
msgid "Percentage of time spent in each state"
msgstr "Pourcentage de temps passé dans chaque état"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanent"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Persistance"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Veuillez <0>configurer un serveur SMTP</0> pour garantir la livraison des alertes."
@@ -1265,6 +1281,10 @@ msgstr "Enregistrer les paramètres"
msgid "Save system"
msgstr "Sauvegarder le système"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Enregistré dans la base de données et n'expire pas tant que vous ne le désactivez pas."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Programmer"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Notifications Webhook / Push"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Lorsqu'il est activé, ce token permet aux agents de s'auto-enregistrer sans création préalable du système. Expire après une heure ou au redémarrage du hub."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Lorsqu'il est activé, ce jeton permet aux agents de s'enregistrer automatiquement sans création préalable du système."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "הכנס כתובת אימייל..."
msgid "Enter your one-time password."
msgstr "הכנס את הסיסמה החד-פעמית שלך."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "זמני"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "מערכות קיימות שלא מוגדרות ב-<0>config.yml</0> י
msgid "Exited active"
msgstr "יצא פעיל"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "פג תוקף לאחר שעה או בהפעלה מחדש של ה-hub."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "ייצא"
@@ -1109,6 +1117,14 @@ msgstr "ניצול ממוצע לליבה"
msgid "Percentage of time spent in each state"
msgstr "אחוז הזמן המוקדש לכל מצב"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "קבוע"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "עקביות"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "אנא <0>הגדר שרת SMTP</0> כדי להבטיח שהתראות יישלחו."
@@ -1265,6 +1281,10 @@ msgstr "שמור הגדרות"
msgid "Save system"
msgstr "שמור מערכת"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "נשמר במסד הנתונים ולא פג תוקף עד שתבטל אותו."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "לוח זמנים"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / התראות דחיפה"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "כאשר מופעל, token זה מאפשר לסוכנים להירשם עצמאית ללא יצירת מערכת מוקדמת. פג לאחר שעה אחת או בהפעלה מחדש של hub."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "כאשר מופעל, אסימון זה מאפשר לסוכנים להירשם באופן עצמי ללא יצירת מערכת מוקדמת."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Unesite email adresu..."
msgid "Enter your one-time password."
msgstr "Unesite Vašu jednokratnu lozinku."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Efemeran"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Postojeći sistemi koji nisu definirani u <0>config.yml</0> će biti izb
msgid "Exited active"
msgstr "Izašlo aktivno"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Istječe nakon jednog sata ili ponovnog pokretanja huba."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Izvezi"
@@ -1109,6 +1117,14 @@ msgstr "Prosječna iskorištenost po jezgri"
msgid "Percentage of time spent in each state"
msgstr "Postotak vremena provedenog u svakom stanju"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Trajan"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Postojanost"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Molimo <0>konfigurirajte SMTP server</0> kako biste osigurali isporuku upozorenja."
@@ -1265,6 +1281,10 @@ msgstr "Spremi Postavke"
msgid "Save system"
msgstr "Spremi sustav"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Spremljeno u bazi podataka i ne istječe dok ga ne onemogućite."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Raspored"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push obavijest"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Kada je podešen, ovaj token dopušta agentima da se prijave bez prvobitnog stvaranja sustava. Ističe nakon jednog sata ili ponovnog pokretanja središnje kontrole."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Kada je omogućen, ovaj token omogućuje agentima da se sami registriraju bez prethodnog stvaranja sustava."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Adja meg az e-mail címet..."
msgid "Enter your one-time password."
msgstr "Adja meg az egyszeri jelszavát."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Átmeneti"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "A <0>config.yml</0> fájlban nem definiált meglévő rendszerek törlé
msgid "Exited active"
msgstr "Aktívként kilépett"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Lejár egy óra után vagy a hub újraindításakor."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Exportálás"
@@ -1109,6 +1117,14 @@ msgstr "Átlagos kihasználtság magonként"
msgid "Percentage of time spent in each state"
msgstr "Az idő százalékos aránya minden állapotban"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Állandó"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Kitartás"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Kérjük, <0>konfigurálj egy SMTP szervert</0> az értesítések kézbesítésének biztosítása érdekében."
@@ -1265,6 +1281,10 @@ msgstr "Beállítások mentése"
msgid "Save system"
msgstr "Rendszer mentése"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Elmentve az adatbázisban és nem jár le, amíg ki nem kapcsolod."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Ütemezés"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push értesítések"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Ha engedélyezve van, ez a token lehetővé teszi az ügynökök önregisztrációját előzetes rendszerlétrehozás nélkül. Egy óra után vagy a hub újraindításakor lejár."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Ha engedélyezve van, ez a token lehetővé teszi az ügynökök számára az önregisztrációt rendszer előzetes létrehozása nélkül."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -22,7 +22,7 @@ msgstr ""
#. placeholder {1}: table.getFilteredRowModel().rows.length
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "{0} of {1} row(s) selected."
msgstr "{0} dari {1} baris dipilih."
msgstr "{0} dari {1} baris terpilih."
#: src/components/routes/system/info-bar.tsx
msgid "{cores, plural, one {# core} other {# cores}}"
@@ -125,11 +125,11 @@ msgstr "Tambah URL"
#: src/components/routes/settings/general.tsx
msgid "Adjust display options for charts."
msgstr "Sesuaikan pengaturan tampilan untuk untuk grafik."
msgstr "Sesuaikan tampilan grafik."
#: src/components/routes/settings/general.tsx
msgid "Adjust the width of the main layout"
msgstr "Sesuaikan lebar layout utama"
msgstr "Sesuaikan lebar layar utama"
#: src/components/command-palette.tsx
#: src/components/command-palette.tsx
@@ -180,7 +180,7 @@ msgstr "Apakah anda yakin?"
#: src/components/copy-to-clipboard.tsx
msgid "Automatic copy requires a secure context."
msgstr "Menyalin otomatis memerlukan konteks yang aman."
msgstr "Copy memerlukan https."
#: src/components/routes/system.tsx
msgid "Average"
@@ -215,7 +215,7 @@ msgstr "Rata-rata utilisasi {0}"
#: src/components/routes/system.tsx
msgid "Average utilization of GPU engines"
msgstr "Rata-rata utilisasi mesin GPU"
msgstr "Rata-rata utilisasi GPU"
#: src/components/command-palette.tsx
#: src/components/navbar.tsx
@@ -225,12 +225,12 @@ msgstr "Cadangan"
#: src/components/routes/system.tsx
#: src/lib/alerts.ts
msgid "Bandwidth"
msgstr "Pita lebar"
msgstr "Bandwith"
#. Battery label in systems table header
#: src/components/systems-table/systems-table-columns.tsx
msgid "Bat"
msgstr "Bat"
msgstr "Baterai"
#: src/components/routes/system.tsx
#: src/lib/alerts.ts
@@ -258,7 +258,7 @@ msgstr "Di bawah {0}{1} dalam {2, plural, one {# menit} other {# menit}} terakhi
#: src/components/login/auth-form.tsx
msgid "Beszel supports OpenID Connect and many OAuth2 authentication providers."
msgstr "Beszel mendukung OpenID Connecnt dan banyak penyedia autentikasi OAuth2."
msgstr "Beszel mendukung OpenID Connect dan OAuth2 dari berbagai penyedia layanan."
#: src/components/routes/settings/notifications.tsx
msgid "Beszel uses <0>Shoutrrr</0> to integrate with popular notification services."
@@ -330,7 +330,7 @@ msgstr "Ubah pengaturan umum aplikasi."
#: src/components/routes/system.tsx
msgid "Charge"
msgstr "Isi"
msgstr "Isi baterai"
#. Context: Battery state
#: src/lib/i18n.ts
@@ -339,19 +339,19 @@ msgstr "Sedang mengisi"
#: src/components/routes/settings/general.tsx
msgid "Chart options"
msgstr "Pengaturan grafik"
msgstr "Pilihan grafik"
#: src/components/login/forgot-pass-form.tsx
msgid "Check {email} for a reset link."
msgstr "Periksa {email} untuk tautan atur ulang."
msgstr "Periksa {email} untuk tautan atur ulang password."
#: src/components/routes/settings/layout.tsx
msgid "Check logs for more details."
msgstr "Periksa catatan untuk lebih detail."
msgstr "Periksa riwayat untuk lebih detail."
#: src/components/routes/settings/notifications.tsx
msgid "Check your notification service"
msgstr "Periksa penyedia jasa notifikasi anda"
msgstr "Periksa jasa penyedia notifikasi anda"
#: src/components/containers-table/containers-table.tsx
#: src/components/routes/system/smart-table.tsx
@@ -500,11 +500,11 @@ msgstr "Kritis (%)"
#: src/components/routes/system/network-sheet.tsx
msgid "Cumulative Download"
msgstr "Download Kumulatif"
msgstr "Akumulasi Download"
#: src/components/routes/system/network-sheet.tsx
msgid "Cumulative Upload"
msgstr "Upload Kumulatif"
msgstr "Akumulasi Upload"
#. Context: Battery state
#: src/components/routes/system.tsx
@@ -523,7 +523,7 @@ msgstr "Harian"
#: src/components/routes/settings/general.tsx
msgid "Default time period"
msgstr "Periode waktu default"
msgstr "Standar waktu"
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/quiet-hours.tsx
@@ -534,7 +534,7 @@ msgstr "Hapus"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Delete fingerprint"
msgstr "Hapus sidik jari"
msgstr "Hapus fingerprint"
#: src/components/systemd-table/systemd-table.tsx
msgid "Description"
@@ -551,7 +551,7 @@ msgstr "Perangkat"
#. Context: Battery state
#: src/lib/i18n.ts
msgid "Discharging"
msgstr "Sedang mengosongkan"
msgstr "Sedang tidak di charge"
#: src/components/systems-table/systems-table-columns.tsx
msgid "Disk"
@@ -615,12 +615,12 @@ msgstr "Durasi"
#: src/components/routes/settings/quiet-hours.tsx
#: src/components/systems-table/systems-table-columns.tsx
msgid "Edit"
msgstr "Edit"
msgstr "Ubah"
#: src/components/add-system.tsx
#: src/components/routes/settings/quiet-hours.tsx
msgid "Edit {foo}"
msgstr "Edit {foo}"
msgstr "Ubah {foo}"
#: src/components/login/auth-form.tsx
#: src/components/login/forgot-pass-form.tsx
@@ -652,7 +652,11 @@ msgstr "Masukkan alamat email..."
#: src/components/login/otp-forms.tsx
msgid "Enter your one-time password."
msgstr "Masukkan kata sandi satu kali anda."
msgstr "Masukkan otp anda."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Sementara"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
@@ -684,17 +688,21 @@ msgstr "Sistem yang ada yang tidak didefinisikan dalam <0>config.yml</0> akan di
msgid "Exited active"
msgstr "Keluar aktif"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Kedaluwarsa setelah satu jam atau saat restart hub."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Ekspor"
msgstr "Export"
#: src/components/routes/settings/config-yaml.tsx
msgid "Export configuration"
msgstr "Ekspor konfigurasi"
msgstr "Export konfigurasi"
#: src/components/routes/settings/config-yaml.tsx
msgid "Export your current systems configuration."
msgstr "Ekspor konfigurasi sistem anda saat ini."
msgstr "Export konfigurasi sistem anda saat ini."
#: src/components/routes/settings/general.tsx
msgid "Fahrenheit (°F)"
@@ -720,7 +728,7 @@ msgstr "Gagal menyimpan pengaturan"
#: src/components/routes/settings/notifications.tsx
msgid "Failed to send test notification"
msgstr "Gagal mengirim notifikasi tes"
msgstr "Gagal mengirim tes notifikasi"
#: src/components/alerts/alerts-sheet.tsx
msgid "Failed to update alert"
@@ -742,7 +750,7 @@ msgstr "Filter..."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Fingerprint"
msgstr "Sidik jari"
msgstr "Fingerprint"
#: src/components/routes/system/smart-table.tsx
msgid "Firmware"
@@ -779,7 +787,7 @@ msgstr "Global"
#: src/components/routes/system.tsx
msgid "GPU Engines"
msgstr "Mesin GPU"
msgstr "GPU"
#: src/components/routes/system.tsx
msgid "GPU Power Draw"
@@ -791,7 +799,7 @@ msgstr "Penggunaan GPU"
#: src/components/systems-table/systems-table.tsx
msgid "Grid"
msgstr "Grid"
msgstr "Kartu"
#: src/components/containers-table/containers-table-columns.tsx
msgid "Health"
@@ -835,11 +843,11 @@ msgstr "Bahasa"
#: src/components/systems-table/systems-table.tsx
msgid "Layout"
msgstr "Layout"
msgstr "Tampilan"
#: src/components/routes/settings/general.tsx
msgid "Layout width"
msgstr "Lebar layout"
msgstr "Lebar tampilan"
#: src/components/systemd-table/systemd-table.tsx
msgid "Lifecycle"
@@ -869,11 +877,11 @@ msgstr "Rata-rata Beban 5m"
#. Short label for load average
#: src/components/systems-table/systems-table-columns.tsx
msgid "Load Avg"
msgstr "Rata Beban"
msgstr "Rata-rata Beban"
#: src/components/systemd-table/systemd-table.tsx
msgid "Load state"
msgstr "Status beban"
msgstr "Beban saat ini"
#: src/components/systemd-table/systemd-table.tsx
msgid "Loading..."
@@ -881,7 +889,7 @@ msgstr "Memuat..."
#: src/components/navbar.tsx
msgid "Log Out"
msgstr "Keluar"
msgstr "Log Out"
#: src/components/login/login.tsx
msgid "Login"
@@ -961,7 +969,7 @@ msgstr "Nama"
#: src/components/containers-table/containers-table-columns.tsx
#: src/components/systems-table/systems-table-columns.tsx
msgid "Net"
msgstr "Net"
msgstr "Jaringan"
#: src/components/routes/system.tsx
msgid "Network traffic of docker containers"
@@ -1006,7 +1014,7 @@ msgstr "Tidak ada atribut S.M.A.R.T. yang tersedia untuk perangkat ini."
#: src/components/systems-table/systems-table.tsx
#: src/components/systems-table/systems-table.tsx
msgid "No systems found."
msgstr "Tidak ada sistem ditemukan."
msgstr "Sistem tidak ditemukan."
#: src/components/command-palette.tsx
#: src/components/routes/settings/layout.tsx
@@ -1025,11 +1033,11 @@ msgstr "Pada setiap restart, sistem dalam database akan diperbarui untuk mencoco
#: src/components/routes/settings/quiet-hours.tsx
#: src/components/routes/settings/quiet-hours.tsx
msgid "One-time"
msgstr "Sekali"
msgstr "Sekali pakai"
#: src/components/login/auth-form.tsx
msgid "One-time password"
msgstr "Kata sandi sekali pakai"
msgstr "Kata sandi sekali pakai (OTP)"
#: src/components/routes/settings/quiet-hours.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
@@ -1109,6 +1117,14 @@ msgstr "Rata-rata utilisasi per-inti"
msgid "Percentage of time spent in each state"
msgstr "Persentase waktu yang dihabiskan di setiap status"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanen"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Tetap berlaku"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Silakan <0>konfigurasi server SMTP</0> untuk memastikan peringatan dikirimkan."
@@ -1158,7 +1174,7 @@ msgstr "Utilisasi tepat pada waktu yang direkam"
#: src/components/routes/settings/general.tsx
msgid "Preferred Language"
msgstr "Bahasa Pilihan"
msgstr "Pilihan Bahasa"
#: src/components/systemd-table/systemd-table.tsx
msgid "Process started"
@@ -1187,7 +1203,7 @@ msgstr "Diterima"
#: src/components/containers-table/containers-table.tsx
#: src/components/routes/system/smart-table.tsx
msgid "Refresh"
msgstr "Refresh"
msgstr "Muat ulang"
#: src/components/systemd-table/systemd-table.tsx
msgid "Relationships"
@@ -1234,7 +1250,7 @@ msgstr "Root"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Rotate token"
msgstr "Putar token"
msgstr "Ganti ulang token"
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Rows per page"
@@ -1265,13 +1281,17 @@ msgstr "Simpan Pengaturan"
msgid "Save system"
msgstr "Simpan sistem"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Disimpan di database dan tidak kedaluwarsa sampai Anda menonaktifkannya."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Jadwal"
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule quiet hours where notifications will not be sent, such as during maintenance periods."
msgstr "Jadwalkan jam tenang dimana notifikasi tidak akan dikirim, seperti selama periode pemeliharaan."
msgstr "Jadwalkan jam tenang dimana notifikasi tidak akan dikirim, seperti saat periode pemeliharaan."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule quiet hours where notifications will not be sent."
@@ -1410,7 +1430,7 @@ msgstr "Tugas"
#: src/components/routes/system/smart-table.tsx
#: src/components/systems-table/systems-table-columns.tsx
msgid "Temp"
msgstr "Temp"
msgstr "Temperatur"
#: src/components/routes/system.tsx
#: src/lib/alerts.ts
@@ -1439,7 +1459,7 @@ msgstr "Kemudian masuk ke backend dan reset kata sandi akun pengguna anda di tab
#: src/components/systems-table/systems-table-columns.tsx
msgid "This action cannot be undone. This will permanently delete all current records for {name} from the database."
msgstr ""
msgstr "Aksi ini tidak dapat di kembalikan. ini akan menghapus permanen semua record {name} dari database"
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "This will permanently delete all selected records from the database."
@@ -1464,11 +1484,11 @@ msgstr "Ke email"
#: src/components/routes/system/info-bar.tsx
#: src/components/routes/system/info-bar.tsx
msgid "Toggle grid"
msgstr "Toggle grid"
msgstr "Ganti tampilan"
#: src/components/mode-toggle.tsx
msgid "Toggle theme"
msgstr "Toggle tema"
msgstr "Ganti tema"
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
@@ -1479,15 +1499,15 @@ msgstr "Token"
#: src/components/routes/settings/layout.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Tokens & Fingerprints"
msgstr "Token & Sidik Jari"
msgstr "Token & Fingerprint"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Tokens allow agents to connect and register. Fingerprints are stable identifiers unique to each system, set on first connection."
msgstr "Token memungkinkan agen untuk terhubung dan mendaftar. Sidik jari adalah pengidentifikasi stabil unik untuk setiap sistem, ditetapkan pada koneksi pertama."
msgstr "Token memungkinkan agen untuk terhubung dan mendaftar. Fingerprint adalah sistem indentifikasi yang stabil dan unik untuk setiap sistem, diatur pada koneksi pertama."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Tokens and fingerprints are used to authenticate WebSocket connections to the hub."
msgstr "Token dan sidik jari digunakan untuk mengautentikasi koneksi WebSocket ke hub."
msgstr "Token dan Fingerprint digunakan untuk mengautentikasi koneksi WebSocket ke hub."
#: src/components/ui/chart.tsx
#: src/components/ui/chart.tsx
@@ -1533,11 +1553,11 @@ msgstr "Dipicu ketika sensor apa pun melebihi ambang batas"
#: src/lib/alerts.ts
msgid "Triggers when battery charge drops below a threshold"
msgstr "Dipicu ketika muatan baterai turun di bawah ambang batas"
msgstr "Dipicu ketika baterai turun di bawah ambang batas"
#: src/lib/alerts.ts
msgid "Triggers when combined up/down exceeds a threshold"
msgstr "Dipicu ketika kombinasi up/down melebihi ambang batas"
msgstr "Dipicu ketika up atau down melebihi ambang batas"
#: src/lib/alerts.ts
msgid "Triggers when CPU usage exceeds a threshold"
@@ -1572,7 +1592,7 @@ msgstr "File unit"
#. Temperature / network units
#: src/components/routes/settings/general.tsx
msgid "Unit preferences"
msgstr "Preferensi unit"
msgstr "Pengaturan satuan"
#: src/components/command-palette.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx
@@ -1593,11 +1613,11 @@ msgstr "Tidak terbatas"
#: src/components/routes/system/info-bar.tsx
#: src/components/systems-table/systems-table-columns.tsx
msgid "Up"
msgstr "Up"
msgstr "Nyala"
#: src/components/systems-table/systems-table.tsx
msgid "Up ({upSystemsLength})"
msgstr "Up ({upSystemsLength})"
msgstr "Nyala selama ({upSystemsLength})"
#: src/components/routes/settings/quiet-hours.tsx
msgid "Update"
@@ -1662,7 +1682,7 @@ msgstr "Lihat 200 peringatan terbaru anda."
#: src/components/systems-table/systems-table.tsx
msgid "Visible Fields"
msgstr "Field yang Terlihat"
msgstr "Metrik yang Terlihat"
#: src/components/routes/system.tsx
msgid "Waiting for enough records to display"
@@ -1686,11 +1706,11 @@ msgstr "Ambang peringatan"
#: src/components/routes/settings/notifications.tsx
msgid "Webhook / Push notifications"
msgstr "Notifikasi Webhook / Push"
msgstr "Webhook / Push notifikasi"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Ketika diaktifkan, token ini memungkinkan agen untuk mendaftar sendiri tanpa pembuatan sistem sebelumnya. Kedaluwarsa setelah satu jam atau saat restart hub."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Ketika diaktifkan, token ini memungkinkan agen untuk mendaftar sendiri tanpa pembuatan sistem."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Inserisci l'indirizzo email..."
msgid "Enter your one-time password."
msgstr "Inserisci la tua password monouso."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Effimero"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "I sistemi esistenti non definiti in <0>config.yml</0> verranno eliminati
msgid "Exited active"
msgstr "Uscito attivo"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Scade dopo un'ora o al riavvio dell'hub."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Esporta"
@@ -1109,6 +1117,14 @@ msgstr "Utilizzo medio per core"
msgid "Percentage of time spent in each state"
msgstr "Percentuale di tempo trascorso in ogni stato"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanente"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Persistenza"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Si prega di <0>configurare un server SMTP</0> per garantire la consegna degli avvisi."
@@ -1265,6 +1281,10 @@ msgstr "Salva Impostazioni"
msgid "Save system"
msgstr "Salva sistema"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Salvato nel database e non scade finché non lo disabiliti."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Pianifica"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Notifiche Webhook / Push"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Quando abilitato, questo token consente agli agenti di auto-registrarsi senza creazione preventiva del sistema. Scade dopo un'ora o al riavvio dell'hub."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Quando abilitato, questo token consente agli agenti di registrarsi automaticamente senza creazione preventiva del sistema."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "メールアドレスを入力..."
msgid "Enter your one-time password."
msgstr "ワンタイムパスワードを入力してください。"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "一時的"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "<0>config.yml</0>に定義されていない既存のシステムは削
msgid "Exited active"
msgstr "アクティブ状態で終了"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "1時間後、またはハブの再起動時に有効期限が切れます。"
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "エクスポート"
@@ -1109,6 +1117,14 @@ msgstr "コアごとの平均使用率"
msgid "Percentage of time spent in each state"
msgstr "各状態で費やした時間の割合"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "永久"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "永続性"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "アラートが配信されるように<0>SMTPサーバーを設定</0>してください。"
@@ -1265,6 +1281,10 @@ msgstr "設定を保存"
msgid "Save system"
msgstr "システムを保存"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "データベースに保存され、無効にするまで有効期限が切れません。"
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "スケジュール"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / プッシュ通知"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "有効にすると、このトークンエージェント事前のシステム作成なし自己登録することを可能にします。1時間後またはハブの再起動時に期限切れになります。"
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "有効にすると、このトークンによりエージェント事前のシステム作成なし自己登録できます。"
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "이메일 주소 입력..."
msgid "Enter your one-time password."
msgstr "OTP를 입력하세요."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "일시적"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "<0>config.yml</0>에 정의되지 않은 기존 시스템은 삭제됩
msgid "Exited active"
msgstr "활성 종료됨"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "한 시간 후 또는 허브 재시작 시 만료됩니다."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "내보내기"
@@ -1109,6 +1117,14 @@ msgstr "코어별 평균 사용률"
msgid "Percentage of time spent in each state"
msgstr "각 상태에서 보낸 시간의 백분율"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "영구적"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "지속성"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "알림이 전달되도록 <0>SMTP 서버를 구성</0>하세요."
@@ -1265,6 +1281,10 @@ msgstr "설정 저장"
msgid "Save system"
msgstr "시스템 저장"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "데이터베이스에 저장되며 비활성화할 때까지 만료되지 않습니다."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "일정"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / 푸시 알림"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "활성화면 이 토큰을 통해 에이전트가 사전 시스템 생성 없이 자체 등록할 수 있습니다. 1시간 후 또는 허브 재시작 시 만료됩니다."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "활성화면 이 토큰 사전 시스템 생성 없이 에이전트가 자체 등록할 수 있도록 합니다."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Voer een e-mailadres in..."
msgid "Enter your one-time password."
msgstr "Voer uw eenmalig wachtwoord in."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Tijdelijk"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Bestaande systemen die niet gedefinieerd zijn in <0>config.yml</0> zulle
msgid "Exited active"
msgstr "Beëindigd actief"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Verloopt na één uur of bij hub-herstart."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Exporteren"
@@ -1109,6 +1117,14 @@ msgstr "Gemiddeld gebruik per kern"
msgid "Percentage of time spent in each state"
msgstr "Percentage tijd besteed in elke status"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanent"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Persistentie"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "<0>Configureer een SMTP-server </0> om ervoor te zorgen dat waarschuwingen worden afgeleverd."
@@ -1265,6 +1281,10 @@ msgstr "Instellingen opslaan"
msgid "Save system"
msgstr "Systeem bewaren"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Opgeslagen in de database en verloopt niet totdat u het uitschakelt."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Schema"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Pushmeldingen"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Wanneer ingeschakeld kunnen agenten zich met dit token registreren zonder dat er vooraf een systeem aangemaakt hoeft te worden. Het token verloopt na één uur of bij herstart van de hub."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Indien ingeschakeld, stelt deze token agenten in staat zich zelf te registreren zonder voorafgaande systeemcreatie."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Skriv inn e-postadresse..."
msgid "Enter your one-time password."
msgstr "Skriv inn ditt engangspassord."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Flyktig"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Eksisterende systemer som ikke er er definert i <0>config.yml</0> vil bl
msgid "Exited active"
msgstr "Avsluttet aktiv"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Utløper etter en time eller ved hub-omstart."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Eksporter"
@@ -1109,6 +1117,14 @@ msgstr "Gjennomsnittlig utnyttelse per kjerne"
msgid "Percentage of time spent in each state"
msgstr "Prosentandel av tid brukt i hver tilstand"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanent"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Vedvarenhet"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Vennligst <0>konfigurer en SMTP-server</0> for å forsikre deg om at varsler blir levert."
@@ -1265,6 +1281,10 @@ msgstr "Lagre Innstillinger"
msgid "Save system"
msgstr "Lagre system"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Lagret i databasen og utløper ikke før du deaktiverer det."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Tidsplan"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push-varslinger"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Når aktivert lar denne tokenen agenter registrere seg selv uten å opprettes på systemet først. Utløper etter én time eller når huben starter på nytt."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Når aktivert, tillater denne tokenen agenter å registrere seg selv uten forutgående systemskapelse."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Wprowadź adres e-mail..."
msgid "Enter your one-time password."
msgstr "Wprowadź swoje jednorazowe hasło."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Efemeryczny"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Istniejące systemy, które nie są zdefiniowane w <0>config.yml</0>, zo
msgid "Exited active"
msgstr "Zakończono aktywnie"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Wygasa po godzinie lub przy ponownym uruchomieniu huba."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Eksport"
@@ -1109,6 +1117,14 @@ msgstr "Średnie wykorzystanie na rdzeń"
msgid "Percentage of time spent in each state"
msgstr "Procent czasu spędzonego w każdym stanie"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Stały"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Trwałość"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Proszę <0>skonfigurować serwer SMTP</0>, aby zapewnić dostarczanie powiadomień."
@@ -1265,6 +1281,10 @@ msgstr "Zapisz ustawienia"
msgid "Save system"
msgstr "Zapisz system"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Zapisane w bazie danych i nie wygasa, dopóki go nie wyłączysz."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Harmonogram"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Powiadomienia push"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Po włączeniu ten token umożliwia agentom samodzielną rejestrację bez wcześniejszego utworzenia systemu. Wygasa po jednej godzinie lub po ponownym uruchomieniu huba."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Gdy jest włączony, ten token pozwala agentom na samodzielną rejestrację bez wcześniejszego tworzenia systemu."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Digite o endereço de email..."
msgid "Enter your one-time password."
msgstr "Insira a sua senha de uso único."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Efêmero"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Sistemas existentes não definidos em <0>config.yml</0> serão excluído
msgid "Exited active"
msgstr "Saiu ativo"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Expira após uma hora ou no reinício do hub."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Exportar"
@@ -1109,6 +1117,14 @@ msgstr "Utilização média por núcleo"
msgid "Percentage of time spent in each state"
msgstr "Percentagem de tempo gasto em cada estado"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanente"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Persistência"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Por favor, <0>configure um servidor SMTP</0> para garantir que os alertas sejam entregues."
@@ -1265,6 +1281,10 @@ msgstr "Guardar Definições"
msgid "Save system"
msgstr "Guardar Sistema"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Salvo no banco de dados e não expira até você desativá-lo."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Agendar"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Notificações Webhook / Push"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Quando habilitado, este token permite que os agentes se registrem automaticamente sem criação prévia do sistema. Expira após uma hora ou na reinicialização do hub."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Quando ativado, este token permite que os agentes se registrem automaticamente sem criação prévia do sistema."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Введите адрес электронной почты..."
msgid "Enter your one-time password."
msgstr "Введите ваш одноразовый пароль."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Эфемерный"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Существующие системы, не определенные
msgid "Exited active"
msgstr "Завершился активным"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Истекает через час или при перезапуске хаба."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Экспорт"
@@ -1109,6 +1117,14 @@ msgstr "Среднее использование на ядро"
msgid "Percentage of time spent in each state"
msgstr "Процент времени, проведенного в каждом состоянии"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Постоянный"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Устойчивость"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Пожалуйста, <0>настройте SMTP-сервер</0>, чтобы гарантировать доставку оповещений."
@@ -1265,6 +1281,10 @@ msgstr "Сохранить настройки"
msgid "Save system"
msgstr "Сохранить систему"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Сохранено в базе данных и не истекает, пока вы его не отключите."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Расписание"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push уведомления"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Если включено, этот токен позволяет агентам регистрироваться самостоятельно без предварительного создания системы. Истекает через час или при перезапуске хаба."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "При включении этот токен позволяет агентам самостоятельно регистрироваться без предварительного создания системы."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Vnesite e-poštni naslov..."
msgid "Enter your one-time password."
msgstr "Vnesite svoje enkratno geslo."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Prehodni"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Obstoječi sistemi, ki niso definirani v <0>config.yml</0>, bodo izbrisa
msgid "Exited active"
msgstr "Izhod aktivno"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Poteče po eni uri ali ob ponovnem zagonu huba."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Izvozi"
@@ -1109,6 +1117,14 @@ msgstr "Povprečna izkoriščenost na jedro"
msgid "Percentage of time spent in each state"
msgstr "Odstotek časa, preživetega v vsakem stanju"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Trajen"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Vztrajnost"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "<0>Nastavite strežnik SMTP</0>, da zagotovite dostavo opozoril."
@@ -1265,6 +1281,10 @@ msgstr "Shrani nastavitve"
msgid "Save system"
msgstr "Shrani sistem"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Shranjeno v bazi podatkov in ne poteče, dokler ga ne onemogočite."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Razpored"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / potisna obvestila"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Ko je omogočeno, ta žeton omogoča agentom samoregistracijo brez predhodnega ustvarjanja sistema. Poteče po eni uri ali ob ponovnem zagonu vozlišča."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Ko je omogočen, ta žeton omogoča agentom samoregistracijo brez predhodnega ustvarjanja sistema."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Унесите адресу е-поште..."
msgid "Enter your one-time password."
msgstr "Унесите вашу једнократну лозинку."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Ефемеран"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Системи који нису дефинисани у <0>config.yml</
msgid "Exited active"
msgstr "Излазак активан"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Истиче након једног сата или при поновном покретању хаба."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Извези"
@@ -1109,6 +1117,14 @@ msgstr "Просечна употреба по језгру"
msgid "Percentage of time spent in each state"
msgstr "Проценат времена проведеног у сваком стању"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Трајан"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Упорност"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Молимо вас <0>конфигуришите SMTP сервер</0> да бисте осигурали да се упозорења испоручују."
@@ -1265,6 +1281,10 @@ msgstr "Сачувај подешавања"
msgid "Save system"
msgstr "Сачувај систем"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Сачувано у бази података и не истиче док га не онемогућите."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Распоред"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push обавештења"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Када је омогућено, овај токен омогућава агентима да се сами региструју без претходног креирања система. Истиче након једног сата или при поновном покретању хаба."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Када је омогућен, овај токен омогућава агентима да се сами региструју без претходног креирања система."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Ange e-postadress..."
msgid "Enter your one-time password."
msgstr "Ange ditt engångslösenord."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Flyktig"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Befintliga system som inte definieras i <0>config.yml</0> kommer att tas
msgid "Exited active"
msgstr "Avslutades aktivt"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Upphör efter en timme eller vid hub-omstart."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Exportera"
@@ -1109,6 +1117,14 @@ msgstr "Genomsnittlig användning per kärna"
msgid "Percentage of time spent in each state"
msgstr "Procentandel av tid spenderad i varje tillstånd"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Permanent"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Beständighet"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Vänligen <0>konfigurera en SMTP-server</0> för att säkerställa att larm levereras."
@@ -1265,6 +1281,10 @@ msgstr "Spara inställningar"
msgid "Save system"
msgstr "Spara system"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Sparad i databasen och upphör inte förrän du inaktiverar den."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Schema"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push-aviseringar"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "När aktiverad tillåter denna token agenter att självregistrera utan tidigare systemskapande. Upphör efter en timme eller vid hub-omstart."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "När aktiverad tillåter denna token agenter att självregistrera utan föregående systemskapande."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "E-posta adresini girin..."
msgid "Enter your one-time password."
msgstr "Tek kullanımlık şifrenizi girin."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Geçici"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "<0>config.yml</0> içinde tanımlanmayan mevcut sistemler silinecektir.
msgid "Exited active"
msgstr "Aktif olarak çıktı"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Bir saat sonra veya hub yeniden başlatıldığında sona erer."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Dışa aktar"
@@ -1109,6 +1117,14 @@ msgstr "Çekirdek başına ortalama kullanım"
msgid "Percentage of time spent in each state"
msgstr "Her durumda harcanan zamanın yüzdesi"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Kalıcı"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Kalıcılık"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Uyarıların teslim edilmesini sağlamak için lütfen bir SMTP sunucusu <0>yapılandırın</0>."
@@ -1265,6 +1281,10 @@ msgstr "Ayarları Kaydet"
msgid "Save system"
msgstr "Sistemi kaydet"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Veritabanında kaydedilir ve siz devre dışı bırakana kadar süresi dolmaz."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Zamanla"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Anlık bildirimler"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Etkinleştirildiğinde, bu token agentların önceden sistem oluşturmadan kendilerini kaydetmelerine izin verir. Bir saat sonra veya hub yeniden başlatıldığında sona erer."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Etkinleştirildiğinde, bu token aracıların önceden sistem oluşturmadan kendilerini kaydetmelerine izin verir."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Введіть адресу електронної пошти..."
msgid "Enter your one-time password."
msgstr "Введіть ваш одноразовий пароль."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Ефемерний"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Існуючі системи, не визначені в <0>config.yml<
msgid "Exited active"
msgstr "Завершилося активно"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Закінчується через годину або при перезапуску хаба."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Експорт"
@@ -1109,6 +1117,14 @@ msgstr "Середнє використання на ядро"
msgid "Percentage of time spent in each state"
msgstr "Відсоток часу, проведеного в кожному стані"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Постійний"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Стійкість"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Будь ласка, <0>налаштуйте SMTP сервер</0>, щоб забезпечити доставку сповіщень."
@@ -1265,6 +1281,10 @@ msgstr "Зберегти налаштування"
msgid "Save system"
msgstr "Зберегти систему"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Збережено в базі даних і не закінчується, поки ви його не вимкнете."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Розклад"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / Push сповіщення"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Коли увімкнено, цей токен дозволяє агентам самостійно реєструватися без попереднього створення системи. Термін дії закінчується через годину або при перезапуску хабу."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "При ввімкненні цей токен дозволяє агентам самостійно реєструватися без попереднього створення системи."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "Nhập địa chỉ email..."
msgid "Enter your one-time password."
msgstr "Nhập mật khẩu một lần của bạn."
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "Tạm thời"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "Các hệ thống hiện có không được định nghĩa trong <0>con
msgid "Exited active"
msgstr "Đã thoát khi hoạt động"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "Hết hạn sau một giờ hoặc khi khởi động lại hub."
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "Xuất"
@@ -1109,6 +1117,14 @@ msgstr "Tỷ lệ sử dụng trung bình mỗi nhân"
msgid "Percentage of time spent in each state"
msgstr "Phần trăm thời gian dành cho mỗi trạng thái"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "Vĩnh viễn"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "Tính bền vững"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "Vui lòng <0>cấu hình máy chủ SMTP</0> để đảm bảo cảnh báo được gửi đi."
@@ -1265,6 +1281,10 @@ msgstr "Lưu Cài đặt"
msgid "Save system"
msgstr "Lưu hệ thống"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "Được lưu trong cơ sở dữ liệu và không hết hạn cho đến khi bạn tắt nó."
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "Lịch trình"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Thông báo Webhook / Push"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "Khi được bật, token này cho phép các tác nhân tự đăng ký mà không cần tạo hệ thống trước. Hết hạn sau một giờ hoặc khi khởi động lại trung tâm."
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "Khi được bật, token này cho phép các tác nhân tự đăng ký mà không cần tạo hệ thống trước."
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "输入电子邮件地址..."
msgid "Enter your one-time password."
msgstr "输入您的一次性密码。"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "临时"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "未在<0>config.yml</0>中定义的客户端将被删除。请定期备
msgid "Exited active"
msgstr "退出活动状态"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "一小时后或重新启动集线器时过期。"
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "导出"
@@ -1109,6 +1117,14 @@ msgstr "每个核心的平均利用率"
msgid "Percentage of time spent in each state"
msgstr "在每个状态下花费的时间百分比"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "永久"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "持久性"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "请<0>配置 SMTP 服务器</0>以确保警报被传递。"
@@ -1265,6 +1281,10 @@ msgstr "保存设置"
msgid "Save system"
msgstr "保存系统"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "保存在数据库中,在您禁用之前不会过期。"
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "计划"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / 推送通知"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "启用,此令牌允许客户端在无需先创建系统的情况下自动注册。在一小时后或中心重启时过期。"
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "启用,此令牌允许代理无需先创建系统即可自行注册。"
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "輸入電子郵件地址..."
msgid "Enter your one-time password."
msgstr "輸入您的一次性密碼。"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "臨時"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "未在<0>config.yml</0>中定義的現有系統將被刪除。請定期
msgid "Exited active"
msgstr "退出活動狀態"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "一小時後或重新啟動集線器時過期。"
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "匯出"
@@ -1109,6 +1117,14 @@ msgstr "每個核心的平均使用率"
msgid "Percentage of time spent in each state"
msgstr "在每個狀態下花費的時間百分比"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "永久"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "持久性"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "請<0>配置SMTP伺服器</0>以確保警報被傳送。"
@@ -1265,6 +1281,10 @@ msgstr "儲存設定"
msgid "Save system"
msgstr "儲存系統"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "儲存在資料庫中,在您停用之前不會過期。"
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr ""
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / 推送通知"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "啟用,此令牌允許代理程式在無需預先創建系統的情況下自動註冊。在一小時後或中心重啟時過期。"
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "啟用,此權杖允許代理無需事先建立系統即可自行註冊。"
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -654,6 +654,10 @@ msgstr "輸入電子郵件地址..."
msgid "Enter your one-time password."
msgstr "輸入您的一次性密碼。"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Ephemeral"
msgstr "臨時"
#: src/components/login/auth-form.tsx
#: src/components/routes/settings/alerts-history-data-table.tsx
#: src/components/routes/settings/config-yaml.tsx
@@ -684,6 +688,10 @@ msgstr "未在 <0>config.yml</0> 中定義的現有系統將會被刪除。請
msgid "Exited active"
msgstr "結束"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Expires after one hour or on hub restart."
msgstr "一小時後或重新啟動集線器時過期。"
#: src/components/routes/settings/alerts-history-data-table.tsx
msgid "Export"
msgstr "匯出"
@@ -1109,6 +1117,14 @@ msgstr "核心平均使用率"
msgid "Percentage of time spent in each state"
msgstr "狀態時間佔比"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Permanent"
msgstr "永久"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Persistence"
msgstr "持久性"
#: src/components/routes/settings/notifications.tsx
msgid "Please <0>configure an SMTP server</0> to ensure alerts are delivered."
msgstr "請<0>設定一個 SMTP 伺服器</0>以確保能傳送警報。"
@@ -1265,6 +1281,10 @@ msgstr "儲存設定"
msgid "Save system"
msgstr "儲存系統"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "Saved in the database and does not expire until you disable it."
msgstr "保存在資料庫中,在您停用之前不會過期。"
#: src/components/routes/settings/quiet-hours.tsx
msgid "Schedule"
msgstr "排程"
@@ -1689,8 +1709,8 @@ msgid "Webhook / Push notifications"
msgstr "Webhook / 推送通知"
#: src/components/routes/settings/tokens-fingerprints.tsx
msgid "When enabled, this token allows agents to self-register without prior system creation. Expires after one hour or on hub restart."
msgstr "啟用,此令牌允許代理程式在沒有預先建立系統的情況下自動註冊。在一小時後或 Hub 重啟時過期。"
msgid "When enabled, this token allows agents to self-register without prior system creation."
msgstr "啟用,此令牌允許代理無需事先建立系統即可自行註冊。"
#: src/components/add-system.tsx
#: src/components/routes/settings/tokens-fingerprints.tsx

View File

@@ -1,3 +1,19 @@
## 0.18.2
- Add separate dynamically linked glibc build for Linux. (#1618)
- Fix GPU ID collision between Intel and NVIDIA collectors. (#1522)
- Only hide GPU engine graph if entire usage is 0%. (#1624)
- Add Jetson tegrastats regex support for pre-Jetpack 5 versions. (#1631)
- Improve Indonesian translations. (#1625)
## 0.18.1
- Fix bug in 0.18.0 where all containers were cleared from the "All Containers" page when any system returned no containers.
## 0.18.0
- Add experimental NVML GPU collector. (#1522, #1587)
@@ -6,6 +22,8 @@
- Add battery charge to systems table.
- Add option to make universal token permanent. (#1097, #1614)
- Add `--url` and `--token` command line arguments to the agent. (#1524)
- Collect S.M.A.R.T. data in the background every hour.
@@ -30,11 +48,12 @@
- Fix loader visibility when no systems are present. (#1511)
- Add Serbian translations.
- Rename login honeypot field to prevent password manager autofill (#1011).
- Add Serbian and Bahasa Indonesia translations.
- Update Go dependencies.
## 0.17.0
- Add quiet hours to silence alerts during specific time periods. (#265)
@@ -319,4 +338,4 @@ Note that the default memory calculation changed in this release, which may caus
## Older
Release notes are available at https://github.com/henrygd/beszel/releases
Release notes are available at <https://github.com/henrygd/beszel/releases>