Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
cdd5c2b
docs: updated textmode.js api docs
humanbydefinition Jul 31, 2026
5179f53
chore: regenerate API docs
humanbydefinition Jul 31, 2026
a3e0d9d
fix: replace string blend modes with constant values in documentation…
humanbydefinition Jul 31, 2026
8426d99
chore: aligned docs
humanbydefinition Jul 31, 2026
dd069aa
docs: updated README header section
humanbydefinition Aug 1, 2026
9fae970
docs: align CONTRIBUTING docs
humanbydefinition Aug 1, 2026
c4720b5
docs: remove redundant README content
humanbydefinition Aug 1, 2026
97351fa
docs: update `What's inside` section
humanbydefinition Aug 1, 2026
25892aa
refactor: replace `synth.textmode.art` naming with `editor.textmode.art`
humanbydefinition Aug 1, 2026
e80e006
refactor: remove dead `createFilterShader` link
humanbydefinition Aug 1, 2026
9d502c0
fix: updated API link
humanbydefinition Aug 1, 2026
f101589
docs: enhance exporting documentation with example sketches and JSON …
humanbydefinition Aug 1, 2026
91b9fef
docs: add back to top link in README
humanbydefinition Aug 2, 2026
90cc768
chore: standardize on Node.js 24 LTS
humanbydefinition Aug 2, 2026
e207963
Merge pull request #48 from humanbydefinition/chore/standardize-node-…
humanbydefinition Aug 2, 2026
a44c168
fix: update Open Graph image to new readme-og.png
humanbydefinition Aug 2, 2026
757563c
docs: updated API docs
humanbydefinition Aug 2, 2026
a62bdec
docs: update Node.js requirement to 24 LTS in installation guide
humanbydefinition Aug 2, 2026
7920bb9
docs: add FIGlet typography guide and reference in fonts documentation
humanbydefinition Aug 2, 2026
ab41ac7
docs: update section title and improve font discovery instructions
humanbydefinition Aug 2, 2026
9c5bca5
refactor: update FeaturedSketches component to use community sketches…
humanbydefinition Aug 2, 2026
d8293f5
chore: remove old gallery sketches
humanbydefinition Aug 2, 2026
51f559a
refactor: update gallery sketch display in landing page
humanbydefinition Aug 3, 2026
d32775f
refactor: examples page now uses example sketches from API docs
humanbydefinition Aug 3, 2026
1e17cf4
refactor: enhance contributing guide for clarity and structure
humanbydefinition Aug 3, 2026
4b6a82e
docs: add contributing guide for textmode.js and add-ons
humanbydefinition Aug 3, 2026
a243f2c
docs: update contribution guidelines for clarity and consistency
humanbydefinition Aug 3, 2026
3c4d923
docs: clarify submission guidelines for gallery sketches
humanbydefinition Aug 3, 2026
511c1ac
docs: update sidebar link text for clarity
humanbydefinition Aug 4, 2026
ee508b8
chore: update API docs
humanbydefinition Aug 4, 2026
15df5fe
docs: update getting started guide for clarity and focus on documenta…
humanbydefinition Aug 4, 2026
293a9ee
refactor: simplify sketch selection logic and remove unused initialId…
humanbydefinition Aug 4, 2026
87097ac
docs: remove improve documentation guide and update link in contribut…
humanbydefinition Aug 4, 2026
183a6b5
chore: updated links and file names
humanbydefinition Aug 4, 2026
2f1f468
docs: remove outdated section on cell index mapping for clarity
humanbydefinition Aug 4, 2026
7b6b249
docs: update link in contributing guide for accuracy
humanbydefinition Aug 4, 2026
51d4282
fix: reset currentIndex to 0 on component mount for consistent behavior
humanbydefinition Aug 4, 2026
51675d3
fix: add .vitepress/data/.generated-editor-sketches.json to .gitignor…
humanbydefinition Aug 4, 2026
b571cd6
feat: add dynamic preview height adjustment and resize observer for b…
humanbydefinition Aug 4, 2026
b5a0701
feat: replace library picker with pill buttons for improved filtering…
humanbydefinition Aug 4, 2026
05e848f
fix: adjust layout styles for improved alignment and responsiveness i…
humanbydefinition Aug 4, 2026
dff7348
fix: remove hover effects from social links for a cleaner appearance
humanbydefinition Aug 4, 2026
86c013c
docs: remove back to top link from README
humanbydefinition Aug 5, 2026
68f5941
chore: update API docs
humanbydefinition Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
blank_issues_enabled: true
contact_links:
- name: Contributing overview
url: https://code.textmode.art/docs/contributing/
about: Choose the correct repository and contribution path before opening an issue.
- name: Documentation
url: https://code.textmode.art/
about: Search the guides, API reference, and examples before reporting a documentation problem.
- name: textmode.js core repository
url: https://github.com/humanbydefinition/textmode.js/issues
about: Report core library and rendering problems in the core repository.
- name: Discord
url: https://discord.gg/sjrw8QXNks
about: Ask usage questions or discuss documentation ideas before filing an issue.
35 changes: 35 additions & 0 deletions .github/assets/readme-og.options.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"schemaVersion": 1,
"generator": {
"package": "@textmode/og",
"version": "0.1.0"
},
"source": {
"name": "textmodeshift",
"repository": "https://github.com/humanbydefinition/editor.textmode.art",
"revision": "b037294d3e0abeff074d50b41235015b3f7d8e67",
"path": "sketches/textmodeshift/sketch.js",
"variantSeed": "readme:code.textmode.art:v1",
"randomSeedTemplate": "textmodeshift-v1:${variantSeed}:${seed}"
},
"output": {
"path": "readme-og.png",
"layout": {
"kind": "main"
},
"frame": 60,
"darken": 70
},
"branding": {
"logo": "default",
"labels": {
"brandName": "code.textmode.art",
"mainTopRight": "OFFICIAL DOCUMENTATION",
"mainHeadlinePrefix": "EXPLORE",
"mainHeadlineEmphasis": "TEXTMODE",
"mainHeadlineSecondLine": "ON THE WEB",
"mainBottomLeft": "GUIDES / API / EXAMPLES / INTEGRATIONS",
"mainBottomRight": "TEXTMODE.ART"
}
}
}
Binary file added .github/assets/readme-og.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 10 additions & 1 deletion .github/workflows/contributors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,19 @@ jobs:
exit 1

