Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

All notable changes to Context are documented here.

## 0.7.67 - 2026-10-14

- Knowledge websites open in light mode regardless of the system color scheme. The reader's light/dark and language choices are remembered per origin by default, so sites on one origin share them.
- `context build` no longer compares cited source regions or adds a "Source regions need review" notice to pages, so publishing builds no longer need the registered source checkouts. `context verify` still reports changed, moved or missing regions; run it before publishing.

## 0.7.66 - 2026-10-13

- Knowledge websites no longer collapse custom slots, such as a homepage banner, for readers who open them in dark mode. Slots remounted for these readers now finish loading before they replace the prerendered markup, so the old and new content swap in the same frame.
Expand Down
30 changes: 15 additions & 15 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "context",
"version": "0.7.66",
"version": "0.7.67",
"packageManager": "bun@1.3.9",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/context-cli/context-workflow/provider.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
schema: agent-graph.provider.v1
id: c4a/context
version: 0.7.66
version: 0.7.67
name: Context workflow
description: Internal work contract for Context knowledge workspaces.
graphs:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,5 @@ whether the content needs revision.
Changed, missing or ambiguously relocated source regions identify articles to
inspect through the normal revision workflow. Warnings do not add a separate
maintenance gate, silently rewrite articles or confirm that the prose is current.
Build does not repeat this comparison or read registered sources, so package
pages carry no source-region notice; run verify before publishing.
2 changes: 1 addition & 1 deletion packages/context-cli/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/context-cli",
"description": "Local runtime and Agent integration for traceable knowledge production",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { expect, test } from "bun:test";
import { cp, readFile, rm, writeFile } from "node:fs/promises";
import { cp, readdir, readFile, rm, writeFile } from "node:fs/promises";
import { join } from "node:path";
import { createDocumentRevisionWorkspace, DOCUMENT_REVISION_SOURCE_REF } from "./projectDocumentRevisionV074.fixture.js";
import { approveCandidates } from "./projectDocumentRevisionStages.fixture.js";
import { produceFixtureArticles } from "./productionArticleWorkflow.fixture.js";
import { readCandidateRecords } from "../project/candidateLedger.js";
import { closeProjectWorkspace } from "../project/close.js";
import { acceptStarterPackageTemplates } from "../project/packageTemplateReview.js";
import { verifyProjectWorkspace } from "../project/verify.js";
import { buildFixturePackages as buildProjectPackages } from "./workspaceVersionDelivery.fixture.js";

test("a successful package build retains navigation diagnostics on unchanged rebuilds", async () => {
Expand Down Expand Up @@ -41,3 +42,33 @@ test("a successful package build retains navigation diagnostics on unchanged reb
expect(await readFile(page, "utf8")).toContain("https://example.org/guide");
} finally { await rm(root, { recursive: true, force: true }); }
}, 60000);

test("package builds leave source-region checks to verify", async () => {
const root = await createDocumentRevisionWorkspace({ sourceCount: 1 });
try {
await cp(join(import.meta.dir, "../../../context/templates/package-templates/kb"), join(root, "src/package-templates/kb"), { recursive: true });
const entryPath = join(root, "src/index.ts");
await writeFile(entryPath, (await readFile(entryPath, "utf8")).replace("defineProject, source", "defineProject, kbPackage, source")
.replace("packages: []", 'packages: [kbPackage({ name: "source-checks", template: { path: "src/package-templates/kb", vars: {} } })]'));
await produceFixtureArticles(root, [{
path: "architecture/entry.md", question: "How is the public entry used?",
sources: [DOCUMENT_REVISION_SOURCE_REF],
markdown: '---\ntitle: Public entry\ndescription: Public entry usage.\n---\n\n<!-- context:section id="entry" -->\nUse the public entry point.\n<!-- /context:section -->\n',
references: { sections: [{ id: "entry", references: [{ source_ref: DOCUMENT_REVISION_SOURCE_REF,
locator: { path: "src/index.ts", start_line: 1, end_line: 1 } }] }] },
}]);
await approveCandidates(root, await readCandidateRecords(root));
await closeProjectWorkspace(root);
await acceptStarterPackageTemplates({ projectRoot: root });
const first = (await buildProjectPackages(root)).packages[0]!;
await rm(join(root, "fixture-source"), { recursive: true, force: true });
expect((await verifyProjectWorkspace(root)).issues).toContainEqual(expect.objectContaining({
code: "approved-source-region-changed", severity: "warning" }));
const rebuilt = (await buildProjectPackages(root)).packages[0]!;
expect(rebuilt.state).toBe("unchanged");
const pages = (await readdir(join(root, first.outDir), { recursive: true })).filter(path => path.endsWith(".md"));
const contents = await Promise.all(pages.map(path => readFile(join(root, first.outDir, path), "utf8")));
expect(contents.some(content => content.includes("Use the public entry point."))).toBe(true);
expect(contents.some(content => content.includes("Source regions need review"))).toBe(false);
} finally { await rm(root, { recursive: true, force: true }); }
}, 60000);
2 changes: 1 addition & 1 deletion packages/context-cli/src/project/indexerBaseContracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import { bundledMarkdownReaderQuestionContracts } from
"./indexerBaseMarkdownAuthoringCatalog.js";

