{"owner":"jrsoftware","repo":"issrc","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md"],"skills":{"AGENTS.md":"# Inno Setup AI Agent Guide\r\n\r\n## Introduction\r\n- Source code of Inno Setup, an open-source installation builder for Windows applications by Jordan Russell and Martijn Laan, first released in 1997.\r\n- Comes in 64-bit and 32-bit editions; both can build 32-bit or 64-bit installers.\r\n- Copyrighted software; see `LICENSE.TXT` for distribution restrictions. Commercial users are requested to purchase a commercial license.\r\n\r\n## Project Architecture\r\nDelphi projects under `Projects/`:\r\n\r\n| Project | Output | Role |\r\n|---------|--------|------|\r\n| `ISIDE` | EXE | GUI compiler front-end (IDE), thin shell around ISCmplr.dll |\r\n| `ISCC` | EXE | CLI compiler front-end, thin shell around ISCmplr.dll |\r\n| `ISCmplr` | DLL | Actual compiler engine; entry point: `Compiler.SetupCompiler.pas` |\r\n| `ISPP` | DLL | Preprocessor |\r\n| `Setup` | EXE | Installer runtime; entry point: `Setup.MainFunc.pas` |\r\n| `SetupCustomStyle` | EXE | Installer runtime with VCL Styles support |\r\n| `SetupLdr` | EXE | Self-extracting loader that decompresses and launches Setup |\r\n| `ISSigTool` | EXE | Signs and verifies files using custom signatures |\r\n| `ISTestTool` | EXE | Internal utility that runs unit tests; invoked by build.bat and build-ce.bat |\r\n\r\nUnder `ISHelp/ISHelpGen/`:\r\n\r\n| Project | Output | Role |\r\n|---------|--------|------|\r\n| `ISHelpGen` | EXE | Generates XML files for help and Pascal Script autocomplete |\r\n\r\n## Core System\r\n- Delphi codebase targeting Windows 7 and later via the Windows API. All projects build for x64 and x86.\r\n- Primary project-specific source lives in `Projects/Src/` using namespace prefixes: `Compiler.*`, `Compression.*`, `IDE.*`, `ISPP.*`, `Setup.*`, `SetupLdrAndSetup.*`, `Shared.*`. Projects also compile shared units from `Components/`, and `ISIDE` additionally consumes the generated `ISHelp\\isxclasses_wordlists_generated.pas`. New project-specific source files must follow the namespace convention and be placed in `Projects/Src/`.\r\n- `Shared.Struct.pas` defines cross-project record layouts, and `Shared.CompilerInt.Struct.pas` defines the compiler/front-end interface layout. Changing either requires reviewing every consumer and recompiling the relevant projects.\r\n- Other shared units live under `Components` and `Projects\\Src\\Shared.*.pas`.\r\n- `SetupLdrAndSetup.*` units are shared by SetupLdr, Setup, and SetupCustomStyle; changes must account for all three.\r\n- `SetupCustomStyle` uses the same sources as `Setup` plus `Vcl.Themes`/`Vcl.Styles` and `Setup.TaskDialogForm`.\r\n- Many UI units in `Projects/Src/` are paired with checked-in `.dfm` files; form changes often require coordinated `.pas` and `.dfm` edits.\r\n- Compression engines pull native code from `Projects\\Src\\Compression.*`.\r\n- Pascal Script integration sits in `Compiler.Script*.pas` and `Setup.Script*.pas`; changes must be mirrored on both compiler and setup sides.\r\n- Setup path redirection: `ApplyPathRedirRules` rewrites System32/SysWOW64/Sysnative and converts to super paths. Unless documented otherwise, functions should receive current-process-bit paths. Use `ApplyRedirToRunEntryPaths` for run entries and `ApplyRedirForRegistrationOperation` for registration/shared-count operations. Old-style FS redirection disabling is still used when running 64-bit system executables from a 32-bit Setup process.\r\n- Extended-length (super) paths (`\\\\?\\`) are used by Setup to avoid MAX_PATH issues and are produced by `ApplyPathRedirRules` unless `rfNormalPath` is used. Only pass super paths to APIs known to accept them; when in doubt (especially for shell APIs or user-facing strings), convert back to a normal path.\r\n\r\n## Build\r\n- Run `compile.bat x64` or `compile.bat x86`. Both output release binaries to `Files`.\r\n- Append a project name, such as `compile.bat x64 ISCC`, to compile only that project.\r\n- Compiler path is configured in `compilesettings.bat`.\r\n- `build.bat` orchestrates full release builds.\r\n- In a fresh worktree, run `issig.bat embed` before the first compile. This updates the tracked files `Components\\TrustFunc.AllowedPublicKeys.inc` and `def02.ispublickey`. Leave them in place.\r\n- If a release build binary under `Files\\` reports \"Signature file is not valid\", run `issig.bat embed`, then rerun the relevant compile command, usually `compile.bat x64`, and retry the failed command.\r\n\r\n## Code Conventions\r\n- `**/*.iss`: see `.claude/rules/iss.md`.\r\n- `**/*.pas`, `**/*.dpr`, `**/*.inc`: see `.claude/rules/pascal.md`.\r\n- `**/*Test.pas`, `**/*Test.iss`: see `.claude/rules/test.md`.\r\n- `Files/Languages/*.isl`, `Files/Languages/Unofficial/*.isl`: see `.claude/rules/isl.md`.\r\n- `Components/UniPs/**`: see `.claude/rules/unips.md`.\r\n- `Projects/Src/Compression.LZMACompressor/islzma/**`, `Projects/Src/Compression.LZMADecompressor/Lzma2Decode/**`: see `.claude/rules/islzma.md`.\r\n- Indentation: see `.claude/rules/indentation.md`.\r\n\r\n## Documentation Conventions\r\n- `whatsnew.htm`, `ISHelp/isetup.xml`, `ISHelp/ispp.xml`, `ISHelp/isx.xml`, `ISHelp/isxfunc.xml`, `ISHelp/isxclasses.header*`, `ISHelp/isxclasses.footer`: see `.claude/rules/docs.general.md`.\r\n- `ISHelp/isetup.xml`, `ISHelp/isx.xml`, `ISHelp/isxfunc.xml`, `ISHelp/isxclasses.header*`, `ISHelp/isxclasses.footer`, `ISHelp/ispp.xml`: see `.claude/rules/docs.ishelp.md`.\r\n- `ISHelp/isetup.xml`: see `.claude/rules/docs.ishelp.isetup.md`.\r\n- `ISHelp/isxfunc.xml`: see `.claude/rules/docs.ishelp.isxfunc.md`.\r\n- `ISHelp/ispp.xml`: see `.claude/rules/docs.ishelp.ispp.md`.\r\n- `whatsnew.htm`: see `.claude/rules/docs.whatsnew.md`.\r\n\r\n## Docs\r\n- `whatsnew.htm` contains the Revision History.\r\n- Help content lives under `ISHelp`:\r\n  - When editing `ISHelp\\*`, regenerate CHM/Web help: run `compile.bat x64 ISHelpGen` then `ISHelp\\compile.bat` and verify 0 errors. Don't skip; this regenerates `isxclasses_wordlists_generated.pas`, which is in Git.\r\n  - `isxfunc.xml` documents Pascal Script functions.\r\n  - `isxclasses.pas` documents Pascal Script classes, with `isxclasses.header`, `isxclasses.header2`, and `isxclasses.footer` as helpers. When a `uPSC_*.pas` registration changes for Inno Setup (`PS_MINIVCL` is defined, `FPC` and `CLX` are not), update `isxclasses.pas` to match and regenerate as above.\r\n  - `isx.xml` contains all other Pascal Script documentation.\r\n  - `ispp.xml` documents the ISPP preprocessor.\r\n  - `isetup.xml` contains the remaining documentation.\r\n  - `isetup.dtd`, `ispp.dtd`, `isxfunc.dtd`, `isxfunc.xsl`, and `ispp.xsl` are schema and XSL files consumed by `ISHelpGen`.\r\n  - Don't edit files generated by `ISHelpGen`: `ispp_generated.xml`, `isxclasses_generated.xml`, `isxclasses_wordlists_generated.pas`, `isxfunc_generated.xml`.\r\n- Don't use em dashes or en dashes; use periods or commas instead.\r\n- Don't use \"e.g.\"; use \"for example\" or \"such as\" instead.\r\n\r\n## Precompiled Binaries\r\n- `Files/` contains precompiled C/C++ DLLs (7-Zip, zlib, bzip2, LZMA, Scintilla) and `.issig` signature files.\r\n- Rebuild with `build-precomp.bat` (requires separate repository checkouts); refresh signatures separately with ISSigTool afterward.\r\n\r\n## Testing & Verification\r\n- After editing any `.pas`, `.dpr`, `.dproj`, or `.inc` file: run `compile.bat x64` and verify 0 errors.\r\n- Unit tests live in `*.Test.pas` files. No testing framework is used; tests raise an exception on failure.\r\n- To run tests, run `test.bat [x86|x64]` and verify 0 exit code. Omit the architecture to test both. This also compiles `ISTestTool` first.\r\n\r\n## Other information\r\n- When creating a new file: immediately `git add` it, but only if still untracked.\r\n- Otherwise treat Git as read-only.\r\n- A task is not complete until the relevant compilation succeeds with 0 errors.\r\n"},"files":{"AGENTS.md":"# Inno Setup AI Agent Guide\r\n\r\n## Introduction\r\n- Source code of Inno Setup, an open-source installation builder for Windows applications by Jordan Russell and Martijn Laan, first released in 1997.\r\n- Comes in 64-bit and 32-bit editions; both can build 32-bit or 64-bit installers.\r\n- Copyrighted software; see `LICENSE.TXT` for distribution restrictions. Commercial users are requested to purchase a commercial license.\r\n\r\n## Project Architecture\r\nDelphi projects under `Projects/`:\r\n\r\n| Project | Output | Role |\r\n|---------|--------|------|\r\n| `ISIDE` | EXE | GUI compiler front-end (IDE), thin shell around ISCmplr.dll |\r\n| `ISCC` | EXE | CLI compiler front-end, thin shell around ISCmplr.dll |\r\n| `ISCmplr` | DLL | Actual compiler engine; entry point: `Compiler.SetupCompiler.pas` |\r\n| `ISPP` | DLL | Preprocessor |\r\n| `Setup` | EXE | Installer runtime; entry point: `Setup.MainFunc.pas` |\r\n| `SetupCustomStyle` | EXE | Installer runtime with VCL Styles support |\r\n| `SetupLdr` | EXE | Self-extracting loader that decompresses and launches Setup |\r\n| `ISSigTool` | EXE | Signs and verifies files using custom signatures |\r\n| `ISTestTool` | EXE | Internal utility that runs unit tests; invoked by build.bat and build-ce.bat |\r\n\r\nUnder `ISHelp/ISHelpGen/`:\r\n\r\n| Project | Output | Role |\r\n|---------|--------|------|\r\n| `ISHelpGen` | EXE | Generates XML files for help and Pascal Script autocomplete |\r\n\r\n## Core System\r\n- Delphi codebase targeting Windows 7 and later via the Windows API. All projects build for x64 and x86.\r\n- Primary project-specific source lives in `Projects/Src/` using namespace prefixes: `Compiler.*`, `Compression.*`, `IDE.*`, `ISPP.*`, `Setup.*`, `SetupLdrAndSetup.*`, `Shared.*`. Projects also compile shared units from `Components/`, and `ISIDE` additionally consumes the generated `ISHelp\\isxclasses_wordlists_generated.pas`. New project-specific source files must follow the namespace convention and be placed in `Projects/Src/`.\r\n- `Shared.Struct.pas` defines cross-project record layouts, and `Shared.CompilerInt.Struct.pas` defines the compiler/front-end interface layout. Changing either requires reviewing every consumer and recompiling the relevant projects.\r\n- Other shared units live under `Components` and `Projects\\Src\\Shared.*.pas`.\r\n- `SetupLdrAndSetup.*` units are shared by SetupLdr, Setup, and SetupCustomStyle; changes must account for all three.\r\n- `SetupCustomStyle` uses the same sources as `Setup` plus `Vcl.Themes`/`Vcl.Styles` and `Setup.TaskDialogForm`.\r\n- Many UI units in `Projects/Src/` are paired with checked-in `.dfm` files; form changes often require coordinated `.pas` and `.dfm` edits.\r\n- Compression engines pull native code from `Projects\\Src\\Compression.*`.\r\n- Pascal Script integration sits in `Compiler.Script*.pas` and `Setup.Script*.pas`; changes must be mirrored on both compiler and setup sides.\r\n- Setup path redirection: `ApplyPathRedirRules` rewrites System32/SysWOW64/Sysnative and converts to super paths. Unless documented otherwise, functions should receive current-process-bit paths. Use `ApplyRedirToRunEntryPaths` for run entries and `ApplyRedirForRegistrationOperation` for registration/shared-count operations. Old-style FS redirection disabling is still used when running 64-bit system executables from a 32-bit Setup process.\r\n- Extended-length (super) paths (`\\\\?\\`) are used by Setup to avoid MAX_PATH issues and are produced by `ApplyPathRedirRules` unless `rfNormalPath` is used. Only pass super paths to APIs known to accept them; when in doubt (especially for shell APIs or user-facing strings), convert back to a normal path.\r\n\r\n## Build\r\n- Run `compile.bat x64` or `compile.bat x86`. Both output release binaries to `Files`.\r\n- Append a project name, such as `compile.bat x64 ISCC`, to compile only that project.\r\n- Compiler path is configured in `compilesettings.bat`.\r\n- `build.bat` orchestrates full release builds.\r\n- In a fresh worktree, run `issig.bat embed` before the first compile. This updates the tracked files `Components\\TrustFunc.AllowedPublicKeys.inc` and `def02.ispublickey`. Leave them in place.\r\n- If a release build binary under `Files\\` reports \"Signature file is not valid\", run `issig.bat embed`, then rerun the relevant compile command, usually `compile.bat x64`, and retry the failed command.\r\n\r\n## Code Conventions\r\n- `**/*.iss`: see `.claude/rules/iss.md`.\r\n- `**/*.pas`, `**/*.dpr`, `**/*.inc`: see `.claude/rules/pascal.md`.\r\n- `**/*Test.pas`, `**/*Test.iss`: see `.claude/rules/test.md`.\r\n- `Files/Languages/*.isl`, `Files/Languages/Unofficial/*.isl`: see `.claude/rules/isl.md`.\r\n- `Components/UniPs/**`: see `.claude/rules/unips.md`.\r\n- `Projects/Src/Compression.LZMACompressor/islzma/**`, `Projects/Src/Compression.LZMADecompressor/Lzma2Decode/**`: see `.claude/rules/islzma.md`.\r\n- Indentation: see `.claude/rules/indentation.md`.\r\n\r\n## Documentation Conventions\r\n- `whatsnew.htm`, `ISHelp/isetup.xml`, `ISHelp/ispp.xml`, `ISHelp/isx.xml`, `ISHelp/isxfunc.xml`, `ISHelp/isxclasses.header*`, `ISHelp/isxclasses.footer`: see `.claude/rules/docs.general.md`.\r\n- `ISHelp/isetup.xml`, `ISHelp/isx.xml`, `ISHelp/isxfunc.xml`, `ISHelp/isxclasses.header*`, `ISHelp/isxclasses.footer`, `ISHelp/ispp.xml`: see `.claude/rules/docs.ishelp.md`.\r\n- `ISHelp/isetup.xml`: see `.claude/rules/docs.ishelp.isetup.md`.\r\n- `ISHelp/isxfunc.xml`: see `.claude/rules/docs.ishelp.isxfunc.md`.\r\n- `ISHelp/ispp.xml`: see `.claude/rules/docs.ishelp.ispp.md`.\r\n- `whatsnew.htm`: see `.claude/rules/docs.whatsnew.md`.\r\n\r\n## Docs\r\n- `whatsnew.htm` contains the Revision History.\r\n- Help content lives under `ISHelp`:\r\n  - When editing `ISHelp\\*`, regenerate CHM/Web help: run `compile.bat x64 ISHelpGen` then `ISHelp\\compile.bat` and verify 0 errors. Don't skip; this regenerates `isxclasses_wordlists_generated.pas`, which is in Git.\r\n  - `isxfunc.xml` documents Pascal Script functions.\r\n  - `isxclasses.pas` documents Pascal Script classes, with `isxclasses.header`, `isxclasses.header2`, and `isxclasses.footer` as helpers. When a `uPSC_*.pas` registration changes for Inno Setup (`PS_MINIVCL` is defined, `FPC` and `CLX` are not), update `isxclasses.pas` to match and regenerate as above.\r\n  - `isx.xml` contains all other Pascal Script documentation.\r\n  - `ispp.xml` documents the ISPP preprocessor.\r\n  - `isetup.xml` contains the remaining documentation.\r\n  - `isetup.dtd`, `ispp.dtd`, `isxfunc.dtd`, `isxfunc.xsl`, and `ispp.xsl` are schema and XSL files consumed by `ISHelpGen`.\r\n  - Don't edit files generated by `ISHelpGen`: `ispp_generated.xml`, `isxclasses_generated.xml`, `isxclasses_wordlists_generated.pas`, `isxfunc_generated.xml`.\r\n- Don't use em dashes or en dashes; use periods or commas instead.\r\n- Don't use \"e.g.\"; use \"for example\" or \"such as\" instead.\r\n\r\n## Precompiled Binaries\r\n- `Files/` contains precompiled C/C++ DLLs (7-Zip, zlib, bzip2, LZMA, Scintilla) and `.issig` signature files.\r\n- Rebuild with `build-precomp.bat` (requires separate repository checkouts); refresh signatures separately with ISSigTool afterward.\r\n\r\n## Testing & Verification\r\n- After editing any `.pas`, `.dpr`, `.dproj`, or `.inc` file: run `compile.bat x64` and verify 0 errors.\r\n- Unit tests live in `*.Test.pas` files. No testing framework is used; tests raise an exception on failure.\r\n- To run tests, run `test.bat [x86|x64]` and verify 0 exit code. Omit the architecture to test both. This also compiles `ISTestTool` first.\r\n\r\n## Other information\r\n- When creating a new file: immediately `git add` it, but only if still untracked.\r\n- Otherwise treat Git as read-only.\r\n- A task is not complete until the relevant compilation succeeds with 0 errors.\r\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# Inno Setup AI Agent Guide\r\n\r\n## Introduction\r\n- Source code of Inno Setup, an open-source installation builder for Windows applications by Jordan Russell and Martijn Laan, first released in 1997.\r\n- Comes in 64-bit and 32-bit editions; both can build 32-bit or 64-bit installers.\r\n- Copyrighted software; see `LICENSE.TXT` for distribution restrictions. Commercial users are requested to purchase a commercial license.\r\n\r\n## Project Architecture\r\nDelphi projects under `Projects/`:\r\n\r\n| Project | Output | Role |\r\n|---------|--------|------|\r\n| `ISIDE` | EXE | GUI compiler front-end (IDE), thin shell around ISCmplr.dll |\r\n| `ISCC` | EXE | CLI compiler front-end, thin shell around ISCmplr.dll |\r\n| `ISCmplr` | DLL | Actual compiler engine; entry point: `Compiler.SetupCompiler.pas` |\r\n| `ISPP` | DLL | Preprocessor |\r\n| `Setup` | EXE | Installer runtime; entry point: `Setup.MainFunc.pas` |\r\n| `SetupCustomStyle` | EXE | Installer runtime with VCL Styles support |\r\n| `SetupLdr` | EXE | Self-extracting loader that decompresses and launches Setup |\r\n| `ISSigTool` | EXE | Signs and verifies files using custom signatures |\r\n| `ISTestTool` | EXE | Internal utility that runs unit tests; invoked by build.bat and build-ce.bat |\r\n\r\nUnder `ISHelp/ISHelpGen/`:\r\n\r\n| Project | Output | Role |\r\n|---------|--------|------|\r\n| `ISHelpGen` | EXE | Generates XML files for help and Pascal Script autocomplete |\r\n\r\n## Core System\r\n- Delphi codebase targeting Windows 7 and later via the Windows API. All projects build for x64 and x86.\r\n- Primary project-specific source lives in `Projects/Src/` using namespace prefixes: `Compiler.*`, `Compression.*`, `IDE.*`, `ISPP.*`, `Setup.*`, `SetupLdrAndSetup.*`, `Shared.*`. Projects also compile shared units from `Components/`, and `ISIDE` additionally consumes the generated `ISHelp\\isxclasses_wordlists_generated.pas`. New project-specific source files must follow the namespace convention and be placed in `Projects/Src/`.\r\n- `Shared.Struct.pas` defines cross-project record layouts, and `Shared.CompilerInt.Struct.pas` defines the compiler/front-end interface layout. Changing either requires reviewing every consumer and recompiling the relevant projects.\r\n- Other shared units live under `Components` and `Projects\\Src\\Shared.*.pas`.\r\n- `SetupLdrAndSetup.*` units are shared by SetupLdr, Setup, and SetupCustomStyle; changes must account for all three.\r\n- `SetupCustomStyle` uses the same sources as `Setup` plus `Vcl.Themes`/`Vcl.Styles` and `Setup.TaskDialogForm`.\r\n- Many UI units in `Projects/Src/` are paired with checked-in `.dfm` files; form changes often require coordinated `.pas` and `.dfm` edits.\r\n- Compression engines pull native code from `Projects\\Src\\Compression.*`.\r\n- Pascal Script integration sits in `Compiler.Script*.pas` and `Setup.Script*.pas`; changes must be mirrored on both compiler and setup sides.\r\n- Setup path redirection: `ApplyPathRedirRules` rewrites System32/SysWOW64/Sysnative and converts to super paths. Unless documented otherwise, functions should receive current-process-bit paths. Use `ApplyRedirToRunEntryPaths` for run entries and `ApplyRedirForRegistrationOperation` for registration/shared-count operations. Old-style FS redirection disabling is still used when running 64-bit system executables from a 32-bit Setup process.\r\n- Extended-length (super) paths (`\\\\?\\`) are used by Setup to avoid MAX_PATH issues and are produced by `ApplyPathRedirRules` unless `rfNormalPath` is used. Only pass super paths to APIs known to accept them; when in doubt (especially for shell APIs or user-facing strings), convert back to a normal path.\r\n\r\n## Build\r\n- Run `compile.bat x64` or `compile.bat x86`. Both output release binaries to `Files`.\r\n- Append a project name, such as `compile.bat x64 ISCC`, to compile only that project.\r\n- Compiler path is configured in `compilesettings.bat`.\r\n- `build.bat` orchestrates full release builds.\r\n- In a fresh worktree, run `issig.bat embed` before the first compile. This updates the tracked files `Components\\TrustFunc.AllowedPublicKeys.inc` and `def02.ispublickey`. Leave them in place.\r\n- If a release build binary under `Files\\` reports \"Signature file is not valid\", run `issig.bat embed`, then rerun the relevant compile command, usually `compile.bat x64`, and retry the failed command.\r\n\r\n## Code Conventions\r\n- `**/*.iss`: see `.claude/rules/iss.md`.\r\n- `**/*.pas`, `**/*.dpr`, `**/*.inc`: see `.claude/rules/pascal.md`.\r\n- `**/*Test.pas`, `**/*Test.iss`: see `.claude/rules/test.md`.\r\n- `Files/Languages/*.isl`, `Files/Languages/Unofficial/*.isl`: see `.claude/rules/isl.md`.\r\n- `Components/UniPs/**`: see `.claude/rules/unips.md`.\r\n- `Projects/Src/Compression.LZMACompressor/islzma/**`, `Projects/Src/Compression.LZMADecompressor/Lzma2Decode/**`: see `.claude/rules/islzma.md`.\r\n- Indentation: see `.claude/rules/indentation.md`.\r\n\r\n## Documentation Conventions\r\n- `whatsnew.htm`, `ISHelp/isetup.xml`, `ISHelp/ispp.xml`, `ISHelp/isx.xml`, `ISHelp/isxfunc.xml`, `ISHelp/isxclasses.header*`, `ISHelp/isxclasses.footer`: see `.claude/rules/docs.general.md`.\r\n- `ISHelp/isetup.xml`, `ISHelp/isx.xml`, `ISHelp/isxfunc.xml`, `ISHelp/isxclasses.header*`, `ISHelp/isxclasses.footer`, `ISHelp/ispp.xml`: see `.claude/rules/docs.ishelp.md`.\r\n- `ISHelp/isetup.xml`: see `.claude/rules/docs.ishelp.isetup.md`.\r\n- `ISHelp/isxfunc.xml`: see `.claude/rules/docs.ishelp.isxfunc.md`.\r\n- `ISHelp/ispp.xml`: see `.claude/rules/docs.ishelp.ispp.md`.\r\n- `whatsnew.htm`: see `.claude/rules/docs.whatsnew.md`.\r\n\r\n## Docs\r\n- `whatsnew.htm` contains the Revision History.\r\n- Help content lives under `ISHelp`:\r\n  - When editing `ISHelp\\*`, regenerate CHM/Web help: run `compile.bat x64 ISHelpGen` then `ISHelp\\compile.bat` and verify 0 errors. Don't skip; this regenerates `isxclasses_wordlists_generated.pas`, which is in Git.\r\n  - `isxfunc.xml` documents Pascal Script functions.\r\n  - `isxclasses.pas` documents Pascal Script classes, with `isxclasses.header`, `isxclasses.header2`, and `isxclasses.footer` as helpers. When a `uPSC_*.pas` registration changes for Inno Setup (`PS_MINIVCL` is defined, `FPC` and `CLX` are not), update `isxclasses.pas` to match and regenerate as above.\r\n  - `isx.xml` contains all other Pascal Script documentation.\r\n  - `ispp.xml` documents the ISPP preprocessor.\r\n  - `isetup.xml` contains the remaining documentation.\r\n  - `isetup.dtd`, `ispp.dtd`, `isxfunc.dtd`, `isxfunc.xsl`, and `ispp.xsl` are schema and XSL files consumed by `ISHelpGen`.\r\n  - Don't edit files generated by `ISHelpGen`: `ispp_generated.xml`, `isxclasses_generated.xml`, `isxclasses_wordlists_generated.pas`, `isxfunc_generated.xml`.\r\n- Don't use em dashes or en dashes; use periods or commas instead.\r\n- Don't use \"e.g.\"; use \"for example\" or \"such as\" instead.\r\n\r\n## Precompiled Binaries\r\n- `Files/` contains precompiled C/C++ DLLs (7-Zip, zlib, bzip2, LZMA, Scintilla) and `.issig` signature files.\r\n- Rebuild with `build-precomp.bat` (requires separate repository checkouts); refresh signatures separately with ISSigTool afterward.\r\n\r\n## Testing & Verification\r\n- After editing any `.pas`, `.dpr`, `.dproj`, or `.inc` file: run `compile.bat x64` and verify 0 errors.\r\n- Unit tests live in `*.Test.pas` files. No testing framework is used; tests raise an exception on failure.\r\n- To run tests, run `test.bat [x86|x64]` and verify 0 exit code. Omit the architecture to test both. This also compiles `ISTestTool` first.\r\n\r\n## Other information\r\n- When creating a new file: immediately `git add` it, but only if still untracked.\r\n- Otherwise treat Git as read-only.\r\n- A task is not complete until the relevant compilation succeeds with 0 errors.\r\n","category":"root","tokens":1916}]}