Coder Social home page Coder Social logo

capsoftware / cap Goto Github PK

View Code? Open in Web Editor NEW
1.7K 16.0 69.0 15.9 MB

Effortless, instant screen sharing. Open-source and cross-platform.

Home Page: https://cap.so

License: GNU Affero General Public License v3.0

TypeScript 74.64% JavaScript 1.43% Rust 21.32% CSS 1.93% HTML 0.12% MDX 0.54%
app cap coss mac open-source oss react record screen-capture screen-recorder

cap's People

Contributors

filleduchaos avatar itseeleeya avatar lakszy avatar mooyg avatar richiemcilroy avatar thisislvca avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cap's Issues

Wayland support?

I am running arch Linux with hyprland window manager which is based on Wayland compositor so my question is does this program support Wayland compositors too?

Run app via docker-compose

The contributing guide (and how to start the app for the first time) looks pretty straightforward, but running docker-compose up would be even more.

I'd like the maintainer's opinion about this idea.

Cap 0.1.3 crash

macOS Ventura 13.6.4

Code sign issue?

Taskgated Invalid Signature
crash report

-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Incident Identifier: 39CE1D08-8F47-4C90-BEB6-D00D0F3AE83B
CrashReporter Key:   920278E1-B3B1-6943-5880-9E3F0B7529FA
Hardware Model:      Mac14,7
Process:             Cap [41714]
Path:                /Applications/Cap.app/Contents/MacOS/Cap
Identifier:          so.cap.desktop
Version:             0.1.3 (20240319.135524)
Code Type:           X86-64 (Native)
Role:                Default
Parent Process:      launchd [1]
Coalition:           so.cap.desktop [138848]

Date/Time:           2024-03-20 11:18:13.2601 +0100
Launch Time:         2024-03-20 11:18:12.9198 +0100
OS Version:          macOS 13.6.4 (22G513)
Release Type:        User
Report Version:      104

Exception Type:  EXC_CRASH (SIGKILL (Code Signature Invalid))
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: CODESIGNING 1 Taskgated Invalid Signature

Triggered by Thread:  0

Thread 0 Crashed:
0                                 	    0x7ff7fffa277c 0x7ff7fff9f000 + 14204


Thread 0 crashed with ARM Thread State (64-bit):
    x0: 0x0000000000000000   x1: 0x0000000000000000   x2: 0x0000000000000000   x3: 0x0000000000000000
    x4: 0x0000000000000000   x5: 0x0000000000000000   x6: 0x0000000000000000   x7: 0x0000000000000000
    x8: 0x0000000000000000   x9: 0x0000000000000000  x10: 0x0000000000000000  x11: 0x0000000000000000
   x12: 0x0000000000000000  x13: 0x0000000000000000  x14: 0x0000000000000000  x15: 0x0000000000000000
   x16: 0x0000000000000000  x17: 0x0000000000000000  x18: 0x0000000000000000  x19: 0x0000000000000000
   x20: 0x0000000000000000  x21: 0x0000000000000000  x22: 0x0000000000000000  x23: 0x0000000000000000
   x24: 0x0000000000000000  x25: 0x0000000000000000  x26: 0x0000000000000000  x27: 0x0000000000000000
   x28: 0x0000000000000000   fp: 0x0000000000000000   lr: 0x0000000000000000
    sp: 0x0000000306e6fb88   pc: 0x00007ff7fffa277c cpsr: 0x00001000
   far: 0x0000000000000000  esr: 0x00000000  Address size fault

Binary Images:
       0x202031000 -        0x2020ccfff ??? (*) <8678e5e0-2643-3c19-8d09-b66e9040182c> ???
    0x7ff7fff9f000 -     0x7ff7fffcefff  (*) <2583ff4d-96e5-316e-b62f-d032f09c96c6> ???

Error Formulating Crash Report:
dyld_process_snapshot_get_shared_cache failed

EOF

-----------
Full Report
-----------

