Files
tsdocker/changelog.md

16 KiB

Changelog

2026-02-06 - 1.11.0 - feat(docker)

start temporary local registry for buildx dependency resolution and ensure buildx builder uses host network

  • Introduce a temporary local registry (localhost:5234) with start/stop helpers and push support to expose local images for buildx
  • Add Dockerfile.needsLocalRegistry to decide when a local registry is required (local base dependencies + multi-platform or platform option)
  • Push built images to the local registry and set localRegistryTag on Dockerfile instances for BuildKit build-context usage
  • Tag built images in the host daemon for dependent Dockerfiles to resolve local FROM references
  • Integrate registry lifecycle into Dockerfile.buildDockerfiles and TsDockerManager build flows (start before builds, stop after)
  • Ensure buildx builder is created with --driver-opt network=host and recreate existing builder if it lacks host network to allow registry access from build containers

2026-02-06 - 1.10.0 - feat(classes.dockerfile)

support using a local base image as a build context in buildx commands

  • Adds --build-context flag mapping base image to docker-image:// when localBaseImageDependent && localBaseDockerfile are set
  • Appends the build context flag to both single-platform and multi-platform docker buildx commands
  • Logs an info message indicating the local build context mapping

2026-02-06 - 1.9.0 - feat(build)

add verbose build output, progress logging, and timing for builds/tests

  • Add 'verbose' option to build/test flows (interfaces, CLI, and method signatures) to allow streaming raw docker build output or run silently
  • Log per-item progress for build and test phases (e.g. (1/N) Building/Testing ) and report individual durations
  • Return elapsed time from Dockerfile.build() and Dockerfile.test() and aggregate total build/test times in manager
  • Introduce formatDuration(ms) helper in logging module to format timings
  • Switch from console.log to structured logger calls across cache, manager, dockerfile and push paths
  • Use silent exec variants when verbose is false and stream exec when verbose is true

2026-02-06 - 1.8.0 - feat(build)

add optional content-hash based build cache to skip rebuilding unchanged Dockerfiles

  • Introduce TsDockerCache to compute SHA-256 of Dockerfile content and persist cache to .nogit/tsdocker_support.json
  • Add ICacheEntry and ICacheData interfaces and a cached flag to IBuildCommandOptions
  • Integrate cached mode in TsDockerManager: skip builds on cache hits, verify image presence, record builds on misses, and still perform dependency tagging
  • Expose --cached option in CLI to enable the cached build flow
  • Cache records store contentHash, imageId, buildTag and timestamp

2026-02-06 - 1.7.0 - feat(cli)

add CLI version display using commitinfo

  • Imported commitinfo from './00_commitinfo_data.js' and called tsdockerCli.addVersion(commitinfo.version) to surface package/commit version in the Smartcli instance
  • Change made in ts/tsdocker.cli.ts — small user-facing CLI enhancement; no breaking changes

2026-02-06 - 1.6.0 - feat(docker)

add support for no-cache builds and tag built images for local dependency resolution

  • Introduce IBuildCommandOptions.noCache to control --no-cache behavior
  • Propagate noCache from CLI (via cache flag) through TsDockerManager to Dockerfile.build
  • Append --no-cache to docker build/buildx commands when noCache is true
  • After building an image, tag it with full base image references used by dependent Dockerfiles so their FROM lines resolve to the locally-built image
  • Log tagging actions and execute docker tag via smartshellInstance

2026-02-06 - 1.5.0 - feat(build)

add support for selective builds, platform override and build timeout

  • Introduce IBuildCommandOptions with patterns, platform and timeout to control build behavior
  • Allow manager.build() to accept options and build only matching Dockerfiles (including dependencies) preserving topological order
  • Add CLI parsing for build/push to accept positional Dockerfile patterns and --platform/--timeout flags
  • Support single-platform override via docker buildx and multi-platform buildx detection
  • Implement streaming exec with timeout to kill long-running builds and surface timeout errors

2026-02-04 - 1.4.3 - fix(dockerfile)

fix matching of base images to local Dockerfiles by stripping registry prefixes when comparing image references

  • Added Dockerfile.extractRepoVersion(imageRef) to normalize image references by removing registry prefixes (detects registries containing '.' or ':' or 'localhost').
  • Use extractRepoVersion when checking tagToDockerfile and when mapping local base dockerfiles to ensure comparisons use repo:tag keys rather than full registry-prefixed references.
  • Prevents mismatches when baseImage includes a registry (e.g. "host.today/repo:version") so it correctly matches a local cleanTag like "repo:version".

2026-01-21 - 1.4.2 - fix(classes.dockerfile)

use a single top-level fs import instead of requiring fs inside methods

  • Added top-level import: import * as fs from 'fs' in ts/classes.dockerfile.ts
  • Removed inline require('fs') calls and replaced with the imported fs in constructor and test() to keep imports consistent
  • No behavioral change expected; this is a cleanup/refactor to standardize module usage

2026-01-20 - 1.4.1 - fix(docs)

