@ddtcorex/dsh-maestro-review 0.11.0 → 0.11.1

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/lib/client.js CHANGED
@@ -307,23 +307,32 @@ var REVIEW_CSS = `
307
307
  [data-review-hint] { margin: 0; font-size: 12px; line-height: 18px; color: var(--dsw-alias-label-tertiary); }
308
308
 
309
309
  /* A secret whose value is committed by a button: input and save travel
310
- together, the save under the input it writes. */
311
- [data-review-secret-group] { display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 220px; }
310
+ together on ONE row. The button used to sit on a row of its own below the
311
+ field \u2014 the group was a column and the button was align-self: flex-end \u2014
312
+ which orphaned it from the control it saves. It stays disabled until the
313
+ field holds something, so proximity to that field is the point. */
314
+ [data-review-secret-group] { display: flex; flex-direction: row; align-items: center; gap: 8px; min-width: 220px; }
315
+ [data-review-secret-group] input { flex: 1 1 auto; min-width: 0; }
312
316
  [data-review-secret-group] button {
313
- align-self: flex-end; min-height: 32px; padding: 0 12px; border-radius: 8px;
317
+ flex: none; align-self: center; min-height: 44px; padding: 0 12px; border-radius: 8px;
314
318
  border: 1px solid var(--dsw-alias-border-l2); background: var(--dsw-alias-bg-layer-1);
315
319
  color: inherit; font: inherit; cursor: pointer;
316
320
  }
317
321
  [data-review-secret-group] button:disabled { opacity: 0.55; cursor: default; }
318
322
  [data-review-secret-group] button:focus-visible { outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px; }
319
323
 
320
- /* Every row control gets the same box. The password type belongs in this list:
321
- without it the two secret fields rendered at the UA default \u2014 21px tall, no
322
- radius \u2014 beside 32px fields with an 8px radius in the same column. */
324
+ /* Every row control gets the same box \u2014 the shared settings field box, copied
325
+ from the host's own form primitive (ui-primitives ConfigField) so this tab
326
+ follows the shell instead of carrying a geometry of its own. Only
327
+ min-height: 44px is Maestro's: it is the touch target AGENTS.md requires,
328
+ which the host's line-box sizing does not give.
329
+ The password type belongs in this list: without it the two secret fields
330
+ rendered at the UA default \u2014 21px tall, no radius \u2014 beside their neighbours
331
+ in the same column. */
323
332
  [data-review-control] input[type="text"], [data-review-control] input[type="password"], [data-review-control] select {
324
- min-height: 32px; padding: 0 10px; border-radius: 8px;
325
- border: 1px solid var(--dsw-alias-border-l1); background: var(--dsw-alias-bg-layer-1);
326
- color: inherit; font: inherit;
333
+ min-height: 44px; padding: 6px 12px; border: 0.5px solid var(--dsw-alias-border-l4);
334
+ border-radius: var(--dsw-radius-md); background: var(--dsw-alias-bg-layer-3);
335
+ color: var(--dsw-alias-label-primary); font: inherit;
327
336
  }
328
337
  [data-review-control] input:focus-visible, [data-review-control] select:focus-visible {
329
338
  outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px;
@@ -7,5 +7,5 @@
7
7
  * magnifies the viewport for a focused field below that size, and a magnified
8
8
  * sheet never blurs back.
9
9
  */
10
- export declare const REVIEW_CSS = "\n[data-review-root], [data-review-root] * { box-sizing: border-box; }\n[data-review-root] {\n display: flex; flex-direction: column; gap: 12px;\n color: var(--dsw-alias-label-primary);\n font-size: 13px; line-height: 1.5;\n min-width: 0; width: 100%; max-width: 640px;\n}\n\n/* House header: badge + title + one-line status. */\n[data-review-header] { display: flex; gap: 10px; align-items: flex-start; padding: 2px 2px 8px; }\n[data-review-heading] { display: flex; flex-direction: column; min-width: 0; }\n[data-review-title] { margin: 0; font-size: 15px; font-weight: 600; line-height: 22px; }\n[data-review-status] { font-size: 12px; line-height: 16px; color: var(--dsw-alias-label-secondary); overflow-wrap: anywhere; }\n[data-review-status] [data-review-notice] { margin: 0; }\n[data-review-status] [data-review-notice][data-tone=\"ok\"] { color: var(--dsw-alias-state-success-primary); }\n[data-review-status] [data-review-notice][data-tone=\"bad\"] { color: var(--dsw-alias-state-error-primary); }\n\n[data-review-actions] { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }\n[data-review-actions] button {\n min-height: 32px; padding: 0 12px; border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2); background: var(--dsw-alias-bg-layer-1);\n color: inherit; font: inherit; cursor: pointer;\n}\n[data-review-actions] button:disabled { opacity: 0.55; cursor: default; }\n[data-review-actions] button:focus-visible { outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px; }\n\n/* House row: label and hint left, control held right, hairline between. */\n[data-review-row] {\n display: flex; align-items: center; gap: 8px;\n padding: 16px 0; border-bottom: 1px solid var(--dsw-alias-border-l2); min-width: 0;\n}\n[data-review-row]:last-of-type { border-bottom: none; }\n[data-review-row-text] { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; padding-right: 48px; }\n[data-review-control] { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; min-height: 36px; }\n/* Declared once. These two rules previously existed twice \u2014 the 12px/600 pair\n sat AFTER the house values and won on source order at equal specificity, so\n the whole tab rendered at the old weight and the old hint size. */\n[data-review-label] { font-size: 14px; font-weight: 400; line-height: 22px; color: var(--dsw-alias-label-primary); }\n[data-review-hint] { margin: 0; font-size: 12px; line-height: 18px; color: var(--dsw-alias-label-tertiary); }\n\n/* A secret whose value is committed by a button: input and save travel\n together, the save under the input it writes. */\n[data-review-secret-group] { display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 220px; }\n[data-review-secret-group] button {\n align-self: flex-end; min-height: 32px; padding: 0 12px; border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2); background: var(--dsw-alias-bg-layer-1);\n color: inherit; font: inherit; cursor: pointer;\n}\n[data-review-secret-group] button:disabled { opacity: 0.55; cursor: default; }\n[data-review-secret-group] button:focus-visible { outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px; }\n\n/* Every row control gets the same box. The password type belongs in this list:\n without it the two secret fields rendered at the UA default \u2014 21px tall, no\n radius \u2014 beside 32px fields with an 8px radius in the same column. */\n[data-review-control] input[type=\"text\"], [data-review-control] input[type=\"password\"], [data-review-control] select {\n min-height: 32px; padding: 0 10px; border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l1); background: var(--dsw-alias-bg-layer-1);\n color: inherit; font: inherit;\n}\n[data-review-control] input:focus-visible, [data-review-control] select:focus-visible {\n outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px;\n}\n/* The checkbox is the one control the harness draws at its own size; without\n this it rendered at the UA's 13px. Same values as the reference row. */\n[data-review-control] input[type=\"checkbox\"] {\n width: 16px; height: 16px; margin: 0; flex: none;\n accent-color: var(--dsw-alias-brand-primary, #0A84FF);\n}\n\n[data-review-pin], [data-review-lan] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n[data-review-pin] code, [data-review-lan] code {\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n padding: 2px 6px; border-radius: 6px; background: var(--dsw-alias-bg-layer-2);\n}\n[data-review-pin] button, [data-review-lan] button {\n min-height: 32px; padding: 0 10px; border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2); background: var(--dsw-alias-bg-layer-1);\n color: inherit; font: inherit; cursor: pointer;\n}\n\n@media (max-width: 640px) {\n /* Below the measure the row stacks: a right-held control has no room left,\n and a wrapped one reads as a third column. */\n [data-review-row] { flex-direction: column; align-items: stretch; gap: 8px; }\n [data-review-row-text] { padding-right: 0; }\n [data-review-control] { justify-content: flex-start; }\n}\n\n@media (max-width: 480px) {\n [data-review-actions] button { flex: 1 1 auto; min-height: 40px; }\n}\n\n/* iOS 16px field floor: the magnifier fires below this on a focused field. */\n@media (max-width: 1023px) and (pointer: coarse) {\n html[data-mobile-nav-ios] [data-review-root] input,\n html[data-mobile-nav-ios] [data-review-root] select { font-size: 16px !important; }\n}\n";
10
+ export declare const REVIEW_CSS = "\n[data-review-root], [data-review-root] * { box-sizing: border-box; }\n[data-review-root] {\n display: flex; flex-direction: column; gap: 12px;\n color: var(--dsw-alias-label-primary);\n font-size: 13px; line-height: 1.5;\n min-width: 0; width: 100%; max-width: 640px;\n}\n\n/* House header: badge + title + one-line status. */\n[data-review-header] { display: flex; gap: 10px; align-items: flex-start; padding: 2px 2px 8px; }\n[data-review-heading] { display: flex; flex-direction: column; min-width: 0; }\n[data-review-title] { margin: 0; font-size: 15px; font-weight: 600; line-height: 22px; }\n[data-review-status] { font-size: 12px; line-height: 16px; color: var(--dsw-alias-label-secondary); overflow-wrap: anywhere; }\n[data-review-status] [data-review-notice] { margin: 0; }\n[data-review-status] [data-review-notice][data-tone=\"ok\"] { color: var(--dsw-alias-state-success-primary); }\n[data-review-status] [data-review-notice][data-tone=\"bad\"] { color: var(--dsw-alias-state-error-primary); }\n\n[data-review-actions] { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }\n[data-review-actions] button {\n min-height: 32px; padding: 0 12px; border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2); background: var(--dsw-alias-bg-layer-1);\n color: inherit; font: inherit; cursor: pointer;\n}\n[data-review-actions] button:disabled { opacity: 0.55; cursor: default; }\n[data-review-actions] button:focus-visible { outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px; }\n\n/* House row: label and hint left, control held right, hairline between. */\n[data-review-row] {\n display: flex; align-items: center; gap: 8px;\n padding: 16px 0; border-bottom: 1px solid var(--dsw-alias-border-l2); min-width: 0;\n}\n[data-review-row]:last-of-type { border-bottom: none; }\n[data-review-row-text] { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; padding-right: 48px; }\n[data-review-control] { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; min-height: 36px; }\n/* Declared once. These two rules previously existed twice \u2014 the 12px/600 pair\n sat AFTER the house values and won on source order at equal specificity, so\n the whole tab rendered at the old weight and the old hint size. */\n[data-review-label] { font-size: 14px; font-weight: 400; line-height: 22px; color: var(--dsw-alias-label-primary); }\n[data-review-hint] { margin: 0; font-size: 12px; line-height: 18px; color: var(--dsw-alias-label-tertiary); }\n\n/* A secret whose value is committed by a button: input and save travel\n together on ONE row. The button used to sit on a row of its own below the\n field \u2014 the group was a column and the button was align-self: flex-end \u2014\n which orphaned it from the control it saves. It stays disabled until the\n field holds something, so proximity to that field is the point. */\n[data-review-secret-group] { display: flex; flex-direction: row; align-items: center; gap: 8px; min-width: 220px; }\n[data-review-secret-group] input { flex: 1 1 auto; min-width: 0; }\n[data-review-secret-group] button {\n flex: none; align-self: center; min-height: 44px; padding: 0 12px; border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2); background: var(--dsw-alias-bg-layer-1);\n color: inherit; font: inherit; cursor: pointer;\n}\n[data-review-secret-group] button:disabled { opacity: 0.55; cursor: default; }\n[data-review-secret-group] button:focus-visible { outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px; }\n\n/* Every row control gets the same box \u2014 the shared settings field box, copied\n from the host's own form primitive (ui-primitives ConfigField) so this tab\n follows the shell instead of carrying a geometry of its own. Only\n min-height: 44px is Maestro's: it is the touch target AGENTS.md requires,\n which the host's line-box sizing does not give.\n The password type belongs in this list: without it the two secret fields\n rendered at the UA default \u2014 21px tall, no radius \u2014 beside their neighbours\n in the same column. */\n[data-review-control] input[type=\"text\"], [data-review-control] input[type=\"password\"], [data-review-control] select {\n min-height: 44px; padding: 6px 12px; border: 0.5px solid var(--dsw-alias-border-l4);\n border-radius: var(--dsw-radius-md); background: var(--dsw-alias-bg-layer-3);\n color: var(--dsw-alias-label-primary); font: inherit;\n}\n[data-review-control] input:focus-visible, [data-review-control] select:focus-visible {\n outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px;\n}\n/* The checkbox is the one control the harness draws at its own size; without\n this it rendered at the UA's 13px. Same values as the reference row. */\n[data-review-control] input[type=\"checkbox\"] {\n width: 16px; height: 16px; margin: 0; flex: none;\n accent-color: var(--dsw-alias-brand-primary, #0A84FF);\n}\n\n[data-review-pin], [data-review-lan] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\n[data-review-pin] code, [data-review-lan] code {\n font-family: ui-monospace, SFMono-Regular, Menlo, monospace;\n padding: 2px 6px; border-radius: 6px; background: var(--dsw-alias-bg-layer-2);\n}\n[data-review-pin] button, [data-review-lan] button {\n min-height: 32px; padding: 0 10px; border-radius: 8px;\n border: 1px solid var(--dsw-alias-border-l2); background: var(--dsw-alias-bg-layer-1);\n color: inherit; font: inherit; cursor: pointer;\n}\n\n@media (max-width: 640px) {\n /* Below the measure the row stacks: a right-held control has no room left,\n and a wrapped one reads as a third column. */\n [data-review-row] { flex-direction: column; align-items: stretch; gap: 8px; }\n [data-review-row-text] { padding-right: 0; }\n [data-review-control] { justify-content: flex-start; }\n}\n\n@media (max-width: 480px) {\n [data-review-actions] button { flex: 1 1 auto; min-height: 40px; }\n}\n\n/* iOS 16px field floor: the magnifier fires below this on a focused field. */\n@media (max-width: 1023px) and (pointer: coarse) {\n html[data-mobile-nav-ios] [data-review-root] input,\n html[data-mobile-nav-ios] [data-review-root] select { font-size: 16px !important; }\n}\n";
11
11
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/client/review/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,w9KAkGtB,CAAA"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../src/client/review/styles.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,2oMA2GtB,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ddtcorex/dsh-maestro-review",
3
3
  "private": false,
4
- "version": "0.11.0",
4
+ "version": "0.11.1",
5
5
  "description": "Maestro Review — pluggable ReviewProvider (GitLab/GitHub) + orchestrator for automated MR review",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -49,23 +49,32 @@ export const REVIEW_CSS = `
