enigma-cli 1.36.8 → 1.37.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.
@@ -417,6 +417,68 @@
417
417
  ],
418
418
  "docs": "docs/notes/primitives.md#button"
419
419
  },
420
+ {
421
+ "name": "flags",
422
+ "title": "Country flags",
423
+ "description": "A flag as an image, from the CDN or from files you downloaded, in the rectangular set or the round one. Emoji flags are the thing this replaces: Windows ships no glyph for them, so a picker built out of emoji renders as bare letters for most desktop readers.",
424
+ "targets": [
425
+ "vanilla",
426
+ "astro",
427
+ "react"
428
+ ],
429
+ "entry": {
430
+ "vanilla": "@enigmax/primitives",
431
+ "astro": "@enigmax/primitives",
432
+ "react": "@enigmax/primitives/react"
433
+ },
434
+ "exports": {
435
+ "vanilla": [
436
+ "flagAttributes",
437
+ "flagSrc",
438
+ "configureFlags"
439
+ ],
440
+ "astro": [
441
+ "flagAttributes",
442
+ "flagSrc",
443
+ "configureFlags"
444
+ ],
445
+ "react": [
446
+ "Flag",
447
+ "configureFlags"
448
+ ]
449
+ },
450
+ "files": [
451
+ {
452
+ "path": "src/core/flags.ts",
453
+ "dest": "flags/flags.ts",
454
+ "targets": [
455
+ "vanilla",
456
+ "astro",
457
+ "react"
458
+ ]
459
+ },
460
+ {
461
+ "path": "src/react/flag.tsx",
462
+ "dest": "flags/index.tsx",
463
+ "targets": [
464
+ "react"
465
+ ],
466
+ "rewrite": {
467
+ "@/core/flags": "./flags"
468
+ },
469
+ "main": true
470
+ }
471
+ ],
472
+ "styles": false,
473
+ "themeHooks": [
474
+ "[data-enigma-flag]",
475
+ "[data-enigma-flag][data-flag-shape=rect]",
476
+ "[data-enigma-flag][data-flag-shape=square]",
477
+ "[data-enigma-flag][data-flag-shape=circle]"
478
+ ],
479
+ "assets": "flags",
480
+ "docs": "docs/notes/primitives.md#flags"
481
+ },
420
482
  {
421
483
  "name": "notifications",
422
484
  "title": "Notification queue",
@@ -7,6 +7,6 @@
7
7
  "minimalCode"
8
8
  ],
9
9
  "updated": "2026-07-17T00:17:02+02:00",
10
- "cliVersion": "1.36.8",
10
+ "cliVersion": "1.37.0",
11
11
  "sha": "3f0dcc28341bb0407860534f7ce9314cfc91b5e673f8f3d13b89d61851ed75f6"
12
12
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "On-demand over-engineering review - diff review, whole-repo audit, and enigma: debt-marker ledger (tags delete/stdlib/native/yagni/shrink, line/dep scoring); lists cuts, applies nothing.",
6
6
  "updated": "2026-06-16T11:24:30+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "f742a2be3f328b9ea1ff9a35a449177c2cbec35ad16e46f7054b7a873a2ab017"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Backend/API architecture: controller-service-repository layering, modern TypeScript project configuration (module resolution, strict flags, @/* path alias), API and request optimization (batching, avoiding redundant calls, skipping no-op writes), server-side caching (Redis), and Zod boundary validation.",
6
6
  "updated": "2026-08-02T19:59:01+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "652637f818b4ce4f4d5d83fa68fa57fe7842e32fb179523958c5496af54bb938"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Ciphera code style conventions (formatting, naming, imports incl. namespace imports for wide module surfaces, path-alias specifiers and no file extensions, comments, code-level anti-patterns; TypeScript-first, language-agnostic).",
6
6
  "updated": "2026-08-02T19:59:01+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "3beb0383a9cb0331ef8a579308a2517d24d57a8ba33751ad17d16d0a4f66e344"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Pre-delivery self-review gate, prioritized review dimensions, and change-quality criteria.",