- name: Checkout canonical source
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Setup Node
uses: actions/setup-node@v7
with:
node-version-file: .nvmrc
cache: npm

- name: Report toolchain
run: node --version && npm --version

- name: Validate registry, tests, and generated README
run: npm run check:contributors

Expand Down
17 changes: 10 additions & 7 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,27 +19,30 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
uses: actions/setup-node@v7
with:
node-version: 20
node-version-file: .nvmrc
cache: npm

- name: Report toolchain
run: node --version && npm --version

- name: Setup Pages
uses: actions/configure-pages@1f0c5cde4bc74cd7e1254d0cb4de8d49e9068c7d # v4
uses: actions/configure-pages@v4

- name: Install dependencies
run: npm install --frozen-lockfile
run: npm ci

- name: Build VitePress site
run: npm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3
uses: actions/upload-pages-artifact@v3
with:
path: .vitepress/dist

Expand All @@ -53,4 +56,4 @@ jobs:
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4
uses: actions/deploy-pages@v4
15 changes: 12 additions & 3 deletions .github/workflows/reconcile-contributors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:

- name: Create short-lived target token
id: app-token
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3
uses: actions/create-github-app-token@v3
with:
client-id: ${{ inputs.app-client-id }}
private-key: ${{ secrets.app-private-key }}
Expand All @@ -82,7 +82,7 @@ jobs:
run: gh api "repos/humanbydefinition/$TARGET_REPOSITORY/branches/dev" --silent

- name: Checkout target dev branch
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v6
with:
repository: humanbydefinition/${{ inputs.target-repository }}
ref: dev
Expand All @@ -91,18 +91,27 @@ jobs:
token: ${{ steps.app-token.outputs.token }}

- name: Checkout canonical contributor source
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
uses: actions/checkout@v6
with:
repository: humanbydefinition/code.textmode.art
ref: ${{ inputs.source-ref }}
sparse-checkout: |
.nvmrc
.vitepress/data/contribution-types.json
.vitepress/data/contributors.json
scripts/contributors.mjs
sparse-checkout-cone-mode: false
path: contributor-source
persist-credentials: false

- name: Setup Node
uses: actions/setup-node@v7
with:
node-version-file: contributor-source/.nvmrc

