Skip to content

[BUG] Version reporting appears out of sync between container image, UI, and update checker; startup logs do not show app version #739

@soakes

Description

@soakes

Summary

There seems to be a version mismatch between the Docker image actually being run, the version shown in the UI, and the "new version available" notice.

In addition, the container does not currently print the 9Router application version on startup, which makes it harder to confirm what version is actually running in Kubernetes / Docker environments.


What I am seeing

My deployment is pulling:

Normal  Pulling  22m  kubelet  spec.containers{ninerouter}: Pulling image "ghcr.io/decolua/9router:0.3.98"

However, the web UI shows:

  • v0.3.97 as the current version
  • New version available: v0.3.99

So from the user side, it looks like:

  1. the container image is 0.3.98
  2. the UI thinks it is running 0.3.97
  3. the update checker thinks 0.3.99 is available

That suggests the version metadata is out of sync somewhere.


Current startup logs

At the moment the container only shows:

❯ k logs pod/ninerouter-5df87fb696-6qwl4
Defaulted container "ninerouter" out of: ninerouter, ninerouter-init (init)
▲ Next.js 16.2.4
- Local:         http://localhost:20128
- Network:       http://0.0.0.0:20128
✓ Ready in 0ms

There is no explicit 9Router version line printed at startup.


Expected behaviour

  • The UI should report the same version as the container image that is actually running.

  • The update checker should only show a newer version if one is genuinely newer than the running build.

  • The container should print a clear version line during startup, ideally including:

    • app version
    • image tag
    • git commit / build SHA (if available)

Something like:

9Router proxy v0.3.98
Build: <commit-sha>
Image: ghcr.io/decolua/9router:0.3.98

Actual behaviour

  • Container image pulled: 0.3.98
  • UI displays current version as: 0.3.97
  • UI displays update available as: 0.3.99
  • Startup logs do not show the app version at all

Why this matters

In containerized environments, especially Kubernetes, the startup log is usually the quickest way to confirm what version is actually deployed.

Without that, troubleshooting version drift becomes harder, particularly when:

  • the UI version is different from the image tag
  • the update notifier appears inconsistent
  • multiple pods / replicas may be running during rollouts

Possible causes

This may be one of the following:

  • UI version string is hardcoded or baked from an older build
  • update check is querying a source that does not match the published container tags
  • build metadata is not being injected consistently into the frontend and runtime
  • image tag and app version are not being derived from the same source

Suggested improvements

  1. Ensure the UI version is derived from the same build metadata as the published image.
  2. Ensure the update checker compares against the correct release/tag source.
  3. Print the app version on startup in container logs.
  4. Optionally expose a small /version or /healthz payload with version/build info for easier automation and support.

Reproduction

  1. Deploy ghcr.io/decolua/9router:0.3.98
  2. Open the UI
  3. Observe that the UI shows v0.3.97
  4. Observe that it also says New version available: v0.3.99
  5. Check container logs and note there is no 9Router version line at startup

Environment

  • Deployment type: Kubernetes
  • Image: ghcr.io/decolua/9router:0.3.98
Image
 ❯ skopeo list-tags docker://ghcr.io/decolua/9router
{
    "Repository": "ghcr.io/decolua/9router",
    "Tags": [
        "master",
        "latest",
        "3df0a4d",
        "1d8251c",
        "39d04d0",
        "091ad3f",
        "147fc16",
        "07717ba",
        "3cf900a",
        "0.3.75",
        "0.3",
        "d076c7d",
        "buildcache",
        "0.3.83",
        "1f3d3a8",
        "0.3.86",
        "b7d85ae",
        "0.3.87",
        "a1317ed",
        "0.3.89",
        "7959fd3",
        "0.3.90",
        "224981d",
        "0.3.91",
        "ecd6e93",
        "0.3.96",
        "7046122",
        "0.3.97",
        "81cef7d",
        "0.3.98",
        "8de9aae"
    ]
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions