From a00ab1cae6cf665d45d6ed94dd404cf2a5a4b722 Mon Sep 17 00:00:00 2001 From: Artalus Date: Fri, 22 May 2026 19:02:48 +0400 Subject: [PATCH 1/3] docs: 2column layout for images on landing page --- docs/img/demo-cli.png | Bin 0 -> 17638 bytes docs/index.md | 13 +++++++++- docs/stylesheets/extra.css | 48 +++++++++++++++++++++++++++++++++++++ zensical.toml | 3 +++ 4 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 docs/img/demo-cli.png create mode 100644 docs/stylesheets/extra.css diff --git a/docs/img/demo-cli.png b/docs/img/demo-cli.png new file mode 100644 index 0000000000000000000000000000000000000000..e62b91aa930601376cb2ede6f7df7eac7c6cdfe2 GIT binary patch literal 17638 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 gs0lo%1P%_YmdKI;Vst0JlM_)Bpeg literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index bf47a06..f294cbc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,7 +5,8 @@ hide: title: Home --- -![](/vintest/img/demo.png){ align=right width=400 } +
+
# VinTest @@ -32,3 +33,13 @@ VinTest is split into three "layers": ______________________________________________________________________ → [Quickstart](quickstart/getting-started.md) — add VinTest to an existing mod project step by step. + +
+
+ +![](/vintest/img/demo.png) + +![](/vintest/img/demo-cli.png) + +
+
diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css new file mode 100644 index 0000000..2860dc6 --- /dev/null +++ b/docs/stylesheets/extra.css @@ -0,0 +1,48 @@ +/* Wide: text left (2/3), images stacked on right (1/3) */ +.home-columns { + display: flex; + flex-direction: row; + gap: 2rem; + align-items: flex-start; +} + +.home-columns .left { + flex: 2; +} + +.home-columns .right { + flex: 1; +} + +.home-columns .right img { + width: 100%; + display: block; +} + +/* Narrow: images side-by-side on top, then text below */ +@media (max-width: 960px) { + .home-columns { + flex-direction: column; + } + + .home-columns .right { + order: -1; + display: flex; + flex-direction: row; + gap: 1rem; + } + + .home-columns .right p { + flex: 1; + margin: 0; + } + + .home-columns .right img { + width: 100%; + } +} + +/* hide tag/release icon from site header as it makes no sense for now */ +.md-source__fact--version { + display: none; +} diff --git a/zensical.toml b/zensical.toml index 7983e68..39a6d8b 100644 --- a/zensical.toml +++ b/zensical.toml @@ -36,6 +36,9 @@ nav = [ ] }, ] }, ] + +extra_css = ["stylesheets/extra.css"] + [project.theme] variant = "classic" From c1a78558347a6c9dd3e7def065b591fd00578eb6 Mon Sep 17 00:00:00 2001 From: Artalus Date: Fri, 22 May 2026 19:09:32 +0400 Subject: [PATCH 2/3] docs: separate readmes for nuget --- README.md | 6 +++++- VinTest.Cake/README.md | 7 +++++++ VinTest.Cake/VinTest.Cake.csproj | 2 +- VinTest/README.md | 7 +++++++ VinTest/VinTest.csproj | 2 +- 5 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 VinTest.Cake/README.md create mode 100644 VinTest/README.md diff --git a/README.md b/README.md index c77a2fa..cf5b2d3 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,11 @@ # VinTest — in-game testing framework for Vintage Story mods -| ![Demo](/docs/img/demo.png) | Make a mod for your mod that will test your mod while you mod it. | +| ![Demo: code](/docs/img/demo.png) | [Demo: CLI](/docs/img/demo-cli.png) | | --- | --- | +|Make a mod for your mod that will test your mod while you mod it.|| + +[![NuGet](https://img.shields.io/nuget/v/VinTest.svg)](https://www.nuget.org/packages/VinTest) +[![NuGet](https://img.shields.io/nuget/v/VinTest.Cake.svg)](https://www.nuget.org/packages/VinTest.Cake) **Documentation: https://artalus.github.io/vintest/** diff --git a/VinTest.Cake/README.md b/VinTest.Cake/README.md new file mode 100644 index 0000000..cc6657e --- /dev/null +++ b/VinTest.Cake/README.md @@ -0,0 +1,7 @@ +# [Cake](https://cakebuild.net/) integration for [`VinTest`](https://github.com/Artalus/vintest/) + +| ![Demo: code](https://github.com/Artalus/vintest/blob/main/docs/img/demo.png?raw=true) | [Demo: CLI](https://github.com/Artalus/vintest/blob/main/docs/img/demo-cli.png) | +| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| Make a mod for your mod that will test your mod while you mod it. | | + +**Documentation: https://artalus.github.io/vintest/** diff --git a/VinTest.Cake/VinTest.Cake.csproj b/VinTest.Cake/VinTest.Cake.csproj index c71b092..7a54519 100644 --- a/VinTest.Cake/VinTest.Cake.csproj +++ b/VinTest.Cake/VinTest.Cake.csproj @@ -15,7 +15,7 @@ - + diff --git a/VinTest/README.md b/VinTest/README.md new file mode 100644 index 0000000..f5a5984 --- /dev/null +++ b/VinTest/README.md @@ -0,0 +1,7 @@ +# Core package of [`VinTest`](https://github.com/Artalus/vintest/) + +| ![Demo: code](https://github.com/Artalus/vintest/blob/main/docs/img/demo.png?raw=true) | [Demo: CLI](https://github.com/Artalus/vintest/blob/main/docs/img/demo-cli.png) | +| -------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| Make a mod for your mod that will test your mod while you mod it. | | + +**Documentation: https://artalus.github.io/vintest/** diff --git a/VinTest/VinTest.csproj b/VinTest/VinTest.csproj index 8fe83b2..0827caa 100644 --- a/VinTest/VinTest.csproj +++ b/VinTest/VinTest.csproj @@ -15,7 +15,7 @@ - + From cffdc691caca3e1f7c4a74c48eaa2f046aa8e73a Mon Sep 17 00:00:00 2001 From: Artalus Date: Fri, 22 May 2026 19:04:41 +0400 Subject: [PATCH 3/3] docs: rename file to avoid conflicts with VS/Mod.cs in debugger --- example/MyMod/{Mod.cs => MyMod.cs} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename example/MyMod/{Mod.cs => MyMod.cs} (88%) diff --git a/example/MyMod/Mod.cs b/example/MyMod/MyMod.cs similarity index 88% rename from example/MyMod/Mod.cs rename to example/MyMod/MyMod.cs index 32b03a7..0535164 100644 --- a/example/MyMod/Mod.cs +++ b/example/MyMod/MyMod.cs @@ -12,7 +12,7 @@ public void TurnIntoDrifter(IServerPlayer player) { try { - if (PositionIsNearbyEnough(player.Entity.Pos.AsBlockPos, new BlockPos(0, 0, 0))) + if (!PositionIsNearbyEnough(player.Entity.Pos.AsBlockPos, new BlockPos(0, 0, 0))) DoMagic(); } catch (Exception ex)