Skip to content

Commit 3f65e2c

Browse files
committed
publish
0 parents  commit 3f65e2c

33 files changed

Lines changed: 14319 additions & 0 deletions

.github/workflows/ci.yml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: CI
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
test:
8+
runs-on: ubuntu-latest
9+
10+
steps:
11+
- uses: actions/checkout@v4
12+
13+
- name: Setup pnpm
14+
uses: pnpm/action-setup@v4
15+
with:
16+
version: 10
17+
18+
- name: Setup Node.js
19+
uses: actions/setup-node@v4
20+
with:
21+
node-version: "22"
22+
cache: "pnpm"
23+
24+
- name: Install dependencies
25+
run: pnpm install --frozen-lockfile
26+
27+
- name: Type check
28+
run: pnpm run typecheck
29+
30+
- name: Run tests
31+
run: pnpm run test
32+
33+
- name: Build extension
34+
run: pnpm run build

.github/workflows/release.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Build Extension Zip
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
8+
jobs:
9+
build:
10+
runs-on: ubuntu-latest
11+
12+
steps:
13+
- name: Checkout
14+
uses: actions/checkout@v4
15+
16+
- name: Create production env file
17+
run: |
18+
cat <<'EOF' > .env.production
19+
PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY=${{ secrets.PLASMO_PUBLIC_CLERK_PUBLISHABLE_KEY }}
20+
CLERK_FRONTEND_API=${{ secrets.CLERK_FRONTEND_API }}
21+
PLASMO_PUBLIC_CLERK_SYNC_HOST=${{ secrets.PLASMO_PUBLIC_CLERK_SYNC_HOST }}
22+
PLASMO_PUBLIC_FRONTEND_URL=${{ secrets.PLASMO_PUBLIC_FRONTEND_URL }}
23+
EOF
24+
25+
- name: Create chrome env file
26+
run: |
27+
cat <<'EOF' > .env.chrome
28+
CRX_PUBLIC_KEY=${{ secrets.CRX_PUBLIC_KEY }}
29+
EOF
30+
31+
- name: Setup pnpm
32+
uses: pnpm/action-setup@v4
33+
34+
- name: Setup Node.js
35+
uses: actions/setup-node@v4
36+
with:
37+
node-version: 20
38+
cache: pnpm
39+
40+
- name: Install dependencies
41+
run: pnpm install
42+
43+
- name: Build package zip
44+
run: pnpm package
45+
46+
- name: Prepare artifact
47+
run: mv build/chrome-mv3-prod.zip flow-extension.zip
48+
49+
- name: Upload workflow artifact
50+
uses: actions/upload-artifact@v4
51+
with:
52+
name: flow-extension
53+
path: flow-extension.zip
54+
55+
- name: Attach zip to release
56+
if: github.event_name == 'release'
57+
uses: softprops/action-gh-release@v2
58+
with:
59+
files: flow-extension.zip

.github/workflows/submit.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: "Submit to Web Store"
2+
on:
3+
workflow_dispatch:
4+
5+
jobs:
6+
build:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v4
10+
11+
- name: Setup pnpm
12+
uses: pnpm/action-setup@v4
13+
with:
14+
version: 10
15+
16+
- name: Setup Node.js
17+
uses: actions/setup-node@v4
18+
with:
19+
node-version: "22"
20+
cache: "pnpm"
21+
22+
- name: Install dependencies
23+
run: pnpm install --frozen-lockfile
24+
25+
- name: Type check
26+
run: pnpm run typecheck
27+
28+
- name: Run tests
29+
run: pnpm run test
30+
31+
- name: Build the extension
32+
run: pnpm build
33+
34+
- name: Package the extension into a zip artifact
35+
run: pnpm package
36+
37+
- name: Browser Platform Publish
38+
uses: PlasmoHQ/bpp@v3
39+
with:
40+
keys: ${{ secrets.SUBMIT_KEYS }}
41+
artifact: build/chrome-mv3-prod.zip

.gitignore

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
2+
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
3+
4+
# dependencies
5+
/node_modules
6+
/.pnp
7+
.pnp.js
8+
9+
# testing
10+
/coverage
11+
12+
#cache
13+
.turbo
14+
15+
# misc
16+
.DS_Store
17+
*.pem
18+
19+
# debug
20+
npm-debug.log*
21+
yarn-debug.log*
22+
yarn-error.log*
23+
.pnpm-debug.log*
24+
25+
# local env files
26+
.env.local
27+
.env*.local
28+
.env.production
29+
.env.chrome
30+
.env.development
31+
32+
out/
33+
build/
34+
dist/
35+
36+
# plasmo - https://www.plasmo.com
37+
.plasmo
38+
39+
# bpp - http://bpp.browser.market/
40+
keys.json
41+
42+
# typescript
43+
.tsbuildinfo

