@adminide-stack/yantra-help-browser 12.0.16-alpha.29 → 12.0.16-alpha.30
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/lib/components/HelpCenterFooter.js +1 -1
- package/lib/components/HelpCenterFooter.js.map +1 -1
- package/lib/components/navbar/index.d.ts.map +1 -1
- package/lib/components/navbar/index.js +4 -0
- package/lib/components/navbar/index.js.map +1 -1
- package/lib/compute.d.ts +2 -0
- package/lib/compute.d.ts.map +1 -1
- package/lib/compute.js +19 -1
- package/lib/compute.js.map +1 -1
- package/lib/pages/Blog/index.d.ts +3 -0
- package/lib/pages/Blog/index.d.ts.map +1 -0
- package/lib/pages/Blog/index.js +172 -0
- package/lib/pages/Blog/index.js.map +1 -0
- package/lib/pages/BlogPost/index.d.ts +3 -0
- package/lib/pages/BlogPost/index.d.ts.map +1 -0
- package/lib/pages/BlogPost/index.js +209 -0
- package/lib/pages/BlogPost/index.js.map +1 -0
- package/lib/routes.json +22 -0
- package/lib/templates/content/blog/how-yantra-browser-automates-workflows.md +120 -0
- package/lib/templates/content/blog/introducing-yantra-browser.md +90 -0
- package/lib/templates/content/blog/yantra-browser-productivity-tips.md +98 -0
- package/lib/templates/content/content-manifest.json +247 -0
- package/package.json +2 -2
|
@@ -52,7 +52,7 @@ import {jsxs,jsx}from'react/jsx-runtime';import {useState}from'react';import {Li
|
|
|
52
52
|
href: browserYantraRoutes.ABOUT
|
|
53
53
|
}, {
|
|
54
54
|
label: 'Blog',
|
|
55
|
-
href: browserYantraRoutes.
|
|
55
|
+
href: browserYantraRoutes.BLOG
|
|
56
56
|
}, {
|
|
57
57
|
label: 'Careers',
|
|
58
58
|
href: browserYantraRoutes.CAREERS
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpCenterFooter.js","sources":["../../src/components/HelpCenterFooter.tsx"],"sourcesContent":[null],"names":[],"mappings":"sNAMO,MAAM,gBAAgB,GAAa,MAAK;QACrC,WAAA,OAAkB,IAAA,EAAI,YAAG,EAAW;QACpC,CAAA,KAAM,EAAA,QAAU,CAAA,WAAY,CAAA,EAAC,CAAE;QAC/B,CAAA,UAAW,EAAA,aAAe,CAAA,WAAY,CAAA,KAAM,CAAA;AAElD,EAAA,MAAA,eAAqB,GAAA,CAAA;oBACD,EAAA;AAChB,IAAA,IAAA,KAAS,CAAA,IAAC,EAAI,EAAA;mBACG,CAAA,IAAA,CAAA;cACL,CAAA,EAAA,CAAA;;AAEhB,GAAA;AAEA,EAAA,MAAA,cAAoB,CAAA;AAChB,IAAA,KAAA,EAAA,SAAA;AACI,IAAA,KAAA,EAAA,CAAA;AACA,MAAA,KAAA,EAAA,cAAO;AACH,MAAA,IAAA,EAAA;AACA,KAAA,EAAA;AACA,MAAA,KAAA,EAAA,mBAAS;AACT,MAAA,IAAA,EAAA;AACA,KAAA,EAAA;AACH,MAAA,KAAA,EAAA,cAAA;AACJ,MAAA,IAAA,EAAA;AACD,KAAA,EAAA;AACI,MAAA,KAAA,EAAA,UAAkB;AAClB,MAAA,IAAA,EAAA;;AAEI,MAAA,KAAA,EAAA;;;;AAIH,IAAA,KAAA,EAAA,WAAA;AACJ,IAAA,KAAA,EAAA,CAAA;AACD,MAAA,KAAA,EAAA,aAAA;AACI,MAAA,IAAA,EAAA,mBAAgB,CAAA;AAChB,KAAA,EAAA;4BACoB;;;0BAGE;AACrB,MAAA,IAAA,EAAA,mBAAA,CAAA;AACJ,KAAA,EAAA;AACD,MAAA,KAAA,EAAA,eAAA;AACI,MAAA,IAAA,EAAA,mBAAc,CAAA;AACd,KAAA,EAAA;;+BAEoB,CAAA;AAChB,KAAA;AACA,GAAA,EAAA;AACH,IAAA,KAAA,EAAA,SAAA;AACJ,IAAA,KAAA,EAAA,CAAA;MACH,KAAA,EAAA,OAAA;AAEF,MAAA,IAAA,EACI,mBAAQ,CAAA;AAoDgB,KAAA,EAAA;AACA,MAAA,KAAA,EAAA,MAAA;AACA,MAAA,IAAA,EAAA,mBAAA,CAAA;AACA,KAAA,EAAA;AACH,MAAA,KAAA,EAAA,SAAA;AACG,MAAA,IAAA,EAAA,mBAAA,CAAA;;AAGQ,MAAA,KAAA,EAAA,SAAA;;
|
|
1
|
+
{"version":3,"file":"HelpCenterFooter.js","sources":["../../src/components/HelpCenterFooter.tsx"],"sourcesContent":[null],"names":[],"mappings":"sNAMO,MAAM,gBAAgB,GAAa,MAAK;QACrC,WAAA,OAAkB,IAAA,EAAI,YAAG,EAAW;QACpC,CAAA,KAAM,EAAA,QAAU,CAAA,WAAY,CAAA,EAAC,CAAE;QAC/B,CAAA,UAAW,EAAA,aAAe,CAAA,WAAY,CAAA,KAAM,CAAA;AAElD,EAAA,MAAA,eAAqB,GAAA,CAAA;oBACD,EAAA;AAChB,IAAA,IAAA,KAAS,CAAA,IAAC,EAAI,EAAA;mBACG,CAAA,IAAA,CAAA;cACL,CAAA,EAAA,CAAA;;AAEhB,GAAA;AAEA,EAAA,MAAA,cAAoB,CAAA;AAChB,IAAA,KAAA,EAAA,SAAA;AACI,IAAA,KAAA,EAAA,CAAA;AACA,MAAA,KAAA,EAAA,cAAO;AACH,MAAA,IAAA,EAAA;AACA,KAAA,EAAA;AACA,MAAA,KAAA,EAAA,mBAAS;AACT,MAAA,IAAA,EAAA;AACA,KAAA,EAAA;AACH,MAAA,KAAA,EAAA,cAAA;AACJ,MAAA,IAAA,EAAA;AACD,KAAA,EAAA;AACI,MAAA,KAAA,EAAA,UAAkB;AAClB,MAAA,IAAA,EAAA;;AAEI,MAAA,KAAA,EAAA;;;;AAIH,IAAA,KAAA,EAAA,WAAA;AACJ,IAAA,KAAA,EAAA,CAAA;AACD,MAAA,KAAA,EAAA,aAAA;AACI,MAAA,IAAA,EAAA,mBAAgB,CAAA;AAChB,KAAA,EAAA;4BACoB;;;0BAGE;AACrB,MAAA,IAAA,EAAA,mBAAA,CAAA;AACJ,KAAA,EAAA;AACD,MAAA,KAAA,EAAA,eAAA;AACI,MAAA,IAAA,EAAA,mBAAc,CAAA;AACd,KAAA,EAAA;;+BAEoB,CAAA;AAChB,KAAA;AACA,GAAA,EAAA;AACH,IAAA,KAAA,EAAA,SAAA;AACJ,IAAA,KAAA,EAAA,CAAA;MACH,KAAA,EAAA,OAAA;AAEF,MAAA,IAAA,EACI,mBAAQ,CAAA;AAoDgB,KAAA,EAAA;AACA,MAAA,KAAA,EAAA,MAAA;AACA,MAAA,IAAA,EAAA,mBAAA,CAAA;AACA,KAAA,EAAA;AACH,MAAA,KAAA,EAAA,SAAA;AACG,MAAA,IAAA,EAAA,mBAAA,CAAA;;AAGQ,MAAA,KAAA,EAAA,SAAA;;AAEA,KAAA;;AAEA,IAAA,KAAA,EAAA,OAAA;AACR,IAAA,KAAA,EAAA,CAAA;;AAkDhC,MAAE,IAAA,EAAA,mBAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/navbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/navbar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAiBxC,UAAU,kBAAkB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2EtD,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -10,6 +10,10 @@ import {jsxs,jsx}from'react/jsx-runtime';import {useState}from'react';import {us
|
|
|
10
10
|
key: 'help-center',
|
|
11
11
|
label: 'Help Center',
|
|
12
12
|
path: '/help-center'
|
|
13
|
+
}, {
|
|
14
|
+
key: 'blog',
|
|
15
|
+
label: 'Blog',
|
|
16
|
+
path: '/blog'
|
|
13
17
|
}];
|
|
14
18
|
const RightNavItems = ({
|
|
15
19
|
scrolled = false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/navbar/index.tsx"],"sourcesContent":[null],"names":[],"mappings":"gKAUA,MAAM,QAAQ,GAAc,CAAA;KACtB,EAAA,MAAK;OACL,EAAG,MAAE;MACL,EAAA
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/navbar/index.tsx"],"sourcesContent":[null],"names":[],"mappings":"gKAUA,MAAM,QAAQ,GAAc,CAAA;KACtB,EAAA,MAAK;OACL,EAAG,MAAE;MACL,EAAA;;EAEJ,GAAA,EAAA,aAAA;AAMF,EAAM,KAAC,EAAM,aAAA;MACH,EAAA;AACN,CAAA,EAAA;AACA,EAAA,GAAA,EAAA,aAAwB;AAExB,EAAA,KAAA,EAAA,aAAkB;MAE2D,EAAA;;KAEL,EAAA,MAAA;AACxE,EAAA,KAAA,EAAA,MACS;AAUuB,EAAA,IAAA,EAAA;AACA,CAAA,CAAA;AAuCI,MAAA,aAAA,GAAC,CAAC;AACF,EAAA,QAAA,GAAA;AAaxC,CAAC,KAAC;AAEF,EAAA,MAAA,CAAA,yBAA6B,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/lib/compute.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export declare const browserYantraRoutes: {
|
|
|
12
12
|
RELEASE_NOTES: string;
|
|
13
13
|
COMMUNITY: string;
|
|
14
14
|
STATUS: string;
|
|
15
|
+
BLOG: string;
|
|
16
|
+
BLOG_POST: string;
|
|
15
17
|
};
|
|
16
18
|
export declare const MainRoutes: any;
|
|
17
19
|
declare const filteredMenus: import("@common-stack/core").IRouteMap[];
|
package/lib/compute.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../src/compute.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../src/compute.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;CAgB/B,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,GA6IxB,CAAC;AAMF,QAAA,MAAM,aAAa,0CAA4C,CAAC;AAGhE,QAAA,MAAM,cAAc,0CAA6C,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
|
package/lib/compute.js
CHANGED
|
@@ -14,7 +14,9 @@ const browserYantraRoutes = {
|
|
|
14
14
|
TERMS: '/terms',
|
|
15
15
|
RELEASE_NOTES: '/release-notes',
|
|
16
16
|
COMMUNITY: '/community',
|
|
17
|
-
STATUS: '/status'
|
|
17
|
+
STATUS: '/status',
|
|
18
|
+
BLOG: '/blog',
|
|
19
|
+
BLOG_POST: '/blog/:slug'
|
|
18
20
|
};
|
|
19
21
|
const MainRoutes = [{
|
|
20
22
|
key: 'root-layout',
|
|
@@ -139,6 +141,22 @@ const MainRoutes = [{
|
|
|
139
141
|
position: IMenuPosition.Middle,
|
|
140
142
|
componentPath: "@adminide-stack/yantra-help-browser/lib/pages/StatusPage/index.js",
|
|
141
143
|
hasComponent: true
|
|
144
|
+
}, {
|
|
145
|
+
path: `${ROOT_LAYOUT_PATH}${browserYantraRoutes.BLOG}`,
|
|
146
|
+
key: 'blog',
|
|
147
|
+
exact: true,
|
|
148
|
+
hideInMenu: true,
|
|
149
|
+
position: IMenuPosition.Middle,
|
|
150
|
+
componentPath: "@adminide-stack/yantra-help-browser/lib/pages/Blog/index.js",
|
|
151
|
+
hasComponent: true
|
|
152
|
+
}, {
|
|
153
|
+
path: `${ROOT_LAYOUT_PATH}${browserYantraRoutes.BLOG_POST}`,
|
|
154
|
+
key: 'blog-post',
|
|
155
|
+
exact: true,
|
|
156
|
+
hideInMenu: true,
|
|
157
|
+
position: IMenuPosition.Middle,
|
|
158
|
+
componentPath: "@adminide-stack/yantra-help-browser/lib/pages/BlogPost/index.js",
|
|
159
|
+
hasComponent: true
|
|
142
160
|
}];
|
|
143
161
|
// Using '*' to select all routes and menus
|
|
144
162
|
const selectedAll = '*';
|
package/lib/compute.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.js","sources":["../src/compute.ts"],"sourcesContent":[null],"names":[],"mappings":"uJAGA,MAAM,gBAAgB,GAAG,GAAG;AACf,MAAA,mBAAmB,GAAG;AAC/B,EAAA,OAAA,EAAO,UAAY;AACnB,EAAA,WAAA,EAAW,cAAgB;AAC3B,EAAA,WAAA,EAAW,cAAgB;AAC3B,EAAA,aAAA,EAAa,0BAA4B;AACzC,EAAA,YAAA,EAAY,uCAAyC;AACrD,EAAA,KAAA,EAAK,QAAU;AACf,EAAA,OAAA,EAAO,UAAY;AACnB,EAAA,OAAA,EAAO,UAAY;AACnB,EAAA,OAAA,EAAO,UAAY;AACnB,EAAA,KAAA,EAAK,QAAU;AACf,EAAA,aAAA,EAAa,gBAAkB;AAC/B,EAAA,SAAA,EAAS,YAAc;AACvB,EAAA,MAAA,EAAM;;
|
|
1
|
+
{"version":3,"file":"compute.js","sources":["../src/compute.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/Blog/index.tsx"],"names":[],"mappings":"AA8GA,iBAAS,QAAQ,4CAmGhB;AAED,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {useState,useMemo}from'react';import {useNavigate}from'@remix-run/react';import {PageHero}from'../../components/PageHero.js';import {Icons}from'../../components/Icons.js';const BLOG_POSTS = [{
|
|
2
|
+
slug: 'introducing-yantra-browser',
|
|
3
|
+
title: 'Introducing Yantra Browser: Your AI-Powered Browser Automation Companion',
|
|
4
|
+
description: 'Meet Yantra Browser — a Chrome extension that turns your browser into an AI-powered automation tool, combining the power of your local browser with intelligent cloud AI.',
|
|
5
|
+
author: 'Yantra Team',
|
|
6
|
+
date: '2025-03-21',
|
|
7
|
+
category: 'Product',
|
|
8
|
+
tags: ['browser-extension', 'automation', 'chrome', 'ai', 'launch'],
|
|
9
|
+
readTime: '6 min read'
|
|
10
|
+
}, {
|
|
11
|
+
slug: 'how-yantra-browser-automates-workflows',
|
|
12
|
+
title: 'How Yantra Browser Automates Your Web Workflows',
|
|
13
|
+
description: 'A deep dive into the technical architecture behind Yantra Browser — how CDP relay, service workers, and cloud AI work together to automate the web.',
|
|
14
|
+
author: 'Yantra Team',
|
|
15
|
+
date: '2025-03-21',
|
|
16
|
+
category: 'Engineering',
|
|
17
|
+
tags: ['browser-extension', 'cdp', 'architecture', 'engineering', 'automation'],
|
|
18
|
+
readTime: '8 min read'
|
|
19
|
+
}, {
|
|
20
|
+
slug: 'yantra-browser-productivity-tips',
|
|
21
|
+
title: '5 Ways Yantra Browser Supercharges Your Productivity',
|
|
22
|
+
description: 'Discover practical workflows where Yantra Browser saves hours of manual work — from research to data entry to inbox management.',
|
|
23
|
+
author: 'Yantra Team',
|
|
24
|
+
date: '2025-03-22',
|
|
25
|
+
category: 'Productivity',
|
|
26
|
+
tags: ['browser-extension', 'productivity', 'workflows', 'use-cases', 'tips'],
|
|
27
|
+
readTime: '5 min read'
|
|
28
|
+
}];
|
|
29
|
+
const CATEGORIES = ['All', ...Array.from(new Set(BLOG_POSTS.map(p => p.category)))];
|
|
30
|
+
const CATEGORY_COLORS = {
|
|
31
|
+
Product: 'bg-cyan-500/10 text-cyan-500',
|
|
32
|
+
Engineering: 'bg-violet-500/10 text-violet-500',
|
|
33
|
+
Productivity: 'bg-amber-500/10 text-amber-500'
|
|
34
|
+
};
|
|
35
|
+
function formatDate(dateStr) {
|
|
36
|
+
return new Date(dateStr).toLocaleDateString('en-US', {
|
|
37
|
+
year: 'numeric',
|
|
38
|
+
month: 'long',
|
|
39
|
+
day: 'numeric'
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function BlogCard({
|
|
43
|
+
post,
|
|
44
|
+
onClick
|
|
45
|
+
}) {
|
|
46
|
+
const colorClass = CATEGORY_COLORS[post.category] || 'bg-muted text-muted-foreground';
|
|
47
|
+
return jsxs("article", {
|
|
48
|
+
role: "button",
|
|
49
|
+
tabIndex: 0,
|
|
50
|
+
onClick: () => onClick(post.slug),
|
|
51
|
+
onKeyDown: e => {
|
|
52
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
53
|
+
e.preventDefault();
|
|
54
|
+
onClick(post.slug);
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
className: "group cursor-pointer rounded-2xl border border-border/60 bg-card p-6 transition-all duration-200 hover:border-border hover:shadow-lg hover:shadow-black/5",
|
|
58
|
+
children: [jsxs("div", {
|
|
59
|
+
className: "mb-4 flex items-center gap-3",
|
|
60
|
+
children: [jsx("span", {
|
|
61
|
+
className: `inline-flex rounded-full px-2.5 py-0.5 text-xs font-semibold ${colorClass}`,
|
|
62
|
+
children: post.category
|
|
63
|
+
}), jsx("span", {
|
|
64
|
+
className: "text-xs text-muted-foreground",
|
|
65
|
+
children: post.readTime
|
|
66
|
+
})]
|
|
67
|
+
}), jsx("h2", {
|
|
68
|
+
className: "mb-2 text-lg font-bold tracking-tight text-foreground group-hover:text-cyan-500 transition-colors lg:text-xl",
|
|
69
|
+
children: post.title
|
|
70
|
+
}), jsx("p", {
|
|
71
|
+
className: "mb-4 text-sm leading-relaxed text-muted-foreground line-clamp-3",
|
|
72
|
+
children: post.description
|
|
73
|
+
}), jsxs("div", {
|
|
74
|
+
className: "flex items-center justify-between",
|
|
75
|
+
children: [jsxs("div", {
|
|
76
|
+
className: "flex items-center gap-2",
|
|
77
|
+
children: [jsx("div", {
|
|
78
|
+
className: "flex h-6 w-6 items-center justify-center rounded-full bg-gradient-to-br from-cyan-500 to-blue-600 text-[10px] font-bold text-white",
|
|
79
|
+
children: post.author.split(' ').map(n => n[0]).join('')
|
|
80
|
+
}), jsx("span", {
|
|
81
|
+
className: "text-xs text-muted-foreground",
|
|
82
|
+
children: post.author
|
|
83
|
+
})]
|
|
84
|
+
}), jsx("time", {
|
|
85
|
+
className: "text-xs text-muted-foreground",
|
|
86
|
+
children: formatDate(post.date)
|
|
87
|
+
})]
|
|
88
|
+
})]
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function BlogPage() {
|
|
92
|
+
const navigate = useNavigate();
|
|
93
|
+
const [activeCategory, setActiveCategory] = useState('All');
|
|
94
|
+
const filteredPosts = useMemo(() => activeCategory === 'All' ? BLOG_POSTS : BLOG_POSTS.filter(p => p.category === activeCategory), [activeCategory]);
|
|
95
|
+
const handlePostClick = slug => {
|
|
96
|
+
navigate(`/blog/${slug}`);
|
|
97
|
+
};
|
|
98
|
+
return jsxs("div", {
|
|
99
|
+
className: "min-h-screen bg-background",
|
|
100
|
+
children: [jsx(PageHero, {
|
|
101
|
+
title: "Blog",
|
|
102
|
+
description: "Product updates, technical deep dives, and productivity tips from the Yantra team.",
|
|
103
|
+
icon: jsx(Icons.MdDescriptionIcon, {
|
|
104
|
+
className: "h-7 w-7"
|
|
105
|
+
})
|
|
106
|
+
}), jsx("section", {
|
|
107
|
+
className: "py-16",
|
|
108
|
+
children: jsxs("div", {
|
|
109
|
+
className: "container mx-auto max-w-5xl px-6 lg:px-16",
|
|
110
|
+
children: [jsx("div", {
|
|
111
|
+
className: "mb-10 flex flex-wrap items-center gap-2",
|
|
112
|
+
children: CATEGORIES.map(cat => jsx("button", {
|
|
113
|
+
type: "button",
|
|
114
|
+
onClick: () => setActiveCategory(cat),
|
|
115
|
+
className: `rounded-full px-4 py-1.5 text-sm font-medium transition-all duration-200 ${activeCategory === cat ? 'bg-foreground text-background' : 'bg-muted text-muted-foreground hover:bg-muted/80 hover:text-foreground'}`,
|
|
116
|
+
children: cat
|
|
117
|
+
}, cat))
|
|
118
|
+
}), filteredPosts.length > 0 && jsx("div", {
|
|
119
|
+
className: "mb-10",
|
|
120
|
+
children: jsxs("article", {
|
|
121
|
+
role: "button",
|
|
122
|
+
tabIndex: 0,
|
|
123
|
+
onClick: () => handlePostClick(filteredPosts[0].slug),
|
|
124
|
+
onKeyDown: e => {
|
|
125
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
126
|
+
e.preventDefault();
|
|
127
|
+
handlePostClick(filteredPosts[0].slug);
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
className: "group cursor-pointer overflow-hidden rounded-3xl border border-border/60 bg-gradient-to-br from-[#0c1222] to-[#111827] p-8 transition-all duration-200 hover:shadow-xl hover:shadow-black/10 lg:p-12",
|
|
131
|
+
children: [jsxs("div", {
|
|
132
|
+
className: "mb-4 flex items-center gap-3",
|
|
133
|
+
children: [jsx("span", {
|
|
134
|
+
className: `inline-flex rounded-full px-3 py-1 text-xs font-semibold ${CATEGORY_COLORS[filteredPosts[0].category] || 'bg-white/10 text-white/70'}`,
|
|
135
|
+
children: filteredPosts[0].category
|
|
136
|
+
}), jsx("span", {
|
|
137
|
+
className: "text-xs text-white/40",
|
|
138
|
+
children: filteredPosts[0].readTime
|
|
139
|
+
}), jsx("span", {
|
|
140
|
+
className: "text-xs text-white/40",
|
|
141
|
+
children: formatDate(filteredPosts[0].date)
|
|
142
|
+
})]
|
|
143
|
+
}), jsx("h2", {
|
|
144
|
+
className: "mb-3 text-2xl font-extrabold tracking-tight text-white group-hover:text-cyan-400 transition-colors lg:text-3xl",
|
|
145
|
+
children: filteredPosts[0].title
|
|
146
|
+
}), jsx("p", {
|
|
147
|
+
className: "max-w-2xl text-sm leading-relaxed text-white/50 lg:text-base",
|
|
148
|
+
children: filteredPosts[0].description
|
|
149
|
+
}), jsxs("div", {
|
|
150
|
+
className: "mt-6 inline-flex items-center gap-2 text-sm font-medium text-cyan-400 transition-colors group-hover:text-cyan-300",
|
|
151
|
+
children: ["Read article", jsx(Icons.ArrowRightIcon, {
|
|
152
|
+
className: "h-3.5 w-3.5"
|
|
153
|
+
})]
|
|
154
|
+
})]
|
|
155
|
+
})
|
|
156
|
+
}), filteredPosts.length > 1 && jsx("div", {
|
|
157
|
+
className: "grid grid-cols-1 gap-6 sm:grid-cols-2",
|
|
158
|
+
children: filteredPosts.slice(1).map(post => jsx(BlogCard, {
|
|
159
|
+
post: post,
|
|
160
|
+
onClick: handlePostClick
|
|
161
|
+
}, post.slug))
|
|
162
|
+
}), filteredPosts.length === 0 && jsx("div", {
|
|
163
|
+
className: "py-20 text-center",
|
|
164
|
+
children: jsx("p", {
|
|
165
|
+
className: "text-muted-foreground",
|
|
166
|
+
children: "No posts in this category yet."
|
|
167
|
+
})
|
|
168
|
+
})]
|
|
169
|
+
})
|
|
170
|
+
})]
|
|
171
|
+
});
|
|
172
|
+
}export{BlogPage as default};//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/pages/Blog/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pages/BlogPost/index.tsx"],"names":[],"mappings":"AAsGA,iBAAS,YAAY,4CAoLpB;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
import {jsxs,jsx}from'react/jsx-runtime';import {useState,useEffect}from'react';import {useParams,useNavigate,Link}from'@remix-run/react';import {marked}from'marked';import {PageHero}from'../../components/PageHero.js';import {Icons}from'../../components/Icons.js';function parseFrontmatter(raw) {
|
|
2
|
+
const match = raw.match(/^---\s*\n([\s\S]*?)\n---\s*\n([\s\S]*)$/);
|
|
3
|
+
if (!match) return {
|
|
4
|
+
frontmatter: {},
|
|
5
|
+
body: raw
|
|
6
|
+
};
|
|
7
|
+
const fm = {};
|
|
8
|
+
for (const line of match[1].split('\n')) {
|
|
9
|
+
const idx = line.indexOf(':');
|
|
10
|
+
if (idx === -1) continue;
|
|
11
|
+
const key = line.slice(0, idx).trim();
|
|
12
|
+
let val = line.slice(idx + 1).trim();
|
|
13
|
+
if (val.startsWith("'") && val.endsWith("'")) val = val.slice(1, -1);
|
|
14
|
+
if (val.startsWith('"') && val.endsWith('"')) val = val.slice(1, -1);
|
|
15
|
+
if (val.startsWith('[') && val.endsWith(']')) {
|
|
16
|
+
fm[key] = val.slice(1, -1).split(',').map(s => s.trim().replace(/^['"]|['"]$/g, ''));
|
|
17
|
+
} else {
|
|
18
|
+
fm[key] = val;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
frontmatter: fm,
|
|
23
|
+
body: match[2]
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function extractHeadings(markdown) {
|
|
27
|
+
const regex = /^(#{1,6})\s+(.+)$/gm;
|
|
28
|
+
const headings = [];
|
|
29
|
+
let match;
|
|
30
|
+
while ((match = regex.exec(markdown)) !== null) {
|
|
31
|
+
const text = match[2].trim();
|
|
32
|
+
headings.push({
|
|
33
|
+
id: text.toLowerCase().replace(/[^\w\s-]/g, '').replace(/\s+/g, '-').replace(/-+/g, '-').trim(),
|
|
34
|
+
text,
|
|
35
|
+
level: match[1].length
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return headings;
|
|
39
|
+
}
|
|
40
|
+
function formatDate(dateStr) {
|
|
41
|
+
return new Date(dateStr).toLocaleDateString('en-US', {
|
|
42
|
+
year: 'numeric',
|
|
43
|
+
month: 'long',
|
|
44
|
+
day: 'numeric'
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function TableOfContents({
|
|
48
|
+
headings,
|
|
49
|
+
activeId
|
|
50
|
+
}) {
|
|
51
|
+
if (headings.length === 0) return null;
|
|
52
|
+
return jsxs("nav", {
|
|
53
|
+
className: "sticky top-24 hidden xl:block",
|
|
54
|
+
children: [jsx("h4", {
|
|
55
|
+
className: "mb-3 text-xs font-bold uppercase tracking-widest text-muted-foreground/60",
|
|
56
|
+
children: "On this page"
|
|
57
|
+
}), jsx("ul", {
|
|
58
|
+
className: "space-y-1.5 border-l border-border/40 pl-3",
|
|
59
|
+
children: headings.filter(h => h.level <= 3).map(h => jsx("li", {
|
|
60
|
+
children: jsx("a", {
|
|
61
|
+
href: `#${h.id}`,
|
|
62
|
+
className: `block text-sm transition-colors duration-150 ${activeId === h.id ? 'text-cyan-500 font-medium' : 'text-muted-foreground hover:text-foreground'} ${h.level === 3 ? 'pl-3' : ''}`,
|
|
63
|
+
children: h.text
|
|
64
|
+
})
|
|
65
|
+
}, h.id))
|
|
66
|
+
})]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
function BlogPostPage() {
|
|
70
|
+
const {
|
|
71
|
+
slug
|
|
72
|
+
} = useParams();
|
|
73
|
+
useNavigate();
|
|
74
|
+
const [htmlContent, setHtmlContent] = useState('');
|
|
75
|
+
const [frontmatter, setFrontmatter] = useState({});
|
|
76
|
+
const [headings, setHeadings] = useState([]);
|
|
77
|
+
const [activeHeadingId, setActiveHeadingId] = useState('');
|
|
78
|
+
const [loading, setLoading] = useState(true);
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
if (!slug) return;
|
|
81
|
+
const loadPost = async () => {
|
|
82
|
+
setLoading(true);
|
|
83
|
+
try {
|
|
84
|
+
const basePaths = [`${window.location.origin}/content/blog/${slug}.md`, `/content/blog/${slug}.md`];
|
|
85
|
+
let raw = '';
|
|
86
|
+
for (const path of basePaths) {
|
|
87
|
+
try {
|
|
88
|
+
const resp = await fetch(path);
|
|
89
|
+
if (resp.ok) {
|
|
90
|
+
raw = await resp.text();
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
} catch {
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (!raw) {
|
|
98
|
+
setHtmlContent('<p>Post not found.</p>');
|
|
99
|
+
setLoading(false);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const {
|
|
103
|
+
frontmatter: fm,
|
|
104
|
+
body
|
|
105
|
+
} = parseFrontmatter(raw);
|
|
106
|
+
setFrontmatter(fm);
|
|
107
|
+
setHeadings(extractHeadings(body));
|
|
108
|
+
const html = await marked.parse(body);
|
|
109
|
+
setHtmlContent(html);
|
|
110
|
+
} catch {
|
|
111
|
+
setHtmlContent('<p>Error loading post.</p>');
|
|
112
|
+
}
|
|
113
|
+
setLoading(false);
|
|
114
|
+
};
|
|
115
|
+
loadPost();
|
|
116
|
+
}, [slug]);
|
|
117
|
+
// Intersection observer for ToC active state
|
|
118
|
+
useEffect(() => {
|
|
119
|
+
if (headings.length === 0) return;
|
|
120
|
+
const observer = new IntersectionObserver(entries => {
|
|
121
|
+
for (const entry of entries) {
|
|
122
|
+
if (entry.isIntersecting) {
|
|
123
|
+
setActiveHeadingId(entry.target.id);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}, {
|
|
127
|
+
rootMargin: '-80px 0px -60% 0px',
|
|
128
|
+
threshold: 0.1
|
|
129
|
+
});
|
|
130
|
+
for (const h of headings) {
|
|
131
|
+
const el = document.getElementById(h.id);
|
|
132
|
+
if (el) observer.observe(el);
|
|
133
|
+
}
|
|
134
|
+
return () => observer.disconnect();
|
|
135
|
+
}, [headings, htmlContent]);
|
|
136
|
+
const CATEGORY_COLORS = {
|
|
137
|
+
Product: 'bg-cyan-500/10 text-cyan-500',
|
|
138
|
+
Engineering: 'bg-violet-500/10 text-violet-500',
|
|
139
|
+
Productivity: 'bg-amber-500/10 text-amber-500'
|
|
140
|
+
};
|
|
141
|
+
return jsxs("div", {
|
|
142
|
+
className: "min-h-screen bg-background",
|
|
143
|
+
children: [jsx(PageHero, {
|
|
144
|
+
title: frontmatter.title || 'Blog',
|
|
145
|
+
description: frontmatter.description,
|
|
146
|
+
icon: jsx(Icons.MdDescriptionIcon, {
|
|
147
|
+
className: "h-7 w-7"
|
|
148
|
+
})
|
|
149
|
+
}), jsx("section", {
|
|
150
|
+
className: "py-12",
|
|
151
|
+
children: jsxs("div", {
|
|
152
|
+
className: "container mx-auto max-w-7xl px-6 lg:px-16",
|
|
153
|
+
children: [jsxs(Link, {
|
|
154
|
+
to: "/blog",
|
|
155
|
+
className: "mb-8 inline-flex items-center gap-2 text-sm font-medium text-muted-foreground transition-colors hover:text-foreground",
|
|
156
|
+
children: [jsx(Icons.ArrowLeftIcon, {
|
|
157
|
+
className: "h-3.5 w-3.5"
|
|
158
|
+
}), "Back to Blog"]
|
|
159
|
+
}), loading ? jsx("div", {
|
|
160
|
+
className: "py-20 text-center text-muted-foreground",
|
|
161
|
+
children: "Loading..."
|
|
162
|
+
}) : jsxs("div", {
|
|
163
|
+
className: "grid grid-cols-1 gap-12 xl:grid-cols-[1fr_220px]",
|
|
164
|
+
children: [jsxs("article", {
|
|
165
|
+
className: "min-w-0",
|
|
166
|
+
children: [jsxs("div", {
|
|
167
|
+
className: "mb-8 flex flex-wrap items-center gap-3",
|
|
168
|
+
children: [frontmatter.category && jsx("span", {
|
|
169
|
+
className: `inline-flex rounded-full px-3 py-1 text-xs font-semibold ${CATEGORY_COLORS[frontmatter.category] || 'bg-muted text-muted-foreground'}`,
|
|
170
|
+
children: frontmatter.category
|
|
171
|
+
}), frontmatter.readTime && jsxs("span", {
|
|
172
|
+
className: "flex items-center gap-1.5 text-xs text-muted-foreground",
|
|
173
|
+
children: [jsx(Icons.MdScheduleIcon, {
|
|
174
|
+
className: "h-3.5 w-3.5"
|
|
175
|
+
}), frontmatter.readTime]
|
|
176
|
+
}), frontmatter.date && jsx("span", {
|
|
177
|
+
className: "text-xs text-muted-foreground",
|
|
178
|
+
children: formatDate(frontmatter.date)
|
|
179
|
+
}), frontmatter.author && jsxs("span", {
|
|
180
|
+
className: "text-xs text-muted-foreground",
|
|
181
|
+
children: ["by ", frontmatter.author]
|
|
182
|
+
})]
|
|
183
|
+
}), jsx("div", {
|
|
184
|
+
className: "prose prose-neutral dark:prose-invert max-w-none\n prose-headings:font-bold prose-headings:tracking-tight\n prose-h2:text-xl prose-h2:mt-10 prose-h2:mb-4\n prose-h3:text-lg prose-h3:mt-8 prose-h3:mb-3\n prose-p:leading-relaxed prose-p:text-muted-foreground\n prose-a:text-cyan-500 prose-a:no-underline hover:prose-a:underline\n prose-strong:text-foreground\n prose-code:text-sm prose-code:bg-muted prose-code:px-1.5 prose-code:py-0.5 prose-code:rounded\n prose-pre:bg-muted prose-pre:border prose-pre:border-border\n prose-table:border prose-table:border-border\n prose-th:bg-muted prose-th:px-4 prose-th:py-2\n prose-td:px-4 prose-td:py-2 prose-td:border-t prose-td:border-border\n prose-li:text-muted-foreground\n prose-img:rounded-xl prose-img:border prose-img:border-border",
|
|
185
|
+
dangerouslySetInnerHTML: {
|
|
186
|
+
__html: htmlContent
|
|
187
|
+
}
|
|
188
|
+
}), frontmatter.tags && frontmatter.tags.length > 0 && jsx("div", {
|
|
189
|
+
className: "mt-12 border-t border-border/40 pt-6",
|
|
190
|
+
children: jsxs("div", {
|
|
191
|
+
className: "flex flex-wrap items-center gap-2",
|
|
192
|
+
children: [jsx("span", {
|
|
193
|
+
className: "text-xs font-semibold uppercase tracking-widest text-muted-foreground/60",
|
|
194
|
+
children: "Tags"
|
|
195
|
+
}), frontmatter.tags.map(tag => jsx("span", {
|
|
196
|
+
className: "rounded-full bg-muted px-3 py-1 text-xs text-muted-foreground",
|
|
197
|
+
children: tag
|
|
198
|
+
}, tag))]
|
|
199
|
+
})
|
|
200
|
+
})]
|
|
201
|
+
}), jsx(TableOfContents, {
|
|
202
|
+
headings: headings,
|
|
203
|
+
activeId: activeHeadingId
|
|
204
|
+
})]
|
|
205
|
+
})]
|
|
206
|
+
})
|
|
207
|
+
})]
|
|
208
|
+
});
|
|
209
|
+
}export{BlogPostPage as default};//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/pages/BlogPost/index.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
package/lib/routes.json
CHANGED
|
@@ -169,5 +169,27 @@
|
|
|
169
169
|
"componentPath": "@adminide-stack/yantra-help-browser/lib/pages/StatusPage/index.js",
|
|
170
170
|
"hasComponent": true
|
|
171
171
|
}
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"//blog": {
|
|
175
|
+
"path": "//blog",
|
|
176
|
+
"key": "blog",
|
|
177
|
+
"exact": true,
|
|
178
|
+
"hideInMenu": true,
|
|
179
|
+
"position": "MIDDLE",
|
|
180
|
+
"componentPath": "@adminide-stack/yantra-help-browser/lib/pages/Blog/index.js",
|
|
181
|
+
"hasComponent": true
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"//blog/:slug": {
|
|
186
|
+
"path": "//blog/:slug",
|
|
187
|
+
"key": "blog-post",
|
|
188
|
+
"exact": true,
|
|
189
|
+
"hideInMenu": true,
|
|
190
|
+
"position": "MIDDLE",
|
|
191
|
+
"componentPath": "@adminide-stack/yantra-help-browser/lib/pages/BlogPost/index.js",
|
|
192
|
+
"hasComponent": true
|
|
193
|
+
}
|
|
172
194
|
}
|
|
173
195
|
]
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'How Yantra Browser Automates Your Web Workflows'
|
|
3
|
+
description: 'A deep dive into the technical architecture behind Yantra Browser — how CDP relay, service workers, and cloud AI work together to automate the web.'
|
|
4
|
+
author: 'Yantra Team'
|
|
5
|
+
date: '2025-03-21'
|
|
6
|
+
category: 'Engineering'
|
|
7
|
+
tags: ['browser-extension', 'cdp', 'architecture', 'engineering', 'automation']
|
|
8
|
+
coverImage: '/static/img/blog/yantra-browser-architecture.png'
|
|
9
|
+
readTime: '8 min read'
|
|
10
|
+
slug: 'how-yantra-browser-automates-workflows'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# How Yantra Browser Automates Your Web Workflows
|
|
14
|
+
|
|
15
|
+
Behind every seamless automation in Yantra Browser lies a carefully designed architecture that bridges your local Chrome browser with cloud-based AI intelligence. In this post, we take you behind the scenes to explain how it all works.
|
|
16
|
+
|
|
17
|
+
## The Relay Architecture
|
|
18
|
+
|
|
19
|
+
Yantra Browser uses a **relay architecture** — a pattern where the Chrome extension acts as a secure bridge between your browser tabs and the Yantra cloud platform.
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
┌─────────────────┐ ┌──────────────┐ ┌─────────────────┐
|
|
23
|
+
│ Your Browser │◄─────►│ Relay │◄─────►│ Yantra Cloud │
|
|
24
|
+
│ (Chrome + Ext) │ CDP │ (Service │ WSS │ (AI Assistant) │
|
|
25
|
+
│ │ │ Worker) │ │ │
|
|
26
|
+
└─────────────────┘ └──────────────┘ └─────────────────┘
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### How It Flows
|
|
30
|
+
|
|
31
|
+
1. **You give an instruction** — "Find the cheapest flight from SFO to JFK next weekend" in the Yantra chat.
|
|
32
|
+
2. **Cloud AI plans the steps** — The AI breaks down the task into discrete actions: open a travel site, enter search criteria, compare results.
|
|
33
|
+
3. **Commands relay to your browser** — Each action (navigate, click, type, extract) is sent via secure WebSocket to the extension's service worker.
|
|
34
|
+
4. **Your browser executes locally** — The service worker uses CDP to interact with your actual browser tabs — clicking buttons, reading page content, and navigating links.
|
|
35
|
+
5. **Results flow back** — Extracted data and page state are relayed back to the cloud AI, which decides the next step or presents results to you.
|
|
36
|
+
|
|
37
|
+
## Chrome DevTools Protocol (CDP) In Action
|
|
38
|
+
|
|
39
|
+
The extension leverages specific CDP domains for different types of automation:
|
|
40
|
+
|
|
41
|
+
### Page Navigation and Interaction
|
|
42
|
+
|
|
43
|
+
Using `Page` and `DOM` domains, the extension can navigate to URLs, wait for page loads, find elements by selector, and simulate clicks and keyboard input — all through the same APIs that Chrome DevTools uses internally.
|
|
44
|
+
|
|
45
|
+
### Network Monitoring
|
|
46
|
+
|
|
47
|
+
The `Network` domain allows the extension to observe API calls made by web applications. This is invaluable for understanding what data a page fetches, intercepting responses for extraction, and detecting when a page has fully loaded.
|
|
48
|
+
|
|
49
|
+
### JavaScript Evaluation
|
|
50
|
+
|
|
51
|
+
The `Runtime` domain enables safe execution of JavaScript expressions within page contexts. This powers everything from reading form values to triggering complex UI interactions that require programmatic access.
|
|
52
|
+
|
|
53
|
+
### Screenshot and Visual Analysis
|
|
54
|
+
|
|
55
|
+
The `Page.captureScreenshot` capability lets the AI "see" what's on screen, enabling visual analysis for tasks like verifying a form was submitted correctly or identifying UI elements that aren't easily addressable by selectors alone.
|
|
56
|
+
|
|
57
|
+
## The Service Worker: Always Ready
|
|
58
|
+
|
|
59
|
+
Yantra Browser's service worker is the heart of the extension. Built on Chrome's Manifest V3 architecture, it:
|
|
60
|
+
|
|
61
|
+
- **Maintains persistent WebSocket connections** to the Yantra relay server
|
|
62
|
+
- **Manages CDP sessions** across multiple browser tabs
|
|
63
|
+
- **Handles authentication** via secure token exchange
|
|
64
|
+
- **Queues commands** when the browser is briefly unavailable
|
|
65
|
+
- **Auto-reconnects** after network interruptions with exponential backoff
|
|
66
|
+
|
|
67
|
+
The service worker lifecycle is carefully managed to stay within Chrome's resource guidelines while remaining responsive to incoming automation commands.
|
|
68
|
+
|
|
69
|
+
## Security at Every Layer
|
|
70
|
+
|
|
71
|
+
### Encrypted Communication
|
|
72
|
+
|
|
73
|
+
All data between the extension and Yantra's servers travels over TLS-encrypted WebSocket connections. There is no plaintext communication at any point.
|
|
74
|
+
|
|
75
|
+
### Minimal Permission Scope
|
|
76
|
+
|
|
77
|
+
The extension requests only the permissions it needs:
|
|
78
|
+
|
|
79
|
+
- `debugger` — For CDP access to automate browser tabs
|
|
80
|
+
- `activeTab` — To interact with the currently focused tab
|
|
81
|
+
- `storage` — To persist authentication tokens locally
|
|
82
|
+
- `identity` — For secure OAuth sign-in
|
|
83
|
+
|
|
84
|
+
Host permissions are scoped to Yantra's own domains by default. The extension cannot access arbitrary websites unless you explicitly grant permission through the automation flow.
|
|
85
|
+
|
|
86
|
+
### No Remote Code Execution
|
|
87
|
+
|
|
88
|
+
The extension bundles all its code at install time. No external scripts are fetched or evaluated at runtime. This is enforced by Chrome's Manifest V3 Content Security Policy and verified during Chrome Web Store review.
|
|
89
|
+
|
|
90
|
+
## Real-World Performance
|
|
91
|
+
|
|
92
|
+
In our internal benchmarks, Yantra Browser automation achieves:
|
|
93
|
+
|
|
94
|
+
| Metric | Performance |
|
|
95
|
+
| --------------------------- | ------------------------------------------ |
|
|
96
|
+
| **Command Latency** | < 100ms round-trip for typical actions |
|
|
97
|
+
| **Page Load Detection** | Accurate within 200ms of visual completion |
|
|
98
|
+
| **Multi-tab Orchestration** | Up to 10 concurrent tab automations |
|
|
99
|
+
| **Reconnection Time** | < 2 seconds after network interruption |
|
|
100
|
+
|
|
101
|
+
These numbers mean that automation feels nearly as fast as a human clicking through pages manually — but with perfect consistency and zero fatigue.
|
|
102
|
+
|
|
103
|
+
## What's Next
|
|
104
|
+
|
|
105
|
+
We're actively working on expanding Yantra Browser's capabilities:
|
|
106
|
+
|
|
107
|
+
- **Visual Understanding** — AI-powered screen analysis for complex UIs without clean DOM structure
|
|
108
|
+
- **Workflow Templates** — Pre-built automation recipes for common tasks (expense reports, data migration, content publishing)
|
|
109
|
+
- **Team Collaboration** — Share automation workflows across your organization with role-based access control
|
|
110
|
+
- **Custom Actions API** — Let developers extend the extension with domain-specific automation modules
|
|
111
|
+
|
|
112
|
+
## Try It Today
|
|
113
|
+
|
|
114
|
+
Yantra Browser is available now on the Chrome Web Store. Install it, connect your Yantra account, and start automating in under a minute.
|
|
115
|
+
|
|
116
|
+
[Get Yantra Browser →](https://chromewebstore.google.com/detail/yantra-browser)
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
_Want to dive deeper? Check out our [How the Extension Works](/help-center/browser-extension/how-it-works) documentation or reach out to our engineering team at [support@yantra.app](mailto:support@yantra.app)._
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 'Introducing Yantra Browser: Your AI-Powered Browser Automation Companion'
|
|
3
|
+
description: 'Meet Yantra Browser — a Chrome extension that turns your browser into an AI-powered automation tool, combining the power of your local browser with intelligent cloud AI.'
|
|
4
|
+
author: 'Yantra Team'
|
|
5
|
+
date: '2025-03-21'
|
|
6
|
+
category: 'Product'
|
|
7
|
+
tags: ['browser-extension', 'automation', 'chrome', 'ai', 'launch']
|
|
8
|
+
coverImage: '/static/img/blog/yantra-browser-launch.png'
|
|
9
|
+
readTime: '6 min read'
|
|
10
|
+
slug: 'introducing-yantra-browser'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Introducing Yantra Browser: Your AI-Powered Browser Automation Companion
|
|
14
|
+
|
|
15
|
+
We're thrilled to announce **Yantra Browser** — a Chrome extension that transforms your everyday browser into an AI-powered automation powerhouse. Whether you're researching, managing emails, filling forms, or extracting data, Yantra Browser works alongside you to get things done faster and smarter.
|
|
16
|
+
|
|
17
|
+
## Two Environments, One Unified Experience
|
|
18
|
+
|
|
19
|
+
Yantra operates in two distinct but seamlessly connected environments:
|
|
20
|
+
|
|
21
|
+
| Environment | Description |
|
|
22
|
+
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
23
|
+
| **Your Browser** | The Chrome extension lives in your local browser, where you browse, shop, and work every day. It sees what you see and can interact with pages on your behalf. |
|
|
24
|
+
| **Cloud AI** | Yantra's AI assistant runs in the cloud, analyzing context, making decisions, and orchestrating multi-step workflows with enterprise-grade reliability. |
|
|
25
|
+
|
|
26
|
+
This dual-environment approach means you get the best of both worlds: the trust and familiarity of your own browser combined with the intelligence and scale of cloud-based AI.
|
|
27
|
+
|
|
28
|
+
## The Local Advantage
|
|
29
|
+
|
|
30
|
+
Unlike fully cloud-based browser automation tools, Yantra Browser runs directly on your machine. This gives you several key advantages:
|
|
31
|
+
|
|
32
|
+
- **Your Trusted Identity** — Websites see your real browser fingerprint and logged-in sessions. No CAPTCHAs, no bot detection, no blocked requests.
|
|
33
|
+
- **Your IP Address** — Requests come from your actual network, not a data center. Geo-restricted content just works.
|
|
34
|
+
- **Your Extensions** — Ad blockers, password managers, and other extensions you rely on continue to work seamlessly alongside Yantra.
|
|
35
|
+
- **Your Data Stays Local** — Page content is processed locally first. Only the minimal context needed for AI decisions leaves your machine.
|
|
36
|
+
|
|
37
|
+
## Full Automation for Real Workflows
|
|
38
|
+
|
|
39
|
+
Yantra Browser isn't just a page reader — it's a full automation agent capable of executing complex, multi-step workflows:
|
|
40
|
+
|
|
41
|
+
- **Research & Data Collection** — Automatically gather information across dozens of tabs, compile findings, and generate summaries.
|
|
42
|
+
- **Email & Communication** — Draft replies, schedule follow-ups, and manage your inbox with AI-assisted triage.
|
|
43
|
+
- **Form Filling & Data Entry** — Complete repetitive forms across CRM systems, HR platforms, and admin portals.
|
|
44
|
+
- **E-commerce & Price Monitoring** — Track prices, compare products, and receive alerts when deals match your criteria.
|
|
45
|
+
- **Content Management** — Publish blog posts, update CMS entries, and manage social media queues.
|
|
46
|
+
|
|
47
|
+
## How It Works
|
|
48
|
+
|
|
49
|
+
Getting started takes less than a minute:
|
|
50
|
+
|
|
51
|
+
1. **Install the Extension** — Add Yantra Browser from the Chrome Web Store. It integrates quietly into your browser toolbar.
|
|
52
|
+
2. **Connect Your Account** — Sign in with your Yantra account. The extension auto-detects your workspace or you can connect manually with a pairing code.
|
|
53
|
+
3. **Start Automating** — Give natural-language instructions to your Yantra AI assistant. Watch as it navigates, clicks, types, and extracts data in your browser — all while you stay in control.
|
|
54
|
+
|
|
55
|
+
## Transparency and Control
|
|
56
|
+
|
|
57
|
+
Every action Yantra takes is visible and reversible:
|
|
58
|
+
|
|
59
|
+
- **Action Feed** — See a real-time log of every click, navigation, and data extraction.
|
|
60
|
+
- **Pause & Resume** — Halt automation at any point, make manual adjustments, and let the AI continue.
|
|
61
|
+
- **Permission Boundaries** — You control which sites the extension can interact with and what types of actions are allowed.
|
|
62
|
+
- **No Remote Code** — The extension runs only bundled code. No scripts are downloaded or executed from external servers at runtime.
|
|
63
|
+
|
|
64
|
+
## Built on Chrome DevTools Protocol
|
|
65
|
+
|
|
66
|
+
Under the hood, Yantra Browser uses the Chrome DevTools Protocol (CDP) — the same technology that powers Chrome's built-in developer tools. This means:
|
|
67
|
+
|
|
68
|
+
- **Precise DOM Interaction** — Accurate element targeting without fragile CSS selectors or XPath hacks.
|
|
69
|
+
- **Network Awareness** — Monitor API calls, intercept responses, and understand page behavior in real time.
|
|
70
|
+
- **JavaScript Execution** — Run safe, sandboxed scripts to extract data or trigger UI interactions.
|
|
71
|
+
- **Performance Profiling** — Identify slow pages and optimize your automation workflows.
|
|
72
|
+
|
|
73
|
+
## Privacy First
|
|
74
|
+
|
|
75
|
+
We take your privacy seriously. The Yantra Browser extension:
|
|
76
|
+
|
|
77
|
+
- Collects **no browsing history**
|
|
78
|
+
- Stores **no passwords or credentials**
|
|
79
|
+
- Transmits **no personal data** without your explicit action
|
|
80
|
+
- Operates under a strict [Privacy Policy](/privacy) with full transparency about data handling
|
|
81
|
+
|
|
82
|
+
## Available Now
|
|
83
|
+
|
|
84
|
+
Yantra Browser is available today on the Chrome Web Store for all Yantra users. Whether you're on the Free, Pro, or Enterprise plan, you can install and start using the extension immediately.
|
|
85
|
+
|
|
86
|
+
[Install Yantra Browser →](https://chromewebstore.google.com/detail/yantra-browser)
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
_Have questions or feedback? Reach out to us at [support@yantra.app](mailto:support@yantra.app) or join our [Community](/community)._
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: '5 Ways Yantra Browser Supercharges Your Productivity'
|
|
3
|
+
description: 'Discover practical workflows where Yantra Browser saves hours of manual work — from research to data entry to inbox management.'
|
|
4
|
+
author: 'Yantra Team'
|
|
5
|
+
date: '2025-03-22'
|
|
6
|
+
category: 'Productivity'
|
|
7
|
+
tags: ['browser-extension', 'productivity', 'workflows', 'use-cases', 'tips']
|
|
8
|
+
coverImage: '/static/img/blog/yantra-browser-productivity.png'
|
|
9
|
+
readTime: '5 min read'
|
|
10
|
+
slug: 'yantra-browser-productivity-tips'
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 5 Ways Yantra Browser Supercharges Your Productivity
|
|
14
|
+
|
|
15
|
+
You've installed Yantra Browser. Your account is connected. Now what? Here are five high-impact workflows where the extension delivers immediate, measurable productivity gains.
|
|
16
|
+
|
|
17
|
+
## 1. Research That Writes Itself
|
|
18
|
+
|
|
19
|
+
**The old way:** Open 15 tabs, skim articles, copy-paste relevant quotes into a document, lose track of sources, spend 2 hours on a report that should take 30 minutes.
|
|
20
|
+
|
|
21
|
+
**The Yantra way:** Tell the AI assistant "Research the top 5 project management tools for remote teams and create a comparison summary." Yantra Browser:
|
|
22
|
+
|
|
23
|
+
- Opens authoritative review sites and product pages
|
|
24
|
+
- Extracts feature lists, pricing, and user ratings
|
|
25
|
+
- Cross-references multiple sources for accuracy
|
|
26
|
+
- Generates a structured comparison document with source links
|
|
27
|
+
|
|
28
|
+
**Time saved:** ~90 minutes per research session
|
|
29
|
+
|
|
30
|
+
## 2. Inbox Zero on Autopilot
|
|
31
|
+
|
|
32
|
+
**The old way:** Open every email, decide what to do, compose replies, file messages, flag follow-ups. Repeat 100 times a day.
|
|
33
|
+
|
|
34
|
+
**The Yantra way:** "Triage my inbox — reply to scheduling requests with my available times this week, flag anything from leadership as high priority, and archive all newsletters."
|
|
35
|
+
|
|
36
|
+
Yantra Browser navigates your email client, reads conversation threads, drafts contextual replies for your review, and organizes messages — all within your existing mail interface.
|
|
37
|
+
|
|
38
|
+
**Time saved:** ~45 minutes per day
|
|
39
|
+
|
|
40
|
+
## 3. Form Filling Without the Pain
|
|
41
|
+
|
|
42
|
+
**The old way:** Copy-paste the same company information into 12 different vendor portals. Re-enter employee details across HR systems. Manually update CRM records one by one.
|
|
43
|
+
|
|
44
|
+
**The Yantra way:** "Fill out the vendor registration form on acme.com using our standard company details." Or: "Update all 50 leads in Salesforce with the new territory assignments from this spreadsheet."
|
|
45
|
+
|
|
46
|
+
The extension navigates to forms, fills fields accurately, handles dropdowns and checkboxes, and even manages multi-page registration flows.
|
|
47
|
+
|
|
48
|
+
**Time saved:** ~2 hours per batch of form fills
|
|
49
|
+
|
|
50
|
+
## 4. Competitive Intelligence on Demand
|
|
51
|
+
|
|
52
|
+
**The old way:** Manually check competitor websites weekly, take screenshots, note pricing changes, compare feature updates, compile everything in a slide deck.
|
|
53
|
+
|
|
54
|
+
**The Yantra way:** "Monitor competitor pricing pages for TechCorp, DataCo, and CloudBase. Alert me to any changes and compile a weekly summary."
|
|
55
|
+
|
|
56
|
+
Yantra Browser visits target pages on schedule, extracts pricing and feature data, compares against previous snapshots, and surfaces meaningful changes — all using your local browser so there's no IP blocking or CAPTCHA interference.
|
|
57
|
+
|
|
58
|
+
**Time saved:** ~3 hours per week
|
|
59
|
+
|
|
60
|
+
## 5. Data Extraction Without Code
|
|
61
|
+
|
|
62
|
+
**The old way:** Write a web scraper, handle pagination, deal with anti-bot measures, parse HTML, clean data, load into a spreadsheet. Debug when the site layout changes.
|
|
63
|
+
|
|
64
|
+
**The Yantra way:** "Extract all product listings from this search results page — name, price, rating, and link — and organize them in a table."
|
|
65
|
+
|
|
66
|
+
Because Yantra Browser runs in your actual Chrome session, it handles JavaScript-rendered content, login-gated pages, and infinite scroll naturally. No separate scraping infrastructure needed.
|
|
67
|
+
|
|
68
|
+
**Time saved:** ~4 hours per extraction project
|
|
69
|
+
|
|
70
|
+
## Getting the Most Out of Yantra Browser
|
|
71
|
+
|
|
72
|
+
A few tips to maximize your automation efficiency:
|
|
73
|
+
|
|
74
|
+
### Be Specific in Your Instructions
|
|
75
|
+
|
|
76
|
+
Instead of "help me with email," try "reply to the last 3 unread emails from @company.com with a brief acknowledgment." The more context you provide, the better the AI performs.
|
|
77
|
+
|
|
78
|
+
### Start with Low-Risk Tasks
|
|
79
|
+
|
|
80
|
+
Begin with read-only operations like research and data extraction. As you build confidence, move to actions like form filling and email replies.
|
|
81
|
+
|
|
82
|
+
### Use the Action Feed
|
|
83
|
+
|
|
84
|
+
Watch the real-time action feed in the extension popup to understand what Yantra is doing. This builds intuition for what kinds of tasks work best.
|
|
85
|
+
|
|
86
|
+
### Combine with Yantra's Cloud AI
|
|
87
|
+
|
|
88
|
+
The browser extension is most powerful when paired with Yantra's full AI assistant. Use the extension for web interactions and the assistant for analysis, writing, and decision-making.
|
|
89
|
+
|
|
90
|
+
## Start Saving Time Today
|
|
91
|
+
|
|
92
|
+
Every workflow above is available right now with Yantra Browser. Install the extension, connect your account, and give one of these scenarios a try.
|
|
93
|
+
|
|
94
|
+
[Install Yantra Browser →](https://chromewebstore.google.com/detail/yantra-browser)
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
_What workflows are you automating with Yantra Browser? Share your use cases in our [Community](/community) — we feature the best ones in our monthly showcase._
|
|
@@ -116,6 +116,90 @@
|
|
|
116
116
|
"title": "AI Employee Supervised Mode"
|
|
117
117
|
}
|
|
118
118
|
},
|
|
119
|
+
{
|
|
120
|
+
"contentId": "blog-how-yantra-browser-automates-workflows",
|
|
121
|
+
"slug": "how-yantra-browser-automates-workflows",
|
|
122
|
+
"filePath": "/content/blog/how-yantra-browser-automates-workflows.md",
|
|
123
|
+
"relativePath": "blog/how-yantra-browser-automates-workflows.md",
|
|
124
|
+
"categoryId": "blog",
|
|
125
|
+
"title": "How Yantra Browser Automates Your Web Workflows",
|
|
126
|
+
"description": "A deep dive into the technical architecture behind Yantra Browser — how CDP relay, service workers, and cloud AI work together to automate the web.",
|
|
127
|
+
"author": "Yantra Team",
|
|
128
|
+
"updatedAt": "2025-03-21",
|
|
129
|
+
"frontmatter": {
|
|
130
|
+
"title": "How Yantra Browser Automates Your Web Workflows",
|
|
131
|
+
"description": "A deep dive into the technical architecture behind Yantra Browser — how CDP relay, service workers, and cloud AI work together to automate the web.",
|
|
132
|
+
"author": "Yantra Team",
|
|
133
|
+
"date": "2025-03-21",
|
|
134
|
+
"category": "Engineering",
|
|
135
|
+
"tags": [
|
|
136
|
+
"browser-extension",
|
|
137
|
+
"cdp",
|
|
138
|
+
"architecture",
|
|
139
|
+
"engineering",
|
|
140
|
+
"automation"
|
|
141
|
+
],
|
|
142
|
+
"coverImage": "/static/img/blog/yantra-browser-architecture.png",
|
|
143
|
+
"readTime": "8 min read",
|
|
144
|
+
"slug": "how-yantra-browser-automates-workflows"
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"contentId": "blog-introducing-yantra-browser",
|
|
149
|
+
"slug": "introducing-yantra-browser",
|
|
150
|
+
"filePath": "/content/blog/introducing-yantra-browser.md",
|
|
151
|
+
"relativePath": "blog/introducing-yantra-browser.md",
|
|
152
|
+
"categoryId": "blog",
|
|
153
|
+
"title": "Introducing Yantra Browser: Your AI-Powered Browser Automation Companion",
|
|
154
|
+
"description": "Meet Yantra Browser — a Chrome extension that turns your browser into an AI-powered automation tool, combining the power of your local browser with intelligent cloud AI.",
|
|
155
|
+
"author": "Yantra Team",
|
|
156
|
+
"updatedAt": "2025-03-21",
|
|
157
|
+
"frontmatter": {
|
|
158
|
+
"title": "Introducing Yantra Browser: Your AI-Powered Browser Automation Companion",
|
|
159
|
+
"description": "Meet Yantra Browser — a Chrome extension that turns your browser into an AI-powered automation tool, combining the power of your local browser with intelligent cloud AI.",
|
|
160
|
+
"author": "Yantra Team",
|
|
161
|
+
"date": "2025-03-21",
|
|
162
|
+
"category": "Product",
|
|
163
|
+
"tags": [
|
|
164
|
+
"browser-extension",
|
|
165
|
+
"automation",
|
|
166
|
+
"chrome",
|
|
167
|
+
"ai",
|
|
168
|
+
"launch"
|
|
169
|
+
],
|
|
170
|
+
"coverImage": "/static/img/blog/yantra-browser-launch.png",
|
|
171
|
+
"readTime": "6 min read",
|
|
172
|
+
"slug": "introducing-yantra-browser"
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"contentId": "blog-yantra-browser-productivity-tips",
|
|
177
|
+
"slug": "yantra-browser-productivity-tips",
|
|
178
|
+
"filePath": "/content/blog/yantra-browser-productivity-tips.md",
|
|
179
|
+
"relativePath": "blog/yantra-browser-productivity-tips.md",
|
|
180
|
+
"categoryId": "blog",
|
|
181
|
+
"title": "5 Ways Yantra Browser Supercharges Your Productivity",
|
|
182
|
+
"description": "Discover practical workflows where Yantra Browser saves hours of manual work — from research to data entry to inbox management.",
|
|
183
|
+
"author": "Yantra Team",
|
|
184
|
+
"updatedAt": "2025-03-22",
|
|
185
|
+
"frontmatter": {
|
|
186
|
+
"title": "5 Ways Yantra Browser Supercharges Your Productivity",
|
|
187
|
+
"description": "Discover practical workflows where Yantra Browser saves hours of manual work — from research to data entry to inbox management.",
|
|
188
|
+
"author": "Yantra Team",
|
|
189
|
+
"date": "2025-03-22",
|
|
190
|
+
"category": "Productivity",
|
|
191
|
+
"tags": [
|
|
192
|
+
"browser-extension",
|
|
193
|
+
"productivity",
|
|
194
|
+
"workflows",
|
|
195
|
+
"use-cases",
|
|
196
|
+
"tips"
|
|
197
|
+
],
|
|
198
|
+
"coverImage": "/static/img/blog/yantra-browser-productivity.png",
|
|
199
|
+
"readTime": "5 min read",
|
|
200
|
+
"slug": "yantra-browser-productivity-tips"
|
|
201
|
+
}
|
|
202
|
+
},
|
|
119
203
|
{
|
|
120
204
|
"contentId": "browser-extension-browser-extension-overview",
|
|
121
205
|
"slug": "browser-extension-overview",
|
|
@@ -1613,6 +1697,41 @@
|
|
|
1613
1697
|
}
|
|
1614
1698
|
]
|
|
1615
1699
|
},
|
|
1700
|
+
"blog": {
|
|
1701
|
+
"id": "blog",
|
|
1702
|
+
"title": "Blog",
|
|
1703
|
+
"description": "Product updates, technical deep dives, and productivity tips",
|
|
1704
|
+
"iconType": "Blog",
|
|
1705
|
+
"articles": [
|
|
1706
|
+
{
|
|
1707
|
+
"id": "blog-yantra-browser-productivity-tips",
|
|
1708
|
+
"title": "5 Ways Yantra Browser Supercharges Your Productivity",
|
|
1709
|
+
"description": "Discover practical workflows where Yantra Browser saves hours of manual work — from research to data entry to inbox management.",
|
|
1710
|
+
"slug": "yantra-browser-productivity-tips",
|
|
1711
|
+
"author": "Yantra Team",
|
|
1712
|
+
"updatedAt": "2025-03-22",
|
|
1713
|
+
"categoryId": "blog"
|
|
1714
|
+
},
|
|
1715
|
+
{
|
|
1716
|
+
"id": "blog-how-yantra-browser-automates-workflows",
|
|
1717
|
+
"title": "How Yantra Browser Automates Your Web Workflows",
|
|
1718
|
+
"description": "A deep dive into the technical architecture behind Yantra Browser — how CDP relay, service workers, and cloud AI work together to automate the web.",
|
|
1719
|
+
"slug": "how-yantra-browser-automates-workflows",
|
|
1720
|
+
"author": "Yantra Team",
|
|
1721
|
+
"updatedAt": "2025-03-21",
|
|
1722
|
+
"categoryId": "blog"
|
|
1723
|
+
},
|
|
1724
|
+
{
|
|
1725
|
+
"id": "blog-introducing-yantra-browser",
|
|
1726
|
+
"title": "Introducing Yantra Browser: Your AI-Powered Browser Automation Companion",
|
|
1727
|
+
"description": "Meet Yantra Browser — a Chrome extension that turns your browser into an AI-powered automation tool, combining the power of your local browser with intelligent cloud AI.",
|
|
1728
|
+
"slug": "introducing-yantra-browser",
|
|
1729
|
+
"author": "Yantra Team",
|
|
1730
|
+
"updatedAt": "2025-03-21",
|
|
1731
|
+
"categoryId": "blog"
|
|
1732
|
+
}
|
|
1733
|
+
]
|
|
1734
|
+
},
|
|
1616
1735
|
"browser-extension": {
|
|
1617
1736
|
"id": "browser-extension",
|
|
1618
1737
|
"title": "Browser Extension",
|
|
@@ -2858,6 +2977,9 @@
|
|
|
2858
2977
|
"ai-employees-getting-started-ai-employees": "/content/ai-employees/getting-started-ai-employees.md",
|
|
2859
2978
|
"ai-employees-how-ai-employees-work": "/content/ai-employees/how-ai-employees-work.md",
|
|
2860
2979
|
"ai-employees-supervised-mode": "/content/ai-employees/supervised-mode.md",
|
|
2980
|
+
"blog-how-yantra-browser-automates-workflows": "/content/blog/how-yantra-browser-automates-workflows.md",
|
|
2981
|
+
"blog-introducing-yantra-browser": "/content/blog/introducing-yantra-browser.md",
|
|
2982
|
+
"blog-yantra-browser-productivity-tips": "/content/blog/yantra-browser-productivity-tips.md",
|
|
2861
2983
|
"browser-extension-browser-extension-overview": "/content/browser-extension/browser-extension-overview.md",
|
|
2862
2984
|
"browser-extension-extension-security": "/content/browser-extension/extension-security.md",
|
|
2863
2985
|
"browser-extension-getting-started-extension": "/content/browser-extension/getting-started-extension.md",
|
|
@@ -3135,6 +3257,106 @@
|
|
|
3135
3257
|
}
|
|
3136
3258
|
]
|
|
3137
3259
|
},
|
|
3260
|
+
{
|
|
3261
|
+
"type": "directory",
|
|
3262
|
+
"name": "blog",
|
|
3263
|
+
"path": "blog",
|
|
3264
|
+
"children": [
|
|
3265
|
+
{
|
|
3266
|
+
"type": "file",
|
|
3267
|
+
"name": "how-yantra-browser-automates-workflows",
|
|
3268
|
+
"title": "How Yantra Browser Automates Your Web Workflows",
|
|
3269
|
+
"path": "blog/how-yantra-browser-automates-workflows.md",
|
|
3270
|
+
"contentId": "blog-how-yantra-browser-automates-workflows",
|
|
3271
|
+
"slug": "how-yantra-browser-automates-workflows",
|
|
3272
|
+
"categoryId": "blog",
|
|
3273
|
+
"filePath": "/content/docs/blog/how-yantra-browser-automates-workflows.md",
|
|
3274
|
+
"relativePath": "blog/how-yantra-browser-automates-workflows.md",
|
|
3275
|
+
"description": "A deep dive into the technical architecture behind Yantra Browser — how CDP relay, service workers, and cloud AI work together to automate the web.",
|
|
3276
|
+
"author": "Yantra Team",
|
|
3277
|
+
"updatedAt": "2025-03-21",
|
|
3278
|
+
"frontmatter": {
|
|
3279
|
+
"title": "How Yantra Browser Automates Your Web Workflows",
|
|
3280
|
+
"description": "A deep dive into the technical architecture behind Yantra Browser — how CDP relay, service workers, and cloud AI work together to automate the web.",
|
|
3281
|
+
"author": "Yantra Team",
|
|
3282
|
+
"date": "2025-03-21",
|
|
3283
|
+
"category": "Engineering",
|
|
3284
|
+
"tags": [
|
|
3285
|
+
"browser-extension",
|
|
3286
|
+
"cdp",
|
|
3287
|
+
"architecture",
|
|
3288
|
+
"engineering",
|
|
3289
|
+
"automation"
|
|
3290
|
+
],
|
|
3291
|
+
"coverImage": "/static/img/blog/yantra-browser-architecture.png",
|
|
3292
|
+
"readTime": "8 min read",
|
|
3293
|
+
"slug": "how-yantra-browser-automates-workflows"
|
|
3294
|
+
}
|
|
3295
|
+
},
|
|
3296
|
+
{
|
|
3297
|
+
"type": "file",
|
|
3298
|
+
"name": "introducing-yantra-browser",
|
|
3299
|
+
"title": "Introducing Yantra Browser: Your AI-Powered Browser Automation Companion",
|
|
3300
|
+
"path": "blog/introducing-yantra-browser.md",
|
|
3301
|
+
"contentId": "blog-introducing-yantra-browser",
|
|
3302
|
+
"slug": "introducing-yantra-browser",
|
|
3303
|
+
"categoryId": "blog",
|
|
3304
|
+
"filePath": "/content/docs/blog/introducing-yantra-browser.md",
|
|
3305
|
+
"relativePath": "blog/introducing-yantra-browser.md",
|
|
3306
|
+
"description": "Meet Yantra Browser — a Chrome extension that turns your browser into an AI-powered automation tool, combining the power of your local browser with intelligent cloud AI.",
|
|
3307
|
+
"author": "Yantra Team",
|
|
3308
|
+
"updatedAt": "2025-03-21",
|
|
3309
|
+
"frontmatter": {
|
|
3310
|
+
"title": "Introducing Yantra Browser: Your AI-Powered Browser Automation Companion",
|
|
3311
|
+
"description": "Meet Yantra Browser — a Chrome extension that turns your browser into an AI-powered automation tool, combining the power of your local browser with intelligent cloud AI.",
|
|
3312
|
+
"author": "Yantra Team",
|
|
3313
|
+
"date": "2025-03-21",
|
|
3314
|
+
"category": "Product",
|
|
3315
|
+
"tags": [
|
|
3316
|
+
"browser-extension",
|
|
3317
|
+
"automation",
|
|
3318
|
+
"chrome",
|
|
3319
|
+
"ai",
|
|
3320
|
+
"launch"
|
|
3321
|
+
],
|
|
3322
|
+
"coverImage": "/static/img/blog/yantra-browser-launch.png",
|
|
3323
|
+
"readTime": "6 min read",
|
|
3324
|
+
"slug": "introducing-yantra-browser"
|
|
3325
|
+
}
|
|
3326
|
+
},
|
|
3327
|
+
{
|
|
3328
|
+
"type": "file",
|
|
3329
|
+
"name": "yantra-browser-productivity-tips",
|
|
3330
|
+
"title": "5 Ways Yantra Browser Supercharges Your Productivity",
|
|
3331
|
+
"path": "blog/yantra-browser-productivity-tips.md",
|
|
3332
|
+
"contentId": "blog-yantra-browser-productivity-tips",
|
|
3333
|
+
"slug": "yantra-browser-productivity-tips",
|
|
3334
|
+
"categoryId": "blog",
|
|
3335
|
+
"filePath": "/content/docs/blog/yantra-browser-productivity-tips.md",
|
|
3336
|
+
"relativePath": "blog/yantra-browser-productivity-tips.md",
|
|
3337
|
+
"description": "Discover practical workflows where Yantra Browser saves hours of manual work — from research to data entry to inbox management.",
|
|
3338
|
+
"author": "Yantra Team",
|
|
3339
|
+
"updatedAt": "2025-03-22",
|
|
3340
|
+
"frontmatter": {
|
|
3341
|
+
"title": "5 Ways Yantra Browser Supercharges Your Productivity",
|
|
3342
|
+
"description": "Discover practical workflows where Yantra Browser saves hours of manual work — from research to data entry to inbox management.",
|
|
3343
|
+
"author": "Yantra Team",
|
|
3344
|
+
"date": "2025-03-22",
|
|
3345
|
+
"category": "Productivity",
|
|
3346
|
+
"tags": [
|
|
3347
|
+
"browser-extension",
|
|
3348
|
+
"productivity",
|
|
3349
|
+
"workflows",
|
|
3350
|
+
"use-cases",
|
|
3351
|
+
"tips"
|
|
3352
|
+
],
|
|
3353
|
+
"coverImage": "/static/img/blog/yantra-browser-productivity.png",
|
|
3354
|
+
"readTime": "5 min read",
|
|
3355
|
+
"slug": "yantra-browser-productivity-tips"
|
|
3356
|
+
}
|
|
3357
|
+
}
|
|
3358
|
+
]
|
|
3359
|
+
},
|
|
3138
3360
|
{
|
|
3139
3361
|
"type": "directory",
|
|
3140
3362
|
"name": "browser-extension",
|
|
@@ -5128,6 +5350,31 @@
|
|
|
5128
5350
|
],
|
|
5129
5351
|
"isFile": false
|
|
5130
5352
|
},
|
|
5353
|
+
{
|
|
5354
|
+
"title": "Blog",
|
|
5355
|
+
"path": null,
|
|
5356
|
+
"children": [
|
|
5357
|
+
{
|
|
5358
|
+
"title": "How Yantra Browser Automates Your Web Workflows",
|
|
5359
|
+
"path": "/help-center/blog/how-yantra-browser-automates-workflows",
|
|
5360
|
+
"children": [],
|
|
5361
|
+
"isFile": true
|
|
5362
|
+
},
|
|
5363
|
+
{
|
|
5364
|
+
"title": "Introducing Yantra Browser: Your AI-Powered Browser Automation Companion",
|
|
5365
|
+
"path": "/help-center/blog/introducing-yantra-browser",
|
|
5366
|
+
"children": [],
|
|
5367
|
+
"isFile": true
|
|
5368
|
+
},
|
|
5369
|
+
{
|
|
5370
|
+
"title": "5 Ways Yantra Browser Supercharges Your Productivity",
|
|
5371
|
+
"path": "/help-center/blog/yantra-browser-productivity-tips",
|
|
5372
|
+
"children": [],
|
|
5373
|
+
"isFile": true
|
|
5374
|
+
}
|
|
5375
|
+
],
|
|
5376
|
+
"isFile": false
|
|
5377
|
+
},
|
|
5131
5378
|
{
|
|
5132
5379
|
"title": "Browser Extension",
|
|
5133
5380
|
"path": null,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adminide-stack/yantra-help-browser",
|
|
3
|
-
"version": "12.0.16-alpha.
|
|
3
|
+
"version": "12.0.16-alpha.30",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "Yantra App",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"typescript": {
|
|
72
72
|
"definition": "lib/index.d.ts"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "15fd648087d7c0b1503f578b78f2a224d84d3887"
|
|
75
75
|
}
|