Two related improvements requested while testing the private fork:
1. Custom TCP/QUIC listen ports (SidecarConfig.tcpListenPort,
.quicListenPort). With ephemeral ports, the daemon's peer-listen
port changes at every restart, which makes port-forwarding on a
home router useless after the first daemon stop. Pinning these
keeps the same port across restarts so other private-network
nodes can dial in reliably.
Backend uses the configured port if Some, falls back to
pick_port_skip otherwise. Frontend exposes two inputs in
Settings → Daemon configuration with a help line explaining
when to fill them.
2. Daemon-failure banner in App.vue. The previous behaviour was
silent: a click on \"Start daemon\" that hit a backend error
only flipped the sidebar dot to red, with no message visible.
Now an inline banner at the top of the main content area shows
the error, plus a \"Go to Settings\" shortcut when the message
mentions a network config issue.