49
49
  [data-review-hint] { margin: 0; font-size: 12px; line-height: 18px; color: var(--dsw-alias-label-tertiary); }
50
50
 
51
51
  /* A secret whose value is committed by a button: input and save travel
52
- together, the save under the input it writes. */
53
- [data-review-secret-group] { display: flex; flex-direction: column; align-items: stretch; gap: 8px; min-width: 220px; }
52
+ together on ONE row. The button used to sit on a row of its own below the
53
+ field — the group was a column and the button was align-self: flex-end —
54
+ which orphaned it from the control it saves. It stays disabled until the
55
+ field holds something, so proximity to that field is the point. */
56
+ [data-review-secret-group] { display: flex; flex-direction: row; align-items: center; gap: 8px; min-width: 220px; }
57
+ [data-review-secret-group] input { flex: 1 1 auto; min-width: 0; }
54
58
  [data-review-secret-group] button {
55
- align-self: flex-end; min-height: 32px; padding: 0 12px; border-radius: 8px;
59
+ flex: none; align-self: center; min-height: 44px; padding: 0 12px; border-radius: 8px;
56
60
  border: 1px solid var(--dsw-alias-border-l2); background: var(--dsw-alias-bg-layer-1);
57
61
  color: inherit; font: inherit; cursor: pointer;
58
62
  }