{"app_name":"Cap","timestamp":"2024-03-20 11:18:13.00 +0100","app_version":"0.1.3","slice_uuid":"82449c34-275b-3c2b-9587-d3457f0392a5","build_version":"20240319.135524","platform":0,"bundleID":"so.cap.desktop","share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"macOS 13.6.4 (22G513)","roots_installed":0,"name":"Cap","incident_id":"39CE1D08-8F47-4C90-BEB6-D00D0F3AE83B"}
{
  "uptime" : 380000,
  "procRole" : "Default",
  "version" : 2,
  "userID" : 1740969562,
  "deployVersion" : 210,
  "modelCode" : "Mac14,7",
  "coalitionID" : 138848,
  "osVersion" : {
    "train" : "macOS 13.6.4",
    "build" : "22G513",
    "releaseType" : "User"
  },
  "captureTime" : "2024-03-20 11:18:13.2601 +0100",
  "incident" : "39CE1D08-8F47-4C90-BEB6-D00D0F3AE83B",
  "pid" : 41714,
  "translated" : true,
  "cpuType" : "X86-64",
  "roots_installed" : 0,
  "bug_type" : "309",
  "procLaunch" : "2024-03-20 11:18:12.9198 +0100",
  "procStartAbsTime" : 9254088577574,
  "procExitAbsTime" : 9254090303531,
  "procName" : "Cap",
  "procPath" : "\/Applications\/Cap.app\/Contents\/MacOS\/Cap",
  "bundleInfo" : {"CFBundleShortVersionString":"0.1.3","CFBundleVersion":"20240319.135524","CFBundleIdentifier":"so.cap.desktop"},
  "storeInfo" : {"deviceIdentifierForVendor":"E945C3C4-89CD-5EAE-8266-352994B9AF07","thirdParty":true},
  "parentProc" : "launchd",
  "parentPid" : 1,
  "coalitionName" : "so.cap.desktop",
  "crashReporterKey" : "920278E1-B3B1-6943-5880-9E3F0B7529FA",
  "codeSigningID" : "",
  "codeSigningTeamID" : "",
  "codeSigningFlags" : 16777216,
  "codeSigningValidationCategory" : 0,
  "codeSigningTrustLevel" : 0,
  "wakeTime" : 1005,
  "sleepWakeUUID" : "4CC160CE-C7B9-4FEE-BC70-82DE2C670EBA",
  "sip" : "enabled",
  "exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGKILL (Code Signature Invalid)"},
  "termination" : {"flags":66,"code":1,"namespace":"CODESIGNING","indicator":"Taskgated Invalid Signature"},
  "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":1},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0},
  "faultingThread" : 0,
  "threads" : [{"triggered":true,"id":16843516,"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}],"flavor":"ARM_THREAD_STATE64","lr":{"value":0},"cpsr":{"value":4096},"fp":{"value":0},"sp":{"value":13000702856},"esr":{"value":0,"description":" Address size fault"},"pc":{"value":140703128233852,"matchesCrashFrame":1},"far":{"value":0}},"frames":[{"imageOffset":14204,"imageIndex":1}]}],
  "usedImages" : [
  {
    "size" : 638976,
    "arch" : "x86_64",
    "source" : "P",
    "base" : 8623689728,
    "uuid" : "8678e5e0-2643-3c19-8d09-b66e9040182c"
  },
  {
    "source" : "P",
    "arch" : "arm64",
    "base" : 140703128219648,
    "size" : 196608,
    "uuid" : "2583ff4d-96e5-316e-b62f-d032f09c96c6",
    "name" : ""
  }
],
  "vmSummary" : "ReadOnly portion of Libraries: Total=1168K resident=0K(0%) swapped_out_or_unallocated=1168K(100%)\nWritable regions: Total=24.0M written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=24.0M(100%)\n\n                                VIRTUAL   REGION \nREGION TYPE                        SIZE    COUNT (non-coalesced) \n===========                     =======  ======= \nSTACK GUARD                       56.0M        1 \nStack                             8176K        1 \nVM_ALLOCATE                       15.9M        6 \nVM_ALLOCATE (reserved)              20K        2         reserved VM address space (unallocated)\n__DATA                              80K        3 \n__DATA_CONST                        32K        1 \n__DATA_DIRTY                        16K        1 \n__LINKEDIT                         368K        4 \n__TEXT                             816K        2 \nmapped file                        6.9G       35 \n===========                     =======  ======= \nTOTAL                              7.0G       56 \nTOTAL, minus reserved VM space     7.0G       56 \n",
  "legacyInfo" : {
  "threadTriggered" : {

  }
},
  "logWritingSignature" : "e1555b3198d858a6c6805de130e71ce23b8055fc",
  "trialInfo" : {
  "rollouts" : [
    {
      "rolloutId" : "62699e1ec1ff2978b47f6c3b",
      "factorPackIds" : {
        "SIRI_FIND_MY_CONFIGURATION_FILES" : "652805151bce5442b8d752e1"
      },
      "deploymentId" : 240000031
    },
    {
      "rolloutId" : "63582c5f8a53461413999550",
      "factorPackIds" : {

      },
      "deploymentId" : 240000002
    }
  ],
  "experiments" : [
    {
      "treatmentId" : "5d51a80d-93ec-47e1-9027-675002e78e4a",
      "experimentId" : "6384d56b96e8d228551ec182",
      "deploymentId" : 400000030
    },
    {
      "treatmentId" : "00f62786-ceb5-418f-a586-adcc2922cf89",
      "experimentId" : "65d62240cb0e2417d11ce6e1",
      "deploymentId" : 400000002
    }
  ]
},
  "reportNotes" : [
  "dyld_process_snapshot_get_shared_cache failed"
]
}


Missed stop and cancel features

Hello! At first, thanks a lot for a great tool!

I didn't get how stop the recording quiclkly? (the only way the I found is to open Cap window, or it's by design?)

