Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
554 commits
Select commit Hold shift + click to select a range
d984fa4
version: 0.3.78
richiemcilroy Oct 28, 2025
8f9db9b
Merge branch 'main' of https://github.com/CapSoftware/Cap
richiemcilroy Oct 28, 2025
837e85f
feat: PostHog impl changes
richiemcilroy Oct 28, 2025
2f701ef
capture_pageleave: true
richiemcilroy Oct 28, 2025
9bfcdbd
capture spawn recording actor properly (#1300)
oscartbeaumont Oct 28, 2025
a133751
run clippy (#1301)
Brendonovich Oct 28, 2025
c07e33e
fix (#1304)
oscartbeaumont Oct 28, 2025
f97235e
Shared `reqwest::Client` (#1303)
oscartbeaumont Oct 28, 2025
91470d0
Recording semi-recovery (#1302)
oscartbeaumont Oct 28, 2025
5b3e006
Merge branch 'main' into analytics-project
ameer2468 Oct 28, 2025
37cfa82
add caps table, improve chart look, and more
ameer2468 Oct 28, 2025
47a0e07
renderer: add transparent background for gif exporting (#1306)
Brendonovich Oct 28, 2025
1996cdf
Encoder error handling improvements (#1305)
Brendonovich Oct 28, 2025
c75d485
fix rust cache (#1307)
Brendonovich Oct 28, 2025
0ea61e1
rust cache workflow
Brendonovich Oct 28, 2025
e40aaa4
don't use pnpm cache
Brendonovich Oct 28, 2025
29231c4
don't use pnpm
Brendonovich Oct 28, 2025
688dff7
enable rust cache -_-
Brendonovich Oct 28, 2025
88c662d
some refactoring and more ui updates
ameer2468 Oct 28, 2025
612ef9e
0.3.78 changelog
Brendonovich Oct 28, 2025
bbcc615
fix: stop avfoundation mp4 writes when paused (#1308)
richiemcilroy Oct 28, 2025
4aa9628
fix: clamp instant recording output to even minimum size (#1309)
richiemcilroy Oct 28, 2025
69699f7
fix: eliminate “helicopter” mic stutter by aligning mixer timebase (#…
richiemcilroy Oct 28, 2025
8d76a11
v0.3.79 (#1311)
richiemcilroy Oct 28, 2025
0d933a7
Fix trimming behavior (#1273)
Enejivk Oct 29, 2025
53d1543
Merge branch 'main' into analytics-project
ameer2468 Oct 29, 2025
d29648b
opencode
Brendonovich Oct 29, 2025
8ea26ec
ensure more limits don't show when self hosting (#1312)
Brendonovich Oct 29, 2025
875a6a3
Update docker build (#1313)
Brendonovich Oct 29, 2025
d4631f2
some more ui stuff
ameer2468 Oct 29, 2025
d77c181
comment out metric select
ameer2468 Oct 29, 2025
b6d21f5
web: fix displaying name of video creator + pro status (#1315)
ameer2468 Oct 29, 2025
c1bc7ed
0.3.80
richiemcilroy Oct 29, 2025
4886f65
synchronize audio pipeline stop with video completion (#1316)
richiemcilroy Oct 29, 2025
15d8828
cleanup isPro handling + make /signup work in self hosted
Brendonovich Oct 30, 2025
4e8eefb
don't refetch on focus in desktop
Brendonovich Oct 30, 2025
ce6ebd6
hide google/workos login if envs not provided
Brendonovich Oct 30, 2025
ab6796d
use check not build for rust release cache (#1320)
Brendonovich Oct 30, 2025
56e3bc2
Audio fixes (#1319)
Brendonovich Oct 30, 2025
cf5fda5
0.3.80 changelog (#1323)
Brendonovich Oct 30, 2025
a6666cc
Safely read from slices in wrap_frame (#1324)
Brendonovich Oct 31, 2025
a85ef95
use xlarge runners for macos release (#1325)
Brendonovich Oct 31, 2025
6d0f4ae
add workspace-hack crate (#1326)
Brendonovich Oct 31, 2025
0feba07
remove @cap/tasks (#1327)
Brendonovich Oct 31, 2025
cfeb9e4
Merge branch 'main' into analytics-project
ameer2468 Oct 31, 2025
6be1d52
Implement org selection (#1185)
p-delorme Oct 31, 2025
c760b8d
make select look better
ameer2468 Oct 31, 2025
510e69e
gap
ameer2468 Oct 31, 2025
913b8a2
properly handle planar data in avfoundation encoder (#1329)
Brendonovich Oct 31, 2025
e9846b8
hide organisation picker if <= 1 organisation (#1330)
Brendonovich Oct 31, 2025
415d93d
desktop app: reactivity of red markers when trimming + shortcuts even…
ameer2468 Oct 31, 2025
b4aceaf
Self hosted fixes (#1332)
Brendonovich Oct 31, 2025
42b81e3
0.3.81 (#1335)
Brendonovich Oct 31, 2025
65deca5
New light mood toggle icon (#1328)
Enejivk Oct 31, 2025
48a7fe2
remove old scap and add permission check to scap-avfoundation (#1337)
Brendonovich Nov 3, 2025
4e2ee9c
web: delete org (#1338)
ameer2468 Nov 3, 2025
722fd2f
web: cleanup rpc and enable prefetch (#1339)
ameer2468 Nov 3, 2025
0211831
fix: update queries with tombStone check (#1340)
ameer2468 Nov 3, 2025
7766a65
cleanup + document server envs (#1342)
Brendonovich Nov 4, 2025
79aa1ba
Increase SCK queue depth to avoid timeouts (#1344)
Brendonovich Nov 4, 2025
10eda43
run clippy as part of rust cache (#1345)
Brendonovich Nov 4, 2025
3af8741
Support macos 12.7 (#1343)
Brendonovich Nov 4, 2025
0f2ff40
New Cropper across the app (#1079)
ItsEeleeya Nov 4, 2025
a91f8c4
fix layout breaking when toggling border (#1346)
ameer2468 Nov 4, 2025
0bcc9ea
fix: timeline selection ui (#1348)
ameer2468 Nov 4, 2025
b047e93
Add clip speed editing (#632)
EricWiener Nov 4, 2025
fd9f318
0.3.82 (#1349)
Brendonovich Nov 4, 2025
f38ae66
20k users
richiemcilroy Nov 4, 2025
ff2867e
20k users (#1350)
richiemcilroy Nov 4, 2025
4449da3
source frame width/height from ffmpeg for avassetreader (#1351)
Brendonovich Nov 4, 2025
b5656b4
0.3.82 changelog (#1353)
Brendonovich Nov 5, 2025
c9a78d5
Merge branch 'main' into analytics-project
ameer2468 Nov 5, 2025
3d68b30
Update pnpm-lock.yaml
ameer2468 Nov 5, 2025
9bd60ec
only apply seat limit in cloud (#1358)
Brendonovich Nov 6, 2025
1c67745
add new migration (#1359)
Brendonovich Nov 6, 2025
6aa4e86
Merge branch 'main' of https://github.com/CapSoftware/Cap
richiemcilroy Nov 6, 2025
a0e007c
Refactor video effective date and optimize DB indexes (#1361)
richiemcilroy Nov 6, 2025
bb1c5ec
New web based recorder (Instant Mode) (#1363)
richiemcilroy Nov 8, 2025
3cfb332
Add error download option for failed recordings (#1369)
richiemcilroy Nov 8, 2025
d0795aa
feat: Add cursor movement style presets and motion blur
richiemcilroy Nov 8, 2025
f3f29cc
wip: Cursor + display motion blur
richiemcilroy Nov 9, 2025
5c4bce2
feat: Improved motion system + physics
richiemcilroy Nov 9, 2025
62773b9
feat: Add cursor move densification for smoothing
richiemcilroy Nov 9, 2025
04c3444
feat: improved cursors (with shadows!)
richiemcilroy Nov 9, 2025
647f972
feat: Add dynamic spring profiles for cursor interpolation
richiemcilroy Nov 9, 2025
999d318
feat: More cursor updates
richiemcilroy Nov 9, 2025
cbc7937
feat: Add squircle corner style option for camera and background
richiemcilroy Nov 9, 2025
5ccd196
coderabbit bits
richiemcilroy Nov 10, 2025
b583b33
Refactor cursor motion threshold constants
richiemcilroy Nov 10, 2025
bc22cd3
Improve blending and anti-aliasing in video frame shader
richiemcilroy Nov 10, 2025
3d90fcc
Increase default camera rounding value
richiemcilroy Nov 10, 2025
8276170
Refactor ConfigSidebar.tsx
richiemcilroy Nov 10, 2025
a6eb61c
revert
richiemcilroy Nov 10, 2025
70dbbd4
format
richiemcilroy Nov 10, 2025
9f82360
Update context.ts
richiemcilroy Nov 10, 2025
2f53c14
Use normalizeProject when applying presets
richiemcilroy Nov 10, 2025
25f0bfb
Merge pull request #1370 from CapSoftware/smoothing-motion-blur
richiemcilroy Nov 10, 2025
e4cca52
Add channel downmixing for microphone audio frames
richiemcilroy Nov 10, 2025
268e19b
feat: Add 'Record a Cap' page to dashboard
richiemcilroy Nov 10, 2025
14cb1b8
feat: Record page bits
richiemcilroy Nov 10, 2025
4d6a3c8
fix: Recording system audio with mic on Windows (Instant mode)
richiemcilroy Nov 10, 2025
0bdda45
feat: Improve microphone feed error handling and recovery
richiemcilroy Nov 10, 2025
9fe8c3d
Use is_multiple_of for frame size validation
richiemcilroy Nov 10, 2025
3bbf641
Merge pull request #1373 from CapSoftware/instant-mono-fix
richiemcilroy Nov 10, 2025
2fd32a9
Merge branch 'main' into recording-actor-fixes
richiemcilroy Nov 10, 2025
c2d7fce
feat: Refactor recording actor spawn for macOS and error handling
richiemcilroy Nov 10, 2025
fcd44c0
Improve screen and audio capture error handling on macOS
richiemcilroy Nov 10, 2025
2225a86
Refactor mic input selection logic in set_mic_input
richiemcilroy Nov 10, 2025
45fefed
Fix screen capture restart logic and refactor path usage
richiemcilroy Nov 10, 2025
4a7985b
Merge pull request #1374 from CapSoftware/recording-actor-fixes
richiemcilroy Nov 10, 2025
268eecb
Simplify system stop error check in macOS screen capture
richiemcilroy Nov 10, 2025
9c03845
Merge pull request #1375 from CapSoftware/more-recording-fixes
richiemcilroy Nov 10, 2025
1e6d72f
Add changelog for Cap Desktop v0.3.83
richiemcilroy Nov 11, 2025
fdec142
Merge pull request #1376 from CapSoftware/0.3.83
richiemcilroy Nov 11, 2025
a4afa9d
Merge branch 'main' into analytics-project
richiemcilroy Nov 11, 2025
2d86c89
Update pnpm-lock.yaml
richiemcilroy Nov 12, 2025
acda2fc
Integrate Tinybird analytics and update dashboard
richiemcilroy Nov 12, 2025
a94a008
Revamp analytics dashboard UI and filtering
richiemcilroy Nov 13, 2025
b54dd8c
Add aspect ratio and width to CapCard image container
richiemcilroy Nov 13, 2025
4838494
Improve analytics migration and UI interactions
richiemcilroy Nov 13, 2025
4e4646e
Refactor cap deletion logic and analytics tracking
richiemcilroy Nov 13, 2025
2b48e50
format
richiemcilroy Nov 13, 2025
cf1787b
Refactor ShareVideoPage error handling and code style
richiemcilroy Nov 13, 2025
4d081bd
Refactor nav item matching to use exactMatch flag
richiemcilroy Nov 13, 2025
c321959
Refactor nav item path matching logic
richiemcilroy Nov 13, 2025
06d0060
Refactor analytics and sharing components
richiemcilroy Nov 13, 2025
7090526
Remove individual analytics page and fix Tinybird usage
richiemcilroy Nov 13, 2025
006a668
Remove FiltersList component from analytics dashboard
richiemcilroy Nov 13, 2025
fe38ff4
Merge pull request #1383 from CapSoftware/analytics-project
richiemcilroy Nov 13, 2025
cdead2a
Add 'lifetime' analytics range support
richiemcilroy Nov 13, 2025
85c8b2e
Add explicit type annotations for analytics functions
richiemcilroy Nov 13, 2025
abfbad8
Refactor dashboard analytics and navbar UI
richiemcilroy Nov 13, 2025
f47cde1
Add Cap Pro upgrade overlay to analytics dashboard
richiemcilroy Nov 13, 2025
c89451b
Add isOwner prop for analytics and UI controls
richiemcilroy Nov 13, 2025
dd4ab52
Remove CapAIBox animation from admin navbar
richiemcilroy Nov 13, 2025
f1bff20
Replace retry crate with manual retry loop in muxer
richiemcilroy Nov 14, 2025
f42b277
Improve macOS screen capture error handling
richiemcilroy Nov 14, 2025
9835151
fmt
richiemcilroy Nov 14, 2025
7ef58fb
Refactor main window layout and add picker window hide/show
richiemcilroy Nov 16, 2025
833dce0
Set new recording picker to default
richiemcilroy Nov 16, 2025
34a1148
Remove shadow from recording controls button
richiemcilroy Nov 16, 2025
04443e5
Refactor target mode toggling in main window
richiemcilroy Nov 16, 2025
d17a2e6
Add selection hint overlay for area capture
richiemcilroy Nov 16, 2025
8e4d660
Fix target overlay selection and event handling
richiemcilroy Nov 16, 2025
6f8899d
Improve error handling in is_shareable_content_error
richiemcilroy Nov 16, 2025
7d03165
Add pause tracking to WindowsMuxer timestamps
richiemcilroy Nov 16, 2025
9a24d07
Add methods to set mic and camera feeds during pause
richiemcilroy Nov 16, 2025
0adf296
Improve camera and microphone reconnection handling
richiemcilroy Nov 16, 2025
0ad1ad0
Bump desktop app version to 0.3.84
richiemcilroy Nov 16, 2025
a44779e
Update Cargo.lock
richiemcilroy Nov 16, 2025
e0fab01
clippy bits
richiemcilroy Nov 16, 2025
cf0f9d6
Improve error handling in PauseTracker timestamp adjustment
richiemcilroy Nov 16, 2025
8820729
Fix state matching in SetMicFeed and SetCameraFeed handlers
richiemcilroy Nov 16, 2025
b2a9d8e
Add retry limit to video frame queuing
richiemcilroy Nov 16, 2025
ff746c0
Handle locked camera state changes on reconnect
richiemcilroy Nov 16, 2025
1a9b3f2
Refactor camera feed state management and setup flow
richiemcilroy Nov 16, 2025
8a76af7
Improve locked camera reconnection handling
richiemcilroy Nov 16, 2025
5727d98
Move MAX_QUEUE_RETRIES to struct impl block
richiemcilroy Nov 16, 2025
e6e84ce
Refactor conditional logic for attached finalization
richiemcilroy Nov 16, 2025
5105531
Handle errors when saving general settings
richiemcilroy Nov 16, 2025
02b15ac
Handle microphone restoration after reconnect
richiemcilroy Nov 16, 2025
7d842be
Rename SelectionHint.tsx to selection-hint.tsx
richiemcilroy Nov 16, 2025
e1d53e1
Refactor picker window hide logic to use signal state
richiemcilroy Nov 16, 2025
f4bc17a
Fix SelectionHint import path casing
richiemcilroy Nov 16, 2025
89db344
Refactor microphone stream spawning logic
richiemcilroy Nov 16, 2025
d56ff6a
Reorder camera preview window logic and improve error handling
richiemcilroy Nov 16, 2025
7d86c79
clippy bits
richiemcilroy Nov 16, 2025
19cbc64
feat: Introduce new and improved recording picker
richiemcilroy Nov 16, 2025
3e8dbec
Fix window shadow on Windows platform
richiemcilroy Nov 17, 2025
a5e7f1f
Initialize microphone input on mount and effect
richiemcilroy Nov 17, 2025
d3e5d97
Improve error handling for system audio stop
richiemcilroy Nov 17, 2025
3726439
Improve frame sizing logic in PreviewCanvas
richiemcilroy Nov 17, 2025
a217649
Fix frame aspect ratio calculation in PreviewCanvas
richiemcilroy Nov 17, 2025
c1416d4
Handle mic input errors on mount
richiemcilroy Nov 17, 2025
a832346
Improve window overlay and focus handling
richiemcilroy Nov 17, 2025
8602dc6
Add recording options to tray menu
richiemcilroy Nov 17, 2025
7efaa6a
Merge pull request #1389 from CapSoftware/release-fixes
richiemcilroy Nov 17, 2025
8a922a4
Reset camera and mic state on input removal
richiemcilroy Nov 17, 2025
0a5fea6
Refactor project config save with custom debounce
richiemcilroy Nov 17, 2025
bd1fc73
fmt
richiemcilroy Nov 17, 2025
e440785
Refactor camera and mic input functions
richiemcilroy Nov 17, 2025
1a94a75
Add interactive area bounds tracking for recording controls
richiemcilroy Nov 17, 2025
5dc3f44
Add camera stream example for testing
richiemcilroy Nov 17, 2025
2f52488
Restore recording inputs from settings if missing
richiemcilroy Nov 17, 2025
383d2a6
Improve video muxing and camera error handling
richiemcilroy Nov 17, 2025
f86e060
Show camera preview window on instant recording
richiemcilroy Nov 17, 2025
b4f25eb
Windows Instant Mode pausing
richiemcilroy Nov 17, 2025
d0d6b10
Refactor timestamp update logic in Mp4Muxer
richiemcilroy Nov 17, 2025
c644e6d
Refactor input restoration error handling
richiemcilroy Nov 17, 2025
9edf1ce
feat: Numerous camera fixes (pausing, stopping, UX bits, etc)
richiemcilroy Nov 17, 2025
b61958c
Merge branch 'main' into editor-perf
richiemcilroy Nov 17, 2025
5d95f24
Handle excluded windows in macOS screen capture
richiemcilroy Nov 17, 2025
dbe8ae1
Refactor waveform rendering in ClipTrack
richiemcilroy Nov 17, 2025
cced653
Improve camera frame forwarding and logging
richiemcilroy Nov 17, 2025
37eb7c8
Update settings.local.json
richiemcilroy Nov 17, 2025
cbe8454
gcs init
JayAviato Nov 18, 2025
da4122c
Merge pull request #34 from JayAviato/fe/auth
JayAviato Nov 18, 2025
8b403a8
Update recording UI container styles
richiemcilroy Nov 18, 2025
184ad59
lost a days work (I F'D UP)
richiemcilroy Nov 18, 2025
fee3391
Reset camera and mic state on window close and recording end
richiemcilroy Nov 18, 2025
08390dc
docker init
JayAviato Nov 18, 2025
eb4868f
database connection fix
JayAviato Nov 18, 2025
d2b8fd4
Update close button to use window close action
richiemcilroy Nov 18, 2025
6aca28e
Add initializing state to recording flow
richiemcilroy Nov 18, 2025
41fbc5c
Improve camera initialization and recording state handling
richiemcilroy Nov 18, 2025
44a5348
Refactor type casting for currentRecording data
richiemcilroy Nov 18, 2025
6dd3ff1
Hide native camera preview toggle on Windows
richiemcilroy Nov 18, 2025
ce63e02
Add resizing to camera window
richiemcilroy Nov 18, 2025
dd39425
Set Mellow as default for CursorAnimationStyle
richiemcilroy Nov 18, 2025
831fb76
Fix import order in experimental settings route
richiemcilroy Nov 18, 2025
891b122
Improve camera feed sender handling and logging
richiemcilroy Nov 18, 2025
2b504dd
Update camera.tsx
richiemcilroy Nov 18, 2025
c0d4e0c
migration issue fixed
JayAviato Nov 18, 2025
d24e92c
Add code formatting guidelines to documentation
richiemcilroy Nov 18, 2025
e6e9320
Improve logging and error context in recording pipeline
richiemcilroy Nov 18, 2025
5de394f
Update apps/desktop/src-tauri/src/camera.rs
richiemcilroy Nov 18, 2025
0066eb1
Add camera overlay bounds update and revert logic
richiemcilroy Nov 18, 2025
dec0d8e
Merge branch 'editor-perf' of https://github.com/CapSoftware/Cap into…
richiemcilroy Nov 18, 2025
05f39bb
Improve countdown animation and fix recording logic
richiemcilroy Nov 18, 2025
fd30b14
Add checked_duration_since for timestamp types
richiemcilroy Nov 18, 2025
a0aeffa
Refactor duration calculation for readability
richiemcilroy Nov 18, 2025
51e2f6e
misc packages
richiemcilroy Nov 18, 2025
6db1d2d
Remove unused setCamera mutation in camera page
richiemcilroy Nov 18, 2025
ff78eba
Clarify and emphasize no code comments policy
richiemcilroy Nov 19, 2025
756d296
Improve camera window resizing and positioning logic
richiemcilroy Nov 19, 2025
0510be8
Add __CAP__ property to Window interface
richiemcilroy Nov 19, 2025
695bb66
Fix requestAnimationFrame cleanup in overlay
richiemcilroy Nov 19, 2025
ef920b2
gen'd files
richiemcilroy Nov 19, 2025
2f75043
clippy bits
richiemcilroy Nov 19, 2025
563e238
Merge pull request #1390 from CapSoftware/editor-perf
richiemcilroy Nov 19, 2025
f9285e7
minio issue fixed
JayAviato Nov 19, 2025
ff2d99a
migration issue fixed
JayAviato Nov 19, 2025
ef4a54f
New theme preview icons
ItsEeleeya Nov 19, 2025
bab0348
Remove unused
ItsEeleeya Nov 19, 2025
f272bbf
Merge pull request #1396 from ItsEeleeya/new-theme-previews
richiemcilroy Nov 19, 2025
c678fa0
feat: Update database connection to support Google Cloud SQL
google-labs-jules[bot] Aug 8, 2025
96646cc
feat: Add Terraform for GCP Cloud Run with Private Cloud SQL
google-labs-jules[bot] Aug 8, 2025
f126efa
feat: update Terraform infra, Cloud Build configs, and Docker setup f…
Aug 11, 2025
41d07f5
chore: convert terraform/Cap from submodule to normal directory
Aviato-DevOps-2 Aug 11, 2025
7682a4e
fix(cloudbuild): Enable BuildKit for docker build steps
google-labs-jules[bot] Aug 10, 2025
0a167c0
feat: Update Cloud Build and Terraform for multi-app deployment
google-labs-jules[bot] Aug 9, 2025
ae17b90
fix: Configure authentication for Cloud Run service
google-labs-jules[bot] Aug 9, 2025
1602a55
fix(cloudbuild): enable apis and grant roles for new project
google-labs-jules[bot] Aug 19, 2025
c37e890
fix(cloudbuild): resolve all outstanding cloudbuild and terraform issues
google-labs-jules[bot] Aug 17, 2025
c40f746
feat(terraform): configure GCS backend for state management
google-labs-jules[bot] Aug 16, 2025
b7c16a1
fix(terraform): remove experiments flag
google-labs-jules[bot] Aug 14, 2025
186f7c3
Update cloudbuild.yaml
benking84 Aug 17, 2025
a0ba1e9
fix(cloudbuild): final comprehensive fix for all issues
google-labs-jules[bot] Aug 18, 2025
19a6e2a
fix(cloudbuild): final and complete fix for all cloudbuild and terraf…
google-labs-jules[bot] Aug 18, 2025
3fa6a5c
Merge branch 'fe/oauth-integration' into chore/rebase-upstream
JayAviato Nov 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"permissions": {
"allow": [
"Bash(pnpm typecheck:*)",
"Bash(pnpm lint:*)",
"Bash(pnpm build:*)",
"Bash(cargo check:*)"
],
"deny": [],
"ask": []
}
}
27 changes: 27 additions & 0 deletions .config/hakari.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# This file contains settings for `cargo hakari`.
# See https://docs.rs/cargo-hakari/latest/cargo_hakari/config for a full list of options.

hakari-package = "workspace-hack"

# Format version for hakari's output. Version 4 requires cargo-hakari 0.9.22 or above.
dep-format-version = "4"

# Setting workspace.resolver = "2" or higher in the root Cargo.toml is HIGHLY recommended.
# Hakari works much better with the v2 resolver. (The v2 and v3 resolvers are identical from
# hakari's perspective, so you're welcome to set either.)
#
# For more about the new feature resolver, see:
# https://blog.rust-lang.org/2021/03/25/Rust-1.51.0.html#cargos-new-feature-resolver
resolver = "2"

# Add triples corresponding to platforms commonly used by developers here.
# https://doc.rust-lang.org/rustc/platform-support.html
platforms = [
# "x86_64-unknown-linux-gnu",
# "x86_64-apple-darwin",
"aarch64-apple-darwin",
"x86_64-pc-windows-msvc",
]

# Write out exact versions rather than a semver range. (Defaults to false.)
# exact-versions = true
7 changes: 4 additions & 3 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
target/
node_modules/
crates/
target
crates
**/node_modules
**/.next
2 changes: 1 addition & 1 deletion .github/actions/setup-js/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ runs:
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 20
node-version: 24
cache: pnpm

- name: Install frontend dependencies
Expand Down
18 changes: 18 additions & 0 deletions .github/actions/setup-rust-cache/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Setup Rust Cache
description: Configures Rust caching
inputs:
target:
description: "Toolchain target triple"
required: true
save-cache:
description: "Whether to save the cache"
required: false
default: "false"
runs:
using: "composite"
steps:
- name: Cache Rust Dependencies
uses: swatinem/rust-cache@v2
with:
save-if: ${{ inputs.save-cache }}
shared-key: ${{ inputs.target }}
29 changes: 0 additions & 29 deletions .github/actions/setup-rust/action.yml

This file was deleted.

91 changes: 80 additions & 11 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,17 @@ concurrency:
group: ${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}

jobs:
changes:
name: Detect Changes
runs-on: ubuntu-latest
outputs:
rust: ${{ steps.filter.outputs.rust }}
tauri-plugins: ${{ steps.filter.outputs.tauri-plugins }}
branch: ${{ steps.branch.outputs.branch }}
steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -26,6 +30,8 @@ jobs:
id: filter
with:
filters: |
desktop:
- 'apps/desktop/**'
rust:
- '.cargo/**'
- '.github/**'
Expand All @@ -37,6 +43,11 @@ jobs:
- 'Cargo.lock'
- 'pnpm-lock.yaml'

- name: Output branch name
id: branch
run: |
echo "branch=${{ env.BRANCH_NAME }}" >> $GITHUB_OUTPUT

typecheck:
name: Typecheck
runs-on: ubuntu-latest
Expand All @@ -46,6 +57,8 @@ jobs:

- uses: ./.github/actions/setup-js

- run: pnpm web exec next typegen

- name: Typecheck
run: pnpm typecheck

Expand Down Expand Up @@ -74,15 +87,26 @@ jobs:
uses: actions/checkout@v4

- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt

- name: Check formatting
run: cargo fmt --check

clippy:
name: Clippy
runs-on: macos-latest
needs: changes
if: needs.changes.outputs.rust == 'true'
strategy:
fail-fast: false
matrix:
settings:
- target: aarch64-apple-darwin
runner: macos-latest
# Windows can't take the disk usage lol
# - target: x86_64-pc-windows-msvc
# runner: windows-latest
runs-on: ${{ matrix.settings.runner }}
permissions:
contents: read
steps:
Expand All @@ -93,11 +117,11 @@ jobs:
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.settings.target }}
components: clippy

- name: Rust cache
uses: swatinem/rust-cache@v2
- uses: ./.github/actions/setup-rust-cache
with:
shared-key: ${{ matrix.settings.target }}
target: ${{ matrix.settings.target }}

- name: Create .env file in root
run: |
Expand All @@ -110,8 +134,6 @@ jobs:
echo 'VITE_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}' >> .env
echo 'VITE_POSTHOG_HOST=${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}' >> .env
echo 'VITE_SERVER_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}' >> .env
echo "NEXT_PUBLIC_CAP_AWS_REGION=${{ secrets.NEXT_PUBLIC_CAP_AWS_REGION }}" >> .env
echo "NEXT_PUBLIC_CAP_AWS_BUCKET=${{ secrets.NEXT_PUBLIC_CAP_AWS_BUCKET }}" >> .env

cat .env >> $GITHUB_ENV

Expand Down Expand Up @@ -141,6 +163,8 @@ jobs:

build-desktop:
name: Build Desktop
needs: changes
if: needs.changes.outputs.desktop == 'true'
strategy:
fail-fast: false
matrix:
Expand All @@ -162,10 +186,9 @@ jobs:
with:
targets: ${{ matrix.settings.target }}

- name: Rust cache
uses: swatinem/rust-cache@v2
- uses: ./.github/actions/setup-rust-cache
with:
shared-key: ${{ matrix.settings.target }}
target: ${{ matrix.settings.target }}

- uses: ./.github/actions/setup-js

Expand All @@ -180,8 +203,6 @@ jobs:
echo 'VITE_POSTHOG_KEY=${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}' >> .env
echo 'VITE_POSTHOG_HOST=${{ secrets.NEXT_PUBLIC_POSTHOG_HOST }}' >> .env
echo 'VITE_SERVER_URL=${{ secrets.NEXT_PUBLIC_WEB_URL }}' >> .env
echo "NEXT_PUBLIC_CAP_AWS_REGION=${{ secrets.NEXT_PUBLIC_CAP_AWS_REGION }}" >> .env
echo "NEXT_PUBLIC_CAP_AWS_BUCKET=${{ secrets.NEXT_PUBLIC_CAP_AWS_BUCKET }}" >> .env

- name: Copy .env to apps/desktop
run: cp .env apps/desktop/.env
Expand Down Expand Up @@ -214,3 +235,51 @@ jobs:
- name: Run verify
shell: bash
run: node scripts/check-tauri-plugin-versions.js

rust-cache:
name: Rust cache
needs: changes
if: needs.changes.outputs.branch == 'main'
strategy:
fail-fast: false
matrix:
settings:
- target: x86_64-apple-darwin
runner: macos-latest
- target: aarch64-apple-darwin
runner: macos-latest
- target: x86_64-pc-windows-msvc
runner: windows-latest
runs-on: ${{ matrix.settings.runner }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Rust setup
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.settings.target }}

- uses: ./.github/actions/setup-rust-cache
with:
target: ${{ matrix.settings.target }}
save-cache: true

- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 24

- run: node scripts/setup.js

- name: Build debug
run: cargo build --all

- name: Build release
run: cargo check --all --release

- name: Run Clippy
if: ${{ matrix.settings.target == 'aarch64-apple-darwin' || matrix.settings.target == 'x86_64-pc-windows-msvc' }}
uses: actions-rs-plus/clippy-check@v2
with:
args: --workspace --all-features --locked
17 changes: 11 additions & 6 deletions .github/workflows/docker-build-web.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,6 @@ jobs:
run: |
echo "WEB_URL=http://localhost:3000" > .env
echo "NEXT_PUBLIC_DOCKER_BUILD=true" >> .env
echo "NEXT_PUBLIC_CAP_AWS_BUCKET=capso" >> .env
echo "NEXT_PUBLIC_CAP_AWS_REGION=us-east-1" >> .env
cat .env

- name: Login to GitHub Container Registry
uses: docker/login-action@v3
Expand All @@ -47,6 +44,10 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Downcase GITHUB_REPOSITORY_OWNER
run: |
echo "REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER@L}" >>${GITHUB_ENV}

- name: Build and Push Platform Image
id: build
uses: docker/build-push-action@v5
Expand All @@ -55,7 +56,7 @@ jobs:
file: apps/web/Dockerfile
platforms: linux/${{ matrix.platform }}
push: true
outputs: type=image,name=ghcr.io/${{ github.repository_owner }}/cap-web,push-by-digest=true
outputs: type=image,name=ghcr.io/${{ env.REPOSITORY_OWNER }}/cap-web,push-by-digest=true
cache-from: type=gha,scope=buildx-${{ matrix.platform }}
cache-to: type=gha,mode=max,scope=buildx-${{ matrix.platform }}

Expand Down Expand Up @@ -99,7 +100,11 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Downcase GITHUB_REPOSITORY_OWNER
run: |
echo "REPOSITORY_OWNER=${GITHUB_REPOSITORY_OWNER@L}" >>${GITHUB_ENV}

- name: Create Image Manifest
run: |
docker buildx imagetools create -t ghcr.io/${{ github.repository_owner }}/cap-web:${{ inputs.tag || 'latest' }} \
$(find /tmp/digests -type f -not -path "*/\.*" -exec basename {} \; | xargs -I {} echo "ghcr.io/${{ github.repository_owner }}/cap-web@sha256:{}")
docker buildx imagetools create -t ghcr.io/${{ env.REPOSITORY_OWNER }}/cap-web:${{ inputs.tag || 'latest' }} \
$(find /tmp/digests -type f -not -path "*/\.*" -exec basename {} \; | xargs -I {} echo "ghcr.io/${{ env.REPOSITORY_OWNER }}/cap-web@sha256:{}")
29 changes: 29 additions & 0 deletions .github/workflows/opencode.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: opencode

on:
issue_comment:
types: [created]

jobs:
opencode:
if: |
contains(github.event.comment.body, ' /oc') ||
startsWith(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, ' /opencode') ||
startsWith(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
issues: read
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Run opencode
uses: sst/opencode/github@latest
env:
OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }}
with:
model: opencode/claude-sonnet-4-5
Loading
Loading