.prettierrc.mjs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @type {import('prettier').Options}
3+
*/
4+
export default {
5+
printWidth: 80,
6+
tabWidth: 2,
7+
useTabs: false,
8+
semi: false,
9+
singleQuote: false,
10+
trailingComma: "none",
11+
bracketSpacing: true,
12+
bracketSameLine: true,
13+
plugins: ["@ianvs/prettier-plugin-sort-imports"],
14+
importOrder: [
15+
"<BUILTIN_MODULES>", // Node.js built-in modules
16+
"<THIRD_PARTY_MODULES>", // Imports not matched by other special words or groups.
17+
"", // Empty line
18+
"^@plasmo/(.*)$",
19+
"",
20+
"^@plasmohq/(.*)$",
21+
"",
22+
"^~(.*)$",
23+
"",
24+
"^[./]"
25+
]
26+
}

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Flow Browser Extension (Beta)
2+
3+
The Flow browser extension brings DocSend capture tooling and Clerk-backed authentication directly into Chrome. Beta users receive pre-built packages distributed through Flow releases.
4+
5+
## Highlights
6+
7+
- Capture DocSend presentations slide-by-slide and store them directly in your Flow library.
8+
- Stay signed in via your existing Flow account.
9+
10+
11+
## Requirements
12+
13+
- Google Chrome (or any Chromium-based browser that supports Manifest V3).
14+
- A Flow beta account with access to the DocSend capture feature.
15+
16+
## Installation
17+
18+
1. **Download the latest release**
19+
- Visit the [GitHub releases page](https://github.com/emergentlabs/flow-extension/releases)
20+
- Download the latest `flow-extension.zip` file
21+
22+
2. **Extract the archive**
23+
- Unzip the downloaded file to a location on your computer
24+
- Remember this location as you'll need it for the next step
25+
26+
3. **Load the extension in Chrome**
27+
- Open Chrome and navigate to `chrome://extensions`
28+
- Enable "Developer mode" using the toggle in the top-right corner
29+
- Click "Load unpacked"
30+
- Select the extracted extension directory
31+
- The Flow extension should now appear in your extensions list
32+
33+
4. **Pin the extension (optional)**
34+
- Click the puzzle piece icon in Chrome's toolbar
35+
- Find "Flow" and click the pin icon to keep it visible
36+
37+
## Updates
38+
39+
- New releases supersede previous versions
40+
- To update, download the latest release and repeat the installation steps
41+
- You can delete old extension directories after updating

assets/icon.png

1.02 MB
Loading

global.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/// <reference types="chrome" />
2+
/// <reference types="vitest/globals" />

package.json

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
{
2+
"name": "flow-extension",
3+
"displayName": "Flow",
4+
"version": "0.0.1",
5+
"description": "Flow extension",
6+
"author": "Flow",
7+
"scripts": {
8+
"dev": "plasmo dev",
9+
"build": "plasmo build",
10+
"build:store": "NODE_ENV=production CRX_PUBLIC_KEY= plasmo build --zip",
11+
"package": "plasmo package",
12+
"test": "vitest run",
13+
"test:ui": "vitest --ui",
14+
"test:coverage": "vitest --coverage",
15+
"test:watch": "vitest --watch",
16+
"typecheck": "tsc --noEmit",
17+
"lint": "tsc --noEmit",
18+
"check": "pnpm run typecheck && pnpm run test"
19+
},
20+
"dependencies": {
21+
"@clerk/chrome-extension": "^2.7.7",
22+
"@plasmohq/storage": "^1.15.0",
23+
"plasmo": "0.90.5",
24+
"react": "18.2.0",
25+
"react-dom": "18.2.0",
26+
"react-router": "^7.9.4",
27+
"tailwindcss": "3.4.1"
28+
},
29+
"devDependencies": {
30+
"@ianvs/prettier-plugin-sort-imports": "4.1.1",
31+
"@testing-library/jest-dom": "^6.9.1",
32+
"@testing-library/react": "^16.3.0",
33+
"@testing-library/user-event": "^14.6.1",
34+
"@types/chrome": "0.0.258",
35+
"@types/node": "20.11.5",
36+
"@types/react": "18.2.48",
37+
"@types/react-dom": "18.2.18",
38+
"@vitest/coverage-v8": "^3.2.4",
39+
"@vitest/ui": "^3.2.4",
40+
"jest-webextension-mock": "^4.0.0",
41+
"jsdom": "^27.0.1",
42+
"msw": "^2.11.6",
43+
"postcss": "8.4.33",
44+
"prettier": "3.2.4",
45+
"typescript": "5.3.3",
46+
"vitest": "^3.2.4"
47+
},
48+
"manifest": {
49+
"key": "$CRX_PUBLIC_KEY",
50+
"permissions": [
51+
"cookies",
52+
"storage",
53+
"activeTab",
54+
"tabs",
55+
"scripting",
56+
"notifications",
57+
"debugger"
58+
],
59+
"host_permissions": [
60+
"$PLASMO_PUBLIC_CLERK_SYNC_HOST/*",
61+
"$CLERK_FRONTEND_API/*",
62+
"https://docsend.com/*"
63+
],
64+
"externally_connectable": {
65+
"matches": [
66+
"$PLASMO_PUBLIC_CLERK_SYNC_HOST/*",
67+
"http://localhost:3000/*"
68+
]
69+
}
70+
},
71+
"packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
72+
}

0 commit comments

Comments
 (0)