@happy-nut/monacori 0.1.3 → 0.1.5

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/dist/viewer.css CHANGED
@@ -465,14 +465,16 @@ td.d2h-del:not(.d2h-code-side-linenumber) { color: #d8e0e8; }
465
465
  }
466
466
  .tree-dir summary::-webkit-details-marker { display: none; }
467
467
  .tree-dir summary:hover { background: var(--bg); }
468
- .tree-dir:not([open]) .folder-icon { transform: rotate(-90deg); }
469
468
  .folder-icon {
470
469
  display: inline-grid;
471
470
  place-items: center;
472
- font-size: 9px;
473
471
  color: var(--muted);
474
- transition: transform 120ms ease;
475
472
  }
473
+ .folder-icon .folder-ic { width: 14px; height: 14px; display: block; }
474
+ /* Closed vs open folder glyph (replaces the old rotated "v" chevron). */
475
+ .tree-dir > summary .fi-open { display: none; }
476
+ .tree-dir[open] > summary .fi-closed { display: none; }
477
+ .tree-dir[open] > summary .fi-open { display: block; }
476
478
  .file-link.tree-file { padding-left: calc(8px + (var(--depth) * 14px)); }
477
479
  .tree-focus { box-shadow: inset 0 0 0 1px var(--active); border-radius: 6px; }
478
480
  summary.tree-focus { background: var(--bg); }
@@ -524,7 +526,20 @@ summary.tree-focus { background: var(--bg); }
524
526
  .status-deleted { background: var(--del); color: #cf222e; }
525
527
  .status-renamed { background: #fff8c5; color: #9a6700; }
526
528
  .status-source { background: var(--line); color: var(--muted); }
527
- .content { min-width: 0; padding: 0; }
529
+ .content { min-width: 0; padding: 0; display: flex; flex-direction: column; min-height: 100vh; }
530
+ /* Pin the diff's horizontal scrollbar to the viewport bottom instead of letting it float
531
+ mid-screen when a file's diff is short: fill the content column vertically so the last
532
+ file's diff body extends all the way down. */
533
+ #diff-view:not(.hidden) { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
534
+ #diff-view .diff2html-container { flex: 1 1 auto; display: flex; flex-direction: column; min-height: 0; }
535
+ .diff2html-container .d2h-wrapper { flex: 1 1 auto; display: flex; flex-direction: column; }
536
+ .diff2html-container .d2h-file-wrapper:last-child { flex: 1 1 auto; }
537
+ .diff2html-container .d2h-file-wrapper:last-child .d2h-files-diff { height: 100%; }
538
+ /* Slimmer scrollbars — the default overlay bars read as chunky on the dark UI. */
539
+ ::-webkit-scrollbar { width: 9px; height: 9px; }
540
+ ::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 32%, transparent); border-radius: 5px; }
541
+ ::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--muted) 52%, transparent); }
542
+ ::-webkit-scrollbar-track { background: transparent; }
528
543
  .toolbar {
529
544
  position: sticky;
530
545
  top: 0;
@@ -629,6 +644,31 @@ h1 { margin: 0; font-size: 18px; }
629
644
  background: var(--panel);
630
645
  user-select: text;
631
646
  }
647
+ /* Extend the line-number gutter (and its divider) to the bottom of the panel so it never stops at the
648
+ last line with an empty strip + cut-off border below it — one continuous gutter. The .num cell is 58px
649
+ wide + 8px padding each side + 1px border ≈ 75px; the gradient mirrors that. (pre-wrap = no h-scroll, so
650
+ a fixed background stays aligned.) */
651
+ .source-body:not(.empty):not(.image-body) {
652
+ background-image: linear-gradient(to right, var(--line) 0 74px, var(--border) 74px 75px, var(--panel) 75px);
653
+ background-repeat: no-repeat;
654
+ }
655
+ /* Boot overlay: painted the instant the review HTML loads, removed once the renderer's bootstrap has drawn
656
+ the diff/tree — so there's no blank screen between the startup spinner and first render. Mirrors
657
+ app-main's LOADING_HTML spinner exactly so the hand-off from the loading screen is seamless. */
658
+ #boot-overlay {
659
+ position: fixed; inset: 0; z-index: 200;
660
+ display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px;
661
+ background: #2b2b2b; color: #9aa4af;
662
+ font: 13px -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
663
+ transition: opacity 0.22s ease;
664
+ }
665
+ #boot-overlay.hide { opacity: 0; pointer-events: none; }
666
+ .boot-spinner {
667
+ width: 34px; height: 34px;
668
+ border: 3px solid #3a3a3a; border-top-color: #4a9eff; border-radius: 50%;
669
+ animation: boot-spin 0.8s linear infinite;
670
+ }
671
+ @keyframes boot-spin { to { transform: rotate(360deg); } }
632
672
  /* Empty state ("Select a file…") centered in the available space, not top-left. */
