naro-cli 0.26.0 → 0.28.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
@@ -102,8 +115,6 @@ naro env remove DATABASE_URL The production, preview and all values; an en
102
115
  naro env pull [.env.local] Preview's values by default; --env production, or --env qa for an environment
103
116
  (its own value wins over all; an unknown name fails before anything is written,
104
117
  and so does a value no dotenv line reads back)
105
- naro supabase [list] The project's Supabase links, per target (connect in the dashboard)
106
- naro supabase disconnect [target] Remove a target's link, or (no target or all) every link your role may change, with its env vars (asks first)
107
118
  naro env import .env.qa qa Upload every variable in a dotenv file to one target (all by default; asks first,
108
119
  --yes in CI; an unclosed quote, an invalid key, ASSETS or a value over 5 KB
109
120
  stops it before any request, and so does a key a storage binding already uses
@@ -886,6 +897,41 @@ An `--update-check` you give replaces the default: without
886
897
 
887
898
  ## Release notes
888
899
 
900
+ ### 0.28.0
901
+
902
+ - Next.js 15 and below are refused up front with `NEXT_VERSION_UNSUPPORTED`
903
+ (`Naro deploys Next.js 16 or newer.`); a newer major than Naro has a release
904
+ date for is no longer reported as too old.
905
+ - The OpenNext fallback is gone. Naro's builders try vinext, then the Naro
906
+ adapter (Next.js 16.2+); local builds try vinext only. An app nothing can
907
+ build or serve fails with `NO_DEPLOYMENT_STRATEGY`. An unreadable
908
+ `vinext check` report no longer stops the deploy; the build and the smoke
909
+ check still decide.
910
+ - `@opennextjs/cloudflare` is no longer a dependency of naro-cli.
911
+ - `naro deploy --user-adapter replace|keep` and `naro project set
912
+ --user-adapter replace|keep` choose what Naro's builders do with an app whose
913
+ `next.config` sets its own Next.js adapter. `naro deploy` asks once when the
914
+ project has no saved choice.
915
+ - With `naro project set --vinext off`, Naro's builders (git push,
916
+ `naro deployments create`) build a Next.js 16.2+ app with the Naro adapter.
917
+ Local builds (`naro deploy`) have no Naro adapter yet, so a server-rendered
918
+ Next.js app cannot deploy locally while vinext is off.
919
+ - `naro usage` adds CPU time by project and environment (observed, not
920
+ billed).
921
+ - naro-mcp 0.27.0 goes out with it: `update_project` and `deploy` take
922
+ `userAdapter`, `deploy` answers `needsAdapterChoice` when it has to ask, and
923
+ `get_team_usage` adds `hosting` (CPU time per project and environment).
924
+
925
+ ### 0.27.0
926
+
927
+ - `naro supabase` and `naro supabase disconnect` are gone, with the
928
+ dashboard's Supabase card and its routes. A project reaches its Supabase
929
+ like anything else: `NEXT_PUBLIC_SUPABASE_URL` and its key with
930
+ `naro env add`. Variables the card set stay, as your own. Older versions
931
+ answer `NOT_FOUND` on `naro supabase`.
932
+ - naro-mcp 0.26.0 goes out with it: `list_supabase_links` and
933
+ `disconnect_supabase` are gone.
934
+
889
935
  ### 0.26.0
890
936
 
891
937
  - `naro dashboard [<capability>]` prints the dashboard URL for what the CLI
@@ -913,7 +959,12 @@ browser or your own folder (the capability registry in
913
959
  - Projects: `naro project set` (name, subdomain), `naro project check
914
960
  <subdomain>`, `naro project access` (`grant`, `revoke`) and `naro project
915
961
  delete`, which asks you to type the project's name (`--yes` only with
916
- `--project`).
962
+ `--project`). `naro project set --vinext on|off` switches vinext for the
963
+ project. It governs Naro's build runner (git and dashboard deploys), where off
964
+ skips vinext and builds with the Naro adapter (Next.js 16.2 or newer). A local
965
+ `naro deploy` reads it too but has no Naro adapter, so while it is off
966
+ `naro deploy` cannot build a server-rendered Next.js app
967
+ (`NO_DEPLOYMENT_STRATEGY`); static exports (`output: "export"`) still build.
917
968
  - The edge: `naro firewall` (`add`, `enable`, `disable`, `remove`), `naro flags`
918
969
  (`add`, `on`, `off`, `remove`) and `naro bindings` (`add`, `remove` — removing
919
970
  deletes the R2 bucket, KV namespace or D1 database with its data, and asks).
@@ -1887,10 +1938,9 @@ Next.js), `INSTALL_FAILED` (the dependency install), `ARTIFACT_INVALID` (static
1887
1938
  output a deploy cannot take, like a symbolic link), `FRAMEWORK_DETECTION_FAILED`
1888
1939
  (no framework found, or an Angular app without an output path) and
1889
1940
  `BUILD_FAILED` (the app's own build, or a failure that carried no code). A
1890
- Next.js app is built by trying deployment strategies in turn: when the app's
1891
- own `next build` fails, `buildCode` is `BUILD_FAILED`; when its own build did
1892
- not fail but no strategy can ship it, `NO_DEPLOYMENT_STRATEGY`. Either way the message says
1893
- what each strategy failed at.
1941
+ Next.js app (16 or newer) is built with vinext. Local builds use vinext only for
1942
+ now (no Naro adapter), so an app's own build error there still shows as
1943
+ `NO_DEPLOYMENT_STRATEGY`: read the message and the build log.
1894
1944
 
1895
1945
  `--yes` (or `-y`) suppresses every prompt — destructive actions
1896
1946
  (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;