Commit Graph

30 Commits

Author SHA1 Message Date
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
forehalo c8d22d97d5 refactor: webpack config (#11421) 2025-04-03 11:55:56 +00:00
pengx17 90c3c4bf7f feat(electron): recording popup ux (#11403)
fix AF-2444, AF-2443
2025-04-02 14:17:53 +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 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 ee0cfe4dc7 feat(nbstore): share worker between workspaces (#9947) 2025-02-05 07:57:03 +00:00
pengx17 699da97879 chore(electron): speed up electron tests (#9871) 2025-01-24 04:52:26 +00:00
EYHN a2ffdb4047 feat(core): new worker workspace engine (#9257) 2025-01-16 16:22:18 +00:00
pengx17 a4841bbfa3 feat(core): drop doc onto split view (#9487)
fix AF-2068, AF-2069, AF-1175, AF-2061, AF-2079, AF-2034, AF-2080, AF-1960, AF-2081

1. replace `dnd-kit` with `@atlaskit/pragmatic-drag-and-drop`
2. allow creating split views by drag & drop the following
   a. WorkbenchLinks (route links), like journals, trash, all docs
   b. doc refs
   c. tags/collection
3. style adjustments to split view
4. remove split view's feature flag and make it GA for electron

https://github.com/user-attachments/assets/6a3e4a25-faa2-4215-8eb0-983f44db6e8c
2025-01-08 05:05:33 +00:00
forehalo c0ed74dfed chore: standardize tsconfig (#9568) 2025-01-08 04:07:56 +00:00
pengx17 7d0160c8fb feat(electron): enable vscode debugger for electron (#9333) 2024-12-26 15:37:56 +00:00
CatsJuice 690a79b905 chore(electron): disable onboarding (#9332)
close AF-2020
2024-12-26 11:21:15 +00:00
pengx17 70d9cc6b01 fix(electron): electron crash on leave fullscreen (#9314) 2024-12-26 01:55:07 +00:00
pengx17 dc7d128252 feat(core): allow bs snapshot dragging targets (#9093)
fix AF-1924, AF-1848, AF-1928, AF-1931

dnd between affine & editor

<div class='graphite__hidden'>
          <div>🎥 Video uploaded on Graphite:</div>
            <a href="https://app.graphite.dev/media/video/T2klNLEk0wxLh4NRDzhk/dff3ceb1-dc82-4222-9b55-13be80b28b2f.mp4">
              <img src="https://app.graphite.dev/api/v1/graphite/video/thumbnail/T2klNLEk0wxLh4NRDzhk/dff3ceb1-dc82-4222-9b55-13be80b28b2f.mp4">
            </a>
          </div>
<video src="https://graphite-user-uploaded-assets-prod.s3.amazonaws.com/T2klNLEk0wxLh4NRDzhk/dff3ceb1-dc82-4222-9b55-13be80b28b2f.mp4">20241210-1217-49.8960381.mp4</video>
2024-12-11 08:12:01 +00:00
EYHN 8963826463 feat(core): desktop multiple server support (#8979) 2024-12-03 05:51:09 +00:00
pengx17 f2398574ed fix(electron): should not show context menu if there is no typos (#8895)
fix AF-1794
2024-11-27 07:00:45 +00:00
Peng Xiao 8689465e00 fix(electron): potential crash on quit (#8855) 2024-11-20 14:44:06 +08:00
CatsJuice c32b29a293 fix(core): onboading performance improvement (#8790)
- compress images
- remove noise assets (700kb)
- remove lottie animations
- remove `perspective` after paper animation to reduce layers
2024-11-13 08:25:05 +00:00
pengx17 35f3fc7b5d feat(electron): spellcheck setting (#8730)
fix AF-1647
2024-11-11 13:03:33 +00:00
pengx17 029654f45e fix(electron): share page in electron issues (#8703)
fix AF-1592
fix AF-1612
2024-11-05 11:46:03 +00:00
Peng Xiao 378c9eb73a fix(electron): active view sometimes does not get focused (#8683) 2024-11-04 08:34:11 +00:00
pengx17 c915a3bcb5 revert(electron): revert http protocl in electron (#8655)
fix AF-1583
2024-11-01 06:33:27 +00:00
pengx17 0f8b273134 feat(core): open app in electron app entry (#8637)
fix PD-208
fix PD-210
fix PD-209
fix AF-1495
2024-10-31 06:16:32 +00:00
pengx17 3d3864fa5b build(electron): use live origin http protocol instead of file:// (#8464)
fix AF-1428
2024-10-15 05:42:52 +00:00
pengx17 f5c49a6ac9 fix(electron): screen resize sometimes does not work well after maximize (#8413)
fix AF-1460
2024-10-07 11:21:57 +00:00
pengx17 7a26c76e53 fix(electron): do not always enable devtools detach mode (#8273) 2024-09-18 04:16:51 +00:00
EYHN ed63602f01 refactor: remove unused deps (#8259)
auto removed by https://knip.dev/features/auto-fix
2024-09-14 14:52:50 +00:00
forehalo a387e4ac07 refactor: migrate environment to BUILD_CONFIG (#8206) 2024-09-13 07:58:20 +00:00
EYHN cc5a6e6d40 refactor: new project struct (#8199)
packages/frontend/web -> packages/frontend/apps/web
packages/frontend/mobile -> packages/frontend/apps/mobile
packages/frontend/electron -> packages/frontend/apps/electron
2024-09-12 07:42:57 +00:00