showpane 0.4.18 → 0.4.20
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
0.4.
|
|
1
|
+
0.4.20
|
|
@@ -133,7 +133,10 @@ If the helper fails, stop and tell the user to run `/portal-setup` again instead
|
|
|
133
133
|
of guessing with ad-hoc SQL.
|
|
134
134
|
|
|
135
135
|
Do not probe `showpane --help`, `package.json`, `scripts/`, `prisma/`, or template
|
|
136
|
-
directories just to understand the project.
|
|
136
|
+
directories just to understand the project. Do not call `check-slug.ts` with
|
|
137
|
+
anything except `--org-id`.
|
|
138
|
+
|
|
139
|
+
The canonical references for this skill are:
|
|
137
140
|
|
|
138
141
|
- the configured `APP_PATH`
|
|
139
142
|
- the configured `ORG_SLUG`
|
|
@@ -191,10 +194,10 @@ the user chose `/portal-create` because they want the fast path, not a wizard.
|
|
|
191
194
|
3. **onboarding** — Welcome, setup steps, resources. Best for new client onboarding.
|
|
192
195
|
4. **blank** — Start from scratch with just an overview tab.
|
|
193
196
|
|
|
194
|
-
Read the chosen template file from
|
|
197
|
+
Read the chosen template file from the exact toolchain path for structural inspiration:
|
|
195
198
|
|
|
196
199
|
```bash
|
|
197
|
-
cat "$SKILL_DIR/templates
|
|
200
|
+
cat "$SKILL_DIR/templates/<chosen-template>/<chosen-template>-client.tsx"
|
|
198
201
|
```
|
|
199
202
|
|
|
200
203
|
Always also read the example portal as your quality and style reference:
|
|
@@ -205,6 +208,9 @@ cat "$APP_PATH/src/app/(portal)/client/example/example-client.tsx"
|
|
|
205
208
|
|
|
206
209
|
The template provides content structure. The example provides quality and styling. Match the example's patterns: card styles, typography, spacing, responsive breakpoints. Templates are inspiration, not rigid scaffolds. Adapt the structure to fit the actual content.
|
|
207
210
|
|
|
211
|
+
Do not search the repo for templates or ask the filesystem where templates live.
|
|
212
|
+
Use the selected template and the exact `SKILL_DIR` path above.
|
|
213
|
+
|
|
208
214
|
### Step 5: Analyze transcript (if available)
|
|
209
215
|
|
|
210
216
|
If a transcript was provided (from Granola or pasted), analyze it to extract:
|
|
@@ -38,7 +38,10 @@ If the helper fails, stop and tell the user to run `/portal-setup` again instead
|
|
|
38
38
|
of guessing with ad-hoc SQL.
|
|
39
39
|
|
|
40
40
|
Do not probe `showpane --help`, `package.json`, `scripts/`, `prisma/`, or template
|
|
41
|
-
directories just to understand the project.
|
|
41
|
+
directories just to understand the project. Do not call `check-slug.ts` with
|
|
42
|
+
anything except `--org-id`.
|
|
43
|
+
|
|
44
|
+
The canonical references for this skill are:
|
|
42
45
|
|
|
43
46
|
- the configured `APP_PATH`
|
|
44
47
|
- the configured `ORG_SLUG`
|
|
@@ -96,10 +99,10 @@ the user chose `/portal-create` because they want the fast path, not a wizard.
|
|
|
96
99
|
3. **onboarding** — Welcome, setup steps, resources. Best for new client onboarding.
|
|
97
100
|
4. **blank** — Start from scratch with just an overview tab.
|
|
98
101
|
|
|
99
|
-
Read the chosen template file from
|
|
102
|
+
Read the chosen template file from the exact toolchain path for structural inspiration:
|
|
100
103
|
|
|
101
104
|
```bash
|
|
102
|
-
cat "$SKILL_DIR/templates
|
|
105
|
+
cat "$SKILL_DIR/templates/<chosen-template>/<chosen-template>-client.tsx"
|
|
103
106
|
```
|
|
104
107
|
|
|
105
108
|
Always also read the example portal as your quality and style reference:
|
|
@@ -110,6 +113,9 @@ cat "$APP_PATH/src/app/(portal)/client/example/example-client.tsx"
|
|
|
110
113
|
|
|
111
114
|
The template provides content structure. The example provides quality and styling. Match the example's patterns: card styles, typography, spacing, responsive breakpoints. Templates are inspiration, not rigid scaffolds. Adapt the structure to fit the actual content.
|
|
112
115
|
|
|
116
|
+
Do not search the repo for templates or ask the filesystem where templates live.
|
|
117
|
+
Use the selected template and the exact `SKILL_DIR` path above.
|
|
118
|
+
|
|
113
119
|
### Step 5: Analyze transcript (if available)
|
|
114
120
|
|
|
115
121
|
If a transcript was provided (from Granola or pasted), analyze it to extract:
|
package/dist/index.js
CHANGED
|
@@ -1554,11 +1554,18 @@ async function openClaude(args) {
|
|
|
1554
1554
|
async function login() {
|
|
1555
1555
|
printBanner();
|
|
1556
1556
|
ensureShowpaneShim();
|
|
1557
|
+
const config = readShowpaneConfig();
|
|
1557
1558
|
blue("Authenticating with Showpane...");
|
|
1558
1559
|
console.log();
|
|
1559
1560
|
let initRes;
|
|
1560
1561
|
try {
|
|
1561
|
-
initRes = await fetch(`${API_BASE}/api/cli/init`, {
|
|
1562
|
+
initRes = await fetch(`${API_BASE}/api/cli/init`, {
|
|
1563
|
+
method: "POST",
|
|
1564
|
+
headers: { "Content-Type": "application/json" },
|
|
1565
|
+
body: JSON.stringify({
|
|
1566
|
+
orgSlug: typeof config.orgSlug === "string" ? config.orgSlug : ""
|
|
1567
|
+
})
|
|
1568
|
+
});
|
|
1562
1569
|
} catch (errorLike) {
|
|
1563
1570
|
const message = errorLike instanceof Error ? errorLike.message : String(errorLike);
|
|
1564
1571
|
throw new Error(
|
|
@@ -1590,14 +1597,14 @@ async function login() {
|
|
|
1590
1597
|
}
|
|
1591
1598
|
const data = await pollRes.json();
|
|
1592
1599
|
if (data.status !== "approved") continue;
|
|
1593
|
-
const
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
const currentWorkspace = findWorkspaceRoot(process.cwd()) ?? (
|
|
1600
|
+
const config2 = readShowpaneConfig();
|
|
1601
|
+
config2.accessToken = data.accessToken;
|
|
1602
|
+
config2.accessTokenExpiresAt = data.tokenExpiresAt;
|
|
1603
|
+
config2.orgSlug = data.orgSlug;
|
|
1604
|
+
config2.portalUrl = data.portalUrl;
|
|
1605
|
+
const currentWorkspace = findWorkspaceRoot(process.cwd()) ?? (config2.app_path ? findWorkspaceRoot(config2.app_path) ?? resolve(config2.app_path) : null);
|
|
1599
1606
|
if (currentWorkspace) {
|
|
1600
|
-
updateWorkspaceFromConfig(
|
|
1607
|
+
updateWorkspaceFromConfig(config2, currentWorkspace, {
|
|
1601
1608
|
name: basename(currentWorkspace),
|
|
1602
1609
|
deployMode: "cloud",
|
|
1603
1610
|
orgSlug: data.orgSlug
|
|
@@ -1607,9 +1614,9 @@ async function login() {
|
|
|
1607
1614
|
} catch {
|
|
1608
1615
|
}
|
|
1609
1616
|
} else {
|
|
1610
|
-
|
|
1617
|
+
config2.deploy_mode = "cloud";
|
|
1611
1618
|
}
|
|
1612
|
-
writeShowpaneConfig(
|
|
1619
|
+
writeShowpaneConfig(config2);
|
|
1613
1620
|
console.log();
|
|
1614
1621
|
green(`Authenticated! Connected to ${BOLD}${data.orgSlug}${RESET}`);
|
|
1615
1622
|
console.log();
|