6
6
  "updated": "2026-08-19T12:37:59+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "6b8a924cc11b61d4b45b73384aeb095ce622229359b7cc2c6ce4bb0cf3015ed7"
9
9
  }
@@ -7,6 +7,6 @@
7
7
  "codeGraph"
8
8
  ],
9
9
  "updated": "2026-08-15T20:49:24+02:00",
10
- "cliVersion": "1.36.8",
10
+ "cliVersion": "1.37.0",
11
11
  "sha": "95b7202e5659f8d9d6f11ce29e7dc5b01575ba86c78ef948bec4753ccf430155"
12
12
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Senior database architecture policy: engine selection (PostgreSQL by default, SQLite only for local-first/embedded stores), ORM selection (Prisma in TypeScript/JavaScript), query optimization, anti-duplication/normalization, scalability, and RGPD/GDPR encryption.",
6
6
  "updated": "2026-08-04T18:33:27+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "26fddc14caf697e830448a2cc453ddc470fe83d098d50bd67b278effba63274e"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Reproduce-isolate-fix debugging methodology with root-cause discipline and regression verification.",
6
6
  "updated": "2026-08-02T04:15:47+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "968876bcac9ce6e5a20be05c89ac97191b112c9e08679a8dc506d150c375fec4"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Dependency and supply-chain security: lockfiles and reproducible installs, version pinning, vulnerability auditing, vetting/minimizing packages, vendoring, and SBOM/provenance.",
6
6
  "updated": "2026-06-01T00:45:28+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "6375d835c2aef2c9bd31ce116444dc3d796f510f9970a213aa3ac4696d7e21b9"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Transactional email: React Email templates instead of hand-written HTML tables, server-side rendering, one send module behind the provider SDK, plain-text alternatives, idempotent background sending, link safety, and deliverability (SPF/DKIM/DMARC, bounce suppression, unsubscribe).",
6
6
  "updated": "2026-07-30T19:29:19+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "c9724fdbcdbeab99573be3fd44d4cdd97c2a394d99f3c4395f118f17356b00ed"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one.",
6
6
  "updated": "2026-07-29T01:18:36+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "9e30ee7d8a1a1e8c6e7f4e043857cd01841c68a427752e45bc0cad9ec5cfa279"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Frontend architecture: reusable components, abstraction thresholds, state management, real-time form validation where an emptied or not-yet-filled field is incomplete rather than invalid (a `*` on the label and an aria-disabled submit, never \"email is not valid\" over an empty input), no-op detection (skip any operation whose result equals current state, not just form saves; dirty means different from the loaded snapshot, not touched), instant first paint (render the shell, load data async, skeletons), perceived performance (prefetch on intent, debounce/throttle, cancel stale requests, avoid waterfalls, lazy widgets), large-list rendering (infinite scroll is the preferred default, pagination the deliberate exception when the design or the user calls for it, virtualization, skeletons, progressive loading), data views that ship their own affordances by default (a log, expense, transaction or history table is not done when the rows render: fuse.js search, the filters its column kinds imply, a date range, sort, filter state in the URL, and an export of the filtered set), every reference to an entity being a way into it (a name, id, project or path in a row links to that record, reveals it in a hover card, or at minimum copies and filters by it, never inert text; machine codes get human labels and raw payloads are never dumped into a cell), optimistic UI with rollback, visual restraint (one card level, spacing before borders, one elevation scale), icon actions (repeated row/card actions are icon-only buttons with aria-label plus title, not text labels), responsive/adaptive layout (fluid units, breakpoints, no overlap/overflow, viewport meta, touch targets), form fields that declare their keyboard and casing (autocapitalize/autocomplete/inputmode per field kind, set once in the shared Input, normalized on blur), variable-length text (min-width:0 in flex/grid, wrap vs truncate, long unbroken strings, worst-case content checks), auth screens (breached-password feedback, strength meter, cookie consent before login/register), and AI chat/agent interfaces via Vercel's AI Elements registry instead of hand-rolled message threads.",