const BASE_CONTRACT_VERSION = "1.1.0";
export const BUNDLED_INDEXER_PARSER_PACKAGE_VERSION = "0.7.66";
export const BUNDLED_INDEXER_PARSER_PACKAGE_VERSION = "0.7.67";
const BUNDLED_PARSER_REQUIREMENTS = buildIndexerParserCapabilityRequirements(
BUNDLED_INDEXER_PARSER_PACKAGE_VERSION,
);
Expand Down
5 changes: 2 additions & 3 deletions packages/context-cli/src/project/packageBuilder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import { writePackageSite, PACKAGE_SITE_VERSION } from "./packageSite.js";
import { readSiteExtensions } from "./packageSiteExtensions.js";
import { workspaceVersionFingerprint, writePackageVersion } from "./workspaceBuildVersion.js";
import { PACKAGE_READER_MARKDOWN_VERSION } from "./packageRenderCache.js";
import { withPackageKnowledgeAdvisories } from "./packageKnowledgeAdvisories.js";
import { writePackageKnowledgeMap } from "./packageKnowledgeMap.js";
import { inspectPackageMarkdownDirectory } from "./packageMarkdownAnchors.js";
import { withStagedPackageOutput } from "./packageBuildStage.js";
Expand Down Expand Up @@ -372,7 +371,7 @@ export async function collectPackageFreshness(
packages: readonly PackageDefinition[],
): Promise<PackageFreshness[]> {
assertDistinctPackageOutputs(packages);
const approved = await withPackageKnowledgeAdvisories(projectRoot, await listApprovedKnowledge(projectRoot));
const approved = await listApprovedKnowledge(projectRoot);
return Promise.all(packages.map(async (pkg) => {
assertPackageOutputDir(pkg);
const selected = selectPackageKnowledge(approved, pkg);
Expand Down Expand Up @@ -468,7 +467,7 @@ async function buildProjectPackagesInternal(projectRoot: string, options: { deli
next: "Declare kbPackage() or llmsPackage() in src/index.ts, then rerun context build.",
});
}
const approved = await withPackageKnowledgeAdvisories(projectRoot, await listApprovedKnowledge(projectRoot));
const approved = await listApprovedKnowledge(projectRoot);
const templateReviews = await inspectPackageTemplateReviews(projectRoot, packages);
const unresolvedTemplateReviews = templateReviews.filter((review) =>
review.state === "review-required" || review.state === "invalid"
Expand Down
18 changes: 0 additions & 18 deletions packages/context-cli/src/project/packageKnowledgeAdvisories.ts

This file was deleted.

2 changes: 1 addition & 1 deletion packages/context/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/context",
"description": "Declarative SDK for Context knowledge sources, workflows, review, and package outputs",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/core",
"description": "Shared extraction types, schemas, and utilities for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/dev-cli/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/dev-cli",
"description": "Developer menu for Context build, verification, link, and release preparation",
"version": "0.7.66",
"version": "0.7.67",
"private": true,
"type": "module",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-contract/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-contract",
"description": "OpenAPI and GraphQL contract catalog adapter for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-go/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-go",
"description": "Go extraction plugin and structural index for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-mdx/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-mdx",
"description": "MDX component and example catalog bridge for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-proto/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-proto",
"description": "Protocol Buffers IDL catalog parser for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-rush/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-rush",
"description": "Rush workspace structural index for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-sql/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-sql",
"description": "Dialect-bound lightweight SQL evidence adapter for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-style/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-style",
"description": "Lightweight CSS and SCSS evidence adapter for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-thrift/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-thrift",
"description": "Apache Thrift IDL catalog parser for Context",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract-ts/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract-ts",
"description": "TypeScript and JavaScript extraction plugin for the Context ExtractionResult v2 contract",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
2 changes: 1 addition & 1 deletion packages/extract/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@c4a/extract",
"description": "Language-plugin framework and repository runner for Context code evidence",
"version": "0.7.66",
"version": "0.7.67",
"type": "module",
"license": "MIT",
"engines": {
Expand Down
Loading
Loading