Skip to content
Open
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
db2cffb
Initial vector search
rogerb831 Sep 12, 2025
2a26135
Implement SQLite vector search with conversational RAG chat
rogerb831 Sep 13, 2025
d0169d4
Add transcript filtering to chat interface
rogerb831 Sep 13, 2025
f03b2b7
Add package-lock.json to .gitignore
rogerb831 Sep 13, 2025
4b4726e
Fix packaging issues for production builds
rogerb831 Sep 14, 2025
929cbc4
Merge pull request #1 from lukasbach/main
rogerb831 Oct 10, 2025
a6fe749
Revert "Add package-lock.json to .gitignore"
rogerb831 Oct 10, 2025
7794daa
Address PR feedback: fix imports, types, and add UI invalidation
rogerb831 Oct 10, 2025
752ec99
Config fixes
rogerb831 Oct 10, 2025
f6b4ed4
Add progress tracking for vector embedding step
rogerb831 Oct 10, 2025
59c2524
feat: make microphone recording default to enabled
rogerb831 Sep 16, 2025
428fbcc
feat: add toggleable recording preferences with persistence
rogerb831 Oct 10, 2025
723139a
Add recording-specific chat tab with scoped vector search
rogerb831 Oct 14, 2025
9ea88ee
Fix dependency issues for CI pipeline compatibility
rogerb831 Nov 5, 2025
ed2a55c
Fix linting errors for CI pipeline
rogerb831 Nov 5, 2025
e76f602
Fix TypeScript errors found by typecheck
rogerb831 Nov 5, 2025
71724b5
Add ability to rerun postprocessing. MP3 fallback for Whisper process…
rogerb831 Nov 5, 2025
7376e82
Enable macOS distributable builds in CI workflows
rogerb831 Nov 5, 2025
37b8f21
Fix macOS build: remove symlinks and add multi-architecture support
rogerb831 Nov 5, 2025
d2c608d
Fix CI: use macos-15-intel for x64 builds and fix console statements
rogerb831 Nov 5, 2025
f1eb7cb
Make GitHub publisher repository dynamic based on fork
rogerb831 Nov 5, 2025
77ddd08
Fix linting error: format repository name on single line
rogerb831 Nov 5, 2025
53c6119
Fix version bump conflict: run in separate job before matrix builds
rogerb831 Nov 5, 2025
088fdd8
Bump version only after all builds succeed
rogerb831 Nov 5, 2025
bca725a
Skip version bump for non-upstream repositories
rogerb831 Nov 5, 2025
e41d30e
Revert 'Bump version only after all builds succeed' (088fdd8)
rogerb831 Nov 5, 2025
d37c443
Add macOS .icns icon generation support
rogerb831 Nov 6, 2025
b71b9d9
Fix Prettier formatting errors in forge.config.ts
rogerb831 Nov 6, 2025
d4c1d1a
Fix Prettier formatting errors in recorder state.ts
rogerb831 Nov 6, 2025
8f462e5
Merge pull request #2 from rogerb831/toggleable-recorder-checkboxes
rogerb831 Nov 6, 2025
958d55c
Merge pull request #3 from rogerb831/fix/mac-distributable
rogerb831 Nov 6, 2025
1b8198f
Merge branch 'lukasbach:main' into feature/vector-search
rogerb831 Nov 6, 2025
8855e38
Merge branch 'main' into feature/vector-search
rogerb831 Nov 6, 2025
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
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,6 @@ extra
dist-docs
docs/index.md
docs/images
.vscode
.vscode
vector-store/vector-store.db
package-lock.json
22 changes: 20 additions & 2 deletions forge.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,30 @@ const createIcon = async (factor: number, base = 32) => {
const config: ForgeConfig = {
packagerConfig: {
asar: {
unpack: "*.{node,dll,exe}",
unpack: "**/*.node",
unpackDir: "node_modules/sqlite3",
},
extraResource: "./extra",
icon: "./extra/[email protected]",
ignore: [
/^\/src/,
/^\/docs/,
/^\/images/,
/^\/\.github/,
/^\/\.idea/,
/^\/scripts/,
/^\/vector-store/,
/^\/\.git/,
/^\/\.gitignore/,
/^\/README\.md$/,
/^\/yarn\.lock$/,
/^\/\.yarnrc\.yml$/,
/^\/package-lock\.json$/,
],
},
rebuildConfig: {
onlyModules: ["sqlite3"],
},
rebuildConfig: {},
makers: [
new MakerSquirrel({
loadingGif: path.join(__dirname, "splash.gif"),
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
"electron-log": "^5.1.5",
"electron-squirrel-startup": "^1.0.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
"react-dom": "^18.2.0",
"sqlite3": "^5.1.7"
},
"devDependencies": {
"@electron-forge/cli": "^7.3.1",
Expand Down
10 changes: 10 additions & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { historyApi } from "./main/ipc/history-api";
import * as history from "./main/domain/history";
import * as searchIndex from "./main/domain/search";
import * as settings from "./main/domain/settings";
import * as vectorSearch from "./main/domain/vector-search";
import { registerTray } from "./main/domain/tray";
import * as windows from "./main/domain/windows";
import { windowsApi } from "./main/ipc/windows-api";
Expand Down Expand Up @@ -69,6 +70,15 @@ app.whenReady().then(async () => {
log.info("Search index initialized.");
});

// Initialize vector store for semantic search
vectorSearch.initializeVectorStore().then((success) => {
if (success) {
log.info("Vector store initialized successfully.");
} else {
log.info("Vector store initialization failed or disabled.");
}
});

if (!settings.existsSettingsFile()) {
await settings.initSettingsFile();
await mainApi.setAutoStart(true);
Expand Down
4 changes: 2 additions & 2 deletions src/main/domain/llm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ const parseActionItems = (text: string) => {
.filter(isNotNull);
};

const getChatModel = async () => {
export const getChatModel = async () => {
const { llm } = await settings.getSettings();
switch (llm.provider) {
case "ollama":
Expand All @@ -68,7 +68,7 @@ const getChatModel = async () => {
}
};

const getEmbeddings = async () => {
export const getEmbeddings = async () => {
const { llm } = await settings.getSettings();

switch (llm.provider) {
Expand Down
15 changes: 15 additions & 0 deletions src/main/domain/postprocess.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { getRecordingTranscript, getRecordingsFolder } from "./history";
import { invalidateUiKeys } from "../ipc/invalidate-ui";
import { QueryKeys } from "../../query-keys";
import * as searchIndex from "./search";
import * as vectorSearch from "./vector-search";
import { getSettings } from "./settings";
import { PostProcessingJob, PostProcessingStep } from "../../types";

Expand All @@ -23,6 +24,7 @@ const emptyProgress: Record<PostProcessingStep, null | number> = {
whisper: 0,
summary: 0,
datahooks: null,
vectorSearch: 0,
};
const progress = { ...emptyProgress };
let lastUiUpdate = 0;
Expand Down Expand Up @@ -157,12 +159,25 @@ const doDataHooksStep = async (job: PostProcessingJob) => {
await datahooks.runDatahooks(job);
};

const doVectorSearchStep = async (job: PostProcessingJob) => {
if (hasAborted() || !hasStep(job, "vectorSearch")) return;
setStep("vectorSearch");

try {
await vectorSearch.addTranscriptToVectorStore(job.recordingId);
} catch (error) {
console.error("Vector search indexing failed:", error);
// Don't fail the entire post-processing if vector indexing fails
}
};

const postProcessRecording = async (job: PostProcessingJob) => {
await doWavStep(job);
await doMp3Step(job);
await doWhisperStep(job);
await doSummaryStep(job);
await doDataHooksStep(job);
await doVectorSearchStep(job);

const settings = await getSettings();

Expand Down
Loading
Loading