update README: expand usage, installation, quick start, features, troubleshooting and migration notes

  • Expanded README content: new Quick Start, Installation examples, and detailed Features section (containerized testing, smart Docker builds, multi-registry push, multi-architecture support, zero-config start)
  • Added troubleshooting and performance tips including registry login guidance and circular dependency advice
  • Updated migration notes from legacy npmdocker to @git.zone/tsdocker (command and config key changes, ESM guidance)
  • Documentation-only change — no source code modified

2026-01-20 - 1.4.0 - feat(tsdocker)

add multi-registry and multi-arch Docker build/push/pull manager, registry storage, Dockerfile handling, and new CLI commands

  • Introduce TsDockerManager orchestrator to discover, sort, build, test, push and pull Dockerfiles
  • Add Dockerfile class with dependency-aware build order, buildx support, push/pull and test flows (new large module)
  • Add DockerRegistry and RegistryStorage classes to manage registry credentials, login/logout and environment loading
  • Add CLI commands: build, push, pull, test, login, list (and integrate TsDockerManager into CLI)
  • Extend configuration (ITsDockerConfig) with registries, registryRepoMap, buildArgEnvMap, platforms, push and testDir; re-export as IConfig for backwards compatibility
  • Add @push.rocks/lik to dependencies and import it in tsdocker.plugins
  • Remove legacy speedtest command and related package.json script
  • Update README and readme.hints with new features, configuration examples and command list

2026-01-19 - 1.3.0 - feat(packaging)

Rename package scope to @git.zone and migrate to ESM; rename CLI/config keys, update entrypoints and imports, bump Node requirement to 18, and adjust scripts/dependencies

  • Package renamed to @git.zone/tsdocker (scope change) — consumers must update package reference.
  • Configuration key changed from 'npmdocker' to '@git.zone/tsdocker' in npmextra.json; update project config accordingly.
  • CLI command renamed from 'npmdocker' to 'tsdocker' and entrypoint/entrypoint binary references updated.
  • Project migrated to ESM: imports now use .js extensions, package main/typings point to dist_ts, and ts source uses ESM patterns — Node >=18 required.
  • Build/test scripts changed to use tsx and updated test task names; CI/workflow and npmextra release registries updated.
  • Dependencies/devDependencies bumped; smartfs, smartcli and tsbuild versions updated.
  • Docker build command now uses '--load' and default base images/installation behavior adjusted (global install of tsdocker in image).

2025-12-13 - 1.2.43 - fix(packaging)