Also, I missed a recording cancellation feature.

Missing dependencies for desktop

The following two dependencies are missing for the desktop version of the app in the package.json file

"extendable-media-recorder": "^9.1.4",
"extendable-media-recorder-wav-encoder": "^7.0.100",

Infinite error loop "Recording must be for minimum of 5 seconds"

I tried to record a video. Duration about 10-20 seconds I think. It was spinning "Finished up.." for at least a minute, so I went away to eat some lunch and when I came back, it went like this:

Kapture.2024-04-26.at.12.44.24.mp4

Thought you wanted to know. GL with Cap!

๐Ÿฅณ ๐Ÿฆœ

Corrupt frame data after screen capture (macOS)

Description
Experiencing a bug with frame data (from screen capture) being corrupt on some Mac's. Seems to work fine on my 16" MacBook Pro, but when testing on 14" MacBook Pro's the frame image looks corrupt.

My thoughts
I believe this possibly stems from the stride calculation needing to be altered. This is because the frame data can be visible if you mess around with the stride settings - it's not always completely corrupt. The pixel data can be shown, it's just a matter of how it is represented. Also, it may be to do with the scaling factor of the device.

Example of a corrupted frame
Screenshot 2024-03-23 at 02 48 50

Device Specs
14" MacBook Pro
M1 Pro Chip
Sonoma 14.4 (also tested on early versions, e.g. 13.1)

Resolutions tested
1800x1169 (also 2x scale)
1512x982 (also 2x scale)
1352x878 (also 2x scale)

Suspect code
The code for this is located at media.rs which belongs to /apps/desktop: https://github.com/CapSoftware/cap/blob/main/apps/desktop/src-tauri/src/media.rs

The line you're looking for is line 356, match capturer.frame() {. In here, we are iterating over each row and extending the slice to send to video_channel_sender. This then feeds into the video ffmpeg command, at line 437.

The raw frame should be packed bgra (ARGB8888). If you search for ARGB8888 in the codebase, you'll find the capturer package, which ultimately creates the core graphics display stream via CGDisplayStreamCreateWithDispatchQueue.

Issue: Lack of Email Validation on Waitlist Signup

Description:

The current behavior of the "Join the Waitlist" feature prompts the user to input their email address without validating if it's in a valid format. This can lead to incorrect or unusable email addresses being added to the waitlist.

Expected Behavior:

The email validation feature should be implemented to ensure that users provide a valid and properly formatted email address before they can successfully join the waitlist. This will help maintain the integrity of the waitlist data and contribute to a better user experience.

