Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
7ee5c88
refactor: utilize nuxt layers for configuration, shared features, and…
omargfh Mar 11, 2026
d1d30bb
refactor: abstract website information sources and make use of Nuxt l…
omargfh Mar 25, 2026
98ecb55
chore: update turbo
omargfh Mar 25, 2026
07e1792
Implement Directus navigations on to navbar
danielwong0115 Jan 17, 2026
3cd6c37
refactor(@repo/tailwind-config): create mixins for netlogo/docs styling
omargfh Jan 23, 2026
8cc9489
refactor(@repo/tailwind-config): update docs-theme to rely on mixins
omargfh Jan 23, 2026
b793c8d
refactor(@repo/tailwind-config): create netlogo-theme with scoped doc…
omargfh Jan 23, 2026
bf37907
minor(netlogo): fix merge conflics in main.scss
omargfh Mar 25, 2026
6396546
minor(@repo/vue-ui): make ErrorDisplay comptabile with netlogo-theme …
omargfh Jan 23, 2026
d6493c0
bugfix(@repo/tailwind-config): fix pre and code missing spacing
omargfh Jan 26, 2026
3066164
minor(@repo/nuxt-core): change nuxt-core main theme to netlogo instea…
omargfh Jan 26, 2026
6322b80
Implement Directus navigations on to navbar
danielwong0115 Jan 17, 2026
9e6ff8a
Implement announcements page
danielwong0115 Feb 16, 2026
14cede0
Fix on yarn file 1
danielwong0115 Mar 20, 2026
0b2f2ce
refactor: utilize nuxt layers for configuration, shared features, and…
omargfh Mar 11, 2026
abf00cd
chore: fix dependency resolution
omargfh Mar 26, 2026
e5270c5
chore: update to node 24 LTS
omargfh Mar 26, 2026
5e7070c
minor(repo): comment out yarn warn rules in check-deps-health
omargfh Mar 26, 2026
d13e610
chore(repo): split node/web helpers to avoid externalizing path/fs
omargfh Mar 26, 2026
ecad621
chore: fix nuxt schema resolution drift
omargfh Mar 26, 2026
58149a6
chore: add create:env command to init
omargfh Mar 26, 2026
06f937c
chore: update @nuxtjs/color-mode force light mode settings
omargfh Mar 26, 2026
a97e991
minor: use namespaced import for zod to allow treeshaking
omargfh Mar 27, 2026
710ea36
minor: externalize dev libs leaking to client bundle
omargfh Mar 27, 2026
1a90fb7
minor: remove global component registration
omargfh Mar 27, 2026
9050592
minor: move @repo/markdown to devDeps
omargfh Mar 27, 2026
9407bd6
minor: remove duplicate nvmrc files
omargfh Mar 27, 2026
bce9cba
minor(docs): default catalog pages to SPA with env override
omargfh Mar 27, 2026
8e63bcc
minor: nuxt core init
omargfh Apr 2, 2026
1e45946
bugfix(@repo/nuxt-core): ship parse5 in client module
omargfh Apr 8, 2026
66dc567
minor(@repo/nuxt-core): pre-parse MDC for prim tooltip
omargfh Apr 8, 2026
7dce164
bugfix(@repo/tailwind-config): consolidate pre's styling in blockquotes
omargfh Apr 8, 2026
658f0dd
bugfix(docs): prerender catalog by default
omargfh Apr 8, 2026
d2811d6
minor(@repo/nuxt-core): add global disable flag and allow slots in pr…
omargfh Apr 8, 2026
56dbab2
bugfix(docs): disable prim-tooltip for pdf builds
omargfh Apr 8, 2026
d84045a
minor(@repo/vue-ui): add flag to disable external icon in anchors
omargfh Apr 8, 2026
3e4e2ce
minor(repo): add .env to gitignore
omargfh Apr 8, 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
4 changes: 2 additions & 2 deletions .github/actions/setup-node-deps/action.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
name: Setup Node.js and Dependencies
description: Sets up Node.js 22 with yarn cache and installs dependencies
description: Sets up Node.js 24 with yarn cache and installs dependencies

