Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
f2bea2d
ci(docs): add fully headless script mode
omargfh Jan 13, 2026
377e86f
repo: windows support
danielwong0115 Jan 15, 2026
96d777a
ci(docs): add fully headless script mode
omargfh Jan 13, 2026
cbcac52
fixup pdf
omargfh Jan 16, 2026
58309c9
dev: add utility to clean dirty file watchers left by node
omargfh Jan 16, 2026
3d20d95
hotfix(repo): workaround for yarn bug on windows (yarnpkg/yarn/issues…
omargfh Jan 16, 2026
d1a1238
Edit tab icons and navbar logo
danielwong0115 Jan 16, 2026
6aa6b9c
Merge branch 'origin/app/netlogo' - resolved conflicts
danielwong0115 Jan 17, 2026
6a498e9
Implement Directus navigations on to navbar
danielwong0115 Jan 17, 2026
828e66a
Change footer with Directus footer navigations
danielwong0115 Jan 17, 2026
74c2332
Add intro section onto index page
danielwong0115 Jan 23, 2026
f1b4c00
Add News and Social Media section on main page
danielwong0115 Jan 29, 2026
c25775c
Fix initial Directus loading issue with async functions
danielwong0115 Jan 29, 2026
b889a68
Add in Get NetLogo and Community sections on home page
danielwong0115 Jan 30, 2026
8f5046d
Fix Intro section with appropriate turtles and NetLogo Icon
danielwong0115 Feb 4, 2026
e0dd633
Add in copyright info to page footers
danielwong0115 Feb 4, 2026
8ba965d
Replace top search bar with donate button on navbar
danielwong0115 Feb 4, 2026
921032d
Minor fix: allow button to scroll to Get NetLogo section
danielwong0115 Feb 4, 2026
0893d24
Initial Intro Splash
danielwong0115 Feb 4, 2026
d7f1d1d
Fix responsiveness of intro splash section on <lg screens
danielwong0115 Feb 9, 2026
536bd02
Fix issue of Button not supporting href prop
danielwong0115 Feb 10, 2026
2a1b930
Temporary link styling changes
danielwong0115 Feb 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,17 @@ jobs:

- name: Install dependencies
shell: bash
run: NEXT_TELEMETRY_DISABLED=1 yarn run init
env:
HELIO_SKIP_CHECKS: 1
NUXT_TELEMETRY_DISABLED: 1
run: NUXT_TELEMETRY_DISABLED=1 yarn run init

- name: Build and deploy
working-directory: apps/docs
shell: bash
env:
PRINT_DEBUG: 1
HELIO_HEADLESS: 1
HELIO_SKIP_CHECKS: 1
NUXT_TELEMETRY_DISABLED: 1
GITHUB_TOKEN: ${{ secrets.NETLOGO_HELIO_CI_TOKEN }}
run: |
yes | yarn run docs:deploy
run: yarn run docs:deploy
32 changes: 16 additions & 16 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,22 +48,22 @@
"editor.formatOnSave": false
},

"files.exclude": {
"**/.next": true,
"**/.nuxt": true,
"**/node_modules": true,
"**/.out": true,
"**/.turbo": true,
"external/": true,
".git*": true,
".npmrc": true,
"**/out": true,
"**/dist": true,
"**/coverage": true,
"**/test-dist": true,
"**/.output": true,
"**/.data": true
},
// "files.exclude": {
// "**/.next": true,
// "**/.nuxt": true,
// "**/node_modules": true,
// "**/.out": true,
// "**/.turbo": true,
// "external/": true,
// ".git*": true,
// ".npmrc": true,
// "**/out": true,
// "**/dist": true,
// "**/coverage": true,
// "**/test-dist": true,
// "**/.output": true,
// "**/.data": true
// },

