From 7203f0001c70b5c5c94d8e9c409e4c46348ba3c0 Mon Sep 17 00:00:00 2001 From: stephen Date: Wed, 24 Jun 2026 13:41:04 +1000 Subject: [PATCH] start refactoring --- doc/Notes.md | 4 +++- doc/Notes.pdf | Bin 124109 -> 125662 bytes 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Notes.md b/doc/Notes.md index 80e074e..3614dfd 100644 --- a/doc/Notes.md +++ b/doc/Notes.md @@ -13,4 +13,6 @@ git switch -c refactor/simplified-schema-modules # Proposed new structure -![Proposed new structure](./images/image-03.png) \ No newline at end of file +![Proposed new structure](./images/image-03.png) + +# Starting refactoring \ No newline at end of file diff --git a/doc/Notes.pdf b/doc/Notes.pdf index 93948b34cd267aa0cd94de5af41110d4b60092ac..c179768fe7a86b76676b5c9ba1f96a778bde9287 100644 GIT binary patch delta 12735 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 suSL4gdfE delta 11364 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