Skip to content

Commit d28bb9e

Browse files
Merge dev into main (marketing site updates)
2 parents 5258b9f + 9e2e83b commit d28bb9e

5 files changed

Lines changed: 50 additions & 16 deletions

File tree

docs/releases/in_progress/v0.4.1/github_release_preview.md

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ npm install -g neotoma@0.4.1
77
| | |
88
|:--|:--|
99
| **npm** | https://www.npmjs.com/package/neotoma/v/0.4.1 |
10-
| **Compare** | `v0.4.0``v0.4.1-provisional`[view diff](https://github.com/markmhendrickson/neotoma/compare/v0.4.0...e91cacd0) |
10+
| **Compare** | `v0.4.0``v0.4.1`[view diff](https://github.com/markmhendrickson/neotoma/compare/v0.4.0...v0.4.1) |
1111

12-
**Draft scope note:** This release note draft is pinned to the committed range **`v0.4.0..e91cacd0`**. Newer unstaged local edits were intentionally excluded from the `v0.4.1` candidate.
12+
**Shipped scope:** Git tag **`v0.4.1`** is at **`8081ee5`** (`Release v0.4.1: incremental deploy (marketing site)`). Narrative and `release-notes:render --tag v0.4.1` use range **`v0.4.0..v0.4.1`**.
1313

14-
Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery path for local installs, improves MCP/CLI contract parity around entity counts, and continues the evaluation-first site refresh with clearer product positioning, install guidance, and homepage demos.
14+
**Post-tag `dev` (not in the `v0.4.1` tag):** `5258b9f3``fix(site): keep record-types headline tail on one line`. Ship as **`v0.4.2`** (or cherry-pick) if that fix should ride with npm/GitHub users on the same semver.
15+
16+
Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery path for local installs, improves MCP/CLI contract parity around entity counts, ships FU-301 marketing-site refresh with incremental Pages deploy, syncs foundation commands into Claude Code skills, adds the `writ` submodule for WRIT benchmarking, and continues the evaluation-first site refresh with clearer product positioning, install guidance, and homepage demos.
1517

1618
## What changed for npm package users
1719

@@ -45,13 +47,16 @@ Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery
4547

4648
## Docs site & CI / tooling
4749

50+
- **FU-301:** Marketing site refresh, SEO, and v0.4.1 prep docs; **incremental GitHub Pages deploy** for the marketing site (`Release v0.4.1: incremental deploy`).
4851
- Refreshed public positioning, ICP, and release-targeting material across `docs/foundation/`, `docs/icp/`, and homepage design guidance.
4952
- Expanded the `evaluate_positioning` skill and related reference material so release prep, positioning review, and site iteration share the same framework.
5053
- Kept site coverage current with Playwright updates for hash navigation and other homepage regressions, plus ongoing route/SEO/localization maintenance in the frontend site layer.
5154

5255
## Internal changes
5356

5457
- Renamed the canonical release command to `/release` while keeping `/create_release` as a legacy alias, and updated synced command/rule/skill copies accordingly.
58+
- Emit foundation commands as **Claude Code skills** (`.claude/skills/<name>/SKILL.md`), with Cursor skill sync when not sourced from foundation.
59+
- Added **`writ` submodule** (WRIT write-integrity benchmark).
5560
- Synced generated Cursor/Claude instruction surfaces with the updated release workflow, positioning material, and rule set.
5661
- Added the focused test-only transport behavior in `src/cli/index.ts` to remove flaky per-command local transport startup during CLI test runs.
5762

@@ -65,16 +70,23 @@ Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery
6570

6671
- The committed `v0.4.1` candidate passed the full pre-commit gate used during release prep: `tsc --noEmit`, `eslint src --ext .ts`, `npm run lint:site-copy`, `npm test`, `npm run test:e2e`, `npm run validate:coverage`, `npm run check:pw-coverage`, and `npm run validate:doc-deps`.
6772
- Release prep also included focused reruns of the previously failing CLI correction test and the homepage hash-update Playwright test after the fixes landed.
68-
- Before publishing the actual GitHub Release, re-render notes after the final `v0.4.1` tag exists so the compare link and commit list reflect the exact tagged commit.
73+
- The `v0.4.1` tag exists on `8081ee5`; re-run `npm run -s release-notes:render -- --tag v0.4.1` after any tag movement before publishing or editing the GitHub Release.
6974

7075
## Breaking changes
7176

7277
- None called out for `0.4.1`.
7378

7479
---
7580

76-
## Commits (`v0.4.0``v0.4.1-provisional`)
81+
## Commits (`v0.4.0``v0.4.1`)
7782

83+
- `80203f2` Release v0.4.1: incremental deploy (marketing site)
84+
- `5a95524` Merge dev into main for release v0.4.1 (marketing site)
85+
- `9c62ea4` FU-301: Marketing site refresh, SEO, and v0.4.1 prep docs
86+
- `56d4b50` chore: add writ submodule (WRIT write-integrity benchmark)
87+
- `2665395` fix(claude): emit skills as .claude/skills/<name>/SKILL.md
88+
- `5e816a2` Sync .cursor/skills into Claude skills when not in foundation
89+
- `8034a9b` Emit all foundation commands as Claude Code skills
7890
- `e91cacd` chore(release): prepare main-repo v0.4.1 candidate
7991
- `e3b99e5` Dev: CLI/API contracts, site UI, docs, cursor rules, inspector submodule
8092
- `0da9e28` docs(icp): refresh primary ICP, dev release targeting, general release criteria; anonymize evaluator PII in public docs; add private field_evidence submodule ref
@@ -273,4 +285,5 @@ Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery
273285
- `79285c8` WIP: CSV uploader with normalization and LLM transforms
274286
- `dc11c6d` Initial commit: MCP server for extensible record storage with semantic search, ChatGPT Actions, and Supabase backend
275287

276-
**Full compare:** [`v0.4.0...v0.4.1-provisional`](https://github.com/markmhendrickson/neotoma/compare/v0.4.0...e91cacd0)
288+
**Full compare:** [`v0.4.0...v0.4.1`](https://github.com/markmhendrickson/neotoma/compare/v0.4.0...v0.4.1)
289+

docs/releases/in_progress/v0.4.1/github_release_supplement.md

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
**Draft scope note:** This release note draft is pinned to the committed range **`v0.4.0..e91cacd0`**. Newer unstaged local edits were intentionally excluded from the `v0.4.1` candidate.
1+
**Shipped scope:** Git tag **`v0.4.1`** is at **`8081ee5`** (`Release v0.4.1: incremental deploy (marketing site)`). Narrative and `release-notes:render --tag v0.4.1` use range **`v0.4.0..v0.4.1`**.
22

3-
Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery path for local installs, improves MCP/CLI contract parity around entity counts, and continues the evaluation-first site refresh with clearer product positioning, install guidance, and homepage demos.
3+
**Post-tag `dev` (not in the `v0.4.1` tag):** `5258b9f3``fix(site): keep record-types headline tail on one line`. Ship as **`v0.4.2`** (or cherry-pick) if that fix should ride with npm/GitHub users on the same semver.
4+
5+
Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery path for local installs, improves MCP/CLI contract parity around entity counts, ships FU-301 marketing-site refresh with incremental Pages deploy, syncs foundation commands into Claude Code skills, adds the `writ` submodule for WRIT benchmarking, and continues the evaluation-first site refresh with clearer product positioning, install guidance, and homepage demos.
46

57
## What changed for npm package users
68

@@ -34,13 +36,16 @@ Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery
3436

3537
## Docs site & CI / tooling
3638

39+
- **FU-301:** Marketing site refresh, SEO, and v0.4.1 prep docs; **incremental GitHub Pages deploy** for the marketing site (`Release v0.4.1: incremental deploy`).
3740
- Refreshed public positioning, ICP, and release-targeting material across `docs/foundation/`, `docs/icp/`, and homepage design guidance.
3841
- Expanded the `evaluate_positioning` skill and related reference material so release prep, positioning review, and site iteration share the same framework.
3942
- Kept site coverage current with Playwright updates for hash navigation and other homepage regressions, plus ongoing route/SEO/localization maintenance in the frontend site layer.
4043

4144
## Internal changes
4245

4346
- Renamed the canonical release command to `/release` while keeping `/create_release` as a legacy alias, and updated synced command/rule/skill copies accordingly.
47+
- Emit foundation commands as **Claude Code skills** (`.claude/skills/<name>/SKILL.md`), with Cursor skill sync when not sourced from foundation.
48+
- Added **`writ` submodule** (WRIT write-integrity benchmark).
4449
- Synced generated Cursor/Claude instruction surfaces with the updated release workflow, positioning material, and rule set.
4550
- Added the focused test-only transport behavior in `src/cli/index.ts` to remove flaky per-command local transport startup during CLI test runs.
4651

@@ -54,7 +59,7 @@ Neotoma `0.4.1` tightens the release-prep workflow, adds a safer SQLite recovery
5459

5560
- The committed `v0.4.1` candidate passed the full pre-commit gate used during release prep: `tsc --noEmit`, `eslint src --ext .ts`, `npm run lint:site-copy`, `npm test`, `npm run test:e2e`, `npm run validate:coverage`, `npm run check:pw-coverage`, and `npm run validate:doc-deps`.
5661
- Release prep also included focused reruns of the previously failing CLI correction test and the homepage hash-update Playwright test after the fixes landed.
57-
- Before publishing the actual GitHub Release, re-render notes after the final `v0.4.1` tag exists so the compare link and commit list reflect the exact tagged commit.
62+
- The `v0.4.1` tag exists on `8081ee5`; re-run `npm run -s release-notes:render -- --tag v0.4.1` after any tag movement before publishing or editing the GitHub Release.
5863

5964
## Breaking changes
6065

frontend/src/components/SiteHeaderNav.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ import {
8787
useSiteAppNavBarVisibleSetter,
8888
useSiteHomeEvaluateScrollBannerVisible,
8989
} from "@/context/SiteAppNavContext";
90+
import { HOME_DEMO_INSTALL_CTA_CLASS } from "@/components/code_block_copy_button_classes";
91+
import { cn } from "@/lib/utils";
9092

9193
const sidebarNavItemClass =
9294
"!bg-transparent text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus:bg-sidebar-accent focus:text-sidebar-accent-foreground data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground";
@@ -704,7 +706,10 @@ export function SiteHeaderNav(props: SiteHeaderNavProps) {
704706
</Link>
705707
<Link
706708
to={localizePath("/install", locale)}
707-
className="rounded-md px-1.5 py-1.5 text-[13px] text-sidebar-foreground no-underline hover:bg-sidebar-accent hover:text-sidebar-accent-foreground"
709+
className={cn(
710+
HOME_DEMO_INSTALL_CTA_CLASS,
711+
"px-2 py-1 text-[13px] focus-visible:ring-offset-sidebar",
712+
)}
708713
onClick={() => sendCtaClick("header_install")}
709714
>
710715
{dict.install}
@@ -735,7 +740,10 @@ export function SiteHeaderNav(props: SiteHeaderNavProps) {
735740
<NavigationMenuLink asChild>
736741
<Link
737742
to={localizePath("/install", locale)}
738-
className={`${navigationMenuTriggerStyle()} ${sidebarNavItemClass}`}
743+
className={cn(
744+
HOME_DEMO_INSTALL_CTA_CLASS,
745+
"px-2.5 py-1 text-sm focus-visible:ring-offset-sidebar",
746+
)}
739747
onClick={() => sendCtaClick("header_install")}
740748
>
741749
{dict.install}
@@ -901,7 +909,10 @@ export function SiteHeaderNav(props: SiteHeaderNavProps) {
901909
</Link>
902910
<Link
903911
to={localizePath("/install", locale)}
904-
className="rounded-md px-3 py-2 text-[14px] text-sidebar-foreground no-underline hover:bg-sidebar-accent hover:text-sidebar-accent-foreground"
912+
className={cn(
913+
HOME_DEMO_INSTALL_CTA_CLASS,
914+
"w-full justify-center px-3 py-2 text-[14px] focus-visible:ring-offset-sidebar",
915+
)}
905916
onClick={() => {
906917
sendCtaClick("header_install");
907918
setMobileMenuOpen(false);

frontend/src/components/SitePage.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ import founderPhoto from "@/assets/images/people/mark_hendrickson.jpg";
5858

5959
import { useLocale } from "@/i18n/LocaleContext";
6060
import { localizePath } from "@/i18n/routing";
61+
import { cn } from "@/lib/utils";
6162
import { useSiteHomeEvaluateScrollBannerVisibleSetter } from "@/context/SiteAppNavContext";
6263
import { sendCtaClick } from "@/utils/analytics";
6364
interface SitePageProps {
@@ -1467,11 +1468,11 @@ export function SitePage({ staticMode = false }: SitePageProps) {
14671468
{pack.homeHero.curiosityGap}
14681469
</p>
14691470

1470-
<p className="text-[15px] md:text-[17px] leading-7 text-foreground/80 max-w-xl mx-auto lg:mx-0">
1471+
<p className="mb-4 text-[15px] md:text-[17px] leading-7 text-foreground/80 max-w-xl mx-auto lg:mx-0">
14711472
{pack.homeHero.subcopy}
14721473
</p>
14731474

1474-
<div className="flex flex-col sm:flex-row sm:flex-wrap justify-center gap-3 pt-1 lg:justify-start">
1475+
<div className="mt-10 flex flex-col sm:flex-row sm:flex-wrap justify-center gap-3 lg:justify-start">
14751476
<a
14761477
href="/evaluate"
14771478
className={`${HOME_EVALUATE_CTA_CLASS} w-full sm:w-auto`}
@@ -2003,7 +2004,11 @@ export function SitePage({ staticMode = false }: SitePageProps) {
20032004
</a>
20042005
<Link
20052006
to={localizePath("/meet", locale)}
2006-
className={`${HOME_SCROLL_BANNER_SPLIT_CELL_CLASS} ${HOME_SCROLL_BANNER_SECONDARY_CELL_CLASS}`}
2007+
className={cn(
2008+
HOME_SCROLL_BANNER_SPLIT_CELL_CLASS,
2009+
HOME_SCROLL_BANNER_SECONDARY_CELL_CLASS,
2010+
"hidden md:flex",
2011+
)}
20072012
onClick={() => sendCtaClick("meet_with_creator_banner")}
20082013
>
20092014
<CalendarClock className="h-4 w-4 shrink-0" aria-hidden />

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@
9292
"cli": "node dist/cli/index.js",
9393
"cli:dev": "tsx src/cli/index.ts",
9494
"setup:cli": "npm run build:server && npm link && node -e \"const cp=require('child_process'); const fs=require('fs'); const p=cp.execSync('npm config get prefix',{encoding:'utf8'}).trim(); const bin=p+'/bin'; const neotomaPath=bin+'/neotoma'; const exists=fs.existsSync(neotomaPath); console.log(''); console.log('Step 1: Run this in your terminal (or add to ~/.zshrc):'); console.log(' export PATH=\\\"' + bin + ':\\$PATH\\\"'); console.log(''); console.log('Step 2: Then run: neotoma'); if(exists) { console.log(''); console.log('(Verified: neotoma is linked at ' + neotomaPath + ')'); }\"",
95-
"prepare": "husky",
95+
"prepare": "husky || node -e \"process.exit(0)\"",
9696
"setup:cursor": "bash scripts/setup_cursor_from_foundation.sh",
9797
"setup:claude": "bash scripts/setup_claude_instructions.sh",
9898
"sync:mcp": "node scripts/sync_mcp_configs.js",

0 commit comments

Comments
 (0)