Steps to Reproduce:

Navigate to the page or section where users can join the waitlist.
Click on the "Join the Waitlist" button.
An input box will appear.
Enter nothing and click on Submit.

Actual Results:
No feedback or message is displayed when submitting without entering an email.

Expected Results:
A clear message should appear, stating "Please Enter an Email Address," guiding users to provide the necessary information.

Additional Information:

It would be beneficial to consider client-side and server-side validation to ensure a robust and secure implementation. The enhancement would fall under the following labels: enhancement, validation, frontend, and user experience.

Pricing

Hi! :)
i love this App. Thank You.

There is a quick comment i have. I would price your app less than loom not the same. Because the features and trust for loom is higher, there is no reason to switch to cap. If you price it around 5$ there would be a point to switch to cap.

Best
Daniel

Cap.so Raycast extension

Support Cap.so with an official Raycast extension.

Includes minimally two commands that can be invoked from Raycast:

  • Start recording (w/ default settings set by user)
  • Stop recording (Copies the video URL by default at the end of the recording)

Ideally includes support for:

  • Opening the web dashboard

Combine Ffmpeg commands into one single command (macOS)

Right now, there are two separate commands for capturing audio and video. They can be found in media.rs located in apps/desktop/src-tauri. I would like to have them combined into one single ffmpeg command to reduce system load when recording.

Requirements

  • Create one single ffmpeg command that takes input from both the audio and video sources, muxing into one .ts file
    • This will probably be done by creating separate named pipes as the input sources
  • Make sure the recording process is still performant after changing

You can use this guide to help you get started developing locally as quickly as possible.

Suggestion: The Readme is not up to date.

The ReadMe lacks essential details about the project's motive, vision, and end goal, making it outdated and potentially confusing for users and contributors. We need to update the ReadMe to include this crucial information.

Proposed Changes:

  1. Clearly state the project's motive.
  2. Define the long-term vision.
  3. Outline the ultimate end goal.

Record a specific window (macOS)

Requirements

  • When clicking "Window" display option, open a context menu with the names of available windows to capture from (e.g. whatever apps are open, Spotify, Chrome, VSCode, etc...).
  • When an option is selected, focus on that window and bring it into view.
  • When recording, only record the parameters of that Window (size, position, etc).
    -- For now, this can just be done by adding a filter to the Ffmpeg command, or directly editing the raw frame data in media.rs.
  • Show the "Window" display option as the selected option

Screenshot 2024-04-11 at 13 45 26

You can use this guide to help you get started developing locally as quickly as possible.

Moving from Supabase to PlanetScale/NextAuth

Pasting this from the Cap Discord.

"This was a tough decision for me to make, but I'm moving away from Supabase (db/auth) for use in Cap.

I love Supabase, but local dev just doesn't seem viable right now for a shared codebase. Too many inconsistencies between features not being supported in local vs the deployed version (e.g. email templates). It's also pretty confusing to run migrations etc for anyone who hasn't used Supabase in the past.

Moving to a combination of PlanetScale (db), NextAuth (auth) and Drizzle (orm).

Making this decision now before V1 is live - much easier to handle now than in the future.

If you have any opposition to this - would love to hear your thoughts ๐Ÿ™"

Make camera overlay window more stable (macOS)

Issue
It's possible to break the camera window (window turns black) when the app is first launched. Seems to happen if the app has launched in the background, then you open it after the camera preview has already initialised.

Screenshot 2024-04-11 at 14 00 51

You can use this guide to help you get started developing locally as quickly as possible.

Hide recording window when recording, and create tray icon (macOS)

On starting recording, hide the main Cap window.

Show a stop recording icon in the macOS menu bar tray.

On tray icon click, stop the recording.

This is currently required for macOS only.

Requirements
-Create menu bar tray icon. Use Cap logo as icon maybe? This can be changed later.
-When recording is active, change icon to a stop icon. Maybe use this icon from Lucide.
-When recording is active, hide main Cap app recording window (keep camera overlay window as it is)

You can use this guide to help you get started developing locally as quickly as possible.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.