litura-app 0.3.0 → 0.3.2
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/CHANGELOG.md +8 -0
- package/package.json +1 -1
- package/public/app.js +12 -1
- package/public/index.html +17 -18
- package/public/style.css +6 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,14 @@ number carries breaking changes.
|
|
|
5
5
|
|
|
6
6
|
## Unreleased
|
|
7
7
|
|
|
8
|
+
## 0.3.2 — 2026-09-07
|
|
9
|
+
|
|
10
|
+
- Moved the Slop Score next to the settings control in the editor header.
|
|
11
|
+
|
|
12
|
+
## 0.3.1 — 2026-09-07
|
|
13
|
+
|
|
14
|
+
- The update badge now copies `npx litura-app` instead of opening a changelog, so the next update command is ready to paste.
|
|
15
|
+
|
|
8
16
|
## 0.3.0 — 2026-09-07
|
|
9
17
|
|
|
10
18
|
- Review remarks stay beside the passage they describe without shifting the draft when opened or clicked.
|
package/package.json
CHANGED
package/public/app.js
CHANGED
|
@@ -18566,10 +18566,21 @@
|
|
|
18566
18566
|
updateBadge.hidden = !stale;
|
|
18567
18567
|
if (stale) {
|
|
18568
18568
|
updateBadge.textContent = `${latest} available`;
|
|
18569
|
-
updateBadge.title =
|
|
18569
|
+
updateBadge.title = "Copy npx litura-app to update";
|
|
18570
18570
|
}
|
|
18571
18571
|
updateStatus.textContent = error ? `Running ${current} \u2014 npm could not be reached.` : stale ? `Running ${current}; npm publishes ${latest}.` : latest ? `Running ${current} \u2014 the published version.` : `Running ${current}.`;
|
|
18572
18572
|
}
|
|
18573
|
+
updateBadge.addEventListener("click", async () => {
|
|
18574
|
+
if (updateBadge.hidden) return;
|
|
18575
|
+
const command2 = "npx litura-app";
|
|
18576
|
+
try {
|
|
18577
|
+
await navigator.clipboard.writeText(command2);
|
|
18578
|
+
updateBadge.textContent = `Copied: ${command2}`;
|
|
18579
|
+
} catch {
|
|
18580
|
+
updateBadge.textContent = `Run: ${command2}`;
|
|
18581
|
+
}
|
|
18582
|
+
updateBadge.title = command2;
|
|
18583
|
+
});
|
|
18573
18584
|
async function refreshUpdate({ force = false } = {}) {
|
|
18574
18585
|
let cached = null;
|
|
18575
18586
|
try {
|
package/public/index.html
CHANGED
|
@@ -33,24 +33,23 @@
|
|
|
33
33
|
<button type="button" id="file-history">History</button>
|
|
34
34
|
</div>
|
|
35
35
|
<span id="save-status" role="status"></span>
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</button>
|
|
36
|
+
<!-- Only shown when a newer version exists. Clicking it copies the
|
|
37
|
+
update command; the running process is never replaced in place. -->
|
|
38
|
+
<button type="button" class="update-badge" id="update-badge" hidden></button>
|
|
39
|
+
<div class="header-actions">
|
|
40
|
+
<button type="button" class="style-score" id="style-score" hidden title="Local slop score">
|
|
41
|
+
<span class="style-score-label">Slop Score</span>
|
|
42
|
+
<span id="style-score-value"></span>
|
|
43
|
+
</button>
|
|
44
|
+
<button class="settings-open" id="settings-open" title="Model and access" aria-label="Model and access">
|
|
45
|
+
<svg viewBox="0 0 20 20" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round">
|
|
46
|
+
<path d="M3 5h14M3 10h14M3 15h14"/>
|
|
47
|
+
<circle cx="7" cy="5" r="1.5" fill="var(--surface)"/>
|
|
48
|
+
<circle cx="13" cy="10" r="1.5" fill="var(--surface)"/>
|
|
49
|
+
<circle cx="9" cy="15" r="1.5" fill="var(--surface)"/>
|
|
50
|
+
</svg>
|
|
51
|
+
</button>
|
|
52
|
+
</div>
|
|
54
53
|
</div>
|
|
55
54
|
<div id="editor-wrapper"></div>
|
|
56
55
|
<!-- Remarks about a place in the text stand next to that place. Below
|
package/public/style.css
CHANGED
|
@@ -485,7 +485,8 @@ html, body {
|
|
|
485
485
|
transition: background var(--motion, .12s) ease, color .12s ease;
|
|
486
486
|
}
|
|
487
487
|
|
|
488
|
-
.
|
|
488
|
+
.header-actions { display: inline-flex; align-items: center; gap: 8px; margin-left: auto; }
|
|
489
|
+
.settings-open { margin-left: 0; }
|
|
489
490
|
.settings-open svg { width: 17px; height: 17px; }
|
|
490
491
|
|
|
491
492
|
.icon-btn:hover,
|
|
@@ -497,7 +498,7 @@ html, body {
|
|
|
497
498
|
/* Local slop score — computed in the browser, so it updates as you type.
|
|
498
499
|
Click it for the words behind the number. */
|
|
499
500
|
.style-score {
|
|
500
|
-
margin-left:
|
|
501
|
+
margin-left: 0;
|
|
501
502
|
padding: 0;
|
|
502
503
|
border: 0;
|
|
503
504
|
background: none;
|
|
@@ -517,12 +518,15 @@ html, body {
|
|
|
517
518
|
mid-sentence; this must not compete with the draft. */
|
|
518
519
|
.update-badge {
|
|
519
520
|
padding: 2px 8px;
|
|
521
|
+
border: 0;
|
|
520
522
|
border-radius: var(--r-pill);
|
|
521
523
|
background: var(--fill);
|
|
522
524
|
color: var(--text-2);
|
|
525
|
+
font: inherit;
|
|
523
526
|
font-size: 12px;
|
|
524
527
|
text-decoration: none;
|
|
525
528
|
white-space: nowrap;
|
|
529
|
+
cursor: pointer;
|
|
526
530
|
}
|
|
527
531
|
|
|
528
532
|
.update-badge:hover { background: var(--fill-hover); color: var(--text); }
|