naro-cli 0.27.0 → 0.29.0

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
@@ -23,6 +23,18 @@ asks before opening a dotenv file to fill what is missing. Decline and it
23
23
  prints the `naro env add` commands instead. With `--yes`, `--json` or outside
24
24
  a TTY it never asks — it just lists what is missing and deploys.
25
25
 
26
+ An app whose `next.config` sets its own Next.js adapter (`adapterPath`, or
27
+ `experimental.adapterPath`) gets one question on the first deploy: replace it
28
+ with the Naro adapter on Naro's builders (recommended; your repository stays as
29
+ it is) or keep it, in which case Naro builds with vinext only. The answer is
30
+ saved on the project, so the deploy asks once. `--user-adapter replace|keep`
31
+ answers it without a prompt and saves it too; `naro project set --user-adapter
32
+ replace|keep` changes it later. With `--yes`, `--json` or outside a TTY and no
33
+ saved answer, the deploy only warns and builds as before (replace). When the
34
+ saved answer cannot be read, it asks nothing and warns that the setting could
35
+ not be read, since the saved answer may be keep. A local build has no Naro
36
+ adapter either way; the choice matters for Naro's remote builds.
37
+
26
38
  When those names give away a service you are already running, the deploy says
27
39
  so instead of leaving you with a list of names. An app that talks to an
28
40
  existing Supabase project prints `Supabase — in that project's dashboard:` and
@@ -36,7 +48,7 @@ effectively your env credentials.
36
48
 
37
49
  ## Requirements
38
50
 
39
- Next.js **15 or newer**. Next 14 and below are not supported — they stop at the
51
+ Next.js **16 or newer**. Next 15 and below are not supported — they stop at the
40
52
  version gate right after install with `NEXT_VERSION_UNSUPPORTED`.
41
53
 
42
54
  Vite, Create React App and plain static sites deploy too.
@@ -65,11 +77,12 @@ naro link | init Link this directory to a Naro project
65
77
  naro unlink Remove the link
66
78
  naro projects [--team <slug>] List projects
67
79
  naro project inspect Show the linked project
68
- naro usage Team usage this month: requests, builds and custom domains against the plan, then by project
80
+ naro usage Team usage this month: requests, builds and custom domains against the plan, then by project, then CPU by project and environment
69
81
  naro usage --month 2026-09 --team acme Another UTC month, another team
70
82
 
71
83
  naro deploy [--prod] Build locally and deploy
72
84
  naro deploy --env qa Deploy to a named environment (<subdomain>--qa) instead of the preview; not with --prod
85
+ naro deploy --user-adapter keep Answer the Next.js adapter question up front (replace | keep); see the adapter paragraph above
73
86
  naro deployments List deployments
74
87
  naro inspect <deployment-id> One deployment + build logs
75
88
  naro cancel <deployment-id> Stop a build that is still running
@@ -884,6 +897,43 @@ An `--update-check` you give replaces the default: without
884
897
 
885
898
  ## Release notes
886
899
 
900
+ ### 0.29.0
901
+
902
+ - `naro usage` shows Hobby custom domains as `1 per project` (an apex and its
903
+ `www.` form count as one) instead of `No limit`.
904
+ - `naro policy rules` marks an action allowed by a policy written as
905
+ `CREATE POLICY` as `custom`, and one covered by a policy it cannot read as
906
+ `invalid`, and lists those policies under the table. `--json` is unchanged.
907
+ - The hints under `naro policy rules --env <name>` point at that environment.
908
+ - naro-mcp 0.28.0 goes out with it: `get_team_usage` explains
909
+ `domainsPerProject` and `perProject`, and `list_policy_rules` says that
910
+ `none` means no rule `naro policy set` wrote, not nobody.
911
+
912
+ ### 0.28.0
913
+
914
+ - Next.js 15 and below are refused up front with `NEXT_VERSION_UNSUPPORTED`
915
+ (`Naro deploys Next.js 16 or newer.`); a newer major than Naro has a release
916
+ date for is no longer reported as too old.
917
+ - The OpenNext fallback is gone. Naro's builders try vinext, then the Naro
918
+ adapter (Next.js 16.2+); local builds try vinext only. An app nothing can
919
+ build or serve fails with `NO_DEPLOYMENT_STRATEGY`. An unreadable
920
+ `vinext check` report no longer stops the deploy; the build and the smoke
921
+ check still decide.
922
+ - `@opennextjs/cloudflare` is no longer a dependency of naro-cli.
923
+ - `naro deploy --user-adapter replace|keep` and `naro project set
924
+ --user-adapter replace|keep` choose what Naro's builders do with an app whose
925
+ `next.config` sets its own Next.js adapter. `naro deploy` asks once when the
926
+ project has no saved choice.
927
+ - With `naro project set --vinext off`, Naro's builders (git push,
928
+ `naro deployments create`) build a Next.js 16.2+ app with the Naro adapter.
929
+ Local builds (`naro deploy`) have no Naro adapter yet, so a server-rendered
930
+ Next.js app cannot deploy locally while vinext is off.
931
+ - `naro usage` adds CPU time by project and environment (observed, not
932
+ billed).
933
+ - naro-mcp 0.27.0 goes out with it: `update_project` and `deploy` take
934
+ `userAdapter`, `deploy` answers `needsAdapterChoice` when it has to ask, and
935
+ `get_team_usage` adds `hosting` (CPU time per project and environment).
936
+
887
937
  ### 0.27.0
