On this page:
7.1 v1.0.3 (2026–06–28)
7.2 v1.0.3 (2026–06–20)
7.3 v1.0.2 (2026–06–18)
7.4 v1.0.1 (2026–06–17)
9.2

7 Changelog🔗

7.1 v1.0.3 (2026–06–28)🔗

Feat:
  • enigma-app/enigma: allow to suppress colors with —no-color flag

  • color log the file progress

  • add colored logs

  • add command time report

  • enigma/subcommands: log only file name

  • subcommand’s task log progress

  • enigma-app/enigma: use the stamps to ignore up-to-date caches

  • enigma/scribblings: add faq.scrbl

  • scribblings/main.scrbl: show built date; obfuscate the e-mail

  • enigma-app/enigma: add and use metadata.rkt

Fix:
  • file/emacs-context.rkt: fix hidden dotfile detection

  • log/simplelog.rkt: fix template inconsistency; change colors

  • stamp/stamp.rkt: correct value unpacking; check if stamp file exists

  • path/load-path-unit-test.rkt: do NOT do recursive cross-package requires

  • file/context.rkt: do not scan hidden directories for emacs lisp files

Refactor:
  • context -> emacs-context

  • enigma/app: split program.rkt off to cli.rkt

  • scribblings/main.scrbl: use prefix-in for metadata

7.2 v1.0.3 (2026–06–20)🔗

Feat:
  • file/content-guess.rkt: also look for the Package-Version header

  • app/program.rkt: show command list in help

  • app/program.rkt: add the subcommands subcommand

  • subcommands/test.rkt: for ert tests change directory to the test’s directory

  • init enigma-page

  • app/program.rkt: add shortcuts to each subcommand

  • app/program.rkt: add argument parser to each subcommand

Fix:
  • utils/find.rkt: do not fund hidden files

  • utils/find.rkt: ensure that found file is not a directory

Refactor:
  • subcommands/test.rkt: instead of parameterize pass dir directly to Emacs

  • subcommands/test.rkt: debug-print in proper order

  • utils/content.rkt: split macro off of functional body

  • app/program.rkt: functinize where we do not need macros

  • app/program.rkt: add and use run-action

7.3 v1.0.2 (2026–06–18)🔗

Feat:
  • add dependencies subcommand

  • allow to specify package-archives on the CLI

  • add hermetic package install

  • subcommands/install.rkt: show how Emacs sees the package-user-dir

Fix:
  • file/content-guess.rkt: fix regexp matching in match expression

  • make sure to package-initialize on file or remote pkg install

Refactor:
  • file/content-guess.rkt: use racket/match

  • enigma-app/enigma: use match

  • enigma-app/enigma: use match

  • enigma-app/enigma: case -> match

  • port from ~>> to ~> and lambda~>

  • enigma/emacs: add and use package/archives.rkt

  • app/program.rkt: add and use emacs-directory-setup-expr

7.4 v1.0.1 (2026–06–17)🔗

Feat:
  • build a self-contained binary

  • file/content-guess.rkt: guess from ert-deftest

  • app/program.rkt: add execution-directory guard

  • enigma-app/enigma: allow to set custom emacs, buttercup and ert-runner exe paths

  • run/enigma: use PLTADDONDIR if locally available

  • stamp/stamp.rkt: create json stamps

  • utils/path.rkt: add contracts

  • utils/find.rkt: consistent returns; add contracts

  • file/content-guess.rkt: add contracts

  • file/content-guess.rkt: detect ert-runner

  • add install subcommand

  • lib/exec.rkt: add Executing message

  • enigma-app/enigma: add exec subcommand

  • consume extra args for emacs

  • lib/compile.rkt: add stamping after compilation

  • lib/test.rkt: create test stamp files

  • app/test.rkt: match both test and tests

  • add test subcommand with ert and buttercup support

  • app/program.rkt: require action to be given

  • app/compile.rkt: only show path if it actually was compiled

  • enigma/app: return json

  • make a real launcher

  • app/program.rkt: return a hash as compilation return object

  • app/program.rkt: compile found files

  • app/program.rkt: find load paths

Fix:
  • scons_support/_init_.py: add module docstring for flit

  • app/program.rkt: call parameter that is to be set - program-parameter/execution-directory

  • system/run-emacs.rkt: correct defaults; export contracts

  • app/program.rkt: expand path given to -C flag

  • path/load-path.rkt: detect string to match the contract

  • enigma-app/SConscript: correct names

  • subcommands/install.rkt: correct result-hash order

  • subcommands/install.rkt: use result-code instead of static 0 exit-code

  • app/compile.rkt: unpack the parameter

Refactor:
  • scons_support/racket.py: remove the cwd arg requirement

  • scons_support/racket.py: refactor; format

  • app/program.rkt: renames and tweaks

  • subcommands/install.rkt: write the bootstrap code as a S-Expression

  • enigma-app/test: change layout

  • enigma/emacs: add and use file/context.rkt

  • enigma-app/enigma: add contracts to all current exports

  • subcommands/test.rkt: error on mismatch

  • enigma-app/enigma: add and use run-emacs helper module

  • app/program.rkt: no extra stderr for error

  • enigma/subcommands: cleanup; format

  • system/utils: add and use path.rkt

  • enigma-app/enigma: exec -> launch

  • app/program.rkt: no extra stderr for error

  • app/program.rkt: less macro defs

  • enigma-app/src: flatten lib

  • enigma/lib: add and use emacs/file/content-guess.rkt

  • reorganize files

  • enigma/app/program.rkt: dry

  • enigma/lib: add and use load-path.rkt

  • enigma/lib: split off to stamp.rkt

  • lib/find.rkt: rewrite load-patch matching

  • enigma-app/enigma: move libs to lib dir

  • enigma/app: split off and use find.rkt

Perf:
  • file/content-guess.rkt: temporarily disable deps