Commit Graph

41 Commits

Author SHA1 Message Date
DarkSky
702dbf7be4 fix: client indexing & outdated scheme (#14160)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Optimized storage handling with platform-specific
implementations—SQLite for Electron and IndexedDB for other environments
for improved performance.

* **Bug Fixes**
* Enhanced recording file access and retrieval functionality for better
reliability.
  * Strengthened local file protocol handling and security restrictions.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-27 17:56:42 +08:00
DarkSky
ca386283c5 feat: bump electron (#14151) 2025-12-26 09:41:16 +08:00
EYHN
1ceed6c145 feat(core): support better battery save mode (#13383)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Introduced a Document Summary module, enabling live and cached
document summaries with cloud revalidation.
  * Added a feature flag for enabling battery save mode.
* Added explicit pause and resume controls for sync operations,
accessible via UI events and programmatically.

* **Improvements**
* Enhanced sync and indexing logic to support pausing, resuming, and
battery save mode, with improved job prioritization.
* Updated navigation and preview components to use the new document
summary service and improved priority handling.
* Improved logging and state reporting for sync and indexing processes.
* Refined backlink handling with reactive loading states and cloud
revalidation.
* Replaced backlink and link management to use a new dedicated document
links service.
* Enhanced workspace engine to conditionally enable battery save mode
based on feature flags and workspace flavor.

* **Bug Fixes**
* Removed unnecessary debug console logs from various components for
cleaner output.

* **Refactor**
* Replaced battery save mode methods with explicit pause/resume methods
throughout the app and services.
* Modularized and streamlined document summary and sync-related code for
better maintainability.
* Restructured backlink components to improve visibility handling and
data fetching.
* Simplified and improved document backlink data fetching with retry and
loading state management.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-08-01 08:31:31 +00:00
EYHN
d44771dfe9 feat(electron): add global context menu (#13218)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **New Features**
* Added automatic synchronization of language settings between the
desktop app and the system environment.
* Context menu actions (Cut, Copy, Paste) in the desktop app are now
localized according to the selected language.

* **Improvements**
* Context menu is always available with standard editing actions,
regardless of spell check settings.

* **Localization**
* Added translations for "Cut", "Copy", and "Paste" in the context menu.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-07-16 04:37:38 +00:00
EYHN
b2bf591463 feat(core): bettery save mode (#12996)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **New Features**
* Introduced a battery save mode that can pause background sync and
processing to conserve energy.
* Battery save mode is automatically enabled when the app window loses
focus and disabled when the window regains focus or is interacted with.
  * Available in both web and desktop (Electron) versions.

* **Improvements**
* Added user activity detection to optimize background operations for
better battery efficiency.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-07-03 03:48:17 +00:00
Peng Xiao
899ffd1ad3 feat(native): windows audio monitoring & recording (#12615)
fix AF-2692

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Added comprehensive Windows support for audio and application capture,
including real-time microphone usage detection, combined microphone and
system audio recording, and application state monitoring.
  - The "meetings" setting is now enabled on Windows as well as macOS.
- Conditional UI styling and attributes introduced for Windows
environments in the Electron renderer.

- **Bug Fixes**
- Enhanced file path handling and validation for Windows in Electron
file requests.

- **Refactor**
- Unified application info handling across platforms by consolidating
types into a single `ApplicationInfo` structure.
- Updated native module APIs by removing deprecated types, refining
method signatures, and improving error messages.
- Streamlined audio tapping APIs to use process IDs and consistent
callback types.

- **Documentation**
- Added detailed documentation for the Windows-specific audio recording
and microphone listener modules.

- **Chores**
  - Updated development dependencies in multiple packages.
- Reorganized and added platform-specific dependencies and configuration
for Windows support.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->





#### PR Dependency Tree


* **PR #12615** 👈

This tree was auto-generated by
[Charcoal](https://github.com/danerwilliams/charcoal)

---------

Co-authored-by: LongYinan <lynweklm@gmail.com>
2025-06-18 13:57:01 +08:00
pengx17
83a483a06d fix(electron): optimize tab switching (#12518)
fix AF-2670

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **Style**
  - Updated styling so that opacity and transition effects apply only when a translucent background is present, enhancing visual precision.
- **Chores**
  - Renamed a data attribute in the app container for improved consistency.
  - Disabled background throttling for specific views to maintain performance when running in the background.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-27 03:14:12 +00:00
pengx17
0b6d1eacc8 refactor(electron): use mp4 container instead of webm for encoded audio (#12247)
fix AF-2609
webm container with opus has limited support on Safari. Change to mp4 instead.

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Audio recordings are now saved in MP4 format instead of WebM, improving compatibility with a wider range of devices and applications.

- **Chores**
  - Updated dependencies to use MP4 muxing tools in place of WebM.
  - Internal audio encoding utilities and references updated to support MP4 container format.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-13 09:01:40 +00:00
pengx17
b4dbc5b6e7 fix(electron): recorded audio is not correctly rendered after saved as attachment (#12232)
fix AF-2611

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **Refactor**
  - Improved the process for adding audio attachments after a recording is ready, ensuring all details (name, type, size, source, embed) are included at creation for a smoother and more reliable user experience.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-13 06:52:09 +00:00
pengx17
7e80cb336e fix(electron): streaming audio encoding not working (#12231)
fix AF-2612

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **Bug Fixes**
  - Improved handling of recording status updates to prevent unwanted side effects after closing the recording popup.
  - Enhanced error handling and logging for internal communication, ensuring errors are logged and do not disrupt the user experience.
  - Refined control flow for stream encoding to avoid unnecessary errors when encoders are closed.
- **Refactor**
  - Updated popup window readiness and lifecycle management for more reliable behavior and clearer logging.
  - Adjusted recording state management to allow more precise control over status updates and emissions.
- **Style**
  - Added additional logging for popup and recording operations to aid in troubleshooting and transparency.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-13 06:52:09 +00:00
Saul-Mirone
bc00a58ae1 feat(editor): feature flag store extension builder (#12235)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->

## Summary by CodeRabbit

- **New Features**
  - Introduced feature flag synchronization for enhanced control over feature availability.
  - Added new configuration options for store management, allowing initialization and feature flag setup.

- **Improvements**
  - Updated how store extensions are accessed throughout the app for more robust initialization and configuration.
  - Enhanced workspace entities to support feature flag services, improving flexibility for workspace-specific features.
  - Centralized configuration of storage implementations for Electron environments.

- **Refactor**
  - Simplified editor module by removing direct feature flag synchronization logic.
  - Streamlined imports and configuration for storage modules, especially in Electron-based apps.

- **Bug Fixes**
  - Ensured consistent retrieval of store extensions across various modules and platforms.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-12 09:29:15 +00:00
EYHN
2d1600fa00 refactor(core): implement doc created/updated by service (#12150)
<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Documents now automatically track and display "created by" and "updated by" user information.
  - Document creation and update timestamps are now managed and shown more accurately.
  - Workspace and document metadata (name, avatar) updates are more responsive and reliable.
  - Document creation supports middleware for customizing properties and behavior.

- **Improvements**
  - Simplified and unified event handling for document list updates, reducing redundant event subscriptions.
  - Enhanced integration of editor and theme settings into the document creation process.
  - Explicit Yjs document initialization for improved workspace stability and reliability.
  - Consolidated journal-related metadata display in document icons and titles for clarity.

- **Bug Fixes**
  - Fixed inconsistencies in how workspace and document names are set and updated.
  - Improved accuracy of "last updated" indicators by handling timestamps automatically.

- **Refactor**
  - Removed deprecated event subjects and direct metadata manipulation in favor of more robust, reactive patterns.
  - Streamlined document creation logic across various features (quick search, journal, recording, etc.).
  - Simplified user avatar display components and removed cloud metadata dependencies.
  - Removed legacy editor setting and theme service dependencies from multiple modules.

- **Chores**
  - Updated internal APIs and interfaces to support new metadata and event handling mechanisms.
  - Cleaned up unused code and dependencies related to editor settings and theme services.
  - Skipped flaky end-to-end test to improve test suite stability.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-08 07:53:33 +00:00
pengx17
53c531c931 feat(electron): add welcome page for meetings (#12042)
fix AF-2572

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/0e56b58a-97b4-4984-81fa-f8e45f8cc561.png)

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/97e3bb97-e326-48f6-8dd4-27734f583775.png)

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Introduced a Meetings welcome page with a beta disclaimer and "Get Started" flow.
  - Added separate toggles for AI auto summary and AI auto todo list in meeting settings.
  - Added "Beta" labels to relevant settings and sidebar items for clearer feature status.
  - Enhanced settings UI with improved headers, subtitles, and new styling.

- **Improvements**
  - Meeting settings now allow independent control over AI-generated summaries and todo lists.
  - Updated internationalization to support new meeting and AI transcription features, including richer prompts and hints.
  - Refined logic for enabling meeting recording, including improved permission handling.
  - Simplified transcription logic to rely solely on AI enablement flag.

- **Bug Fixes**
  - Fixed display and control of meeting settings based on beta disclaimer acceptance.

- **Chores**
  - Updated localization files and completeness percentages for several languages.
  - Removed deprecated feature flag for enabling meetings.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-05-06 09:29:58 +00:00
Saul-Mirone
45b6cbe8d7 refactor(editor): cleanup dead code (#11893) 2025-04-22 15:51:23 +00:00
pengx17
ef7a82d6e6 fix(core): adjust recording user-select none style (#11735) 2025-04-16 09:19:14 +00:00
pengx17
7b2ae7f573 feat(core): adjust history modal styles (#11675)
- add avatar/name info to each history snapshot item
- add avatar to audio transcription job owner

fix AF-2483

![image.png](https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/4a2b88c2-311a-470e-a8a9-113931cdf17e.png)
2025-04-15 07:16:53 +00:00
pengx17
133be72ac2 refactor(electron): encoding recording on the fly (#11457)
fix AF-2460, AF-2463

When recording is started, we start polling the pending raw buffers that are waiting for encoding. The buffers are determined by the cursor of the original raw buffer file. When recording is stopped, we will flush the pending buffers and wrap the encoded chunks into WebM.

```mermaid
sequenceDiagram
    participant App as App/UI
    participant RecordingFeature as Recording Feature
    participant StateMachine as State Machine
    participant FileSystem as File System
    participant StreamEncoder as Stream Encoder
    participant OpusEncoder as Opus Encoder
    participant WebM as WebM Muxer

    Note over App,WebM: Recording Start Flow
    App->>RecordingFeature: startRecording()
    RecordingFeature->>StateMachine: dispatch(START_RECORDING)
    StateMachine-->>RecordingFeature: status: 'recording'
    RecordingFeature->>StreamEncoder: createStreamEncoder(id, {sampleRate, channels})

    Note over App,WebM: Streaming Flow
    loop Audio Data Streaming
        RecordingFeature->>FileSystem: Write raw audio chunks to .raw file
        StreamEncoder->>FileSystem: Poll raw audio data
        FileSystem-->>StreamEncoder: Raw audio chunks
        StreamEncoder->>OpusEncoder: Encode chunks
        OpusEncoder-->>StreamEncoder: Encoded Opus frames
    end

    Note over App,WebM: Recording Stop Flow
    App->>RecordingFeature: stopRecording()
    RecordingFeature->>StateMachine: dispatch(STOP_RECORDING)
    StateMachine-->>RecordingFeature: status: 'stopped'
    StreamEncoder->>OpusEncoder: flush()
    StreamEncoder->>WebM: muxToWebM(encodedChunks)
    WebM-->>RecordingFeature: WebM buffer
    RecordingFeature->>FileSystem: Save as .opus file
    RecordingFeature->>StateMachine: dispatch(SAVE_RECORDING)
```
2025-04-03 15:56:53 +00:00
pengx17
8ce10e6d0a feat(electron): add tray menu settings (#11437)
fix AF-2447
2025-04-03 15:56:52 +00:00
pengx17
90c3c4bf7f feat(electron): recording popup ux (#11403)
fix AF-2444, AF-2443
2025-04-02 14:17:53 +00:00
pengx17
2d304adf15 fix(electron): incorrect app allow list logic for recording (#11368) 2025-04-01 14:19:29 +00:00
pengx17
9cb80205f8 chore(electron): add telemetry events for enabling meetings (#11327)
fix AF-2436
2025-04-01 09:01:31 +00:00
EYHN
5f3cf53819 feat(core): cleanup unused indexeddb when bootstrapping (#11325) 2025-03-31 14:20:41 +00:00
EYHN
8957d0645f feat(nbstore): add indexer storage (#10953) 2025-03-31 12:59:51 +00:00
L-Sun
2f1f09e25f fix(editor): extract store spec register from effects (#11268)
Close [BS-2802](https://linear.app/affine-design/issue/BS-2802/移動端缺少bseffects導致文檔創建錯誤)
2025-03-31 10:53:02 +00:00
pengx17
8bea31698e fix(electron): tray menu icon adapt to dark theme (#11288)
fix AF-2431
2025-03-31 07:23:01 +00:00
pengx17
1306a9733b feat(core): some enhancements to recording (#11287)
- Added a check to verify if AI is enabled before attempting to transcribe meeting recordings
- Improved error handling for empty recordings
- Fixed the recording timeout logic to ensure it only stops the correct recording session
2025-03-31 05:37:17 +00:00
pengx17
6c125d9a38 feat(electron): audio capture permissions and settings (#11185)
fix AF-2420, AF-2391, AF-2265
2025-03-28 09:12:26 +00:00
pengx17
dccd7c20aa feat(core): call real endpoint for audio transcription (#11139)
fix AF-2359
2025-03-28 07:59:35 +00:00
pengx17
61c0d01da3 feat(electron): recording popups (#11016)
Added a recording popup UI for the audio recording feature in the desktop app, improving the user experience when capturing audio from applications.

### What changed?

- Created a new popup window system for displaying recording controls
- Added a dedicated recording UI with start/stop controls and status indicators
- Moved audio encoding logic from the main app to a dedicated module
- Implemented smooth animations for popup appearance/disappearance
- Updated the recording workflow to show visual feedback during recording process
- Added internationalization support for recording-related text
- Modified the recording status flow to include new states: new, recording, stopped, ready

fix AF-2340
2025-03-26 04:53:43 +00:00
pengx17
fad49bb070 feat(editor): audio block (#10947)
AudioMedia entity for loading & controlling a single audio media
AudioMediaManagerService: Global audio state synchronization across tabs
AudioAttachmentService + AudioAttachmentBlock for manipulating AttachmentBlock in affine - e.g., filling transcription (using mock endpoint for now)
Added AudioBlock + AudioPlayer for rendering audio block in affine (new transcription block whose renderer is provided in affine)

fix AF-2292
fix AF-2337
2025-03-20 12:46:15 +00:00
pengx17
a016630a82 feat(electron): create recording through tray (#10526)
- added tray menu for controlling recording status
- recording watcher for monitoring system audio input events
2025-03-18 04:12:30 +00:00
hackerESQ
fed0e0add3 fix: prevent sentry from loading when telemetry is disabled (#10543)
Co-authored-by: forehalo <forehalo@gmail.com>
2025-03-05 20:09:38 +08:00
EYHN
0015bfbaf2 refactor(core): adjust sentry config (#10631) 2025-03-05 11:18:06 +00:00
pengx17
629aea48df fix(electron): app menu about action (#10445)
fix AF-2268
2025-03-03 03:00:17 +00:00
pengx17
9e0cae58d7 fix(native): split application & tappable application (#10491)
A listening tappable app's info should inherit from its group process's name/icon. However the group process may not be listed as a tappable application.
2025-02-27 15:02:38 +00:00
EYHN
60a9572c88 fix(core): remove crypto randomuuid api (#10268) 2025-02-19 07:32:01 +00:00
EYHN
ee0cfe4dc7 feat(nbstore): share worker between workspaces (#9947) 2025-02-05 07:57:03 +00:00
pengx17
088ae0ac0a feat(electron): backup panel (#9738)
fix PD-2071, PD-2059, PD-2069, PD-2068
2025-01-22 22:52:31 +08:00
EYHN
a2ffdb4047 feat(core): new worker workspace engine (#9257) 2025-01-16 16:22:18 +00:00
pengx17
b1896746f9 refactor(core): move setting dialog to workspace scope (#9706) 2025-01-15 13:00:06 +00:00
liuyi
00980077c4 chore: standardize package references (#9346) 2024-12-26 19:08:42 +08:00