crunchloop / crunchloop/devcontainer

Surface a clean container display name (from devcontainer.json `name`) as first-class metadata

Đang mở
#108 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Go
Star
5
Fork
0
Merge trung bình
6 giờ 17 phút
Pull request đã merge (30 ngày)
15

Mô tả

## Summary

Consumers of the runtime's `ListContainers` currently only receive the **raw Docker container name**, which for the Compose path is `dc---` and for the single-container path is `devcontainer-`. There is no clean, human-friendly name to display in a UI, so consumers are forced to either show the `dc-…` string or reverse-engineer it with regex.

Meanwhile, the library **already parses** the natural friendly name — the `name` property from `devcontainer.json` — but then discards it: it's resolved into `ResolvedConfig.Name` and never stamped onto the container or returned.

## Request

Surface a friendly display name as first-class metadata, without changing the load-bearing Compose project name. Two possible shapes (either or both):

1. **Stamp a label** on created containers, e.g. `dev.containers.displayName = ResolvedConfig.Name`. This composes with the existing label-based enumeration and is cheap for consumers to read via `ListContainers` (which already populates `Labels`).
2. **Add a field** to `runtime.Container` (e.g. `DisplayName string`) populated from the resolved config.

## Pointers (as of v0.4.0)

- `config/raw.go:16` + `config/resolve.go:52` — `devcontainer.json` `name` is parsed into `ResolvedConfig.Name` (optional / `omitempty`).
- `runtime/runtime.go:284` — `Container` struct exposes only `ID`, `Name` (raw Docker name), `Image`, `State`, `Labels`; no display name.
- `up.go:463-467` — Compose project name is hardcoded `"dc-" + DevcontainerID`, which becomes the container name prefix.
- `engine.go:149-152` — single-container name is `"devcontainer-" + id`.

## Important constraint

Please keep the Compose **project name** (`dc-`) unchanged — it is load-bearing (it is the `com.docker.compose.project` label used for enumeration and by `docker compose` itself). This request is only to add *separate*, display-oriented metadata; it should not rename the project or the containers.

## Fallback behavior

`devcontainer.json` `name` is optional. When absent, a sensible fallback would be the Compose service name for siblings and something stable (e.g. `devcontainer`) for the primary — but consumers can also handle fallback themselves as long as the field is nullable/empty when unset.

## Context

Downstream (DAP) we're shipping a temporary display-time strip to hide the `dc--` prefix in our Resources UI; this issue tracks the proper fix so we can drop the workaround.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Read config/raw.go and config/resolve.go to trace ResolvedConfig.Name, then inspect runtime/runtime.go, up.go, and engine.go for container metadata and naming. Decide how the optional name is exposed while keeping the Compose project name unchanged; done means ListContainers provides separate display-oriented metadata without changing load-bearing names.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
docker, docker-compose, go
Lĩnh vực
backend, devtools
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
55/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.