- name: Report toolchain
run: node --version && npm --version

- name: Resolve canonical source
id: source
working-directory: contributor-source
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ node_modules
.vitepress/dist/
.vitepress/temp/
.agents
skills-lock.json
skills-lock.json
.vitepress/data/.generated-editor-sketches.json
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
2 changes: 1 addition & 1 deletion .vitepress/configs/head.mts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ export const transformHead = ({ pageData }: TransformContext): HeadConfig[] => {
const defaultDescription = 'textmode.js is a lightweight creative coding library for creating real-time ASCII art on the web.'
const ogTitle = pageData.title || 'textmode.js'
const ogDescription = pageData.description || defaultDescription
const ogImage = 'https://code.textmode.art/png/textmodejs_banner.png'
const ogImage = 'https://code.textmode.art/png/readme-og.png'

// Detect page types
const isBlogPost = pageData.relativePath.startsWith('blog/') && pageData.relativePath !== 'blog/index.md';
Expand Down
17 changes: 9 additions & 8 deletions .vitepress/configs/sidebar.mts
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,10 @@ const docsSidebar: DefaultTheme.SidebarItem[] = [
link: "/docs/randomness-math-vectors-and-noise",
},
{ text: "Transforms", link: "/docs/transforms" },
{ text: "Input events", link: "/docs/events" },
{ text: "Fonts and tilesets", link: "/docs/fonts" },
{ text: "Media sources", link: "/docs/loadables" },
{ text: "Input events", link: "/docs/event-handling" },
{ text: "Fonts and tilesets", link: "/docs/fonts-and-tilesets" },
{ text: "FIGlet typography", link: "/docs/figlet-typography" },
{ text: "Media sources", link: "/docs/media-sources" },
{ text: "Media conversion", link: "/docs/media-conversion" },
],
},
Expand Down Expand Up @@ -86,8 +87,8 @@ const docsSidebar: DefaultTheme.SidebarItem[] = [
items: [
{ text: "flok.cc", link: "/docs/live-coding-flok-cc" },
{
text: "synth.textmode.art",
link: "/docs/live-coding-synth-textmode-art",
text: "editor.textmode.art",
link: "/docs/live-coding-editor-textmode-art",
},
],
},
Expand All @@ -97,15 +98,15 @@ const docsSidebar: DefaultTheme.SidebarItem[] = [
text: "Contributing",
items: [
{ text: "Overview", link: "/docs/contributing/" },
{ text: "Contribute code", link: "/docs/contributing/code" },
{
text: "Getting started",
link: "/docs/contributing/getting-started",
text: "Contribute docs",
link: "/docs/contributing/docs",
},
{
text: "Submit a sketch",
link: "/docs/contributing/submit-a-sketch",
},
{ text: "Improve docs", link: "/docs/contributing/improve-docs" },
{ text: "Contributors", link: "/docs/contributors" },
],
},
Expand Down
51 changes: 51 additions & 0 deletions .vitepress/data/apiExamples.data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import { scanApiExamples } from '../../scripts/lib/api-examples-scan.mjs'

export type ApiProfile =
| 'textmode.js'
| 'textmode.synth.js'
| 'textmode.filters.js'
| 'textmode.figlet.js'
| 'textmode.export.js'

export interface ApiExampleSketch {
id: string
slug: string
profile: ApiProfile
language: 'javascript' | 'typescript'
encodedCode: string
apiPath: string
pageUrl: string
heading?: string
ordinal: number
title: string
description?: string
kind?: string
owner?: string
ecosystem?: string
category?: string
lastModified?: string
tags: string[]
}

declare const data: ApiExampleSketch[]
export { data }

/**
* Build-time catalog of every runnable API example sketch embedded across the
* generated API reference (the api directory). Each entry is one live sandbox
* instance, ready to be passed straight to <TextmodeLiveSandbox />.
*
* The API markdown is the single source of truth; this loader only *reads* it,
* so regenerating API docs automatically updates the Examples page catalog.
*/
export default {
watch: ['api/**/*.md'],
load(): ApiExampleSketch[] {
try {
return scanApiExamples() as ApiExampleSketch[]
} catch (error) {
console.warn('[apiExamples] Failed to build the API example catalog:', error)
return []
}
},
}
72 changes: 0 additions & 72 deletions .vitepress/data/apiSketches.data.ts

This file was deleted.

Loading