@biffo/cli 0.249.8 → 0.250.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.
@@ -16,13 +16,39 @@ cd "$root" || exit 0
16
16
  #
17
17
  # Unlike commit-msg, which now has a built-in fallback because Conventional
18
18
  # Commits is a RULE that can be checked with nothing but `sh`, this hook runs a
19
- # TOOLCHAIN. Checked 2026-08-03: no satellite carries `lint-staged` anywhere --
20
- # not at the root, not in any workspace -- so there is genuinely nothing to
21
- # resolve and nothing to fall back to. Making it fatal would block all work in
22
- # those repos, which is how a safety measure gets ripped out.
19
+ # TOOLCHAIN. There is genuinely nothing to resolve and nothing to fall back to
20
+ # where it is absent, and making it fatal would block all work in those repos,
21
+ # which is how a safety measure gets ripped out.
23
22
  #
24
23
  # So it still exits 0. It just no longer implies it checked anything, and it
25
24
  # says what would make it real.
25
+ #
26
+ # ## The abstention is not the end state, and the count is moving
27
+ #
28
+ # An earlier version of this comment recorded "Checked 2026-08-03: no satellite
29
+ # carries `lint-staged` anywhere". That is no longer true, and leaving it would
30
+ # have made a fixable gap read as a permanent fact about satellites -- the
31
+ # abstention would look like the design rather than a backlog.
32
+ #
33
+ # Re-measured 2026-08-06 across the nine tabsii satellites:
34
+ #
35
+ # - `tabsii-crm` DOES carry it, and its gate is real.
36
+ # - `tabsii-ui` gained it the same day (tabsii-ui#24), which also showed the
37
+ # abstention is cheap to clear: add prettier + lint-staged and a config.
38
+ # - Seven others still abstain. THREE of those have no root `package.json` at
39
+ # all, so they hit the FIRST branch below, and no config file can fix them --
40
+ # they need a root manifest before they need a lint-staged entry.
41
+ #
42
+ # The deeper reason it keeps happening: **`.prettierrc` is not in
43
+ # `shared-files.json`**, so nothing ever carries the estate's formatting rules
44
+ # to a satellite. Each one is left to invent them or have none, and a satellite
45
+ # that adopts prettier with DEFAULTS drifts away from the estate's style rather
46
+ # than towards it -- measured in tabsii-ui, where prettier's defaults reformatted
47
+ # all 7 source files and the template's settings reformatted 3.
48
+ #
49
+ # Do not re-freeze a measured count into this comment without a date and a way
50
+ # to re-derive it. The number is a snapshot of a backlog, not a property of
51
+ # satellites.
26
52
  if [ ! -f package.json ]; then
27
53
  echo "pre-commit: ABSTAINED — no root package.json, so lint-staged cannot run here." >&2
28
54
  echo " Staged files were NOT linted or formatted. CI still checks them." >&2
@@ -16,13 +16,39 @@ cd "$root" || exit 0
16
16
  #
17
17
  # Unlike commit-msg, which now has a built-in fallback because Conventional
18
18
  # Commits is a RULE that can be checked with nothing but `sh`, this hook runs a
19
- # TOOLCHAIN. Checked 2026-08-03: no satellite carries `lint-staged` anywhere --
20
- # not at the root, not in any workspace -- so there is genuinely nothing to
21
- # resolve and nothing to fall back to. Making it fatal would block all work in
22
- # those repos, which is how a safety measure gets ripped out.
19
+ # TOOLCHAIN. There is genuinely nothing to resolve and nothing to fall back to
20
+ # where it is absent, and making it fatal would block all work in those repos,
21
+ # which is how a safety measure gets ripped out.
23
22
  #
24
23
  # So it still exits 0. It just no longer implies it checked anything, and it
25
24
  # says what would make it real.
25
+ #
26
+ # ## The abstention is not the end state, and the count is moving
27
+ #
28
+ # An earlier version of this comment recorded "Checked 2026-08-03: no satellite
29
+ # carries `lint-staged` anywhere". That is no longer true, and leaving it would
30
+ # have made a fixable gap read as a permanent fact about satellites -- the
31
+ # abstention would look like the design rather than a backlog.
32
+ #
33
+ # Re-measured 2026-08-06 across the nine tabsii satellites:
34
+ #
35
+ # - `tabsii-crm` DOES carry it, and its gate is real.
36
+ # - `tabsii-ui` gained it the same day (tabsii-ui#24), which also showed the
37
+ # abstention is cheap to clear: add prettier + lint-staged and a config.
38
+ # - Seven others still abstain. THREE of those have no root `package.json` at
39
+ # all, so they hit the FIRST branch below, and no config file can fix them --
40
+ # they need a root manifest before they need a lint-staged entry.
41
+ #
42
+ # The deeper reason it keeps happening: **`.prettierrc` is not in
43
+ # `shared-files.json`**, so nothing ever carries the estate's formatting rules
44
+ # to a satellite. Each one is left to invent them or have none, and a satellite
45
+ # that adopts prettier with DEFAULTS drifts away from the estate's style rather
46
+ # than towards it -- measured in tabsii-ui, where prettier's defaults reformatted
47
+ # all 7 source files and the template's settings reformatted 3.
48
+ #
49
+ # Do not re-freeze a measured count into this comment without a date and a way
50
+ # to re-derive it. The number is a snapshot of a backlog, not a property of
51
+ # satellites.
26
52
  if [ ! -f package.json ]; then
27
53
  echo "pre-commit: ABSTAINED — no root package.json, so lint-staged cannot run here." >&2
28
54
  echo " Staged files were NOT linted or formatted. CI still checks them." >&2
@@ -224,6 +224,22 @@ export function __resetRenewedTokenCacheForTests(): void {
224
224
  renewedTokenCache = null
225
225
  }
226
226
 
227
+ /**
228
+ * What `createApiClient` returns. Named so components can accept a client as a
229
+ * prop without re-deriving the shape (`ReturnType<typeof createApiClient>`
230
+ * spelled out at every call site drifts the moment the client gains a method).
231
+ *
232
+ * Backported from `tabsii-crm`, which added it and then could not receive this
233
+ * file: `filesIfPresent` distributes the skeleton's copy verbatim, so a sync
234
+ * would have deleted an export three of its components import and broken the
235
+ * build. Caught by the sync rehearsal on 2026-08-06 rather than in fourteen
236
+ * repos afterwards.
237
+ *
238
+ * The rule that applies (AGENTS.md, and biffo-template#1198's hard-won version):
239
+ * a file an instance is merely AHEAD on is backported, never overwritten.
240
+ */
241
+ export type ApiClient = ReturnType<typeof createApiClient>
242
+
227
243
  export function createApiClient(
228
244
  getIdToken: () => string | null,
229
245
  refreshIdToken: () => Promise<string | null> = refreshViaPortalSession,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@biffo/cli",
3
- "version": "0.249.8",
3
+ "version": "0.250.0",
4
4
  "description": "Biffo project scaffolding CLI",
5
5
  "license": "MIT",
6
6
  "type": "module",