6
6
  "updated": "2026-08-31T02:47:20+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "682be5335e0c761c6aa56e8d4825dec0821ca7875e0684b3cdfcc856bc750a2f"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Git & contribution policy (senior engineering standards).",
6
6
  "updated": "2026-08-22T09:25:34+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "cb320a6a5fd3279604ad7920b877c1a36e48f4f39aeead1a4c4daa89901d9ce0"
9
9
  }
@@ -7,6 +7,6 @@
7
7
  "logoColorPolicy"
8
8
  ],
9
9
  "updated": "2026-07-17T00:17:02+02:00",
10
- "cliVersion": "1.36.8",
10
+ "cliVersion": "1.37.0",
11
11
  "sha": "09cdbefd98625b02a7d03685e5deed128238ff8454a83fe22279610fe3ef8ddf"
12
12
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Application and AI-agent security: secrets, authn/authz (least privilege), credential flows with breach-checked passwords (Have I Been Pwned), OWASP Top 10, transport/crypto baseline, cookies and consent, secure logging, and agent/MCP/tool-use safety.",
6
6
  "updated": "2026-08-19T12:37:59+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "0270c33d2b4559e831aec794c188d293d26fc17e2a8064a967d716ceb3a7bab6"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Create new skills, modify and improve existing skills, and measure skill performance with evals and benchmarks.",
6
6
  "updated": "2026-08-03T00:16:54+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "a49f6166f57d734e0f13487332da37903e925f32257447856af0fbd6a5f1dc84"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Exhaustive completion discipline for long/multi-item tasks - inventory, coverage ledger, verified done.",
6
6
  "updated": "2026-08-02T04:15:47+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "4c2197954135dd3375f32d839238b82a95c0e93e976ddf5a9cbc4a0cf0146e97"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Concise, realistic technical copy - UI microcopy, descriptions, hints, empty/error states, and README/doc prose that informs without over-explaining or restating the obvious, and never uses a typographic dash.",
6
6
  "updated": "2026-08-19T12:37:59+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "a5a228a302f50d975a947b9d84676b4c2a4780f2b222f819388cc98d6a12f207"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Test strategy, coverage gates, deterministic tests, mocking discipline, regression-first bug fixing, and test-suite organization (layout by type/domain, mirrored paths, file naming, fixture/helper placement).",
6
6
  "updated": "2026-06-16T17:11:49+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "3bdf591057b760f674fb2b1425f63acb426cda2c4f042e1a74c5a5d3807df664"
9
9
  }
@@ -4,6 +4,6 @@
4
4
  "provider": "FJRG2007/enigma",
5
5
  "description": "Strict frontend + backend schema validation, normalization before validation (shared normalizers: trim, lowercase email, capitalize names, canonicalize links and handles), real-time error timing (an emptied or not-yet-filled field is incomplete, not invalid: a `*` and an aria-disabled submit instead of \"not valid\" over an empty input), schema consistency, and safe client-facing error handling.",
6
6
  "updated": "2026-08-11T17:10:56+02:00",
7
- "cliVersion": "1.36.8",
7
+ "cliVersion": "1.37.0",
8
8
  "sha": "24928a4c9eed28ebede9f23f746b09a9d3d8176f8fcca61a7780a853fa5bed4e"
9
9
  }
@@ -1,6 +1,6 @@
1
1
  {
2
- "enigma-darwin-arm64": "47a9362415fe914b3ccd1356f1c46192c43c352b363be232a0bc20ba83635470",
3
- "enigma-linux-arm64": "94bc1fa8562891c02b16fe61f2466f57a5072ceda737a6999174aa2ebb542b3c",
4
- "enigma-linux-x64": "bbbcf79f48df7f65ce7949901da5f0619fe55144befcc053c897b37fcf021c73",
5
- "enigma-win32-x64.exe": "f95fd67131a856be85109de0325859e6f28207e721692079c971d85b8c672612"
2
+ "enigma-darwin-arm64": "91724cb93f5ac7a8c5f2ca04f21433abbd8a18c4924cbab325bfb125c8dad63b",
3
+ "enigma-linux-arm64": "62a1f86c6ed33b606a4064dd3565925e09cd6707781308aa568b5381edee0cb2",
4
+ "enigma-linux-x64": "7c4f3f47140040d48fcbe44ffe7d7f31eeb0b6e50b3f17a3c5cbec4b8dc25eb7",
5
+ "enigma-win32-x64.exe": "37532ee23b065e1a40d2410a7e548c7c3186f560bc989b04db5c429aa319356a"
6
6
  }
