You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.0 KiB
7.0 KiB
Changelog
All notable changes to the punkshell project version are documented here.
The latest ## [X.Y.Z] header must match the version field in punkproject.toml.
Entries are newest-first; one bullet per notable change. See the root AGENTS.md
"Project Versioning" section for the bump policy.
[0.4.1] - 2026-07-07
scriptsubcommand now matchestclshfor GUI scripts: if the script leaves a registered Tk main loop (Tk loaded with a live main window), the event loop is serviced until the last window closes, instead of sourcing-then-exiting immediately. So a Tk script with no explicitexit(or one that exits from anaftercallback, likescriptlib/tktimer.tcl) stays alive and runs — previously it flashed and died, andshellwas needed as a workaround (relevant to G-020 GUI automation). Console scripts are unaffected; a script that errors exits at once (no hanging window). Verified on both generations.
[0.4.0] - 2026-07-07
scriptsubcommand supportslib:<name>scriptlib scripts (with or without.tclextension), matching theshellsubcommand's scheme:punkexe script lib:hello, or barepunkexe lib:hellovia reclassification. The prefix always wins — a literal path beginninglib:(pathological; illegal on Windows filesystems) is reachable via./lib:.... Not-found errors list the searched locations. Only.tclruns via the script subcommand.- punk::path 0.2.2: new
scriptlib_resolve— the sharedlib:resolution policy (kit-internalapp/scriptlibfirst and not externally overridable, then scriptlib dirs relative to the executable), PUNKARGS-documented. app-punkshell still carries its inline copy of the policy (refactor onto the shared proc noted as todo).
[0.3.1] - 2026-07-07
scriptsubcommand: core-command documentation parity with the interactive shell — app-punkscript now loadspunk::args::moduledoc::tclcore(catch-guarded, ~40ms) so e.g.'i list' | punkexe scriptrenders the doc table instead of "Undocumented command". Verified on both generations; kit startup ~0.33s.- punk::packagepreference 0.1.1: the moduledoc auto-load success notice moved from stdout to stderr — stdout must stay clean for script/exec contexts (the failure branch already used stderr).
[0.3.0] - 2026-07-07
<punkexe> scriptcompleted (goal G-015 achieved): runs a script file (script <file> ?args?, conventional ::argv0/::argv) or the whole of piped stdin (<commands> | <punkexe> script— no trailingexitneeded) in the default punk shell module/alias environment, so one-liners likedev projects.work *name*work with no boilerplate. Honest exit codes (0 success, 1 error with errorInfo on stderr, script's ownexithonoured); no shellfilter transforms or logging side effects; never falls into an interactive shell. Implemented as the leanapp-punkscriptpackage; the stdin form echoes the script's final result when non-empty. Verified on both Tcl generations (punk902z, punksys).
[0.2.7] - 2026-07-07
- vendored tomlish 1.1.10: the library API now carries punk::args (PUNKARGS) documentation (from_toml, to_dict, from_dict, to_toml, update_tomlish_from_dict) — the G-014 tomlish precondition is met (documented upstream, re-vendored from a clean checkout); plus the explicit
tomlish::cmdline_mainentry point. _vfscommon.vfskit payload refreshed to the current built modules: shellfilter 0.2.3, shellrun 0.1.4, punkboot::utils 0.1.1, punk::console 0.7.1 content catch-up, tomlish 1.1.10.
[0.2.6] - 2026-07-06
- shellfilter 0.2.3:
shellfilter::runnow guarantees tee-stack removal (stdout/stderr restoration) via try/finally even when its body errors, and the decorative stack-status table rendering inlog::criticalblocks is catch-guarded. Previously an error there (observed: a stale same-version textblock snapshot calling the new punk::ansisgr_merge_singleswith old option syntax) aborted the run between channel diversion and restoration, leaving the process's stdout/stderr broken and all subsequent output silently lost. - runtests.tcl: testinterp tm path order fixed so the bootsupport snapshot wins same-version module ties over vendormodules (verified rule on Tcl 9.0.3, standard and punk::libunknown scanners:
tcl::tm::addprepends, head oftcl::tm::listwins ties, so the lasttest_tmlistelement wins); testinterp auto_path gains the parent of[info library]so binary packages such as Thread resolve in projects without a rootlib_tcl<N>/<arch>payload.
[0.2.5] - 2026-07-06
make.tcl vendorupdatenow checks each vendor source project's fossil/git checkout state and warns (non-fatal, once per VCS root) when pulling from a dirty tree — vendored artifacts built from uncommitted source have no committed provenance. Enforcement policy (abort/override, bootsupport coverage) tracked by goal G-026.- punkboot::utils 0.1.1: the dirty-checkout check lives in the module as
vcs_dirty_warnings(make.tcl calls it via a guarded lazy require and degrades to skipped if the bootsupport snapshot lacks it); bootsupport snapshots refreshed (punkboot::utils 0.1.1, shellrun 0.1.4, punk::console 0.7.1 content catch-up).
[0.2.4] - 2026-07-06
- shellrun 0.1.4: added missing
package require punk::args(the 0.1.3 migration leftrunx/run/runout/runerrcallingpunk::args::parsewithout requiring it, breaking shellrun in bare interps — including thesrc/tests/runtests.tcltestinterp, which made every source-tree test run fail).
[0.2.3] - 2026-07-06
- shellrun: removed
-tclfromsh_run,sh_runout,sh_runerr,sh_runx(was silently swallowed with no useful effect becausesh -cis always an external shell; now rejected with a usage message). - shellrun: migrated
runxfrom the legacyget_run_optsparser topunk::args::parsewith a full PUNKARGS spec;runxnow honours-debugand--timeout=(previously accepted but silently ignored). - shellrun: expanded PUNKARGS documentation for
run,runconsole,runout,runerr, andrunxwith@cmdmetadata and-helptext on all opts/values. - shellrun: migrated
sh_run,sh_runout,sh_runerr,sh_runxfromget_run_optstopunk::args::parsewith dedicated PUNKARGS specs. - shellrun: removed the internal
get_run_optsproc; all callers now usepunk::args.
[0.2.2] - 2026-07-06
- punk::console: terminal queries fired while an 8.6-based shell waits at an idle line-mode prompt now fail fast with a discriminable errorcode (
PUNK CONSOLE QUERY HOSTAGE_COOKED_READ) and emit nothing, instead of timing out (~500ms) and later corrupting input with the swallowed response (idle-reader hostage guard; raw mode and mid-command queries unaffected). Owner-routed queries preserve the owner-side errorcode.
[0.2.1] - 2026-07-06
make.tcl projectversion: new advisory subcommand verifyingCHANGELOG.mdmatchespunkproject.tomland warning ifsrc/has commits since the last project-version bump.- Clarified project versioning policy: the
make.tclcommand interface is part of the product surface.
[0.2.0] - 2026-07-05
- Initial tracking of the punkshell project version in
punkproject.toml.