Skip to content

Commit 2bd068d

Browse files
authored
Merge pull request #1336 from MODSetter/dev
0.0.20: platform-wide chat, billing, connector, and desktop upgrades
2 parents d59be44 + 54020fe commit 2bd068d

622 files changed

Lines changed: 76713 additions & 11921 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/desktop-release.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,19 @@ jobs:
136136
AZURE_CODESIGN_ENDPOINT: ${{ vars.AZURE_CODESIGN_ENDPOINT }}
137137
AZURE_CODESIGN_ACCOUNT: ${{ vars.AZURE_CODESIGN_ACCOUNT }}
138138
AZURE_CODESIGN_PROFILE: ${{ vars.AZURE_CODESIGN_PROFILE }}
139+
# macOS Developer ID signing + notarization. Only the macos-latest runner
140+
# consumes these; Windows/Linux runners ignore them. CSC_LINK accepts either
141+
# a file path or a base64-encoded .p12 blob — electron-builder auto-detects.
142+
CSC_LINK: ${{ secrets.MAC_CERT_P12_BASE64 }}
143+
CSC_KEY_PASSWORD: ${{ secrets.MAC_CERT_PASSWORD }}
144+
APPLE_ID: ${{ secrets.APPLE_ID }}
145+
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
146+
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
147+
# TEMP DEBUG — remove once the codesign hang on macos-latest is diagnosed.
148+
# Surfaces the exact codesign / notarize commands electron-builder spawns,
149+
# so we can see which subprocess hangs.
150+
DEBUG: electron-builder,electron-osx-sign*,@electron/notarize*
151+
ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES: "true"
139152
# Service principal credentials for Azure.Identity EnvironmentCredential used by the
140153
# TrustedSigning PowerShell module. Only populated when signing is enabled.
141154
# electron-builder 26 does not yet support OIDC federated tokens for Azure signing,
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Obsidian Plugin Lint
2+
3+
# Lints + type-checks + builds the Obsidian plugin on every push/PR that
4+
# touches its sources. The official obsidian-sample-plugin template ships
5+
# its own ESLint+esbuild setup; we run that here instead of folding the
6+
# plugin into the monorepo's Biome-based code-quality.yml so the tooling
7+
# stays aligned with what `obsidianmd/eslint-plugin-obsidianmd` checks
8+
# against.
9+
10+
on:
11+
push:
12+
branches: ["**"]
13+
paths:
14+
- "surfsense_obsidian/**"
15+
- ".github/workflows/obsidian-plugin-lint.yml"
16+
pull_request:
17+
branches: ["**"]
18+
paths:
19+
- "surfsense_obsidian/**"
20+
- ".github/workflows/obsidian-plugin-lint.yml"
21+
22+
jobs:
23+
lint:
24+
runs-on: ubuntu-latest
25+
defaults:
26+
run:
27+
working-directory: surfsense_obsidian
28+
steps:
29+
- uses: actions/checkout@v6
30+
31+
- uses: actions/setup-node@v6
32+
with:
33+
node-version: 22.x
34+
cache: npm
35+
cache-dependency-path: surfsense_obsidian/package-lock.json
36+
37+
- run: npm ci
38+
- run: npm run lint
39+
- run: npm run build
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
name: Release Obsidian Plugin
2+
3+
# Tag format: `obsidian-v<version>` and `<version>` must match `surfsense_obsidian/manifest.json` exactly.
4+
on:
5+
push:
6+
tags:
7+
- "obsidian-v*"
8+
workflow_dispatch:
9+
inputs:
10+
publish:
11+
description: "Publish to GitHub Releases"
12+
required: true
13+
type: choice
14+
options:
15+
- never
16+
- always
17+
default: "never"
18+
19+
permissions:
20+
contents: write
21+
22+
jobs:
23+
build-and-release:
24+
runs-on: ubuntu-latest
25+
defaults:
26+
run:
27+
working-directory: surfsense_obsidian
28+
29+
steps:
30+
- uses: actions/checkout@v6
31+
with:
32+
# Need write access for the manifest/versions.json mirror commit
33+
# back to main further down.
34+
fetch-depth: 0
35+
token: ${{ secrets.GITHUB_TOKEN }}
36+
37+
- uses: actions/setup-node@v6
38+
with:
39+
node-version: 22.x
40+
cache: npm
41+
cache-dependency-path: surfsense_obsidian/package-lock.json
42+
43+
- name: Resolve plugin version
44+
id: version
45+
run: |
46+
manifest_version=$(node -p "require('./manifest.json').version")
47+
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
48+
# Manual runs derive the release version from manifest.json.
49+
version="$manifest_version"
50+
tag="obsidian-v$version"
51+
else
52+
tag="${GITHUB_REF_NAME}"
53+
if [ -z "$tag" ] || [[ "$tag" != obsidian-v* ]]; then
54+
echo "::error::Invalid tag '$tag'. Expected format: obsidian-v<version>"
55+
exit 1
56+
fi
57+
version="${tag#obsidian-v}"
58+
if [ "$version" != "$manifest_version" ]; then
59+
echo "::error::Tag version '$version' does not match manifest version '$manifest_version'"
60+
exit 1
61+
fi
62+
fi
63+
echo "tag=$tag" >> "$GITHUB_OUTPUT"
64+
echo "version=$version" >> "$GITHUB_OUTPUT"
65+
66+
- name: Resolve publish mode
67+
id: release_mode
68+
run: |
69+
if [ "${{ github.event_name }}" = "push" ] || [ "${{ inputs.publish }}" = "always" ]; then
70+
echo "should_publish=true" >> "$GITHUB_OUTPUT"
71+
else
72+
echo "should_publish=false" >> "$GITHUB_OUTPUT"
73+
fi
74+
75+
- run: npm ci
76+
77+
- run: npm run lint
78+
79+
- run: npm run build
80+
81+
- name: Verify build artifacts
82+
run: |
83+
for f in main.js manifest.json styles.css; do
84+
test -f "$f" || (echo "::error::Missing release artifact: $f" && exit 1)
85+
done
86+
87+
- name: Mirror manifest.json + versions.json to repo root
88+
if: steps.release_mode.outputs.should_publish == 'true'
89+
working-directory: ${{ github.workspace }}
90+
run: |
91+
cp surfsense_obsidian/manifest.json manifest.json
92+
cp surfsense_obsidian/versions.json versions.json
93+
if git diff --quiet manifest.json versions.json; then
94+
echo "Root manifest/versions already up to date."
95+
exit 0
96+
fi
97+
git config user.name "github-actions[bot]"
98+
git config user.email "github-actions[bot]@users.noreply.github.com"
99+
git add manifest.json versions.json
100+
git commit -m "chore(obsidian-plugin): mirror manifest+versions for ${{ steps.version.outputs.tag }}"
101+
# Push to the default branch so Obsidian can fetch raw files from HEAD.
102+
if ! git push origin HEAD:${{ github.event.repository.default_branch }}; then
103+
echo "::warning::Failed to push mirrored manifest/versions to default branch (likely branch protection). Continuing release."
104+
fi
105+
106+
# Publish release under bare `manifest.json` version (no `obsidian-v` prefix) for BRAT/store compatibility.
107+
# `make_latest: "false"` keeps the desktop app's `v*` release headlined since Obsidian and BRAT resolve plugins via getReleaseByTag, not the latest flag.
108+
- name: Create GitHub release
109+
if: steps.release_mode.outputs.should_publish == 'true'
110+
uses: softprops/action-gh-release@v3
111+
with:
112+
tag_name: ${{ steps.version.outputs.version }}
113+
name: SurfSense Obsidian Plugin ${{ steps.version.outputs.version }}
114+
generate_release_notes: true
115+
make_latest: "false"
116+
files: |
117+
surfsense_obsidian/main.js
118+
surfsense_obsidian/manifest.json
119+
surfsense_obsidian/styles.css

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ node_modules/
77
.pnpm-store
88
.DS_Store
99
deepagents/
10-
debug.log
10+
debug.log
11+
opencode/

