Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ Transform your Markdown files into beautifully rendered web pages instantly. A f
## Roadmap

- [x] **Public API**: Add a documented programmatic interface for uploads, page management, and third-party integrations.
- [ ] **MCP server**: Add an MCP integration surface for AI agents and tooling workflows that need to work with mdto programmatically.
- [ ] **Image hosting for Markdown**: Upload images referenced in Markdown to mdto automatically, so you do not need to host them somewhere else first.

## Tech Stack
Expand Down
99 changes: 0 additions & 99 deletions client/lib/i18nResources.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,31 +106,6 @@ export const resources = {
description: "Welcome back! Please log in to continue.",
continueWithGithub: "Continue with GitHub",
},
oauth: {
login: {
title: "Sign in to continue",
description: "mdto MCP access requires an authenticated account.",
continueWithGithub: "Continue with GitHub",
continuing: "Continuing OAuth authorization...",
redirecting: "Signed in. Redirecting...",
errors: {
continueAuthorization: "Failed to continue OAuth authorization",
missingRedirectUrl: "Missing OAuth redirect URL",
},
},
consent: {
title: "Authorize mdto access",
description:
"Client {{clientId}} is requesting access to your mdto account.",
requestedScopes: "Requested scopes",
deny: "Deny",
allow: "Allow",
errors: {
processConsent: "Failed to process OAuth consent",
missingRedirectUrl: "Missing OAuth redirect URL",
},
},
},
dashboard: {
title: "Dashboard",
filter: {
Expand Down Expand Up @@ -318,31 +293,6 @@ export const resources = {
description: "돌아오신 것을 환영해요! 계속하려면 로그인하세요.",
continueWithGithub: "GitHub로 계속하기",
},
oauth: {
login: {
title: "계속하려면 로그인",
description: "mdto MCP 액세스에는 인증된 계정이 필요해요.",
continueWithGithub: "GitHub로 계속하기",
continuing: "OAuth 인증을 계속하는 중...",
redirecting: "로그인됨. 이동하는 중...",
errors: {
continueAuthorization: "OAuth 인증을 계속하지 못했어요",
missingRedirectUrl: "OAuth 리디렉션 URL이 없어요",
},
},
consent: {
title: "mdto 접근 권한 승인",
description:
"클라이언트 {{clientId}} 이(가) mdto 계정 접근 권한을 요청하고 있어요.",
requestedScopes: "요청된 권한",
deny: "거부",
allow: "허용",
errors: {
processConsent: "OAuth 동의 처리에 실패했어요",
missingRedirectUrl: "OAuth 리디렉션 URL이 없어요",
},
},
},
dashboard: {
title: "대시보드",
filter: {
Expand Down Expand Up @@ -528,30 +478,6 @@ export const resources = {
description: "欢迎回来!请登录以继续。",
continueWithGithub: "使用 GitHub 继续",
},
oauth: {
login: {
title: "登录以继续",
description: "mdto MCP 访问需要已验证的账户。",
continueWithGithub: "使用 GitHub 继续",
continuing: "正在继续 OAuth 授权...",
redirecting: "已登录,正在跳转...",
errors: {
continueAuthorization: "无法继续 OAuth 授权",
missingRedirectUrl: "缺少 OAuth 重定向 URL",
},
},
consent: {
title: "授权 mdto 访问",
description: "客户端 {{clientId}} 正在请求访问你的 mdto 账户。",
requestedScopes: "请求的权限",
deny: "拒绝",
allow: "允许",
errors: {
processConsent: "处理 OAuth 同意时失败",
missingRedirectUrl: "缺少 OAuth 重定向 URL",
},
},
},
dashboard: {
title: "仪表盘",
filter: {
Expand Down Expand Up @@ -733,31 +659,6 @@ export const resources = {
description: "おかえりなさい。続行するにはログインしてください。",
continueWithGithub: "GitHub で続ける",
},
oauth: {
login: {
title: "続行するにはログイン",
description: "mdto MCP を利用するには認証済みアカウントが必要です。",
continueWithGithub: "GitHub で続ける",
continuing: "OAuth 認可を続行しています...",
redirecting: "ログイン済みです。リダイレクトしています...",
errors: {
continueAuthorization: "OAuth 認可を続行できませんでした",
missingRedirectUrl: "OAuth リダイレクト URL がありません",
},
},
consent: {
title: "mdto へのアクセスを許可",
description:
"クライアント {{clientId}} が mdto アカウントへのアクセスを要求しています。",
requestedScopes: "要求されたスコープ",
deny: "拒否",
allow: "許可",
errors: {
processConsent: "OAuth 同意の処理に失敗しました",
missingRedirectUrl: "OAuth リダイレクト URL がありません",
},
},
},
dashboard: {
title: "ダッシュボード",
filter: {
Expand Down
23 changes: 0 additions & 23 deletions client/lib/oauthSignedQuery.spec.ts

This file was deleted.

21 changes: 0 additions & 21 deletions client/lib/oauthSignedQuery.ts

This file was deleted.

64 changes: 3 additions & 61 deletions client/routeTree.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ import { Route as PrivacyRouteImport } from './routes/privacy'
import { Route as DashboardRouteImport } from './routes/dashboard'
import { Route as UsernameRouteImport } from './routes/$username'
import { Route as IndexRouteImport } from './routes/index'
import { Route as OauthLoginRouteImport } from './routes/oauth.login'
import { Route as OauthConsentRouteImport } from './routes/oauth.consent'

const TermsRoute = TermsRouteImport.update({
id: '/terms',
Expand All @@ -42,34 +40,20 @@ const IndexRoute = IndexRouteImport.update({
path: '/',
getParentRoute: () => rootRouteImport,
} as any)
const OauthLoginRoute = OauthLoginRouteImport.update({
id: '/oauth/login',
path: '/oauth/login',
getParentRoute: () => rootRouteImport,
} as any)
const OauthConsentRoute = OauthConsentRouteImport.update({
id: '/oauth/consent',
path: '/oauth/consent',
getParentRoute: () => rootRouteImport,
} as any)

export interface FileRoutesByFullPath {
'/': typeof IndexRoute
'/$username': typeof UsernameRoute
'/dashboard': typeof DashboardRoute
'/privacy': typeof PrivacyRoute
'/terms': typeof TermsRoute
'/oauth/consent': typeof OauthConsentRoute
'/oauth/login': typeof OauthLoginRoute
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
'/$username': typeof UsernameRoute
'/dashboard': typeof DashboardRoute
'/privacy': typeof PrivacyRoute
'/terms': typeof TermsRoute
'/oauth/consent': typeof OauthConsentRoute
'/oauth/login': typeof OauthLoginRoute
}
export interface FileRoutesById {
__root__: typeof rootRouteImport
Expand All @@ -78,37 +62,13 @@ export interface FileRoutesById {
'/dashboard': typeof DashboardRoute
'/privacy': typeof PrivacyRoute
'/terms': typeof TermsRoute
'/oauth/consent': typeof OauthConsentRoute
'/oauth/login': typeof OauthLoginRoute
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
fullPaths:
| '/'
| '/$username'
| '/dashboard'
| '/privacy'
| '/terms'
| '/oauth/consent'
| '/oauth/login'
fullPaths: '/' | '/$username' | '/dashboard' | '/privacy' | '/terms'
fileRoutesByTo: FileRoutesByTo
to:
| '/'
| '/$username'
| '/dashboard'
| '/privacy'
| '/terms'
| '/oauth/consent'
| '/oauth/login'
id:
| '__root__'
| '/'
| '/$username'
| '/dashboard'
| '/privacy'
| '/terms'
| '/oauth/consent'
| '/oauth/login'
to: '/' | '/$username' | '/dashboard' | '/privacy' | '/terms'
id: '__root__' | '/' | '/$username' | '/dashboard' | '/privacy' | '/terms'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
Expand All @@ -117,8 +77,6 @@ export interface RootRouteChildren {
DashboardRoute: typeof DashboardRoute
PrivacyRoute: typeof PrivacyRoute
TermsRoute: typeof TermsRoute
OauthConsentRoute: typeof OauthConsentRoute
OauthLoginRoute: typeof OauthLoginRoute
}

declare module '@tanstack/react-router' {
Expand Down Expand Up @@ -158,20 +116,6 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof IndexRouteImport
parentRoute: typeof rootRouteImport
}
'/oauth/login': {
id: '/oauth/login'
path: '/oauth/login'
fullPath: '/oauth/login'
preLoaderRoute: typeof OauthLoginRouteImport
parentRoute: typeof rootRouteImport
}
'/oauth/consent': {
id: '/oauth/consent'
path: '/oauth/consent'
fullPath: '/oauth/consent'
preLoaderRoute: typeof OauthConsentRouteImport
parentRoute: typeof rootRouteImport
}
}
}

Expand All @@ -181,8 +125,6 @@ const rootRouteChildren: RootRouteChildren = {
DashboardRoute: DashboardRoute,
PrivacyRoute: PrivacyRoute,
TermsRoute: TermsRoute,
OauthConsentRoute: OauthConsentRoute,
OauthLoginRoute: OauthLoginRoute,
}
export const routeTree = rootRouteImport
._addFileChildren(rootRouteChildren)
Expand Down
Loading
Loading