release / build (push) Successful in 4m0s
37 + 73 = 100 btw
1. tracing
- much more tracing across agent and cc
- metrics, logs and spans exported through otlp (grpc)
- console logs, otlp logs and traces have independent filters now
- follow a command from cc to agent, or a snapshot from collection to storage, in one trace
- exporters retry temporary failures with backoff and keep queues bounded
- prolonged collector outages can lose telemetry
- exporter and transport diagnostics stay in console logs so exports don't generate more exports
- check out them fields at docs/telemetry.md
- process them with guides from docs/telemetry-recipes.md
2. more process info
- agent and cc report process/host uptime, process RSS, CPU time and open file descriptors
- the FD count includes files, sockets and pipes
- host total/available memory and 1/5/15-minute load are included where supported
- these are available through otlp now, with a UI view planned later
3. config duration now uses time strings
- instead of `*_seconds` or `*_days` which is bullshit
- write durations like "30s", "60d" or "1h 30m", parsed by humantime
- check docs/config-durations.md
- old numeric keys still load and produce a deprecation warning
- init-config --from-config rewrites those keys into the new format and keeps your telemetry and access settings
- api/ws numeric fields and existing numeric cli flags are unchanged
4. devices
- clearer labels in the UI
- rename or forget saved devices
- remember, attach and merge keep the details dialog open
- details stay accessible even when the device drops out of your current list filters
- presence comes from endpoints, and unnamed devices get better fallback names
- renaming with an invalid name returns 400, while storage failures return 500
5. backend cleanup
- this helps with tracing
- ~~no more~~ less long asf fns
- related device reads share a SQLite transaction for a consistent view
- snapshot traces show pool wait, transaction begin, row writes and commit separately
- wake lookup searches the full fleet, including devices beyond the UI list's 1,000-row cap
6. fleet collection caching
- reuse the grouped view until DB or connected-agent state changes
- if changes keep interrupting a rebuild, return 503 fleet_busy so the caller can retry
- current fleet/device/endpoint counts are also available as metrics
- cool
7. origin auth
- docs/origin-auth.md
- validate Cloudflare Access tokens at the origin
- caddy calls cc's /internal/auth/verify before proxying protected routes
- configure [access] with the protected app's issuer and AUD
- the signing-key URL defaults from the issuer and can be overridden
- cache signing keys according to HTTP freshness headers and revalidate with ETag/Last-Modified
- update the caddy config!
- keep cc bound to loopback so requests go through caddy's auth checks
- agent endpoints continue using their own authentication
- closing the confirmed origin bypass requires BOTH the cc config and the caddy update
8. retention + deployment bits
- device_retention defaults to "60d", and "0d" disables expiry
- an agent-collected device's retention age resets whenever cc receives a snapshot containing it
- complete snapshots immediately remove rows the agent has omitted
- saved devices and their manually attached identifiers remain saved
- OpenWrt UCI/environment setup, credential-entry fixes and an updated copy script
Ping, multi-CC, the process-info UI and profiling are planned for later.
all codex btw idfk what these do
there are things to do.
35 lines
1.6 KiB
TOML
35 lines
1.6 KiB
TOML
[package]
|
|
name = "wakey-core"
|
|
version = "0.3.7"
|
|
edition = "2024"
|
|
publish = ["gitea"]
|
|
|
|
[dependencies]
|
|
anyhow = { workspace = true, optional = true }
|
|
opentelemetry = { version = "0.33", optional = true }
|
|
opentelemetry-otlp = { version = "0.33", default-features = false, features = ["grpc-tonic", "trace", "logs", "metrics"], optional = true }
|
|
opentelemetry_sdk = { version = "0.33", optional = true }
|
|
opentelemetry-appender-tracing = { version = "0.33", optional = true }
|
|
tracing = { workspace = true, optional = true }
|
|
tracing-opentelemetry = { version = "0.34", optional = true }
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt", "json", "time"], optional = true }
|
|
time = { version = "0.3", features = ["formatting", "local-offset"], optional = true }
|
|
tonic = { version = "0.14", default-features = false, optional = true }
|
|
macaddr = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
humantime = "2"
|
|
serde_with = { version = "3", features = ["json"] }
|
|
strum = { version = "0", features = ["derive", "strum_macros"] }
|
|
thiserror = "2"
|
|
|
|
[features]
|
|
telemetry = ["dep:anyhow", "dep:opentelemetry", "dep:opentelemetry-otlp", "dep:opentelemetry_sdk", "dep:opentelemetry-appender-tracing", "dep:tracing", "dep:tracing-opentelemetry", "dep:tracing-subscriber", "dep:time", "dep:tonic"]
|
|
|
|
[dev-dependencies]
|
|
serde_json.workspace = true
|
|
tokio = { version = "1", features = ["macros", "rt-multi-thread", "net", "sync", "time"] }
|
|
tokio-stream = { version = "0.1", features = ["net"] }
|
|
tonic = "0.14"
|
|
opentelemetry-proto = { version = "0.33", default-features = false, features = ["gen-tonic", "trace", "logs", "metrics"] }
|