feat(ui): v1 launch — consumer hero, onboarding flow, Obsidian app card

This commit is contained in:
Garfield
2026-06-12 06:39:07 -04:00
parent f74f90a2f0
commit bc58befd5e
11 changed files with 211 additions and 67 deletions

View File

@@ -1,6 +1,7 @@
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
COPY scripts/ ./scripts/
RUN npm install
COPY tsconfig.json ./
COPY src/ ./src/
@@ -9,6 +10,7 @@ RUN npx tsc
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
COPY scripts/ ./scripts/
RUN npm install --omit=dev
COPY --from=builder /app/dist ./dist
EXPOSE 3456

View File

@@ -510,7 +510,7 @@ app.get('/login', (req, res) => {
<div class="card">
<div class="logo">Square<span>MCP</span></div>
<h1>Sign in to continue</h1>
<p class="sub">Connect your SquareMCP account to authorize access.</p>
<p class="sub">One login connects Claude and ChatGPT to your notes, email, and social accounts.</p>
${errMsg ? `<p class="error">${errMsg}</p>` : ''}
<form method="POST" action="/login">
<input type="hidden" name="return_to" value="${safeReturnTo.replace(/"/g, '&quot;')}">

View File

@@ -768,6 +768,11 @@ function filterPaths(fullSpec: Record<string, unknown>, allowed: Set<string>): R
}
const CHATGPT_PATHS = new Set([
// Obsidian
'/api/obsidian/search',
'/api/obsidian/note',
'/api/obsidian/note/append',
'/api/obsidian/sync',
// Email
'/api/email/profile',
'/api/email/search',
@@ -815,7 +820,7 @@ export function getOpenApiSpecChatGPT(serverUrl: string) {
info: {
...full.info,
title: 'SquareMCP',
description: 'AI Social Media Gateway — send WhatsApp, email, LinkedIn, Instagram, Facebook, Twitter/X, TikTok, Telegram, and Discord messages from ChatGPT.',
description: 'AI assistant for Obsidian notes, email, and social media — search and edit your vault, manage email, and post to WhatsApp, LinkedIn, Instagram, Facebook, Twitter/X, TikTok, Telegram, and Discord from ChatGPT.',
},
paths: filterPaths(full, CHATGPT_PATHS),
};