instar 1.3.913 → 1.3.914
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/dashboard/index.html
CHANGED
|
@@ -1067,6 +1067,16 @@
|
|
|
1067
1067
|
line-height: 1.55;
|
|
1068
1068
|
color: var(--text-bright);
|
|
1069
1069
|
}
|
|
1070
|
+
/* Subscriptions is an operational matrix, not a prose reading column.
|
|
1071
|
+
Keep Process Health's calm 760px measure scoped to .ph-root while this
|
|
1072
|
+
tab uses the full app canvas with responsive gutters. */
|
|
1073
|
+
.subscriptions-root {
|
|
1074
|
+
grid-column: 1 / -1;
|
|
1075
|
+
max-width: none;
|
|
1076
|
+
width: 100%;
|
|
1077
|
+
min-width: 0;
|
|
1078
|
+
box-sizing: border-box;
|
|
1079
|
+
}
|
|
1070
1080
|
.ph-title { font-size: 22px; font-weight: 600; color: var(--text-bright); line-height: 1.5; }
|
|
1071
1081
|
.ph-stamp { font-size: 14px; color: var(--text-dim); }
|
|
1072
1082
|
.ph-headline-wrap { margin: 4px 0 8px; }
|
|
@@ -3615,6 +3625,7 @@
|
|
|
3615
3625
|
.sub-empty, .sub-disabled { font-size:13px; opacity:.7; padding:8px 0; }
|
|
3616
3626
|
/* account-machine-matrix grid */
|
|
3617
3627
|
.sub-matrix { border-collapse:collapse; width:100%; font-size:13px; }
|
|
3628
|
+
#subMatrix { width:100%; min-width:0; overflow-x:auto; }
|
|
3618
3629
|
.sub-matrix th, .sub-matrix td { border:1px solid var(--border,#2a2a2a); padding:8px 10px; text-align:center; vertical-align:top; }
|
|
3619
3630
|
.sub-matrix-acct { text-align:left; font-weight:600; word-break:break-all; }
|
|
3620
3631
|
.sub-matrix-mach { font-weight:600; }
|
|
@@ -3634,6 +3645,9 @@
|
|
|
3634
3645
|
.sub-matrix-cancel, .sub-matrix-collapse { margin-top:4px; margin-left:4px; padding:2px 8px; cursor:pointer; font-size:11px; opacity:.85; }
|
|
3635
3646
|
.sub-matrix-held-detail { font-size:11px; color:#f87171; margin-top:4px; }
|
|
3636
3647
|
.sub-matrix-done-detail { font-size:11px; margin-top:4px; }
|
|
3648
|
+
.sub-matrix-outcome { margin-top:6px; padding:7px 8px; border-radius:7px; text-align:left; font-size:12px; line-height:1.4; }
|
|
3649
|
+
.sub-matrix-outcome-done { color:#22c55e; background:rgba(22,163,74,.10); border:1px solid rgba(22,163,74,.35); }
|
|
3650
|
+
.sub-matrix-outcome-failed { color:#fca5a5; background:rgba(248,113,113,.08); border:1px solid rgba(248,113,113,.30); }
|
|
3637
3651
|
.sub-matrix-cell.sub-matrix-held .sub-matrix-glyph, .sub-matrix-cell.sub-matrix-expired .sub-matrix-glyph, .sub-matrix-cell.sub-matrix-broken .sub-matrix-glyph { color:#f87171; }
|
|
3638
3652
|
.sub-matrix-cell.sub-matrix-done .sub-matrix-glyph { color:#22c55e; font-weight:600; }
|
|
3639
3653
|
.sub-matrix-cell.sub-matrix-just-verified { background:rgba(22,163,74,.14); outline:2px solid #16a34a; animation:subVerifiedPulse 1.2s ease-in-out 3; }
|
|
@@ -3644,10 +3658,16 @@
|
|
|
3644
3658
|
.sub-pending-failed-head { color:#f87171; font-weight:600; }
|
|
3645
3659
|
.sub-pending-outcome-body { font-size:12px; opacity:.85; margin-top:4px; }
|
|
3646
3660
|
.sub-pending-status { font-size:12px; opacity:.85; margin-top:6px; }
|
|
3661
|
+
@media (max-width: 600px) {
|
|
3662
|
+
.subscriptions-root { padding:18px 14px !important; gap:18px !important; }
|
|
3663
|
+
.subscriptions-root .ph-h-sub { font-size:14px; }
|
|
3664
|
+
.sub-matrix { min-width:620px; }
|
|
3665
|
+
.sub-account { padding:12px; }
|
|
3666
|
+
}
|
|
3647
3667
|
</style>
|
|
3648
|
-
<div id="subscriptionsPanel" class="
|
|
3668
|
+
<div id="subscriptionsPanel" class="tab-panel subscriptions-root" style="display:none;flex-direction:column;padding:28px;gap:24px;overflow-y:auto">
|
|
3649
3669
|
<h2 class="ph-title">Subscriptions</h2>
|
|
3650
|
-
<p class="ph-intro">Your subscription accounts
|
|
3670
|
+
<p class="ph-intro">Your subscription accounts, where each one is set up, and how much usage remains before it resets.</p>
|
|
3651
3671
|
<!-- One-tap follow-me Approve card(s) — rendered only when another machine could use one of
|
|
3652
3672
|
your subscriptions (ws52-operator-tap-not-text Part A). Leads the panel as the primary
|
|
3653
3673
|
action when present; silent otherwise. -->
|
|
@@ -3665,11 +3685,6 @@
|
|
|
3665
3685
|
<p class="ph-h-sub">Each account’s live usage (5-hour and weekly) and when it resets.</p>
|
|
3666
3686
|
<div id="subAccounts"></div>
|
|
3667
3687
|
</section>
|
|
3668
|
-
<section class="ph-section">
|
|
3669
|
-
<h3 class="ph-h">Pending logins</h3>
|
|
3670
|
-
<p class="ph-h-sub">A mirror of every sign-in still in flight (each grid cell above carries its own complete flow) — plus explicit “done” and “didn’t finish” cards. An expired code is re-issued automatically.</p>
|
|
3671
|
-
<div id="subPending"></div>
|
|
3672
|
-
</section>
|
|
3673
3688
|
</div>
|
|
3674
3689
|
|
|
3675
3690
|
<!-- mandates tab (coordination-mandate spec, decision 2A — the operator's PIN-gated surface) -->
|
|
@@ -8831,7 +8846,6 @@
|
|
|
8831
8846
|
if (!__subController) {
|
|
8832
8847
|
const els = {
|
|
8833
8848
|
accounts: document.getElementById('subAccounts'),
|
|
8834
|
-
pending: document.getElementById('subPending'),
|
|
8835
8849
|
followMe: document.getElementById('subFollowMe'),
|
|
8836
8850
|
matrix: document.getElementById('subMatrix'),
|
|
8837
8851
|
};
|
|
@@ -726,6 +726,10 @@ export function renderAccountMatrix(doc, target, poolScope, pendingScope, transi
|
|
|
726
726
|
td.appendChild(el(doc, 'div', 'sub-matrix-held-detail',
|
|
727
727
|
'Its sign-in window closed before finishing — tap Retry to start a fresh sign-in.'));
|
|
728
728
|
}
|
|
729
|
+
if (c.state === 'expired') {
|
|
730
|
+
td.appendChild(el(doc, 'div', 'sub-matrix-outcome sub-matrix-outcome-failed',
|
|
731
|
+
'Didn’t finish — the sign-in link expired before this account was set up.'));
|
|
732
|
+
}
|
|
729
733
|
td.appendChild(btn);
|
|
730
734
|
} else if (c.state === 'in-progress' && c.login && c.login.verificationUrl) {
|
|
731
735
|
// The cell carries the COMPLETE flow, rebuilt from SERVER pending-login state
|
|
@@ -743,6 +747,10 @@ export function renderAccountMatrix(doc, target, poolScope, pendingScope, transi
|
|
|
743
747
|
: (justVerified && c.state === 'active' ? 'Active — just set up' : MATRIX_CELL_WORD[c.state]);
|
|
744
748
|
const glyph = MATRIX_CELL_GLYPH[c.state] || '';
|
|
745
749
|
td.appendChild(el(doc, 'span', 'sub-matrix-glyph', `${glyph} ${word}`.trim()));
|
|
750
|
+
if (justVerified) {
|
|
751
|
+
td.appendChild(el(doc, 'div', 'sub-matrix-outcome sub-matrix-outcome-done',
|
|
752
|
+
'Done — this account is set up on this machine.'));
|
|
753
|
+
}
|
|
746
754
|
// An in-progress (◷) cell gets a tappable Cancel so a mis-tapped setup can be
|
|
747
755
|
// reversed (abandon the login + tear down its pane). Emitted on the DURABLE
|
|
748
756
|
// re-rendered cell (not just the live sign-in DOM) so it survives the poll loop.
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./builtin-manifest.schema.json",
|
|
3
3
|
"schemaVersion": 1,
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"instarVersion": "1.3.
|
|
4
|
+
"generatedAt": "2026-07-23T19:01:26.413Z",
|
|
5
|
+
"instarVersion": "1.3.914",
|
|
6
6
|
"entryCount": 202,
|
|
7
7
|
"entries": {
|
|
8
8
|
"hook:session-start": {
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Upgrade Guide — vNEXT
|
|
2
|
+
|
|
3
|
+
<!-- assembled-by: assemble-next-md -->
|
|
4
|
+
<!-- bump: patch -->
|
|
5
|
+
|
|
6
|
+
## What Changed
|
|
7
|
+
|
|
8
|
+
The dashboard Subscriptions tab now uses the full operational canvas instead of
|
|
9
|
+
the Process Health reading-column width. Its deprecated Pending logins mirror
|
|
10
|
+
is removed; completed and expired sign-ins report directly in their owning
|
|
11
|
+
account-machine cell.
|
|
12
|
+
|
|
13
|
+
## What to Tell Your User
|
|
14
|
+
|
|
15
|
+
Subscriptions is easier to use on both wide monitors and phones. The
|
|
16
|
+
account-by-machine grid has room to breathe, and sign-in progress and outcomes
|
|
17
|
+
now stay in the cell where the sign-in was started instead of being duplicated
|
|
18
|
+
in a separate panel.
|
|
19
|
+
|
|
20
|
+
## Summary of New Capabilities
|
|
21
|
+
|
|
22
|
+
- Fluid desktop layout with mobile-safe matrix scrolling.
|
|
23
|
+
- In-cell “Done” and “Didn’t finish” sign-in outcomes.
|
|
24
|
+
- One canonical sign-in surface instead of a duplicate Pending logins panel.
|
|
25
|
+
|
|
26
|
+
## Evidence
|
|
27
|
+
|
|
28
|
+
- `tests/unit/subscriptions-render.test.ts`
|
|
29
|
+
- `tests/unit/dashboard-panel-placement.test.ts`
|
|
30
|
+
- `tests/integration/subscriptions-tab.test.ts`
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Side-Effects Review — Subscriptions fluid layout
|
|
2
|
+
|
|
3
|
+
**Version / slug:** `subscriptions-fluid-layout`
|
|
4
|
+
**Date:** `2026-07-23`
|
|
5
|
+
**Author:** Instar Agent (instar-codey)
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
Subscriptions now owns a fluid operational layout instead of inheriting Process
|
|
10
|
+
Health’s reading-column width. The deprecated Pending logins mirror is removed,
|
|
11
|
+
with terminal outcome copy carried by the owning matrix cell.
|
|
12
|
+
|
|
13
|
+
## Decision-point inventory
|
|
14
|
+
|
|
15
|
+
- `.subscriptions-root` owns width and responsive gutters.
|
|
16
|
+
- `.ph-root` is unchanged.
|
|
17
|
+
- The pending-login endpoint remains because it feeds the matrix state model.
|
|
18
|
+
- Expired and completed flows render explicit in-cell outcome cards.
|
|
19
|
+
|
|
20
|
+
## Seven-dimension review
|
|
21
|
+
|
|
22
|
+
1. **Over-block:** narrow viewports retain access through horizontal matrix
|
|
23
|
+
scrolling; no controls are hidden.
|
|
24
|
+
2. **Under-block:** a structural test fails if Subscriptions regains `.ph-root`
|
|
25
|
+
or the deprecated `subPending` mount returns.
|
|
26
|
+
3. **Abstraction:** layout belongs to dashboard CSS; terminal presentation
|
|
27
|
+
belongs to the existing matrix renderer.
|
|
28
|
+
4. **Signal vs authority:** pending-login and pool reads remain authoritative;
|
|
29
|
+
the UI only projects them.
|
|
30
|
+
5. **Interactions:** controller polling and API contracts are unchanged.
|
|
31
|
+
6. **External surfaces:** only the Subscriptions dashboard tab changes.
|
|
32
|
+
7. **Rollback:** markup/CSS/renderer revert; no data repair.
|
|
33
|
+
|
|
34
|
+
## Operator surface quality
|
|
35
|
+
|
|
36
|
+
The matrix uses the available desktop canvas, has mobile gutters, and keeps
|
|
37
|
+
terminal feedback next to the action that produced it. No duplicate panel asks
|
|
38
|
+
the operator to reconcile two copies of one flow.
|
|
39
|
+
|
|
40
|
+
## Evidence
|
|
41
|
+
|
|
42
|
+
Renderer, panel-placement, tab-purpose, and Subscriptions integration tests
|
|
43
|
+
cover both the fluid boundary and outcome presentation.
|