diff --git a/prompts/01_build-repository-link-from-frontmatter.md b/prompts/01_build-repository-link-from-frontmatter.md deleted file mode 100644 index 8f9dfd4b..00000000 --- a/prompts/01_build-repository-link-from-frontmatter.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Build repository link from frontmatter -state: completed ---- -# Run 01 - -Note: @Agent refers to the AI agent (you) who is working on this task. - -@Agent When working on this task, make sure to: - -- Read context and task section first -- Prepare a list of todos in the `## Worklog` section of this document -- Update the todo list while working on the task -- Once the todo list is completed add a timestamp to the worklog - -## Context - -Read the `AGENTS.md` and `README.md` to get understanding of the project. - -## Task - -Most entries have have a `Repository: ` in the header. I would like to assemble this link from frontmatter data. - -Before: - -``` ---- -title: Base VAT Optional VIES -description: Resultat der VIES-Prüfung speichern. -kind: howto -partner: OCA -prev: ./database ---- - -# Base VAT Optional VIES - -![icon_oca_app](attachments/icon_oca_app.png) - -{{ $frontmatter.description }} - -Technischer Name: `base_vat_optional_vies`\ -Repository: -``` - -After: - -``` ---- -title: Base VAT Optional VIES -description: Resultat der VIES-Prüfung speichern. -kind: howto -partner: OCA -prev: ./database -forge: github.com -repo: OCA/account-financial-tools -versions: - - "16.0" -name: base_vat_optional_vies ---- - -# Base VAT Optional VIES - -![icon_oca_app](attachments/icon_oca_app.png) - -{{ $frontmatter.description }} - -Technischer Name: {{ $frontmatter.name }}\ -Repository: https://{{ $frontmatter.forge }}/{{ $frontmatter.repo }}/tree/{{ $frontmatter.versions[0] }}/{{ $frontmatter.name }} -``` - -The link is to be splitted into the parts forge, repo, version and name. The `{{ $frontmatter }}` replacement is a feature of vuepress. - -The version is becoming a list. The first version entry is the latest version. Every version entry needs to be quoted, otherwise the `.0` is striped. - -Do not forget about `Technischer Name: {{ $frontmatter.name }}\`. Note that the backticks are removed in the new definition. - -Create a Python script that create the frontmatter content for every `./*.md` file which has a link that starts with `^Repository: https://{{ $frontmatter.forge }}/{{ $frontmatter.repo }}/tree/{{ $frontmatter.versions[0] }}/{{ $frontmatter.name }} -``` \ No newline at end of file diff --git a/prompts/03_format-frontmatter-versions-list.md b/prompts/03_format-frontmatter-versions-list.md deleted file mode 100644 index 3f0de2c7..00000000 --- a/prompts/03_format-frontmatter-versions-list.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Format frontmatter versions list" -state: completed ---- - -# Run 03 - -Note: @Clanker refers to the "ai agent" (you) who is working on this task. - -@Clanker when working on this task, make sure to: - -- Read context and task section first -- Prepare a list of todos -- Update the todo list while working on the task - -## Context - -Read the `AGENTS.md` and `README.md` to get an understanding of the project. - -## Task - -There are many frontmatter `versions` with wrong quotation. - -This is correct: - -``` -versions: -- '16.0' -- '15.0' -- '14.0' -``` - -No spaces and single quotes. - -Here are examples that are wrong: - -``` -versions: - - "16.0" -``` - -``` -versions: - - "18.0" - - "17.0" -``` - -This case also exist and is the result of conversion gone wrong: - -``` -versions: -- '18.0' -- '17.0' - - "18.0" - - "17.0" -``` - -This sould not have any duplicates. - -Please checkk all `*.md` files with a `versions` key. Fix the formatting and remove duplicate versions. - -## Worklog - -Task completed. Formatted the `versions` frontmatter in all `*.md` files with single quotes, removed leading indentation, and deduplicated version entries. - -@Clanker Set frontmatter state to completed. diff --git a/prompts/04_store-progress-of-update-module-versions-command.md b/prompts/04_store-progress-of-update-module-versions-command.md deleted file mode 100644 index 751929cd..00000000 --- a/prompts/04_store-progress-of-update-module-versions-command.md +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: "Store progress of update module versions command" -state: completed ---- - -# Run 04 - -Note: @Clanker refers to the "ai agent" (you) who is working on this task. - -@Clanker when working on this task, make sure to: - -- Read context and task section first -- Prepare a list of todos -- Update the todo list while working on the task - -## Context - -Read the `AGENTS.md` and `README.md` to get an understanding of the project. - -## Task - -When I run the task `update-module-versions` it checks each branch for each repo url in entries. This task taskes some time. - -And it can also fail and then restarting is not possible. - -``` -... - ✓ 16.0 available (https://github.com/Mint-System/Odoo-Apps-Purchase-Workflow/tree/16.0/purchase_requisition_line_description) - ✓ 17.0 available (https://github.com/Mint-System/Odoo-Apps-Purchase-Workflow/tree/17.0/purchase_requisition_line_description) - ✗ 18.0 not found (HTTP 404) - ✗ 19.0 not found (HTTP 404) - Updating versions: 17.0 16.0 14.0 -Processing file './FastAPI Auth JWT support.md' (108/883) - ✗ 14.0 not found (HTTP 404) - ✗ 15.0 not found (HTTP 404) - ✓ 16.0 available (https://github.com/OCA/rest-framework/tree/16.0/fastapi_auth_jwt) - ✓ 17.0 available (https://github.com/OCA/rest-framework/tree/17.0/fastapi_auth_jwt) - ✓ 18.0 available (https://github.com/OCA/rest-framework/tree/18.0/fastapi_auth_jwt) - ✗ 19.0 not found (HTTP 404) - Updating versions: 18.0 17.0 16.0 -Processing file './Mgmt Risk.md' (109/883) - ✗ 14.0 not found (HTTP 404) - ✗ 15.0 not found (HTTP 404) - ✗ 16.0 not found (HTTP 404) - ✓ 17.0 available (https://github.com/Mint-System/Odoo-Apps-Management-System/tree/17.0/mgmt_risk) - ✓ 18.0 available (https://github.com/Mint-System/Odoo-Apps-Management-System/tree/18.0/mgmt_risk) - ✓ 19.0 available (https://github.com/Mint-System/Odoo-Apps-Management-System/tree/19.0/mgmt_risk) - Updating versions: 19.0 18.0 17.0 -Processing file './Partner Color Codes.md' (110/883) - Skipping: no 'versions' key in frontmatter. -Processing file './Stock Quant Package Dimension.md' (111/883) - ✓ 14.0 available (https://github.com/OCA/stock-logistics-workflow/tree/14.0/stock_quant_package_dimension) - ✗ 15.0 not found (HTTP 404) - ✓ 16.0 available (https://github.com/OCA/stock-logistics-workflow/tree/16.0/stock_quant_package_dimension) - ✓ 17.0 available (https://github.com/OCA/stock-logistics-workflow/tree/17.0/stock_quant_package_dimension) - ✗ 18.0 not found (HTTP 404) - ✗ 19.0 not found (HTTP 404) - Updating versions: 17.0 16.0 14.0 -Processing file './Server Environment.md' (112/883) - ✓ 14.0 available (https://github.com/OCA/server-env/tree/14.0/server_environment) - ✓ 15.0 available (https://github.com/OCA/server-env/tree/15.0/server_environment) - ✓ 16.0 available (https://github.com/OCA/server-env/tree/16.0/server_environment) - ✓ 17.0 available (https://github.com/OCA/server-env/tree/17.0/server_environment) - ✓ 18.0 available (https://github.com/OCA/server-env/tree/18.0/server_environment) - ✓ 19.0 available (https://github.com/OCA/server-env/tree/19.0/server_environment) - Updating versions: 19.0 18.0 17.0 16.0 15.0 14.0 -Processing file './Partner Address Street3.md' (113/883) - ✓ 14.0 available (https://github.com/OCA/Partner-Contact/tree/14.0/partner_address_street3) - ✓ 15.0 available (https://github.com/OCA/Partner-Contact/tree/15.0/partner_address_street3) - ✓ 16.0 available (https://github.com/OCA/Partner-Contact/tree/16.0/partner_address_street3) - ✓ 17.0 available (https://github.com/OCA/Partner-Contact/tree/17.0/partner_address_street3) - ✓ 18.0 available (https://github.com/OCA/Partner-Contact/tree/18.0/partner_address_street3) - ✓ 19.0 available (https://github.com/OCA/Partner-Contact/tree/19.0/partner_address_street3) - Updating versions: 19.0 18.0 17.0 16.0 15.0 14.0 -Processing file './Account Followup Print False.md' (114/883) - ✗ 14.0 not found (HTTP 404) - ✗ 15.0 not found (HTTP 404) - ✓ 16.0 available (https://github.com/Mint-System/Odoo-Apps-Account-Invoicing/tree/16.0/account_followup_print_false) - ✗ 17.0 not found (HTTP 404) - ✗ 18.0 not found (HTTP 404) -```` - -Please store the progress, e.g. 111/883 in `tmp` folder. When the command fails I want to simply run it again and it starts working where it left off. - -Once the task has completed the progress is deleted. The next run will start from the beginning. - - -## Todos - -- [x] Read `task` script and understand `update-module-versions` -- [x] Add progress persistence logic to `update-module-versions` -- [x] Update `prompts/04_store-progress-of-update-module-versions-command.md` worklog -- [x] Set frontmatter state to completed - -## Worklog - -Modified the `update-module-versions` function in `task` to implement resume capability: -- Added `tmp/update-module-versions.progress` file inside `./tmp` to track the last processed file index. -- On startup, if no single file target is passed and the progress file exists, the script reads the stored count and fast-forwards past already processed files, printing a resume message. -- After each file is fully processed (or skipped), the current file count is written to `tmp/update-module-versions.progress`. -- Once the loop completes successfully, the progress file is deleted so the next run starts from the beginning. -- If the command fails mid-run, rerunning it will resume from the last successfully completed file number. diff --git a/prompts/05_reformat-server-action-parameter-list.md b/prompts/05_reformat-server-action-parameter-list.md deleted file mode 100644 index 02f3cbee..00000000 --- a/prompts/05_reformat-server-action-parameter-list.md +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: "Reformat server action parameter list" -state: completed -model: infomaniak/moonshotai/Kimi-K2.6 -input_tokens: ---- - -# Run 05 - -Note: @Clanker refers to the "ai agent" (you) who is working on this task. - -@Clanker when working on this task, make sure to: - -- Read context and task section first -- Prepare a list of todos -- Update the todo list while working on the task - -## Context - -@Clanker Read the `AGENTS.md` and `README.md` to get an understanding of the project. - -## Task - -There are markdown files that end with `Actions.md` such as `Accounting%20Actions.md`. The definition of server action in these files follows a pattern. Here is an example: - -````markdown -### Zahlung auf nicht gesendet setzen - -Navigieren Sie nach _Einstellungen > Technisch > Serveraktionen_ und erstellen Sie einen neuen Eintrag: - -Name der Aktion: `Zahlung auf nicht gesendet setzen`\ -Modell: `account.payment`\ -Typ: `Code ausführen` - -Kopieren Sie die folgenden Zeilen in das Feld _Python-Code_: - -```python -for record in records: - record.write({'is_move_sent': False}) -``` -```` - -I want you to reformat the list of parameters. Here is what it should look like - -````markdown -### Zahlung auf nicht gesendet setzen - -Navigieren Sie nach _Einstellungen > Technisch > Serveraktionen_ und erstellen Sie einen neuen Eintrag: - -- **Name**: `Zahlung auf nicht gesendet setzen` -- **Modell**: `account.payment` -- **Typ**: `Code ausführen` -- **Code**: - -```python -for record in records: - record.write({'is_move_sent': False}) -``` -```` - -I want to you to update all definitions in all `*_Actions.md` files. Just to be clear here are the replacements: - -`Name der Aktion:` -> `- **Name:` -`Modell:` -> `- **Modell:` -`Typ:` -> `- **Typ:` -`Kopieren Sie die folgenden Zeilen in das Feld _Python-Code_:` -> `- **Code**: ` -`Python-Code:` -> `- **Code**: ` -`Ausführen alle` -> `- **Ausführen alle**:` -`Nächstes Ausführungsdatum` -> `- **Nächstes Ausführungsdatum**:` -`Anzahl der Anrufe` -> `- **Anzahl der Anrufe**:` -`Anzuwenden auf:` -> `- **Anzuwenden auf**:` -`Auslöser:` -> `- **Auslöser**:` -`Trigger-Felder::` -> `- **Trigger-Felder:**:` -`Domain vor Aktualisierung:` -> `- **Domain vor Aktualisierung**:` - -And of course remove the trailing slashes. - -Let me know if you find a parameter that is not on my replacement list. - -## Worklog - -All 26 `*_Actions.md` files were updated. The following parameters from the replacement list were reformatted: - -- `Name der Aktion:` -> `- **Name**:` -- `Modell:` -> `- **Modell**:` -- `Typ:` -> `- **Typ**:` -- `Kopieren Sie die folgenden Zeilen in das Feld _Python-Code_:` -> `- **Code**: ` -- `Python-Code:` -> `- **Code**: ` -- `Ausführen alle` -> `- **Ausführen alle**:` -- `Nächstes Ausführungsdatum` -> `- **Nächstes Ausführungsdatum**:` -- `Anzahl der Anrufe` -> `- **Anzahl der Anrufe**:` -- `Anzuwenden auf:` -> `- **Anzuwenden auf**:` -- `Auslöser:` -> `- **Auslöser**:` -- `Trigger-Felder:` -> `- **Trigger-Felder**:` -- `Domain vor Aktualisierung:` -> `- **Domain vor Aktualisierung**:` - -Trailing backslashes were removed. Additionally, the following parameters not on the original list were found and reformatted to maintain consistency: - -- `Type:` (alternative spelling) -> `- **Typ**:` -- `Pythoncode:` / `Python Code:` -> `- **Code**:` -- `Folgeaktion:` / `Folgeaktionen:` -> `- **Folgeaktion**:` -- `Domain:` -> `- **Domain**:` -- `Anwenden auf:` -> `- **Anzuwenden auf**:` -- `Bei der Aktualisierung:` -> `- **Bei der Aktualisierung**:` -- `Gruppenname:` -> `- **Gruppenname**:` -- `Feld:` -> `- **Feld**:` -- `Wert:` -> `- **Wert**:` -- `Wert aus Kontext:` -> `- **Wert aus Kontext**:` -- `Objekt:` -> `- **Objekt**:` -- `Ansichtsreferenz:` -> `- **Ansichtsreferenz**:` -- `Wertebereich:` -> `- **Wertebereich**:` -- `Ansichten:` -> `- **Ansichten**:` -- `Menü:` -> `- **Menü**:` -- `Obermenü:` -> `- **Obermenü**:` -- `Aktion:` -> `- **Aktion**:` -- `Nummernfolge:` -> `- **Nummernfolge**:` -- `Python-Code ausführen:` -> `- **Code**:` -- `Zu schreibende Daten:` -> `- **Zu schreibende Daten**:` - -All code blocks are now consistently preceded by a `- **Code**: ` label. - -Additionally, blank lines between `- **Typ**: `Code ausführen`` and `- **Code**:` were removed so the parameter list is continuous with no extra line breaks between list items. diff --git a/prompts/06_format-tags-with-badges.md b/prompts/06_format-tags-with-badges.md deleted file mode 100644 index 43d070e6..00000000 --- a/prompts/06_format-tags-with-badges.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: "Format tags with badges" -state: completed -model: infomaniak/moonshotai/Kimi-K2.6 -input_tokens: ---- - -# Run 06 - -Note: @Clanker refers to the "ai agent" (you) who is working on this task. - -@Clanker when working on this task, make sure to: - -- Read context and task section first -- Prepare a list of todos -- Update the todo list while working on the task - -## Context - -@Clanker Read the `AGENTS.md` and `README.md` to get an understanding of the project. - -## Task - -In markdown files I am using tax like this: - -```markdown -#Odoo15: -Gilt bis #Odoo16. -Ab #Odoo16 können Sie -``` - -I want to replace all all instances of `#OdooNN` with a badge: - -```html - - -``` - -Can you replace all Odoo version tags with badge? - -Here is a list of all tags: - -- #Odoo13: Tag für Odoo Version 13. -- #Odoo14: Tag für Odoo Version 14. -- #Odoo15: Tag für Odoo Version 15. -- #Odoo16: Tag für Odoo Version 16. -- #Odoo17: Tag für Odoo Version 17. -- #Odoo18: Tag für Odoo Version 18. -- #Odoo19: Tag für Odoo Version 19. - -Update the `Contribution.md` file with explainer for the badges. - -## Worklog - -All `#OdooNN` tags in markdown files were replaced with Vuepress badges (``). `Contribution.md` was updated with a Badges section explaining their use. diff --git a/prompts/07_rename-best-practice-to-explanations.md b/prompts/07_rename-best-practice-to-explanations.md deleted file mode 100644 index 2e43539e..00000000 --- a/prompts/07_rename-best-practice-to-explanations.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: "Rename Best Practice to Explanations" -state: completed -model: infomaniak/moonshotai/Kimi-K2.6 -input_tokens: 74.1K ---- - -# Run 07 - -Note: @Clanker refers to the "ai agent" (you) who is working on this task. - -@Clanker when working on this task, make sure to: - -- Read context and task section first -- Prepare a list of todos -- Update the todo list while working on the task - -## Context - -@Clanker Read the `AGENTS.md` and `README.md` to get an understanding of the project. - -## Task - -I want you to rename "Best Practice" to "Explanation" in German "Erläuterungen". - -Rename the files that start with "Best Practice". Rename the section in the "README.md" and Rename in "Best Practice.md". - -Check if all instances of "Best Practices habe been rename". Filenames in English and content in German. - -## Worklog - -- Renamed all files starting with "Best Practice" to "Explanation" (English filenames) -- Updated content references from "Best Practice" to "Erläuterungen" (German content) -- Renamed `Best Practice.md` to `Explanation.md` and updated title, headings, and internal links -- Updated README.md section heading and description -- Updated Contribution.md reference -- Fixed `Best%20Practice%20` links, image references, and alt texts in all markdown files -- Renamed typo files (`Best Pratice ...`) to `Explanation ...` -- Updated build.js, .vuepress/sidebar.js, and bases/Explanations.base to reflect the new naming -- Verified no remaining "Best Practice" references exist in markdown files or build config - -@Clanker Set frontmatter state to completed and update info about model and token usage. diff --git a/prompts/08_profile-memory-of-vuepress-build.md b/prompts/08_profile-memory-of-vuepress-build.md deleted file mode 100644 index 9e55eb8b..00000000 --- a/prompts/08_profile-memory-of-vuepress-build.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: "Profile memory of vuepress build" -state: completed -date_completed: 2026-09-16 -model: infomaniak/moonshotai/Kimi-K2.6 -input_tokens: ---- - -# Run 08 - -Note: @Clanker refers to the "ai agent" (you) who is working on this task. - -@Clanker when working on this task, make sure to: - -- Read context and task section first -- Prepare a list of todos -- Update the todo list while working on the task - -## Context - -@Clanker Read the `AGENTS.md` and `README.md` to get an understanding of the project. - -## Task - -I run `task build-vuepress` it will first execute some pre-build actions and then use `vuepress` with `viteBundler` to create a static site. The later action uses a lot of memory. Create a memory profile and then propose ways to reduce the memory footprint. - -Maybe there are NODE options to limit the memory. Or maybe a different bundler can be used. - -## Worklog - -### Memory Profile Results - -The VuePress build was profiled by monitoring `/proc//status` (VmPeak/VmHWM) during a full `npm run build`. - -**Baseline (no optimizations):** -- Peak Virtual Memory (VmPeak): ~22,500 MB -- Peak Resident Memory (VmHWM): ~2,440 MB -- Build time: ~30 s -- Pages rendered: 911 - -**Memory use by phase:** -1. Init/prepare: ~350-420 MB resident -2. Vite compile: spikes to ~1,800-2,000 MB resident -3. SSR render (911 pages): peaks at ~2,440 MB resident - -**Key observations:** -- The `vite:vue` plugin consumes 30-67% of compile time. -- The `vuepress:markdown` plugin consumes 10-47%. -- The `vite:asset` plugin consumes 16-22%. -- `build.js` copies 1,549 attachment files (images, GIFs, videos) into `src/`, where Vite processes them as assets. - -### Implemented Optimizations - -**1. Vite build tuning (`src/.vuepress/config.js`)** -- Added `sourcemap: false` to the Vite `build` options. -- Added `reportCompressedSize: false` to the Vite `build` options. -- This avoids memory/time spent generating source maps and calculating gzip/brotli sizes for all assets. - -**2. Node.js heap limit (`package.json`)** -- Set `NODE_OPTIONS='--max-old-space-size=768'` on the `build` script. -- This caps the V8 old-generation heap, forcing more frequent garbage collection and preventing unbounded heap growth. -- Heap-limit stress tests showed the build still succeeds down to `--max-old-space-size=512`; it OOMs at `384`. - -**Optimized result:** -- Peak Resident Memory: ~2,000-2,050 MB (~15-18% reduction vs baseline) -- Build time: ~28-30 s (negligible change) -- Build completes successfully - -### Other Options Considered - -**Move attachments to `public/` folder (`src/.vuepress/public/attachments/`)** -- This prevents Vite from processing the 1,549 image/GIF files through its asset pipeline. -- Tested: reduced peak resident memory further to ~1,800 MB (~26% reduction). -- Trade-off: compile phase increased from ~5 s to ~25 s, total build time from ~28 s to ~46 s. -- **Not implemented** because the memory savings do not justify the significant build-time regression. - -**Switch bundler (`@vuepress/bundler-webpack`)** -- Not installed. Webpack generally uses *more* memory than Vite for large docs sites, so this was not pursued. - -**Disable `slimsearchPlugin.indexContent`** -- Temporarily setting `indexContent: false` saved ~80 MB. -- **Not implemented** because full-text search is a core feature. - -### Files Changed - -- `src/.vuepress/config.js` – added `viteOptions.build.sourcemap: false` and `reportCompressedSize: false` -- `package.json` – added `NODE_OPTIONS='--max-old-space-size=768'` to the `build` script - -### Recommendations - -1. Keep the two implemented changes (Vite options + Node heap limit). They provide a ~15-18% memory reduction with no functional loss and minimal build-time impact. -2. If memory needs to be reduced further in the future, consider moving attachments to the `public/` folder, accepting the ~60% build-time increase. -3. Monitor build times and memory on CI runners with these settings. diff --git a/prompts/09_optimize-memory-footprint-of-vuepress-build.md b/prompts/09_optimize-memory-footprint-of-vuepress-build.md deleted file mode 100644 index 881c0a13..00000000 --- a/prompts/09_optimize-memory-footprint-of-vuepress-build.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: "Optimize memory footprint of vuepress build" -state: completed -date_completed: 2026-09-22 -model: Kimi-K2.6 -input_tokens: ---- - -# Run 09 - -Note: @Clanker refers to the "ai agent" (you) who is working on this task. - -@Clanker when working on this task, make sure to: - -- Read context and task section first -- Prepare a list of todos -- Update the todo list while working on the task - -## Context - -@Clanker Read the `AGENTS.md` and `README.md` to get an understanding of the project. - -## Task - -I run `task build-vuepress` and will build a static site with `vuepress` and with `viteBundler`. This build step uses a lot of memory. I already tried to optimize memory consuption. - -Create a test setup that finds the minium memory with `NODE_OPTIONS='--max-old-space-size=XXX'`. Minimum meaning before the build breaks. - -Research ways to optimizie memory footprint of viteBuilder. - -## Worklog - -### Memory Testing - -Created `test-memory.sh` script to test builds with different `--max-old-space-size` values. - -Test results on 913 pages: -- ❌ `--max-old-space-size=384` → OOM during Vite compilation -- ❌ `--max-old-space-size=448` → OOM after rendering pages -- ❌ `--max-old-space-size=456` → OOM after rendering pages -- ✅ `--max-old-space-size=460` → success (~29s) -- ✅ `--max-old-space-size=464` → success (~27s) -- ✅ `--max-old-space-size=512` → success (~25s) -- ✅ `--max-old-space-size=768` → success, current setting (~25s) - -**Minimum memory required: ~460–464 MB.** The current 768 MB setting is safe. - -### Vite Optimizations Applied - -Added `build.reportCompressedSize: false` to `viteOptions` in `.vuepress/config.js`. This skips gzip size calculation during build, which is a known memory/CPU hotspot in Vite. It did not significantly shift the absolute minimum but removes unnecessary work. - -Other researched options (not applied due to limited impact vs. effort): -- `build.sourcemap: false` — already off by default in production builds. -- Reducing Shiki languages — would reduce startup memory but may break highlighting. -- `slimsearchPlugin.indexContent: false` — would save the most memory but removes full-text search. - -### Files Changed -- `.vuepress/config.js` — added `viteOptions.build.reportCompressedSize: false` -- `test-memory.sh` — new script for future memory regression testing \ No newline at end of file