driggsby 0.5.1 → 0.5.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.
@@ -23,9 +23,12 @@ export function hostPageHtml(slug, appOrigin, background) {
23
23
  <meta name="viewport" content="width=device-width, initial-scale=1">
24
24
  <title>${slug} — driggsby dev</title>
25
25
  <style>
26
- /* The strip above the frame is the console's title row, in its own
27
- measured values: 46px tall on the black ground, 14px ink, a 14%
28
- white hairline under it. */
26
+ /* The strip above the frame is the console's title row over a
27
+ dashboard, in its own measured values: 46px tall on the black
28
+ ground with no rule under it, the name centered in 14px ink, and
29
+ the side slot in the row's quiet 14px tertiary. Equal side tracks
30
+ keep the name centered; the slot ellipsizes only when the two
31
+ would otherwise meet. */
29
32
  * { box-sizing: border-box; }
30
33
  html { color-scheme: dark; }
31
34
  body {
@@ -37,26 +40,42 @@ export function hostPageHtml(slug, appOrigin, background) {
37
40
  color: #fafafa;
38
41
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
39
42
  font-size: 14px;
40
- line-height: 21px;
43
+ line-height: 1.5;
41
44
  -webkit-font-smoothing: antialiased;
42
45
  }
43
46
  header {
44
- display: flex;
47
+ display: grid;
48
+ grid-template-columns: minmax(0, 1fr) fit-content(60%) minmax(0, 1fr);
49
+ column-gap: 16px;
45
50
  align-items: center;
46
- justify-content: space-between;
47
51
  height: 46px;
48
- padding: 0 16px;
49
- border-bottom: 1px solid rgba(255, 255, 255, 0.14);
52
+ padding: 0 20px;
53
+ border-bottom: 1px solid transparent;
54
+ }
55
+ header .slug,
56
+ header .mode {
57
+ grid-row: 1;
58
+ min-width: 0;
59
+ overflow: hidden;
60
+ text-overflow: ellipsis;
61
+ white-space: nowrap;
62
+ }
63
+ header .slug { grid-column: 2; }
64
+ header .mode {
65
+ grid-column: 3;
66
+ justify-self: end;
67
+ max-width: 100%;
68
+ color: #a1a1a1;
50
69
  }
51
- header .slug { font-weight: 500; }
52
- header .mode { color: #a1a1a1; font-size: 13px; }
53
70
  iframe {
54
71
  flex: 1;
55
72
  width: 100%;
56
73
  border: none;
57
74
  /* The app's declared background from driggsby.json, painted while
58
- the app loads — the same surface the production host shows. */
59
- background: ${background ?? "#000000"};
75
+ the app loads — the same surface the production host shows. With
76
+ none declared, Driggsby's own: its card surface on the black
77
+ page. */
78
+ background: ${background ?? "#0a0a0a"};
60
79
  }
61
80
  </style>
62
81
  </head>
@@ -1,25 +1,35 @@
1
1
  // The scaffold's styles.css. A deployed app lives inside Driggsby's dark
2
2
  // chrome, so the page is dark by default and its values are Driggsby's
3
- // own: the console's ground, card rung, hairline, ink ramp, radii, and
4
- // type sizes, written out as plain colors because the app is its own
5
- // origin and cannot read the console's stylesheet. --bg-app must stay
6
- // equal to driggsby.json's "background" (init-command.test.ts pins the
7
- // two together): Driggsby paints that color while the app loads.
3
+ // own: the console's palette, type, insets, and page column, measured off
4
+ // the console itself. The app is its own origin and cannot read the
5
+ // console's stylesheet, so each gray is written as the console paints it
6
+ // on its black page (the console's cards and fills are translucent over
7
+ // that ground) and each hue verbatim. The :root block is the same one
8
+ // Driggsby's own example dashboard carries. --bg-app must stay equal to
9
+ // driggsby.json's "background" (init-command.test.ts pins the two
10
+ // together): Driggsby paints that color while the app loads.
8
11
  export const STYLES_CSS = `/* Driggsby's console palette, so this page reads as part of the app it
9
12
  opens inside. Change these together if you re-theme; keep --bg-app equal
10
- to the "background" in driggsby.json. */
13
+ to the "background" in driggsby.json. The status tones are the
14
+ console's own, for gains, losses, warnings, and a live dot. */
11
15
  :root {
12
16
  color-scheme: dark;
13
17
  --bg-app: #000000;
14
18
  --bg-card: #0a0a0a;
15
19
  --bg-mute: #262626;
16
20
  --hairline: rgba(255, 255, 255, 0.14);
21
+ --hairline-strong: rgba(255, 255, 255, 0.22);
17
22
  --text-primary: #fafafa;
18
23
  --text-secondary: #c4c4c4;
19
24
  --text-tertiary: #a1a1a1;
25
+ --status-success: oklch(0.72 0.14 160);
26
+ --text-success: oklch(0.82 0.11 160);
27
+ --text-warning: oklch(0.85 0.11 85);
28
+ --text-error: oklch(0.8 0.13 25);
20
29
  --radius-card: 8px;
21
30
  --radius-bar: 4px;
22
31
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
32
+ --ease: cubic-bezier(0.2, 0, 0, 1);
23
33
  }
24
34
 
25
35
  * {
@@ -32,21 +42,25 @@ body {
32
42
  color: var(--text-primary);
33
43
  font-family: var(--font-sans);
34
44
  font-size: 14px;
35
- line-height: 21px;
45
+ line-height: 1.5;
36
46
  -webkit-font-smoothing: antialiased;
37
47
  }
38
48
 
49
+ /* The console's page column. */
39
50
  main {
40
- max-width: 800px;
51
+ max-width: 75rem;
41
52
  margin: 0 auto;
42
- padding: 24px 24px 64px;
53
+ padding: 24px;
54
+ }
55
+
56
+ main > header {
57
+ margin-bottom: 20px;
43
58
  }
44
59
 
45
60
  h1 {
46
61
  margin: 0;
47
62
  font-size: 24px;
48
63
  font-weight: 600;
49
- line-height: 36px;
50
64
  letter-spacing: -0.02em;
51
65
  }
52
66
 
@@ -54,24 +68,19 @@ h2 {
54
68
  margin: 24px 0 12px;
55
69
  font-size: 14px;
56
70
  font-weight: 500;
57
- line-height: 21px;
58
71
  letter-spacing: -0.02em;
59
72
  }
60
73
 
61
- /* One card, four cells; the 1px gap over the card's own hairline color
62
- draws the divider between cells however the grid wraps. */
74
+ /* The console's stat tiles: a card per figure, 16px apart, the row
75
+ capped at the console's 920px. */
63
76
  .stat-grid {
64
77
  display: grid;
65
78
  grid-template-columns: repeat(4, minmax(0, 1fr));
66
- gap: 1px;
67
- margin-top: 24px;
68
- border: 1px solid var(--hairline);
69
- border-radius: var(--radius-card);
70
- background: var(--hairline);
71
- overflow: hidden;
79
+ gap: 16px;
80
+ max-width: 920px;
72
81
  }
73
82
 
74
- @media (max-width: 640px) {
83
+ @media (max-width: 900px) {
75
84
  .stat-grid {
76
85
  grid-template-columns: repeat(2, minmax(0, 1fr));
77
86
  }
@@ -86,22 +95,22 @@ h2 {
86
95
  .stat {
87
96
  display: flex;
88
97
  flex-direction: column;
89
- padding: 16px;
98
+ padding: 14px 16px;
99
+ border: 1px solid var(--hairline);
100
+ border-radius: var(--radius-card);
90
101
  background: var(--bg-card);
91
102
  }
92
103
 
93
104
  .stat-label {
94
105
  font-size: 13px;
95
- line-height: 20px;
96
106
  color: var(--text-tertiary);
97
107
  }
98
108
 
99
109
  .stat-value {
100
- margin-top: 4px;
110
+ margin-top: 2px;
101
111
  font-size: 20px;
102
112
  font-weight: 600;
103
- line-height: 28px;
104
- letter-spacing: -0.02em;
113
+ letter-spacing: -0.01em;
105
114
  font-variant-numeric: tabular-nums;
106
115
  /* A currency string has no natural break, and a clipped balance is a
107
116
  wrong number. If a value ever outgrows its cell, it wraps. */
@@ -165,6 +174,7 @@ h2 {
165
174
  /* Holds its line even when empty, so every row measures the same as
166
175
  the skeleton row it replaces. */
167
176
  min-height: 21px;
177
+ margin-top: 1px;
168
178
  color: var(--text-secondary);
169
179
  overflow: hidden;
170
180
  text-overflow: ellipsis;
@@ -179,10 +189,10 @@ h2 {
179
189
  /* The skeleton ships in the HTML so the first paint is the final layout
180
190
  as muted bars; the first data render replaces it in a dissolve (see the
181
191
  "Settling in" section of app.js). Each bar's margins pad it to exactly
182
- the height of the text it stands in for, and the columns holding
183
- stacked bars are flex so those margins never collapse — the skeleton
184
- page and the data page measure identical, and nothing shifts when data
185
- lands. */
192
+ the height of the text it stands in for (the line, plus any margin the
193
+ text carries), and the columns holding stacked bars are flex so those
194
+ margins never collapse — the skeleton page and the data page measure
195
+ identical, and nothing shifts when data lands. */
186
196
  .skeleton {
187
197
  border-radius: var(--radius-bar);
188
198
  background: var(--bg-mute);
@@ -192,13 +202,13 @@ h2 {
192
202
  .skeleton-label {
193
203
  width: 64px;
194
204
  height: 12px;
195
- margin: 4px 0;
205
+ margin: 3.75px 0;
196
206
  }
197
207
 
198
208
  .skeleton-value {
199
209
  width: 96px;
200
210
  height: 20px;
201
- margin: 8px 0 4px;
211
+ margin: 7px 0 5px;
202
212
  }
203
213
 
204
214
  .skeleton-glyph {
@@ -217,7 +227,7 @@ h2 {
217
227
  .skeleton-institution {
218
228
  width: 110px;
219
229
  height: 12px;
220
- margin: 4.5px 0;
230
+ margin: 5.5px 0 4.5px;
221
231
  }
222
232
 
223
233
  .skeleton-balance {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "driggsby",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "Set up and build on Driggsby, the MCP server for personal finance.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -28,7 +28,7 @@
28
28
  "node": ">=18"
29
29
  },
30
30
  "dependencies": {
31
- "@driggsby/deploy": "0.5.1",
32
- "@driggsby/sdk": "0.5.1"
31
+ "@driggsby/deploy": "0.5.2",
32
+ "@driggsby/sdk": "0.5.2"
33
33
  }
34
34
  }