@@ -1065,6 +1065,43 @@ var BUILTIN_RULES = [
1065
1065
  severity: "block",
1066
1066
  skill: "technical-writing-policy"
1067
1067
  },
1068
+ {
1069
+ id: "ui-no-flag-emoji",
1070
+ label: "A flag is an image, never an emoji",
1071
+ // Copy files plus the data files a language or country list actually lives in: an
1072
+ // i18n locale map with a "flag" key is the single most common home for these.
1073
+ files: ["*.tsx", "*.jsx", "*.vue", "*.svelte", "*.astro", "*.html", "*.htm", "*.ts", "*.js", "*.mts", "*.cts", "*.json", "*.md", "*.mdx"],
1074
+ excludeFiles: [
1075
+ "*.test.*",
1076
+ "*.spec.*",
1077
+ "**/tests/**",
1078
+ "**/__tests__/**",
1079
+ "**/fixtures/**",
1080
+ "*.min.js",
1081
+ "**/dist/**",
1082
+ "**/build/**",
1083
+ "**/_build/**",
1084
+ "**/node_modules/**",
1085
+ "**/vendor/**",
1086
+ "dist/**",
1087
+ "build/**",
1088
+ "_build/**",
1089
+ "node_modules/**",
1090
+ "vendor/**"
1091
+ ],
1092
+ scope: "file",
1093
+ // The two encodings a flag emoji has, both written as escapes so this file never
1094
+ // contains one: a regional-indicator PAIR (U+1F1E6..U+1F1FF, the country flags), and
1095
+ // the black-flag-plus-tags sequence (U+1F3F4 followed by tag characters) used for
1096
+ // England, Scotland and Wales. The tag branch needs the trailing tag characters, so
1097
+ // a plain black flag and the ZWJ pirate flag are not matched.
1098
+ pattern: "[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0020}-\\u{E007F}]+",
1099
+ // `u` (not the default `i`): the escapes above are code-point escapes, which only
1100
+ // mean that with the unicode flag on.
1101
+ flags: "u",
1102
+ message: 'Flag emoji. There is no font fix for this and it is not a style preference: Windows has never shipped country flags in its emoji font, so this renders as two bare letters ("ES") for most desktop readers, and iOS, Android, macOS and Linux each draw a different one. Render a flag as an IMAGE: `enigma add flags` (@enigmax/primitives) is `<Flag code="es" />`, which serves the rectangular set (lipis/flag-icons) or the round one (HatScripts/circle-flags) from a CDN, or from files it downloads into the project with `--flags local`. It also accepts the emoji you are replacing as its `code`, so a migration is the component and nothing else. In terminal output, a commit or a log line, drop the flag entirely rather than replacing it - a country name is the information, the glyph never was.',
1103
+ severity: "block"
1104
+ },
1068
1105
  // NOTE: there is deliberately no "Save button with no dirty check" rule, even though
1069
1106
  // no-op detection is one of frontend-policy's headline rules. It has no file-local
1070
1107
  // signature that survives measurement. The dirtiness normally lives in a parent, a store
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "enigma-cli",
3
- "version": "1.36.8",
3
+ "version": "1.37.0",
4
4
  "description": "Everything you need to work with a coding agent: install shared policy skills for Claude Code, OpenAI Codex and opencode, and set up portable git security hooks.",
5
5
  "type": "module",
6
6
  "bin": {