Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
Added
- Cloudflare deploy: the site now deploys to Cloudflare (Workers with static assets, project
forge-select) on every push tomain, via a Workers Builds project connected directly to this repo through the Cloudflare Dashboard's Git integration (not a GitHub Actions workflow), configured by the newwrangler.jsoncat the repo root; see "Deploying the site" inCONTRIBUTING.md. Adds awranglerdev dependency and adeploy:cloudflarescript for manual/local deploys. - Drag & Drop Ordering:
sortable: true(multi-select only) lets users reorder selected tags by dragging with mouse/touch/pen (Pointer Events), or viaAlt+Left/Alt+Rightwhen a tag has keyboard focus. Fully opt-in — multi-select behavior, markup, and events are unchanged whensortableis left at its defaultfalse. When mounted on a native<select multiple>, the underlying<option>elements are also reordered to match, so a plain<form>submission serializes values in the dragged order.
Changed
- Site FAQ (landing page + JSON-LD) and docs no longer say React/Vue/Angular/Svelte wrappers are "on the roadmap but not yet available" —
forge-select-reactandforge-select-vueare published and documented indocs/examples.mdanddocs/api-reference.md; the live demo intro links to both. - Cloudflare is now the canonical live site, at a custom domain:
https://forgeselect.konexforge.com/.homepageinpackage.json(root + both wrapper packages) and every hardcoded canonical/OG/JSON-LD URL acrosssite/,demo/,README.md, anddocs/now point there instead of the old GitHub Pages URL. - Display name is now "Forge Select" (with a space) everywhere it's used as a marketing/brand name — page titles, headings, meta tags, JSON-LD
namefields, and prose across the site,README.md, anddocs/. Code identifiers (ForgeSelectthe TypeScript class,ForgeSelectOptions/ForgeSelectPlugintypes,forge-select/forge-select-react/forge-select-vuenpm package names,.forge-select__*CSS classes) and thecmm-cmm/ForgeSelectGitHub repository name are unaffected — those are technical identifiers, not the display name. - SEO/GEO pass on every site page (informed by another KonexForge site's setup): added
keywords,robots,author,og:locale,og:image:alt, and an explicit<link rel="sitemap">tag; homepage JSON-LD reorganized into a linkedWebSite+SoftwareApplicationgraph (via matching@id/isPartOf) with afeatureList,applicationSubCategory,softwareHelp, andscreenshot;llms.txtgeneration now includes the version number. - Real PNG social-preview image:
og-banner.svgis now rasterized to a 1200×630 PNG at build time (newsharpdev dependency, not committed — generated fresh into_site/assets/on every build) and used forog:image/twitter:image/apple-touch-iconin place of the SVG, withtwitter:cardupgraded fromsummarytosummary_large_image. Resolves the SVG-preview-inconsistency limitation noted in the 0.2.0 entry below (Twitter/X and LinkedIn don't render SVGog:imagereliably). - Version badge: the site header now shows the current version next to the brand name (e.g. "Forge Select v0.2.0") on every page, plus a "v0.2.0" eyebrow line on the homepage hero — sourced from
package.jsonat build time for the templateddocs/*.htmlpages, hardcoded (like the rest of their metadata) on the hand-authoredsite/index.html/demo/index.html/site/playground/index.html/site/theme-builder/index.htmlpages, so it needs a manual bump at release time (seeCONTRIBUTING.md).
Removed
- GitHub Pages deployment (
.github/workflows/pages.yml) — retired now that Cloudflare is canonical. If agh-pagesbranch and the GitHub Pages site are still active in this repo's Settings, they should be cleaned up manually (not something a workflow change can do).
0.2.0 - 2026-07-14
Changed
- Website rebranded with a green accent palette and a cursor logo/favicon across all pages.
- README Features list no longer lists unshipped items ("Tree Select", "Infinite Scroll") as if they were available; a pointer to the Roadmap replaces them.
Added
CHANGELOG.md,LICENSE,SECURITY.md,CONTRIBUTING.md, andCODE_OF_CONDUCT.md(Contributor Covenant v2.1)..github/workflows/release.yml: publishes to npm with provenance onvX.Y.Ztags (or manual dispatch), gated on typecheck/test/build and a tag/version match check.homepage,bugs,engines, andpublishConfigfields inpackage.json;prepublishOnlyruns the full verification suite before any publish.- SEO: canonical links, Open Graph, and Twitter Card meta tags on every page. The preview image (
site/assets/og-banner.svg) is a temporary SVG banner — some platforms (Twitter/X, LinkedIn) render SVGog:image/twitter:imageinconsistently; swap for a PNG once raster-image tooling is available. - GEO: JSON-LD structured data (
SoftwareApplication,FAQPage,BreadcrumbList,TechArticleon docs pages) plus generatedsitemap.xml,robots.txt, andllms.txt, all sourced from a single page-metadata list inscripts/build-site.mjs. - FAQ section on the homepage; introductory copy on the demo and playground pages so a visitor landing directly on either still gets context on what Forge Select is.
- The Changelog is now rendered on the site (
docs/changelog.html), sourced from this file. - Theme Builder: a new site page (
/theme-builder/) for live-editing every--fs-*CSS variable against real Forge Select instances, starting from Light/Dark presets, with a one-click "Copy CSS" output. Site-only — no library code changes. - Async pagination:
ajax.paginationopts in to loading further pages as the user scrolls near the bottom of the dropdown, instead of only reloading on search (paramsnow also receives the currentpage;transformmay return{ options, hasMore }to control it). Fully backward compatible — existingajaxconfigs withoutpaginationbehave exactly as before, and cached row content is preserved across appended pages instead of being cleared. - Tree select: add
childrento anyOptionto get an expandable/collapsible tree node, with cascading select/deselect and an indeterminate state for partially-selected parents inmultiplemode. Purely additive — lists with nochildrenanywhere render and behave exactly as before. - Framework wrapper packages: new npm workspaces under
packages/—forge-select-reactandforge-select-vue, each a thin component wrapping the core library with controlled-value support (onChange/v-model). CI now also runs typecheck/test/build across workspaces after the core library's own steps. Published independently via their own tags (react-v*,vue-v*); unscoped names (rather than@forge-select/*) so publishing doesn't depend on first creating an npm organization.
Fixed
- Playground stylesheet order so site accent overrides apply to Forge Select widgets.
- Virtual scroll rendering a mostly-blank window after scrolling: the viewport height was read from
list.clientHeightafter the list's children were cleared, at which point the list (no explicitheight, onlymax-height) collapses to its padding (~8px) instead of the real box height. This under-provisioned the rendered row window on every scroll-triggered re-render, leaving a visible blank gap at the bottom of the dropdown for any scroll position other than the very top.
0.1.0 - 2026-07-12
Added
- Core library:
ForgeSelectclass with options (placeholder,searchable,multiple,clearable,allowCreate,theme,disabled,data,ajax,templateResult/templateSelection,virtualScroll,itemHeight,language,plugins), instance methods (open,close,destroy,getValue,setValue,enable,disable,on,off), and events (change,open,close,search,clear). - Rich items: built-in
avatar,description, andmetafields onOptionwith an XSS-safe layout; search also matches descriptions. - Performance: automatic virtualization for lists over ~100 rows, per-option render caching (FIFO-bounded), lazy-loaded avatars, and a
scrollTopcapture/restore fix for real-browser scrolling. - Plugin architecture:
onInit,onOpen,onClose,onDestroylifecycle hooks. - Theming: CSS-variable-driven default and dark themes.
- i18n: built-in
en/vilocales and custom string tables. - Tooling: strict TypeScript, tsup build (ESM + CJS + IIFE +
.d.ts), vitest + jsdom test suite, GitHub Actions CI, GitHub Pages deployment. - Website: landing page, rendered documentation, interactive playground, and feature demo at https://cmm-cmm.github.io/ForgeSelect/.
- Documentation: API reference, examples, playground guide, Select2 migration guide, benchmarks methodology, and plugin development guide under
docs/.