633
673
  .source-body.empty {
634
674
  display: flex;
@@ -688,7 +728,8 @@ h1 { margin: 0; font-size: 18px; }
688
728
  .source-row.md-row.cursor-line .num,
689
729
  .source-row.csv-row.cursor-line .num { color: var(--active); }
690
730
  .num {
691
- width: 58px;
731
+ width: 75px;
732
+ box-sizing: border-box; /* fixed 75px total so the .source-body gutter gradient lines up exactly (no bleed) */
692
733
  user-select: none;
693
734
  text-align: right;
694
735
  color: var(--muted);
@@ -760,6 +801,12 @@ h1 { margin: 0; font-size: 18px; }
760
801
  .mc-modal-head span { margin-right: auto; }
761
802
  .mc-modal-text { width: 100%; height: 100%; box-sizing: border-box; resize: none; border: 0; padding: 12px; background: var(--bg); color: var(--text); font: 12px/1.55 Monaco, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
762
803
  .mc-modal-text:focus { outline: none; }
804
+ /* Prompt memo: split editor | live Markdown preview inside the standard modal shell. */
805
+ .mc-memo-body { display: grid; grid-template-columns: 1fr 1fr; min-height: 0; height: 100%; }
806
+ .mc-memo-edit { height: 100%; border-right: 1px solid var(--border); }
807
+ .mc-memo-preview { height: 100%; overflow: auto; padding: 12px 16px; background: var(--panel); color: var(--text); }
808
+ .mc-memo-preview > :first-child { margin-top: 0; }
809
+ .mc-memo-empty { color: var(--muted); font-size: 12px; font-style: italic; }
763
810
  .tok-comment { color: var(--token-comment); font-style: italic; }
764
811
  .tok-keyword { color: var(--token-keyword); font-weight: 650; }
765
812
  .tok-string { color: var(--token-string); }
@@ -1074,9 +1121,11 @@ h1 { margin: 0; font-size: 18px; }
1074
1121
  .terminal-pane-label[contenteditable="true"] { color: var(--text); background: var(--bg); outline: none; }
1075
1122
  .terminal-pane.is-active .terminal-pane-label { color: var(--text); }
1076
1123
  .terminal-pane-host { flex: 1 1 auto; min-width: 0; min-height: 0; padding: 4px 0 4px 8px; }
1077
- .terminal-pane.is-active { box-shadow: inset 2px 0 0 var(--active); }
1124
+ /* No border on the active pane the inactive panes dim back instead, so the focused one stands out
1125
+ cleanly without an outline. Only applies with 2+ panes (a lone pane is never dimmed; see setActive). */
1126
+ .terminal-pane { transition: opacity 120ms ease; }
1127
+ .terminal-panel:not(.send-mode) .terminal-pane.is-inactive { opacity: 0.4; }
1078
1128
  /* Pane-pick mode (merged "Send to terminal"): chosen pane ringed + full opacity, the rest dimmed. */
1079
- .terminal-panel.send-mode .terminal-pane { transition: opacity 120ms ease; }
1080
1129
  .terminal-pane.is-dimmed { opacity: 0.3; }
1081
1130
  .terminal-pane.is-send-target { box-shadow: inset 0 0 0 2px var(--active); opacity: 1; position: relative; }
1082
1131
  /* Faint ⏎ hint floating over the chosen pane; it vanishes the instant Enter exits send mode. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happy-nut/monacori",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Validation control plane for AI-generated code changes.",
5
5
  "type": "module",
6
6
  "repository": {
Binary file
Binary file