Rename package scope to @git.zone and migrate deps/CI; pin pnpm and enable ESM packaging

  • Rename npm package scope from @gitzone/tsdocker to @git.zone/tsdocker (package.json, commitinfo, README, npmextra)
  • Migrate devDependencies from @gitzone/_ to @git.zone/_ and ensure runtime packages use @push.rocks/* where applicable
  • Replace smartfile usage with smartfs and update code to use async smartfs.file(...).write()/delete() patterns
  • Add packageManager pin for pnpm, set type: "module", add files array and pnpm.overrides in package.json
  • Add tsconfig.json with NodeNext/ES2022 settings and other ESM-related adjustments
  • Add Gitea CI workflows (.gitea/workflows/default_tags.yaml and default_nottags.yaml) for test, audit and release flows
  • Update assets Dockerfile to reference @git.zone/tsdocker and other packaging/CI related scripts
  • Update .gitignore to consolidate dist patterns and add AI/tooling excludes (.claude/, .serena/)
  • Update README, readme.hints.md and changelog to document the scope rename, dependency migrations and SmartFS migration

2025-11-22 - 1.2.42 - fix(package.json)

Add packageManager field to package.json to pin pnpm version

  • Add packageManager: "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34" to package.json to lock pnpm CLI version and integrity

2025-11-22 - 1.2.41 - fix(core)

Migrate to @git.zone / @push.rocks packages, replace smartfile with smartfs and adapt filesystem usage; update dev deps and remove CI/lint config

  • Updated devDependencies from @gitzone/_ to @git.zone/_ (tsbuild, tsrun, tstest) and bumped versions
  • Re-scoped runtime dependencies from @pushrocks/_ to @push.rocks/_ and updated package versions
  • Replaced deprecated smartfile usage with new async smartfs API; added SmartFs instance in ts/tsdocker.plugins.ts
  • Switched sync filesystem calls to Node fs where appropriate (fs.existsSync, fs.mkdirSync) and updated code to await smartfs.file(...).write()/delete()
  • Made buildDockerFile async and awaited file write/delete operations to ensure correct async flow
  • Updated CLI bootstrap to require @git.zone/tsrun in cli.ts.js
  • Removed tslint.json and cleaned up CI configuration (.gitlab-ci.yml content removed)
  • Added readme.hints.md describing the migration and dependency changes

2021-09-30 - 1.2.40 - release (no code changes)

Routine release tag with no recorded source changes.

  • Tagged release only (no changelogged changes).

2021-09-30 - 1.2.39 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-28 - 1.2.38 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-27 - 1.2.37 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-27 - 1.2.36 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-21 - 1.2.35 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-21 - 1.2.34 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-12 - 1.2.33 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-12 - 1.2.32 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-12 - 1.2.31 - fix(bin name)

Rename of the published CLI binary.

  • Changed published binary name from "npmdocker" to "tsdocker".

2019-05-10 - 1.2.30 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-10 - 1.2.29 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-10 - 1.2.28 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2019-05-09 - 1.2.27 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2018-10-29 - 1.2.26 - fix(ci)

CI build process change.

  • Removed "npmts" from the build process.

2018-10-29 - 1.2.25 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2018-10-28 - 1.2.24 - fix(clean)

Improved image cleanup.

  • Images are now cleaned in a more thorough way.

2018-09-16 - 1.2.23 - fix(core)

Core maintenance updates.

  • Internal core updates and maintenance.

2018-09-16 - 1.2.22 - fix(dependencies)

Dependency updates.

  • Updated dependencies (maintenance).

2018-07-21 - 1.2.21 - fix(update to latest standards)

Standards/update alignment.

  • Updated codebase to latest standards (general maintenance).

2018-05-18 - 1.2.20 - release (no code changes)

Tagged release with no recorded source changes.

  • Tagged release only (no changelogged changes).

2018-05-18 - 1.2.19 - fix(ci)

CI improvements.

  • Added a build command to package.json to support CI builds.

2018-05-18 - 1.2.18 - fix(package)

Packaging change for scoped publish.

  • Include npmdocker under the @git.zone npm scope.

2018-01-24 - 1.2.18 - update

Documentation update.

  • Updated package description.

2017-10-13 - 1.2.17 - fix(cleanup)

Cleanup behavior fix.

  • Now cleans up correctly after operations.

2017-10-13 - 1.2.16 - update

Miscellaneous updates.

  • General maintenance and updates.

2017-10-13 - 1.2.15 - fix(test)

Testing improvements.

  • Fixed Docker testing.

2017-10-07 - 1.2.14 - ci

CI improvements.

  • Updated CI configuration.

2017-10-07 - 1.2.13 - update(analytics)

Analytics integration.

  • Updated Analytics integration.

2017-10-07 - 1.2.12 - update(dependencies)

Dependency updates.

  • Updated dependencies.

2017-07-16 - 1.2.11 - update

Dependency and greeting update.

  • Updated dependencies and changed greeting text.

2017-04-21 - 1.2.10 - feature

Added analytics.

  • Now includes SmartAnalytics.

2017-04-02 - 1.2.8 - docs & ci

Docs and CI updates.

  • Updated README and CI configuration.

2017-04-02 - 1.2.7 - fix(command)

Command execution fix.

  • Fixed command execution behavior.

2017-03-28 - 1.2.6 - ci

CI configuration update.

  • Updated .gitlab-ci.yml for correct images/steps.

2017-03-28 - 1.2.5 - ci

CI improvements.

  • Further CI updates.

2017-03-28 - 1.2.4 - perf

Performance improvements.

  • Now runs asynchronously and is significantly faster.

2017-02-12 - 1.2.3 - feature

New cleanup and diagnostics features.

  • Added speedtest utility.
  • Added removal of volumes.

2017-02-11 - 1.2.2 - feature

Cleanup enhancement.

  • Added "clean --all" option to remove more artifacts.

2017-02-11 - 1.2.1 - maintenance

Docs and dependency updates.

  • Updated README and dependencies.

2016-08-04 - 1.2.0 - maintenance

Dependency cleanup.

  • Removed unnecessary dependencies.

2016-07-29 - 1.1.6 - feature

Environment support.

  • Added support for qenv.

2016-07-29 - 1.1.5 - fix

Container cleanup improvements.

  • Now also removes old running containers.

2016-07-29 - 1.1.4 - fix

Namespace conflict avoidance.

  • Removes previous containers to avoid name-space conflicts after errors.

2016-07-29 - 1.1.3 - ci

CI image configuration.

  • Added correct images for GitLab CI.

2016-07-29 - 1.1.2 - ci

CI fixes.

  • Fixed GitLab CI configuration.

2016-07-28 - 1.1.1 - ci

CI fixes and configuration.

  • Fixed gitlab.yml and CI issues.

2016-07-28 - 1.1.0 - feature

Docker-in-Docker support.

  • Improved support for Docker-in-Docker scenarios.

2016-07-28 - 1.0.5 - feature & ci

Docker socket option and CI update.

  • Added dockerSock option.
  • Updated .gitlab-ci.yml.

2016-07-19 - 1.0.4 - release (no code changes)

Tagged release with no recorded source changes.

  • Tagged release only (no changelogged changes).

2016-07-19 - 1.0.3 - feature

Environment tagging.

  • Added environment tag support.

2016-07-19 - 1.0.2 - milestone

CLI and stability improvements.

  • Wired up CLI usage.
  • Marked as fully working.

2016-07-19 - 1.0.1 - initial improvements

Early project refinements and Docker integration.

  • Added/updated Docker integration and configuration.
  • Improved config handling and path management.
  • Updated Docker handling and removed test artifacts.

2016-07-13 - 1.0.0 - initial

Initial release.

  • Added README and initial project scaffolding.