"cSpell.words": ["autogen", "iconify", "netlogo", "Nuxt", "Pathnames", "reka", "vueuse"]
}
8 changes: 4 additions & 4 deletions apps/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
},
"scripts": {
"init": "nuxt prepare",
"docs:build": "NODE_OPTIONS=--max-old-space-size=8192 ./scripts/generate.sh",
"docs:deploy": "NODE_OPTIONS=--max-old-space-size=8192 bash ./scripts/deploy.sh",
"docs:build": "./scripts/generate.sh",
"docs:deploy": "bash ./scripts/deploy.sh",
"docs:preview": "bash ./scripts/preview.sh",
"docs:clean-up": "bash ./scripts/clean-up.sh",
"docs:generate-manual": "bash ./scripts/generate-manual/run.sh",
Expand All @@ -29,7 +29,7 @@
"lint": "eslint . --max-warnings 0",
"lint:fix": "eslint . --fix",
"node-version": "node -v && npm -v",
"postinstall": "nuxt prepare"
"turbo:postinstall": "nuxt prepare"
},
"dependencies": {
"@nuxt/content": "^3.7.1",
Expand Down Expand Up @@ -98,4 +98,4 @@
"typescript": "^5.4.0",
"zod": "^4.1.12"
}
}
}
24 changes: 24 additions & 0 deletions apps/docs/public/_index/extensions/view2.5d.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
view2.5d:patch-view patch-view.html
view2.5d:decorate-patch-view decorate-patch-view.html
view2.5d:undecorate-patch-view undecorate-patch-view.html
view2.5d:turtle-view turtle-view.html
view2.5d:update-all-patch-views update-all-patch-views.html
view2.5d:update-patch-view update-patch-view.html
view2.5d:update-turtle-view update-turtle-view.html
view2.5d:get-z-scale get-z-scale.html
view2.5d:set-z-scale set-z-scale.html
view2.5d:set-turtle-stem-thickness set-turtle-stem-thickness.html
view2.5d:set-turtle-stem-color set-turtle-stem-color.html
view2.5d:show-links-xy-plane show-links-xy-plane.html
view2.5d:show-links-xyz show-links-xyz.html
view2.5d:get-observer-angles get-observer-angles.html
view2.5d:set-observer-angles set-observer-angles.html
view2.5d:get-observer-xy-focus get-observer-xy-focus.html
view2.5d:set-observer-xy-focus set-observer-xy-focus.html
view2.5d:get-observer-distance get-observer-distance.html
view2.5d:set-observer-distance set-observer-distance.html
view2.5d:remove-patch-view remove-patch-view.html
view2.5d:remove-turtle-view remove-turtle-view.html
view2.5d:remove-all-patch-views remove-all-patch-views.html
view2.5d:remove-all-turtle-views remove-all-turtle-views.html
view2.5d:count-windows count-windows.html
17 changes: 16 additions & 1 deletion apps/docs/scripts/.helpers
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
#!/bin/bash

HELIO_HEADLESS="${HELIO_HEADLESS:-0}"

if [ "$HELIO_HEADLESS" = "1" ]; then
echo "💡 Running in headless mode."
fi

function echo() {
command echo "[$(date +'%H:%M')] $*"
}
Expand Down Expand Up @@ -47,11 +53,20 @@ function unroll() {
}

function confirmUnlessHeadless() {
if [ "$HEADLESS" != "true" ]; then
if [ "$HELIO_HEADLESS" != "1" ]; then
read -p "⚠️ $1 (y/n): " response
if [ "$response" != "y" ]; then
echo "💡 Operation cancelled by user."
exit 0
fi
fi
}

_read() {
if [ "$HELIO_HEADLESS" = "1" ]; then
realEcho $2
else
read -p "$1" response
realEcho "$response"
fi
}
8 changes: 5 additions & 3 deletions apps/docs/scripts/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -39,24 +39,26 @@ fi

echo "=== Step 1: Build documentation site ==="
if [ -d .build ]; then
read -p "⚠️ Do you want to use the existing build? (y/n): " use_existing
use_existing=$(_read "⚠️ Do you want to use the existing build? (y/n): " "y")
if [ "$use_existing" != "y" ]; then
echo "💡 (Re)building documentation site..."
yarn run docs:build
echo "💡 Generating the PDF Manual"
yarn run docs:generate-manual
else
echo "💡 Using existing .build directory."
fi
else
echo "💡 Building documentation site..."
yarn run docs:build
echo "💡 Generating the PDF Manual"
yarn run docs:generate-manual
fi

echo ""
echo "=== Step 2: Clone documentation repository ==="
if [ "$(ls -A .repo)" ]; then
read -p "⚠️ .repo directory already exists and is not empty. Do you want to use it? (y/n): " use_repo
use_repo=$(_read "⚠️ .repo directory already exists and is not empty. Do you want to use it? (y/n): " "y")
if [ "$use_repo" != "y" ]; then
echo "💡 Removing existing .repo directory..."
rm -rf .repo
Expand Down Expand Up @@ -106,7 +108,7 @@ fi
echo ""
echo "=== Step 5: Commit and push changes ==="