README.es.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ NotebookLM es una de las mejores y más útiles plataformas de IA que existen, p
4141
- **Sin Dependencia de Proveedores** - Configura cualquier modelo LLM, de imagen, TTS y STT.
4242
- **25+ Fuentes de Datos Externas** - Agrega tus fuentes desde Google Drive, OneDrive, Dropbox, Notion y muchos otros servicios externos.
4343
- **Soporte Multijugador en Tiempo Real** - Trabaja fácilmente con los miembros de tu equipo en un notebook compartido.
44-
- **Aplicación de Escritorio** - Obtén asistencia de IA en cualquier aplicación con Quick Assist, General Assist, Extreme Assist y sincronización de carpetas locales.
44+
- **Aplicación de Escritorio** - Obtén asistencia de IA en cualquier aplicación con Quick Assist, General Assist, Screenshot Assist y sincronización de carpetas locales.
4545

4646
...y más por venir.
4747

@@ -84,9 +84,9 @@ https://github.com/user-attachments/assets/a0a16566-6967-4374-ac51-9b3e07fbecd7
8484

8585
<p align="center"><img src="surfsense_web/public/homepage/hero_tutorial/quick_assist.gif" alt="Quick Assist" /></p>
8686

87-
- Aplicación de Escritorio — Extreme Assist
87+
- Aplicación de Escritorio — Screenshot Assist
8888

