siteplane 0.1.53 → 0.1.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # siteplane
2
2
 
3
- **Unreleased image-policy preparation:** When the scan includes image fields, `withSiteplane` prepares
3
+ **Image-policy preparation:** When the scan includes image fields, `withSiteplane` prepares
4
4
  Next Image and existing Next-config CSP headers for Siteplane's image route and your website's
5
5
  `/siteplane-assets/` path. Existing image sources stay in place. Local builds require the same public HTTPS
6
6
  `SITEPLANE_SITE_ORIGIN` supplied by `setup deploy`. Custom loaders and explicit redirect settings need
@@ -19,7 +19,7 @@ they choose **Open review** in their own browser. Do not consume the link on the
19
19
  Issue a fresh link only when needed. The URL fragment is a short-lived credential, so do not
20
20
  write it to source, documentation, analytics or shared logs. Guest review can organize and finish
21
21
  the setup; activation and account ownership require the later claim step. This entry remains
22
- controlled while Batch 3 is being completed.
22
+ controlled by the existing beta and launch gates.
23
23
 
24
24
  ### Controlled claim confirmation
25
25
 
@@ -88,24 +88,27 @@ preserves the Site, Run, runtime key, revalidation generation, selected fields a
88
88
  Completed setup credentials remain closed. Known package/workspace/provider conflicts are diagnosed before
89
89
  writes; support ranges do not trigger automatic framework or package-manager upgrades.
90
90
 
91
- ## Controlled accountless start
91
+ ## Accountless start
92
92
 
93
- The T8 candidate includes `setup start`; the hosted endpoint is closed by default until Batch 3 acceptance.
94
- Use only the exact candidate version provided for an enabled environment and an explicit user request:
93
+ Use `setup start` for an explicit user request to integrate a website before creating an account.
94
+ Save the user's exact editing instructions in a text file and pass `--instructions-file`; inline
95
+ `--instructions` is not supported. Omit the file only when the user asks the agent to choose.
95
96
 
96
97
  Before starting, add `.siteplane/credentials.json` to the repository’s `.gitignore`. Start rejects tracked or
97
98
  unprotected credentials before any provisioning request.
98
99
 
99
100
  ```bash
100
- npx -y siteplane@0.1.51 setup start --modules editing --instructions-file instructions.txt
101
- npx -y siteplane@0.1.51 setup context
101
+ npx -y siteplane@0.1.55 setup start --modules editing --instructions-file instructions.txt
102
+ npx -y siteplane@0.1.55 setup context
102
103
  ```
103
104
 
104
105
  Start performs read-only preflight and saves the installation key and original request privately before the
105
106
  first provisioning call. Select `editing,analytics` only when explicitly requested. Retry in the same directory
106
107
  with the same request after interruption; configuration without credentials produces a diagnosis, never a silent
107
- replacement project. The returned task carries the provisional assignment and deadline. Guest review and claim
108
- remain later Batch 3 work; this entry grants no publication or measurement activation.
108
+ replacement project. The returned task carries the provisional assignment and deadline. After verification,
109
+ `setup review` opens the saved guest review. The user can create an account or sign in from that review;
110
+ inspect and confirm only their concrete claim request in this repository. Claim preserves the review and
111
+ returns it to the owner's account; it does not activate editing or analytics.
109
112
 
110
113
  ## Approved fields
111
114
 
@@ -4352,6 +4352,14 @@ function scanNextSourceFilesToSiteFieldContract(files, options) {
4352
4352
  const fields = [];
4353
4353
  for (const field of uniqueFields(scan.fields)) {
4354
4354
  const routeKey = field.technicalRouteKey ?? field.routeHint;
4355
+ if (routeKey === "/*") {
4356
+ scan.warnings.push({
4357
+ code: "field_scan.global_route_key_invalid",
4358
+ message: `Field ${field.fieldId} uses /* as its routeKey. Use $global in both the value call and DOM attrs for content shared across routes; /* cannot produce matching editor evidence. This affects the editor integration, not the website build.`,
4359
+ fieldId: field.fieldId,
4360
+ filePath: field.sourceFilePath ?? "unknown"
4361
+ });
4362
+ }
4355
4363
  if (!routeKey) {
4356
4364
  scan.hardErrors.push({
4357
4365
  code: "field_scan.route_key_missing",
@@ -5941,7 +5949,7 @@ async function setupDeployCommand(input, deps = defaults) {
5941
5949
  } catch {
5942
5950
  fail2("siteplane_package_pin_conflict", "Install the exact Siteplane package versions from the current task and commit their canonical lockfile.");
5943
5951
  }
5944
- let operationDeadline = record && !["verified", "failed"].includes(record.phase) ? Date.parse(record.deadline) : deps.now() + 9e5;
5952
+ let operationDeadline = record && !["verified", "deployed", "failed"].includes(record.phase) ? Date.parse(record.deadline) : deps.now() + 9e5;
5945
5953
  const remaining = () => {
5946
5954
  const milliseconds = operationDeadline - deps.now();
5947
5955
  if (milliseconds <= 0)
@@ -6592,6 +6600,17 @@ async function runSetupCommand(args, dependencies) {
6592
6600
  dependencies.env
6593
6601
  );
6594
6602
  if (area === "start") {
6603
+ const usage = "Usage: siteplane setup start [--modules editing,analytics] [--instructions-file <path>] [--api-base-url <url>]";
6604
+ if (areaArgs.includes("--help") || areaArgs.includes("-h")) {
6605
+ dependencies.stdout(usage);
6606
+ dependencies.stdout("Save the user's exact editing instructions in a text file and pass --instructions-file. Omit it only when the user asks the agent to choose.");
6607
+ return { exitCode: 0 };
6608
+ }
6609
+ const options = /* @__PURE__ */ new Set(["--modules", "--instructions-file", "--api-base-url"]);
6610
+ for (let index = 0; index < areaArgs.length; index += 2) {
6611
+ if (!options.has(areaArgs[index]) || !areaArgs[index + 1] || areaArgs[index + 1].startsWith("--"))
6612
+ throw new Error(`Invalid setup start option. ${usage}. User instructions require --instructions-file.`);
6613
+ }
6595
6614
  const instructionsFile = readOption(areaArgs, "--instructions-file");
6596
6615
  const modules = readOption(areaArgs, "--modules");
6597
6616
  const result2 = await dependencies.commands.setupStartCommand({
package/dist/next.js CHANGED
@@ -3086,6 +3086,14 @@ function scanNextSourceFilesToSiteFieldContract(files, options) {
3086
3086
  const fields = [];
3087
3087
  for (const field of uniqueFields(scan.fields)) {
3088
3088
  const routeKey = field.technicalRouteKey ?? field.routeHint;
3089
+ if (routeKey === "/*") {
3090
+ scan.warnings.push({
3091
+ code: "field_scan.global_route_key_invalid",
3092
+ message: `Field ${field.fieldId} uses /* as its routeKey. Use $global in both the value call and DOM attrs for content shared across routes; /* cannot produce matching editor evidence. This affects the editor integration, not the website build.`,
3093
+ fieldId: field.fieldId,
3094
+ filePath: field.sourceFilePath ?? "unknown"
3095
+ });
3096
+ }
3089
3097
  if (!routeKey) {
3090
3098
  scan.hardErrors.push({
3091
3099
  code: "field_scan.route_key_missing",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "siteplane",
3
3
  "private": false,
4
- "version": "0.1.53",
4
+ "version": "0.1.55",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
7
  "publishConfig": {