888
938
 
889
939
  - `naro supabase` and `naro supabase disconnect` are gone, with the
@@ -921,7 +971,12 @@ browser or your own folder (the capability registry in
921
971
  - Projects: `naro project set` (name, subdomain), `naro project check
922
972
  <subdomain>`, `naro project access` (`grant`, `revoke`) and `naro project
923
973
  delete`, which asks you to type the project's name (`--yes` only with
924
- `--project`).
974
+ `--project`). `naro project set --vinext on|off` switches vinext for the
975
+ project. It governs Naro's build runner (git and dashboard deploys), where off
976
+ skips vinext and builds with the Naro adapter (Next.js 16.2 or newer). A local
977
+ `naro deploy` reads it too but has no Naro adapter, so while it is off
978
+ `naro deploy` cannot build a server-rendered Next.js app
979
+ (`NO_DEPLOYMENT_STRATEGY`); static exports (`output: "export"`) still build.
925
980
  - The edge: `naro firewall` (`add`, `enable`, `disable`, `remove`), `naro flags`
926
981
  (`add`, `on`, `off`, `remove`) and `naro bindings` (`add`, `remove` — removing
927
982
  deletes the R2 bucket, KV namespace or D1 database with its data, and asks).
@@ -1895,10 +1950,9 @@ Next.js), `INSTALL_FAILED` (the dependency install), `ARTIFACT_INVALID` (static
1895
1950
  output a deploy cannot take, like a symbolic link), `FRAMEWORK_DETECTION_FAILED`
1896
1951
  (no framework found, or an Angular app without an output path) and
1897
1952
  `BUILD_FAILED` (the app's own build, or a failure that carried no code). A
1898
- Next.js app is built by trying deployment strategies in turn: when the app's
1899
- own `next build` fails, `buildCode` is `BUILD_FAILED`; when its own build did
1900
- not fail but no strategy can ship it, `NO_DEPLOYMENT_STRATEGY`. Either way the message says
1901
- what each strategy failed at.
1953
+ Next.js app (16 or newer) is built with vinext. Local builds use vinext only for
1954
+ now (no Naro adapter), so an app's own build error there still shows as
1955
+ `NO_DEPLOYMENT_STRATEGY`: read the message and the build log.
1902
1956
 
1903
1957
  `--yes` (or `-y`) suppresses every prompt — destructive actions
1904
1958
  (production rollback, promote to production or to an environment, env/domain/environment removal, `naro env import`, turning off an environment's protection, database reset, backend key
package/dist/args.d.ts CHANGED
@@ -39,6 +39,8 @@ export interface GlobalFlags {
39
39
  outputDir?: string | undefined;
40
40
  /** `naro project set --vinext on|off`. */
41
41
  vinext?: string | undefined;
42
+ /** `naro project set` and `naro deploy`: --user-adapter replace|keep. */
43
+ userAdapter?: string | undefined;
42
44
  /** `naro storage sign --expires <seconds>`: 1-3600, an hour by default. */
43
45
  expires?: string | undefined;
44
46
  /** `naro storage sign --download`: the browser saves the file. */
@@ -2,7 +2,7 @@
2
2
  export type DeploymentStatus = "QUEUED" | "CLONING" | "INSTALLING" | "BUILDING" | "DEPLOYING" | "READY" | "FAILED";
3
3
  /** Mirrors the artifact file shape from the internal build package. */
4
4
  export interface ArtifactFile {
5
- /** Module name relative to the OpenNext output root. */
5
+ /** Module name relative to the build output root. */
6
6
  name: string;
7
7
  /** Immutable bytes retained after the isolated build workspace is removed. */
8
8
  data: Uint8Array;