89-
<p align="center"><img src="surfsense_web/public/homepage/hero_tutorial/extreme_assist.gif" alt="Extreme Assist" /></p>
89+
<p align="center"><img src="surfsense_web/public/homepage/hero_tutorial/screenshot_assist.gif" alt="Screenshot Assist" /></p>
9090

9191
- Aplicación de Escritorio — Watch Local Folder
9292

@@ -150,7 +150,7 @@ La aplicación de escritorio incluye estas potentes funciones:
150150

151151
- **General Assist** — Lanza SurfSense al instante desde cualquier aplicación con un atajo global.
152152
- **Quick Assist** — Selecciona texto en cualquier lugar, luego pide a la IA que lo explique, reescriba o actúe sobre él.
153-
- **Extreme Assist**Obtén sugerencias de escritura en línea impulsadas por tu base de conocimiento mientras escribes en cualquier aplicación.
153+
- **Screenshot Assist**Selecciona una región de tu pantalla y adjúntala al chat para que las respuestas se basen en tu base de conocimiento.
154154
- **Watch Local Folder** — Vigila una carpeta local y sincroniza automáticamente los cambios de archivos con tu base de conocimiento. **Pro tip:** Apúntalo a tu bóveda de Obsidian para mantener tus notas buscables en SurfSense.
155155

156156
Todas las funciones operan contra tu espacio de búsqueda elegido, por lo que tus respuestas siempre están basadas en tus propios datos.
@@ -199,14 +199,14 @@ Todas las funciones operan contra tu espacio de búsqueda elegido, por lo que tu
199199
| **Generación de Videos** | Resúmenes en video cinemáticos vía Veo 3 (solo Ultra) | Disponible (NotebookLM es mejor aquí, mejorando activamente) |
200200
| **Generación de Presentaciones** | Diapositivas más atractivas pero no editables | Crea presentaciones editables basadas en diapositivas |
201201
| **Generación de Podcasts** | Resúmenes de audio con hosts e idiomas personalizables | Disponible con múltiples proveedores TTS (NotebookLM es mejor aquí, mejorando activamente) |
202-
| **Aplicación de Escritorio** | No | Aplicación nativa con General Assist, Quick Assist, Extreme Assist y sincronización de carpetas locales |
202+
| **Aplicación de Escritorio** | No | Aplicación nativa con General Assist, Quick Assist, Screenshot Assist y sincronización de carpetas locales |
203203
| **Extensión de Navegador** | No | Extensión multi-navegador para guardar cualquier página web, incluyendo páginas protegidas por autenticación |
204204

205205
<details>
206206
<summary><b>Lista completa de Fuentes Externas</b></summary>
207207
<a id="fuentes-externas"></a>
208208

209-
Motores de Búsqueda (Tavily, LinkUp) · SearxNG · Google Drive · OneDrive · Dropbox · Slack · Microsoft Teams · Linear · Jira · ClickUp · Confluence · BookStack · Notion · Gmail · Videos de YouTube · GitHub · Discord · Airtable · Google Calendar · Luma · Circleback · Elasticsearch · Obsidian, y más por venir.
209+
Motores de Búsqueda (SearXNG, Tavily, LinkUp, Baidu Search) · Google Drive · OneDrive · Dropbox · Slack · Microsoft Teams · Linear · Jira · ClickUp · Confluence · BookStack · Notion · Gmail · Videos de YouTube · GitHub · Discord · Airtable · Google Calendar · Luma · Circleback · Elasticsearch · Obsidian, y más por venir.
210210

211211
</details>
212212

README.hi.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ NotebookLM वहाँ उपलब्ध सबसे अच्छे और
4141
- **कोई विक्रेता लॉक-इन नहीं** - किसी भी LLM, इमेज, TTS और STT मॉडल को कॉन्फ़िगर करें।
4242
- **25+ बाहरी डेटा स्रोत** - Google Drive, OneDrive, Dropbox, Notion और कई अन्य बाहरी सेवाओं से अपने स्रोत जोड़ें।
4343
- **रीयल-टाइम मल्टीप्लेयर सपोर्ट** - एक साझा notebook में अपनी टीम के सदस्यों के साथ आसानी से काम करें।
44-
- **डेस्कटॉप ऐप** - Quick Assist, General Assist, Extreme Assist और लोकल फ़ोल्डर सिंक के साथ किसी भी एप्लिकेशन में AI सहायता प्राप्त करें।
44+
- **डेस्कटॉप ऐप** - Quick Assist, General Assist, Screenshot Assist और लोकल फ़ोल्डर सिंक के साथ किसी भी एप्लिकेशन में AI सहायता प्राप्त करें।
4545

4646
...और भी बहुत कुछ आने वाला है।
4747

@@ -84,9 +84,9 @@ https://github.com/user-attachments/assets/a0a16566-6967-4374-ac51-9b3e07fbecd7
8484

