- drop the SensorTech quick-upgrade zip block (ThoughtFrame never writes that zip) - drop the forced jdk.incubator.vector module (SensorTech DSP); keep --enable-native-access=ALL-UNNAMED (silences real JNA/Jetty warnings, JDK-25 future-proof) - supervisor now traps TERM/INT and forwards to Jetty (clean 'docker stop') and exits on a clean Jetty exit instead of always looping
/WEB-INF/base/entermedia is a fallbackdirectory target but the dir was empty, so git never tracked it and the setupLinks symlink dangled on any non-laptop checkout (createWar: 'Couldn't follow symbolic link .../base/entermedia'). Add a .gitkeep so the directory exists off-host.
thoughtframe: createWar copies platform bases directly (no symlink dependency)
Mirror the :damsel createWar: copy WEB-INF/base/{entermedia,emfrontend2,system, manager,mediadb} from :dam and WEB-INF/base/openedit from :cms directly, instead of following the setupLinks symlinks (host-specific absolute targets that dangle on a fresh checkout / CI). Keeps setupLinks for the local run. WAR now assembles on any host.
thoughtframe: createWar ships product code in WEB-INF/lib only (classpath = files())
The War task was routing the classpath dirs into WEB-INF/classes (579 files) where they shadow the jar and are never refreshed by the runtime's overlay upgrade. Mirror the :damsel createWar: classpath = files(), so only WEB-INF/lib carries product code.
:thoughtframe now declares a 25 toolchain and settings.gradle enables the foojay resolver, so Gradle provisions JDK 25 itself instead of depending on the host JDK being 25. Mirrors :damsel. Build is JDK-agnostic on any agent.
thoughtframe: untrack the setupLinks-generated symlinks
base/{emfrontend,emshare,entermedia,manager,mediadb,openedit,system} were committed as symlinks with absolute /home/ian/... targets, so a checkout on any other host (e.g. Jenkins) had a dead emfrontend link and createWar failed with 'Couldn't follow symbolic link'. Untrack + gitignore them (setupLinks recreates them per host), and have setupLinks delete stale emfrontend/emshare strays.
- drop the SensorTech quick-upgrade zip block (ThoughtFrame never writes that zip)
- drop the forced jdk.incubator.vector module (SensorTech DSP); keep
--enable-native-access=ALL-UNNAMED (silences real JNA/Jetty warnings, JDK-25 future-proof)
- supervisor now traps TERM/INT and forwards to Jetty (clean 'docker stop') and exits on a
clean Jetty exit instead of always looping