- Home
- Changelog
Changelog
Ecosystem changelog
High-level updates for the novusstreamsolutions.com hub and related products. For product-specific release notes, follow each spoke site as it publishes its own announcements.
Homepage compressed to three featured stories plus an ecosystem explorer, and every product demo got controls
- Replaced eight stacked product narratives with three fully expanded chapters and a selectable ecosystem explorer holding the remaining five, addressing the audit finding that the homepage had become a catalogue rather than a guided product story.
- All five explorer narratives are rendered into the server HTML rather than mounted on click, so search engines and AI crawlers read the complete ecosystem story without running JavaScript; the inactive panels are hidden, and because the demo loops are gated on viewport intersection, a hidden panel runs no animation timers at all.
- The explorer is a standard tabs widget: arrow, Home and End keys move between products, the tab list is a single stop in the tab order, and each panel is reachable by keyboard.
- Gave all eight product demos Pause/Play and Replay controls — previously they were infinite loops with no user control at all. Pausing genuinely stops the animation rather than only relabelling the button, and each control is named for its product so eight demos on one page do not share one accessible name.
- prefers-reduced-motion still freezes every demo on its finished frame by default; the Play button now lets a visitor opt a single card into motion, which is a user-initiated action rather than an override of the preference.
- The demo cards are no longer hidden from assistive technology wholesale — the decorative pixels remain hidden, while the step status line and the new controls are exposed.
- The eight chapter narratives moved into one registry (app/lib/homeChapters.ts) derived from the app catalog, so the featured/explorer split is a slice index rather than a second copy of the copy, and chapter numbering can no longer disagree with catalog order.
One canonical home per article, and a licence
- Added the W16 canonical mechanism: an article can now declare that its canonical copy lives on a product domain, which drives the canonical link, the og:url, the schema.org url, and a visible “Originally published on …” credit together, so the signals cannot disagree.
- Measured the duplication the rule exists to prevent before changing anything: across the hub’s 344 posts and all seven product blogs (226 posts between them), there is exactly one shared slug and no shared titles. That one collision is two different articles on the same topic rather than one article published twice, so no canonical was re-pointed and every hub post stays self-canonical.
- The build now rejects a canonical that is relative, insecure, aimed off the ecosystem, aimed back at the hub, or aimed at the wrong product — the last being the mistake most easily made by hand and least likely to be noticed.
- Added a LICENSE file: the applications stay free to use with no paywall or signup, funded by advertising, while the source remains private and all rights reserved.
- Fixed the ecosystem counter strip, which was still repainting a literal 0 over the correct server-rendered figures on first view. The previous pass documented the fix in a comment but left the code easing from zero.
Two August 1 field guides, plus a reviewed-and-updated pass over the blog
- Published “When your docs drift from your product”, a method for auditing documentation against what the code actually ships, and “Career aptitude tests: what they can and cannot tell you”, the first article to cover the careers and assessments half of Novus Learn — 565 occupation profiles across 20 families, 376 aptitude practice suites, 2,200 authored cognitive questions, 200 puzzles, and the 12-module, 77-lesson JavaScript course.
- Both were built to the full house format with excerpts, snippets, card highlights, SEO metadata, four-item FAQs, related posts, internal and external links, and a mid-article figure; each clears the 2,500-word gate.
- Added new PNG hero, inline, and byte-identical OG twin images for both posts through the composite pipeline used since July 26, and advanced the sitewide share-image cache version to 20260801a.
- Added a reviewedAt / reviewNote mechanism to the blog: refreshed posts now show a dated “Reviewed and updated” notice naming what changed, and report a real dateModified to search engines instead of repeating their publication date.
- Corrected stale product claims across 23 existing posts and the tutorials: Novus Visualizers is ten engines and sixty modes rather than nine and fifty-four (the Logo engine and its six modes were added throughout, including a new section in the engine field guide), Novus Convert is 1,636 working routes across 209 browser-ready inputs rather than 1,022, Novus Examples is 2,558 files and 504 visual templates rather than 2,428 and 480, and Novus AI Stats supports seven import sources including Cursor with the “private beta / owner account” framing removed.
- The two new posts landed in Stack & engineering (a new “Docs & content systems” sub-category) and Novus Learn (a new “Careers & assessments” sub-category); the homepage carousel, blog landing, category hubs, search index, static routes, BlogPosting and FAQPage schema, and sitemap all update from the shared registry.
Novus Odds removed from the hub — site shutting down
- Removed Novus Odds from the hub roster, documentation, tutorials, mega menu, portfolio, FAQ, metadata, and Organization sameAs after shutting down odds.novusstreamsolutions.com.
- Kept the historical retrospective why-we-killed-our-sports-odds-project and older Odds launch changelog entries as history; live surfaces no longer list Odds as a current product.
Switched monetization to Google AdSense only — Adsterra and Infolinks removed
- Turned off every Adsterra surface (Social Bar, native hero, banners, sticky rails) and Infolinks after dating and adult-adjacent creatives kept appearing despite network adult settings.
- Re-enabled Google AdSense Auto Ads (ADSENSE_ENABLED=true), restored the pagead2 preconnect, and left ads.txt authorizing only the Google publisher line.
- Narrowed the report-only CSP allowlist away from Adsterra and Infolinks hosts, and updated privacy, cookies, terms, and cookie-banner copy to name AdSense as the sole ad partner.
Novus AI Stats joins the hub — eighth live app, private beta
- Added Novus AI Stats to the hub roster as the eighth live app: a privacy-first PWA at aistats.novusstreamsolutions.com that imports ChatGPT, Claude, Gemini, Claude Code, Codex, and Gemini CLI history, tracks sessions and tokens with metric quality labels, and builds share cards without dumping transcripts. Live private beta / in progress; free during beta.
- Wired the product across homepage chapters and CTAs, portfolio, docs hub, tool map, mega-menu, ventures pipeline, FAQ, footer, about, privacy, and terms — with Striker kept as early-access / in development.
- Published four AI Stats tutorials (getting started, import providers, metric quality labels, share cards), hub documentation, a tool map, and a launch product-blog post with matching hero, inline, and Open Graph assets.
- Registered the launch cluster in the shared content catalog so the homepage carousel, blog landing, category hubs, search index, static routes, structured data, and sitemap all pick up the new surfaces automatically.
Two field guides on frontier AI: Sol, Fable / Opus 5, and Gemini—and shipping production work with them
- Published two new general-purpose product-blog guides, each long-form: a landscape of competing frontier systems (Sol, Fable / Opus 5, and Gemini) focused on real job evaluation instead of leaderboard hype, and an operator playbook for taking AI-assisted work to production with scope, verification, tests, review, and ownership still in the loop.
- Built both articles to the full house format with tailored excerpts, snippets, card highlights, SEO titles and descriptions, keyword sets, four-question FAQ sections, curated internal and external links, and related-post paths into the existing AI-evaluation, Claude Code, model-tier, shipping, and build-gate clusters.
- Created two original dark-mode editorial illustrations, composed deterministic branded hero cards, saved matching 1200×630 inline and Open Graph assets, and advanced the sitewide share-image cache version.
- Registered the frontier landscape guide in Engineering / AI-assisted engineering and the production-shipping guide in Automation & AI / AI-assisted ops; the homepage carousel, blog landing, category hubs, search index, static routes, BlogPosting and FAQPage schema, and sitemap all update from the shared registry.
Two evergreen field guides: choosing browser tools worth keeping and organizing digital project files
- Published two new general-purpose product-blog guides, each 2,500+ words: a practical quality checklist for deciding whether a browser tool deserves a lasting place in a real workflow, and a four-zone Source / Work / Delivery / Archive system for organizing digital projects without final-final filenames or a heavyweight asset platform.
- Built both articles to the full house format with tailored excerpts, snippets, card highlights, SEO titles and descriptions, keyword sets, four-question FAQ sections, curated internal and external links, and reciprocal related-post paths into the July 26 workflow series and the existing browser-tools, AI-evaluation, privacy, and creator-production clusters.
- Created two original dark-mode editorial illustrations, composed deterministic branded hero cards, saved matching 1200×630 inline and Open Graph assets, visually checked the final typography and compositions, and advanced the sitewide share-image cache version.
- Registered the browser-tool guide in Web & UX / Product discipline and the file-organization guide in Field notes / Operator notes; the homepage carousel, blog landing, category hubs, search index, static routes, BlogPosting and FAQPage schema, and sitemap all update from the shared registry.
Three evergreen workflow guides: choosing the right app, handling files privately, and moving from source to share-ready delivery
- Published three new general-purpose product-blog guides, each 2,500+ words: a decision framework for choosing the right Novus app from the required output and transformation; a privacy-first lifecycle for inspecting, processing, verifying, sharing, and cleaning up everyday files; and a repeatable browser production line from protected source through approved master, destination variants, quality control, publishing, and archive.
- Connected the three guides as a coherent series while keeping each standalone, with tailored FAQs, SEO titles and descriptions, keyword sets, card highlights, internal links, external tool routes, and related-post paths into the existing browser-tools, on-device privacy, and creator-workflow clusters.
- Created three bespoke dark-mode editorial illustrations and deterministic branded hero cards, saved matching raster Open Graph twins for every post, verified the social-card typography and composition, and bumped the share-image cache version.
- Registered the posts in the typed content catalog and Field notes / Operator notes taxonomy; the blog index, category hub, homepage carousel, site search, static article routes, BlogPosting and FAQPage schema, and sitemap now update from the shared registry.
Location restored — London, Ontario on the contact page, with a privacy-first map
- Added a location card to the contact page identifying Novus Stream Solutions as based in London, Ontario, Canada, and working with clients remotely worldwide.
- Embedded a Google Map that loads only on click. Until a visitor asks for it the page renders a self-contained inline SVG placeholder and makes no third-party request, so the map never fires ahead of the cookie banner in consent-required regions.
- Restored city-level address data to the site-wide Organization JSON-LD and the contact page structured data as a schema.org PostalAddress (locality, region, country), alongside an areaServed of Worldwide. No street address is published.
- Refreshed the contact page metadata and keywords to reflect the London, Ontario location.
Page 1 of 5
Deep-dive posts and tutorials: Product blog. Technical documentation: Documentation.