59
63
  [data-review-secret-group] button:disabled { opacity: 0.55; cursor: default; }
60
64
  [data-review-secret-group] button:focus-visible { outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px; }
61
65
 
62
- /* Every row control gets the same box. The password type belongs in this list:
63
- without it the two secret fields rendered at the UA default — 21px tall, no
64
- radius — beside 32px fields with an 8px radius in the same column. */
66
+ /* Every row control gets the same box — the shared settings field box, copied
67
+ from the host's own form primitive (ui-primitives ConfigField) so this tab
68
+ follows the shell instead of carrying a geometry of its own. Only
69
+ min-height: 44px is Maestro's: it is the touch target AGENTS.md requires,
70
+ which the host's line-box sizing does not give.
71
+ The password type belongs in this list: without it the two secret fields
72
+ rendered at the UA default — 21px tall, no radius — beside their neighbours
73
+ in the same column. */
65
74
  [data-review-control] input[type="text"], [data-review-control] input[type="password"], [data-review-control] select {
66
- min-height: 32px; padding: 0 10px; border-radius: 8px;
67
- border: 1px solid var(--dsw-alias-border-l1); background: var(--dsw-alias-bg-layer-1);
68
- color: inherit; font: inherit;
75
+ min-height: 44px; padding: 6px 12px; border: 0.5px solid var(--dsw-alias-border-l4);
76
+ border-radius: var(--dsw-radius-md); background: var(--dsw-alias-bg-layer-3);
77
+ color: var(--dsw-alias-label-primary); font: inherit;
69
78
  }
70
79
  [data-review-control] input:focus-visible, [data-review-control] select:focus-visible {
71
80
  outline: 2px solid var(--dsw-alias-border-l2); outline-offset: 2px;