Skip to content

Feat/zeppelin data layer 1 - #954

Open
Ghatage wants to merge 8 commits into
altic-dev:mainfrom
Ghatage:feat/zeppelin-data-layer-1
Open

Ghatage wants to merge 8 commits into
altic-dev:mainfrom
Ghatage:feat/zeppelin-data-layer-1

Conversation

@Ghatage

@Ghatage Ghatage commented Sep 9, 2026

Copy link
Copy Markdown

Description

Adding general search to FluidVoice.
Users will now be able to search across their conversation history, transcripts, settings, everything that is text within the app.
Clicking the results will take them there directly.

Type of Change

  • 🐞 Bug fix
  • ✨ New feature
  • 💥 Breaking change
  • 🧹 Chore
  • 📝 Documentation update

Related Issue or Discussion

Closes #944
Discussed this with maintainers in person.

Testing

  • Tested on Intel Mac
  • Tested on Apple Silicon Mac
  • Tested on macOS version: 27 beta
  • Ran linter locally: swiftlint --strict --config .swiftlint.yml Sources Tests Package.swift
  • Ran formatter locally: swiftformat --config .swiftformat Sources
  • Ran tests locally:

Screenshots / Video

Attach screenshots or a video for UI, UX, settings, onboarding, overlay, menu bar, or visual behavior changes.
Screenshot 2026-09-09 at 1 56 35 PM
Screenshot 2026-09-09 at 1 57 06 PM

  • No UI/visual changes; screenshots/video are not applicable.

Notes

  • Adds Zeppelin-Embed for lightening fast search, opens the door to more unique features and owning the entire stack from application to infra

Add zeppelin-embed 0.3.0 as a static XCFramework dependency for the app
and integration-test targets. FluidVoice needs lastAsPrefix on
QueryOptions for type-ahead search.

Add FluidZeppelinRoot, the single Zeppelin database under Application
Support. Namespaces are created on demand, independent of each other,
and opened under one cached task so concurrent first callers share the
open instead of racing on the writer lock. Every namespace is a derived
copy of a store the app already keeps, so the library's default derived
durability applies and one that cannot be read is reset and rebuilt
from its source. Namespaces are closed at termination so their logs are
checkpointed rather than replayed.
Mirror dictation history, file transcripts, and Command Mode chats into
separate record-only Zeppelin namespaces while keeping the existing
stores authoritative. Reconcile each namespace from source records so
launch backfill, write-through updates, eviction cleanup, and reset
recovery share one idempotent path. Reconciles for one kind run in
order so two cannot interleave.

Search the namespaces with last-word prefix matching and combine them
with in-memory matches for dictionary entries, prompts, vocabulary,
punctuation rules, and settings. Preserve group ordering, rank only
within a group, cancel stale queries, and build highlighted snippets
from the source text.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-10T13:22:19.513144Z a63d5ce New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot added the needs PR template Pull request is missing required template content. label Sep 9, 2026
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown

The PR Policy check is blocking this PR because required template information is missing.

Please update the PR description with:

  • Related Issue or Discussion

Visual files detected:

  • Sources/Fluid/ContentView.swift
  • Sources/Fluid/UI/AppSearchResultsView.swift
  • Sources/Fluid/UI/MeetingTranscriptionView.swift
  • Sources/Fluid/UI/SettingsSearch.swift
  • Sources/Fluid/UI/TranscriptionHistoryView.swift
  • Tests/FluidDictationIntegrationTests/SettingsNavigationStateTests.swift

Screenshots or video are required for UI, UX, settings, onboarding, overlay, menu bar, or visual behavior changes. If this PR has no visual changes, check the no-visual-change box in the template.

If this remains incomplete for 48 hours after opening, the PR may be closed.

@greptile-apps

greptile-apps Bot commented Sep 9, 2026

Copy link
Copy Markdown

Greptile Summary

This PR adds application-wide search backed by Zeppelin Embed.

  • Indexes transcription history, file transcripts, and chat sessions.
  • Searches additional settings and dictionary-related content in memory.
  • Adds grouped sidebar results and direct navigation to supported destinations.
  • Refreshes active searches after index reconciliation.
  • Aligns settings-search availability with controls hidden behind Accessibility permission.

Confidence Score: 5/5

The changes since the previous review appear safe to merge, with no new actionable failures identified.

Both previous root findings are resolved, and the latest settings-availability change accurately mirrors the settings UI’s conditional rendering.

Reviews (7): Last reviewed commit: "Hide accessibility-gated settings from s..." | Re-trigger Greptile

Comment thread Sources/Fluid/ContentView.swift Outdated
Comment thread Sources/Fluid/Persistence/Search/SearchIndexCoordinator.swift Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 804640820b

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/Fluid/ContentView.swift Outdated
Comment thread Sources/Fluid/ContentView.swift
A chat hit now loads that session before opening Command Mode instead
of showing whichever chat was current. When a reconcile adds or removes
rows, the open query is re-run, so a search made before launch backfill
finishes fills in on its own and a dictation made while the results are
open appears in them.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ae398376fb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/Fluid/Services/AppSearch/AppSearchService.swift
Comment thread Sources/Fluid/Services/AppSearch/AppSearchService.swift Outdated
Comment thread Sources/Fluid/UI/MeetingTranscriptionView.swift Outdated
A changed query left stale rows actionable during debounce. Global
settings search exposed hidden controls, and transcript hits scrolled to
their list rows instead of the selected details.

Invalidate published groups whenever a query changes. Share the existing
availability rules across both search surfaces, and give each selected
transcript detail an explicit scroll target.

Cover query invalidation, conditional settings filtering, and transcript
detail targeting with focused regression tests.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 33390101b4

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/Fluid/ContentView.swift
Comment thread Sources/Fluid/UI/TranscriptionHistoryView.swift
History selection tried to scroll before clearing a local filter had
rendered the target row. Self-target dictation also treated every
FluidVoice field editor as a sidebar search destination, even when the
recording began in another app.

Defer filtered history scrolling to the next main-loop turn. Mark
sidebar search controls explicitly, and insert into their field editor
only when the captured recording focus is still exact and owned by
FluidVoice.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 26c539fe76

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/Fluid/Persistence/Search/SearchIndex.swift Outdated
@github-actions github-actions Bot removed the needs PR template Pull request is missing required template content. label Sep 10, 2026
Chat search derived its revision from updatedAt. A clock correction
could therefore make later saves look older than the indexed document
and leave stale message text searchable.

Persist a per-session search revision and advance it on every save.
Legacy sessions seed the counter from their existing timestamp revision,
so the first update remains newer without requiring Zeppelin to accept
a lower revision.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d134b1a0f6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/Fluid/ContentView.swift
Up and Down moved the custom search cursor without moving the result
list, so the highlighted row could leave the visible sidebar while Return
still targeted it.

Wrap the grouped results in a ScrollViewReader and reveal each new cursor
target using the row identifiers already shared with AppSearchHit.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d32915db7c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/Fluid/UI/SettingsSearch.swift
Settings search exposed Dictation controls that SettingsView omits
until Accessibility permission is enabled. Opening those results
selected a reveal target with no rendered row or scroll anchor.

Apply the same permission gate to every nested Dictation target while
keeping the visible permission and Global Hotkey rows searchable.
Preserve the existing history conditions for audio storage.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a63d5ce69d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread Sources/Fluid/UI/MeetingTranscriptionView.swift
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Custom dictionary matching to incorrect words

1 participant