runs:
using: composite
steps:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
node-version: "24"
cache: "yarn"

- name: Install dependencies
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
node-version: 24
cache: "yarn"

- name: Initialize Repository
Expand Down Expand Up @@ -51,7 +51,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
node-version: 24
cache: "yarn"

- name: Initialize Repository
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/deploy-nettango.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
node-version: "24"
cache: "yarn"

- name: Install dependencies
Expand Down
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,8 @@ packages/mustache/test-dist/
# should not be tracked
GITIGNORE_*
GITIGNORE_*/**/*

.env
.env.local
.env.development
.env.production
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
22
24
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ For development guides, contribution instructions, and more, please refer to the

### Getting Started
1. **Install Requirements**
- [Node.js v22](https://nodejs.org/en/download/)
- [Node.js v24](https://nodejs.org/en/download/)
- [Yarn v1](https://classic.yarnpkg.com/lang/en/docs/install/)
- [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) (for Windows users)

Expand Down
16 changes: 0 additions & 16 deletions apps/docs/.env

This file was deleted.

16 changes: 0 additions & 16 deletions apps/docs/.env.development

This file was deleted.

25 changes: 25 additions & 0 deletions apps/docs/.env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
NUXT_TELEMETRY_DISABLED=true

PROJECT_ROOT="."
REPO_ROOT=../..
VERSIONS_SRC="/versions.json"
EXTENSIONS_DIR="$REPO_ROOT/external/extensions"

PRODUCT_NAME="NetLogo Documentation"
PRODUCT_DESCRIPTION="The official documentation for the NetLogo modeling environment, including user manuals, tutorials, and reference materials."
PRODUCT_KEYWORDS="NetLogo, Documentation, User Manual, Tutorials, Reference, Agent-Based Modeling, Simulation, Programming, Modeling Environment"
PRODUCT_VERSION="7.0.3"
PRODUCT_DISPLAY_NAME="7.0.3"
PRODUCT_BUILD_DATE=$(date +%Y-%m-%dT%H:%M:%SZ)
PRODUCT_WEBSITE="https://docs.netlogo.org"

BUILD_LATEST=${BUILD_LATEST:-true}
BUILD_REPO="git@github.com:NetLogo/docs.git"
BUILD_BRANCH="main"

# We will enable it when it is planned
# for release
NUXT_PRIM_TOOLTIP_DISABLED=1

# Enable for Development
# NUXT_DEV_TOOLS=true
5 changes: 5 additions & 0 deletions apps/docs/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,8 @@ logs
.idea

routes.json

# Environment variables
.env
.env.*.local
.env.local
1 change: 0 additions & 1 deletion apps/docs/.nvmrc

This file was deleted.

1 change: 1 addition & 0 deletions apps/docs/app/app.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export default defineAppConfig({});
1 change: 1 addition & 0 deletions apps/docs/app/assets/styles/tailwind.css
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@

@import 'tw-animate-css';
@source "../../../../../packages/vue-ui/src";
@source "../../../../../packages/nuxt-core/";
@source "../../../content/**/*.md";
2 changes: 2 additions & 0 deletions apps/docs/app/assets/website-logo.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import WebsiteLogo from '@repo/vue-ui/assets/brands/NetLogoUserManual.svg';
export { WebsiteLogo };
8 changes: 6 additions & 2 deletions apps/docs/app/components/Announcer.vue
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,18 @@ const fetcher = async () => {
const { data: announcements } = await useLazyAsyncData<Announcements>('announcements', fetcher, { server: false });

const route = useRoute();
const productInfo = useProductInfo();
const {
public: {
website: { productVersion },
},
} = useRuntimeConfig();
const toast = useToast();

const visibleAnnouncements = computed(() => {
if (!announcements.value) return [];

return announcements.value.filter((item) => {
return item.appliesTo(route.path, productInfo.productVersion);
return item.appliesTo(route.path, productVersion);
});
});

Expand Down
17 changes: 10 additions & 7 deletions apps/docs/app/components/ClientNavbar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
<VersionSelectDropdown
:versions="versions"
:selected-version="selectedVersion"
@version-change="(version) => onVersionChange(version, productInfo)"
@version-change="(version) => onVersionChange(version, { productVersion, productWebsite })"
/>

<NavbarAction href="https://github.com/NetLogo" aria-label="NetLogo GitHub Repository">
Expand Down Expand Up @@ -57,8 +57,11 @@ import { useMediaQuery } from '@vueuse/core';
import { onMounted, ref, watch } from 'vue';
import { onVersionChange, pullVersionsFromSource } from '~~/shared/versions';

const productInfo = useProductInfo();
const runtimeInfo = useRuntimeInfo();
const {
public: {
website: { productWebsite, productVersion, versionsSrc },
},
} = useRuntimeConfig();

interface NavbarLink {
title: string;
Expand Down Expand Up @@ -174,7 +177,7 @@ const arePathnamesCongruent = (windowPathname: string, candidatePathname: string
pathname
.split('/')
.filter((p) => p.length > 0)
.filter((p) => p !== productInfo.productVersion)
.filter((p) => p !== productVersion)
.map((p) => p.replace(/\$/, ''))
.map((p) => p.trim().split('#')[0] ?? '')
.join('/');
Expand All @@ -196,7 +199,7 @@ const isLinkParentActive = (link: NavbarLink, currentPath: string): boolean => {

// Version selection
const versions = ref<Record<string, VersionProps>>({
[productInfo.productVersion]: { displayName: productInfo.productVersion },
[productVersion]: { displayName: productVersion },
'7.0.2': { displayName: '7.0.2' },
'7.0.1': { displayName: '7.0.1' },
'7.0.0': { displayName: '7.0.0' },
Expand All @@ -223,14 +226,14 @@ const versions = ref<Record<string, VersionProps>>({
'1.0': { disabled: true },
});

const selectedVersion = ref<string>(productInfo.productVersion);
const selectedVersion = ref<string>(productVersion);

onMounted(() => {
if (import.meta.client) {
updateActiveStates();
handleMediaQueryChange();
setTimeout(async () => {
versions.value = await pullVersionsFromSource(versions.value, runtimeInfo.versionsSrc);
versions.value = await pullVersionsFromSource(versions.value, versionsSrc);
}, 0);
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ import { wrapCacheLocalStorage } from '@repo/utils/lib/storage/cached-local-stor
import { removeHtmlExtension } from '~/utils/url';
import type { CatalogItemData, PrimitiveCatalogProps, SideCatalogItem } from './types';

const productInfo = useProductInfo();
const {
public: {
website: { productVersion },
},
} = useRuntimeConfig();

const { dictionaryDisplayName, dictionaryHomeDirectory, indexFileURI, currentItemId, currentItemLabel, primRoot } =
defineProps<PrimitiveCatalogProps>();
Expand Down Expand Up @@ -69,7 +73,7 @@ const {
error,
} = await useLazyAsyncData(
indexFileURI,
wrapCacheLocalStorage([productInfo.productVersion, 'primitive-catalog', indexFileURI].join('-'), null, () =>
wrapCacheLocalStorage([productVersion, 'primitive-catalog', indexFileURI].join('-'), null, () =>
fetcher(indexFileURI),
),
{ server: false },
Expand Down
31 changes: 0 additions & 31 deletions apps/docs/app/composables/configuration.ts

This file was deleted.

14 changes: 9 additions & 5 deletions apps/docs/app/layouts/default.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,18 @@
</template>

<script setup lang="ts">
const productInfo = useProductInfo();
const pageProductName = `NetLogo ${productInfo.productVersion} User Manual`;
const {
public: {
website: { productVersion, productWebsite },
},
} = useRuntimeConfig();
const pageProductName = `NetLogo ${productVersion} User Manual`;

const route = useRoute();
const canonical = computed(() => {
const routeWithoutVersion = route.fullPath.replace(`/${productInfo.productVersion}`, '');
const routeWithVersion = ['/', productInfo.productVersion, routeWithoutVersion].join('');
return new URL(routeWithVersion, productInfo.productWebsite).toString();
const routeWithoutVersion = route.fullPath.replace(`/${productVersion}`, '');
const routeWithVersion = ['/', productVersion, routeWithoutVersion].join('');
return new URL(routeWithVersion, productWebsite).toString();
});

useHead({
Expand Down
16 changes: 14 additions & 2 deletions apps/docs/app/pages/[...slug].vue
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,26 @@ import PrimitiveCatalog from '~/components/PrimitiveCatalog/PrimitiveCatalog.vue
import { PrimitiveCatalogSchema } from '~/components/PrimitiveCatalog/types';
import type { DocumentMetadata } from '~~/lib/docs/schema';

const productInfo = useProductInfo();
const {
public: {
website: { productName },
},
} = useRuntimeConfig();

const route = useRoute();
const path = decodeURIComponent(route.path).replace(/\?/, '');
const { data: page } = await useAsyncData(path, () => {
return queryCollection('content').path(path).first();
});

// Special case due to the large number of
// primitives on the dictionary page, which causes too many
// tooltips to be rendered and results in degraded performance.
// --Omar I. (05-10-2026)
if (['/dictionary', '/3d'].includes(path)) {
provide('prim-tooltip-disabled', true);
}

const { data: surround } = await useAsyncData(`${path}-surround`, () => {
return queryCollectionItemSurroundings('content', path, {
fields: ['description'],
Expand Down Expand Up @@ -44,7 +56,7 @@ defineOgImageComponent('DocsSeo', {
description,
theme: '#f31500',
siteLogo: '/turtles.png',
siteName: productInfo.productName,
siteName: productName,
});

useSeoMeta({
Expand Down
23 changes: 11 additions & 12 deletions apps/docs/app/pages/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
<Anchor href="/copyright"> Copyright and License Information </Anchor>
page.
</p>
<div v-if="productInfo.isBeta" class="highlight highlight-warning">
<div v-if="productIsBeta" class="highlight highlight-warning">
<p>
NetLogo <span v-if="productVersion">{{ productVersion }}</span> is a beta release. It is not recommended for
production use, but we welcome your feedback on the new features and changes.
Expand Down Expand Up @@ -71,25 +71,24 @@ import { ref } from 'vue';
import beginnersLinksData from '~/assets/beginners-links.json';
import importantLinksData from '~/assets/important-links.json';

const productInfo = useProductInfo();
const productVersion = ref(productInfo.productVersion);
const {
public: {
website: { productVersion, productDescription, productKeywords, productName, productIsBeta },
},
} = useRuntimeConfig();
const importantLinks = ref(importantLinksData);
const beginnersLinks = ref(beginnersLinksData);

const description =
'The official documentation for the NetLogo modeling environment, including user manuals, tutorials, and reference materials.';
// Set page title and meta
useSeoMeta({
description,
keywords:
'NetLogo,Documentation,User Manual,Tutorials,Reference,Agent-Based Modeling,Simulation,Programming,Modeling Environment',
title: productName,
description: productDescription,
keywords: productKeywords.join(', '),
});

defineOgImageComponent('DocsSeo', {
title: productInfo.productName,
description,
title: productName,
theme: '#f31500',
siteLogo: '/turtles.png',
siteName: productInfo.productName,
siteName: productName,
});
</script>
10 changes: 7 additions & 3 deletions apps/docs/app/plugins/force-light-mode.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
export default defineNuxtPlugin((nuxtApp) => {
const colorMode = useColorMode();
nuxtApp.hook("app:mounted", () => {
colorMode.preference = "light";
colorMode.value = "light";
nuxtApp.hook('app:mounted', () => {
colorMode.forced = true;
// @ts-expect-error - preference may or may not exist depending
// on how @nuxtjs/color-mode was installed
colorMode.preference = 'light';
// @ts-expect-error - see above
colorMode.value = 'light';
});
});
Loading
Loading