8585
<p align="center"><img src="surfsense_web/public/homepage/hero_tutorial/quick_assist.gif" alt="Quick Assist" /></p>
8686

87-
- डेस्कटॉप ऐप — Extreme Assist
87+
- डेस्कटॉप ऐप — Screenshot Assist
8888

89-
<p align="center"><img src="surfsense_web/public/homepage/hero_tutorial/extreme_assist.gif" alt="Extreme Assist" /></p>
89+
<p align="center"><img src="surfsense_web/public/homepage/hero_tutorial/screenshot_assist.gif" alt="Screenshot Assist" /></p>
9090

9191
- डेस्कटॉप ऐप — Watch Local Folder
9292

@@ -150,7 +150,7 @@ SurfSense एक डेस्कटॉप ऐप भी प्रदान क
150150

151151
- **General Assist** — एक ग्लोबल शॉर्टकट से किसी भी एप्लिकेशन से तुरंत SurfSense लॉन्च करें।
152152
- **Quick Assist** — कहीं भी टेक्स्ट चुनें, फिर AI से समझाने, फिर से लिखने या उस पर कार्रवाई करने को कहें।
153-
- **Extreme Assist**किसी भी ऐप में टाइप करते समय अपनी नॉलेज बेस से संचालित इनलाइन लेखन सुझाव प्राप्त करें
153+
- **Screenshot Assist**स्क्रीन पर एक क्षेत्र चुनें और उसे चैट में जोड़ें, ताकि उत्तर आपकी नॉलेज बेस पर आधारित रहें
154154
- **Watch Local Folder** — एक लोकल फ़ोल्डर को वॉच करें और फ़ाइल परिवर्तनों को स्वचालित रूप से अपनी नॉलेज बेस में सिंक करें। **Pro tip:** इसे अपने Obsidian vault पर पॉइंट करें ताकि आपके नोट्स SurfSense में सर्च करने योग्य रहें।
155155

156156
सभी सुविधाएं आपके चुने हुए सर्च स्पेस पर काम करती हैं, ताकि आपके उत्तर हमेशा आपके अपने डेटा पर आधारित हों।
@@ -199,14 +199,14 @@ SurfSense एक डेस्कटॉप ऐप भी प्रदान क
199199
| **वीडियो जनरेशन** | Veo 3 के माध्यम से सिनेमैटिक वीडियो ओवरव्यू (केवल Ultra) | उपलब्ध (NotebookLM यहाँ बेहतर है, सक्रिय रूप से सुधार हो रहा है) |
200200
| **प्रेजेंटेशन जनरेशन** | बेहतर दिखने वाली स्लाइड्स लेकिन संपादन योग्य नहीं | संपादन योग्य, स्लाइड आधारित प्रेजेंटेशन बनाएं |
201201
| **पॉडकास्ट जनरेशन** | कस्टमाइज़ेबल होस्ट और भाषाओं के साथ ऑडियो ओवरव्यू | कई TTS प्रदाताओं के साथ उपलब्ध (NotebookLM यहाँ बेहतर है, सक्रिय रूप से सुधार हो रहा है) |
202-
| **डेस्कटॉप ऐप** | नहीं | General Assist, Quick Assist, Extreme Assist और लोकल फ़ोल्डर सिंक के साथ नेटिव ऐप |
202+
| **डेस्कटॉप ऐप** | नहीं | General Assist, Quick Assist, Screenshot Assist और लोकल फ़ोल्डर सिंक के साथ नेटिव ऐप |
203203
| **ब्राउज़र एक्सटेंशन** | नहीं | किसी भी वेबपेज को सहेजने के लिए क्रॉस-ब्राउज़र एक्सटेंशन, प्रमाणीकरण सुरक्षित पेज सहित |
204204

205205
<details>
206206
<summary><b>बाहरी स्रोतों की पूरी सूची</b></summary>
207207
<a id="बाहरी-स्रोत"></a>
208208

209-
सर्च इंजन (Tavily, LinkUp) · SearxNG · Google Drive · OneDrive · Dropbox · Slack · Microsoft Teams · Linear · Jira · ClickUp · Confluence · BookStack · Notion · Gmail · YouTube वीडियो · GitHub · Discord · Airtable · Google Calendar · Luma · Circleback · Elasticsearch · Obsidian, और भी बहुत कुछ आने वाला है।
209+
सर्च इंजन (SearXNG, Tavily, LinkUp, Baidu Search) · Google Drive · OneDrive · Dropbox · Slack · Microsoft Teams · Linear · Jira · ClickUp · Confluence · BookStack · Notion · Gmail · YouTube वीडियो · GitHub · Discord · Airtable · Google Calendar · Luma · Circleback · Elasticsearch · Obsidian, और भी बहुत कुछ आने वाला है।
210210

211211
</details>
212212

0 commit comments

Comments
 (0)