read -p "⚠️ Are you sure you want to commit and push changes to the $BUILD_BRANCH branch? (y/n): " confirm_push
confirm_push=$(_read "⚠️ Are you sure you want to commit and push changes to the $BUILD_BRANCH branch? (y/n): " "y")
if [ "$confirm_push" != "y" ]; then
echo "💡 Deployment aborted by user."
exit 0
Expand Down
67 changes: 67 additions & 0 deletions apps/docs/scripts/generate-manual/env-options.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* @type {Array<import('./env-options').EnvironmentOptions>}
*/
module.exports = [
{
environmentName: 'github-actions',
launch: {
args: [
'--disable-features=IsolateOrigins',
'--disable-site-isolation-trials',
'--autoplay-policy=user-gesture-required',
'--disable-background-networking',
'--disable-background-timer-throttling',
'--disable-backgrounding-occluded-windows',
'--disable-breakpad',
'--disable-client-side-phishing-detection',
'--disable-component-update',
'--disable-default-apps',
'--disable-dev-shm-usage',
'--disable-domain-reliability',
'--disable-extensions',
'--disable-features=AudioServiceOutOfProcess',
'--disable-hang-monitor',
'--disable-ipc-flooding-protection',
'--disable-notifications',
'--disable-offer-store-unmasked-wallet-cards',
'--disable-popup-blocking',
'--disable-print-preview',
'--disable-prompt-on-repost',
'--disable-renderer-backgrounding',
'--disable-setuid-sandbox',
'--disable-speech-api',
'--disable-sync',
'--disable-gpu',
'--hide-scrollbars',
'--ignore-gpu-blacklist',
'--metrics-recording-only',
'--mute-audio',
'--no-default-browser-check',
'--no-first-run',
'--no-pings',
'--no-sandbox',
'--no-zygote',
'--password-store=basic',
'--use-gl=swiftshader',
'--use-mock-keychain',
'--unlimited-storage',
'--enable-logging',
'--v=2',
],
headless: false,
},
test: () => typeof process.env.CI !== 'undefined',
beforeAll: async () => {},
timeout: 800000,
},
{
environmentName: 'default',
launch: {
headless: 'new',
args: ['--no-sandbox'],
},
test: () => true,
beforeAll: async () => {},
timeout: 120000,
},
];
12 changes: 12 additions & 0 deletions apps/docs/scripts/generate-manual/env-options.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import type { LaunchOptions } from 'puppeteer';

type EnvironmentName = 'github-actions' | 'default';
type EnvironmentOptions = {
environmentName: EnvironmentName;
launch: LaunchOptions;
test: () => boolean;
beforeAll: () => Promise<void>;
timeout: number;
};

export type { EnvironmentName, EnvironmentOptions };
15 changes: 11 additions & 4 deletions apps/docs/scripts/generate-manual/index.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,11 @@ async function main() {
// Import the required modules
const puppeteer = require('puppeteer');
const fs = require('fs-extra');
const environments = require('./env-options.cjs');

// Check the environment
const environmentOptions = environments.find((env) => env.test());
console.info('Using Options:', JSON.stringify(environmentOptions, null, 2));

// Parse command line arguments
const args = process.argv.slice(2);
Expand All @@ -57,11 +62,12 @@ async function main() {
let htmlFiles = args.slice(3); // middle args are the HTML files

// Run puppeteer in headless mode
const browser = await puppeteer.launch({ headless: 'new', args: ['--no-sandbox'] });
await environmentOptions.beforeAll();
const browser = await puppeteer.launch(environmentOptions.launch);
const page = await browser.newPage();

// Increase timeout
page.setDefaultTimeout(120000); // 120 seconds
page.setDefaultTimeout(environmentOptions.timeout);

/**
* @typedef {Object} TocEntry
Expand Down Expand Up @@ -231,7 +237,7 @@ async function main() {
const fileBaseName = path.basename(file);
const fileUrl = 'http://' + serverHost + ':' + serverPort + '/' + urlPrefix + fileBaseName;
console.log(`Handling: ${fileBaseName} (=> ${fileUrl})`);
await myPage.goto(fileUrl, { waitUntil: 'networkidle0' });
await myPage.goto(fileUrl, { waitUntil: 'domcontentloaded', timeout: 120000 });

/**
* Extract the table of contents entries from the page.
Expand Down Expand Up @@ -436,7 +442,8 @@ ${combinedHtml.filter(Boolean).join('')}
const tempHtmlUrl = 'http://' + serverHost + ':' + serverPort + '/' + urlPrefix + 'tmp.html';

await page.setJavaScriptEnabled(false);
await page.goto(tempHtmlUrl, { waitUntil: 'networkidle0' });
await page.emulateMediaType('print');
await page.goto(tempHtmlUrl, { waitUntil: 'domcontentloaded', timeout: environmentOptions.timeout });
const pdfBuffer = await page.pdf({
format: 'A4',
printBackground: true,
Expand Down
4 changes: 2 additions & 2 deletions apps/docs/scripts/generate-manual/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ if [ ! -d ".build/latest" ] && [ ! -d ".build/${PRODUCT_VERSION}" ]; then
exit 1
fi

(yarn run docs:preview --port $PORT) &
(yarn run docs:preview --port $PORT > /dev/null 2>&1) &
PREVIEW_PID=$!
echo "🚀 Started preview server (PID $PREVIEW_PID)"

Expand Down Expand Up @@ -81,7 +81,7 @@ EOF
)

echo "💡 Generating title page."
echo "$title" > "$fileDirectory/title.html"
realEcho "$title" > "$fileDirectory/title.html"

files=(
"title"
Expand Down
Loading