Initial curated projectbrain source from 8a7b1e0651dbdab97d744cbd2e653ab3970ac6c5
This commit is contained in:
commit
5aa3e8d685
700 files changed
+132801
No files matched your search
@@ -0,0 +1,150 @@
|
||||
import { spawnSync } from "node:child_process";
|
||||
import fs from "node:fs";
|
||||
import path from "node:path";
|
||||
|
||||
const outputPath = process.env.PROJECTBRAIN_USER_NOTES_OUT;
|
||||
const shouldWrite = process.argv.includes("--write") || process.env.PROJECTBRAIN_USER_NOTES_WRITE === "1";
|
||||
|
||||
const run = (command, args) => spawnSync(command, args, {
|
||||
encoding: "utf8",
|
||||
shell: process.platform === "win32",
|
||||
});
|
||||
|
||||
const git = (args) => {
|
||||
const result = run("git", args);
|
||||
return result.status === 0 ? result.stdout.trim() : "unknown";
|
||||
};
|
||||
|
||||
const latestReleaseTag = () => {
|
||||
const result = run("git", ["tag", "--list", "projectbrain-rc-*", "--sort=-creatordate"]);
|
||||
return result.status === 0 ? result.stdout.trim().split(/\r?\n/).find(Boolean) ?? "untagged" : "untagged";
|
||||
};
|
||||
|
||||
const createDefaultOutputPath = (tagName) => {
|
||||
const safeTag = tagName.replace(/[^a-zA-Z0-9._-]/g, "-");
|
||||
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
||||
return `checkpoints/user-release-notes/projectbrain-user-release-notes-${safeTag}-${stamp}.md`;
|
||||
};
|
||||
|
||||
const commit = git(["rev-parse", "--short", "HEAD"]);
|
||||
const tagName = process.env.PROJECTBRAIN_RELEASE_TAG ?? latestReleaseTag();
|
||||
const out = outputPath || createDefaultOutputPath(tagName);
|
||||
|
||||
const notes = [
|
||||
"# ProjectBrain User Release Notes",
|
||||
"",
|
||||
`Generated: ${new Date().toISOString()}`,
|
||||
`Release tag: ${tagName}`,
|
||||
`Current commit: ${commit}`,
|
||||
"",
|
||||
"## What ProjectBrain Is For",
|
||||
"",
|
||||
"ProjectBrain is a project operating system for shaping, expanding and releasing software projects. It is optimized for turning ideas, existing repositories, source material and execution feedback into structured project memory, Codex-ready handoffs and release evidence.",
|
||||
"",
|
||||
"The current release is strongest as a local/operator-driven project builder. It combines project planning, repo shaping, session packaging, evidence review and release-readiness checks in one workspace.",
|
||||
"",
|
||||
"## Main User Flows",
|
||||
"",
|
||||
"### Start Or Open A Project",
|
||||
"",
|
||||
"- Use the Projects page to open an existing project.",
|
||||
"- Use Start when creating or importing a new project direction.",
|
||||
"- Existing projects remain the primary path for daily use; new-project setup is available when needed.",
|
||||
"",
|
||||
"### Shape A Repository",
|
||||
"",
|
||||
"- Use Repo Builder to inspect repository direction, gaps, state snapshots and delivery packages.",
|
||||
"- Use skill-aware handoff content to make Codex work more repeatable.",
|
||||
"- Use repo state and evidence instead of relying on memory from previous sessions.",
|
||||
"",
|
||||
"### Prepare Codex Work",
|
||||
"",
|
||||
"- Use Context Packs, Prompt Builder, Codex Handoffs and Session Packs to create a clear execution package.",
|
||||
"- Use Browser Bridge when work must be copied into ChatGPT/Codex manually without API keys.",
|
||||
"- Use Execution Feedback to bring results back into ProjectBrain as reviewable evidence.",
|
||||
"",
|
||||
"### Review And Close Work",
|
||||
"",
|
||||
"- Use Review Queue and History to inspect decisions, receipts and follow-up evidence.",
|
||||
"- Use Build Loop and Runtime Readiness to track release-relevant validation.",
|
||||
"- Use Release Center to collect proof before tagging or deploying.",
|
||||
"",
|
||||
"## Release And Operator Capabilities",
|
||||
"",
|
||||
"This release includes a complete local release-operator chain:",
|
||||
"",
|
||||
"- release smoke suite;",
|
||||
"- proof report generation;",
|
||||
"- proof freshness gate;",
|
||||
"- operator signoff file;",
|
||||
"- remote deployment proof;",
|
||||
"- release evidence dossier;",
|
||||
"- tag-ready gate;",
|
||||
"- rollback drill.",
|
||||
"",
|
||||
"Useful commands:",
|
||||
"",
|
||||
"```bash",
|
||||
"pnpm run release:bundle",
|
||||
"PROJECTBRAIN_RELEASE_DEPLOYMENT_PROOF=1 PROJECTBRAIN_RELEASE_DOSSIER=1 pnpm run release:bundle",
|
||||
"pnpm run release:tag-gate",
|
||||
"pnpm run release:rollback-drill",
|
||||
"pnpm run release:user-notes",
|
||||
"```",
|
||||
"",
|
||||
"## Deployment Notes",
|
||||
"",
|
||||
"The known live deployment target is:",
|
||||
"",
|
||||
"```text",
|
||||
"http://127.0.0.1:1209",
|
||||
"```",
|
||||
"",
|
||||
"Tower build/start commands:",
|
||||
"",
|
||||
"```bash",
|
||||
"cd /mnt/pool/appdata/brain",
|
||||
"docker compose build --no-cache frontend",
|
||||
"docker compose up -d",
|
||||
"```",
|
||||
"",
|
||||
"## What Remains Local Or Operator-Driven",
|
||||
"",
|
||||
"- Release evidence snapshots are local ignored files under `checkpoints/`.",
|
||||
"- Several release commands are intended to run from the developer/operator workstation, not from inside the Unraid container.",
|
||||
"- The rollback drill prints commands but does not execute a rollback.",
|
||||
"- Tagging remains an explicit operator action.",
|
||||
"",
|
||||
"## Known Boundaries",
|
||||
"",
|
||||
"- This release does not claim full multi-user auth.",
|
||||
"- This release does not replace all local/mock project surfaces with database-backed behavior.",
|
||||
"- This release does not automate AI calls or require API keys.",
|
||||
"- This release does not commit generated release evidence artifacts.",
|
||||
"",
|
||||
"## Recommended First Use",
|
||||
"",
|
||||
"1. Open an existing project from Projects.",
|
||||
"2. Review Workspace and Repo Builder for current direction.",
|
||||
"3. Generate or inspect a Session Pack before asking Codex to make changes.",
|
||||
"4. Capture execution feedback after a coding session.",
|
||||
"5. Use Release Center and Runtime Readiness before tagging.",
|
||||
"",
|
||||
"## Support Checklist",
|
||||
"",
|
||||
"When something looks wrong, collect:",
|
||||
"",
|
||||
"- current URL;",
|
||||
"- project id;",
|
||||
"- browser console error if present;",
|
||||
"- latest `pnpm run release:deployment-proof` output;",
|
||||
"- latest `pnpm run release:rollback-drill` output if deployment state is involved.",
|
||||
].join("\n");
|
||||
|
||||
console.log(notes);
|
||||
|
||||
if (shouldWrite) {
|
||||
fs.mkdirSync(path.dirname(out), { recursive: true });
|
||||
fs.writeFileSync(out, `${notes}\n`, "utf8");
|
||||
console.log(`\nUser release notes written to ${out}`);
|
||||
}
|
||||
Reference in new issue
Block a user