Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
870 commits
Select commit Hold shift + click to select a range
c3bad86
feat(freebuff-desktop): project Recents + draft persistence across re…
jahooma Jun 27, 2026
b915eb5
feat(freebuff-desktop): brand the shell as Freebuff + ship a real ico…
jahooma Jun 27, 2026
fa15b63
feat(freebuff-desktop): tab icon shows PR state + last-turn outcome (…
jahooma Jun 28, 2026
d519f2e
fix(freebuff-desktop): replace "New thread" placeholder with the free…
jahooma Jun 28, 2026
e3a27a1
feat(freebuff-desktop): move model picker to the header bar + real lo…
jahooma Jun 28, 2026
97f6b0e
Improve freebuff desktop chat scroll UX (#354)
jahooma Jun 28, 2026
871e444
add willow voice mic
victorxheng Jun 28, 2026
7c1db89
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 28, 2026
e54de96
feat(auth): block abuse-ring email domains at sign-in (#355)
jahooma Jun 28, 2026
0ed101f
docs+scripts(freebuff): referral-farm detection/clawback tooling (#356)
jahooma Jun 28, 2026
c8a0aa0
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 28, 2026
1e681c5
feat(freebuff-desktop): CI release flow for cross-platform installers…
jahooma Jun 29, 2026
7297a40
feat(desktop): nested subagents with collapsible boxes (#359)
jahooma Jun 29, 2026
1eb66a3
analytics: include accessTier in message_sent event (#360)
jahooma Jun 29, 2026
7a501ae
feat(freebuff-desktop): full model switcher + parallel free-mode sess…
jahooma Jun 29, 2026
9a48f7a
docs(freebuff-abuse-detection): cover desktop multi-session per-IP im…
jahooma Jun 29, 2026
36f5c02
fix(freebuff-desktop): release free-mode sessions on logout (#362)
jahooma Jun 29, 2026
8dfd438
feat(freebuff-desktop): expandable suggested prompts + nudge Claude C…
jahooma Jun 29, 2026
fa95497
feat(freebuff-desktop): PostHog analytics + Axiom logging (#364)
jahooma Jun 29, 2026
92e222b
chore(freebuff-desktop): drop unused api client methods (#365)
jahooma Jun 29, 2026
88d274f
fix(cli): handle premium_slot_taken in freebuff session poll switch (…
jahooma Jun 29, 2026
b19f1ff
feat(referrals): Phase 3 — switch GLM entitlement to referral_v2 (gra…
jahooma Jun 29, 2026
bec4ef0
feat(freebuff-desktop): mute new-thread chrome + wider sidebar (#367)
jahooma Jun 29, 2026
aab9dba
refactor(freebuff-desktop): Tier 1 foundation cleanup (dead code, too…
jahooma Jun 29, 2026
5179fc3
refactor(freebuff-desktop): type the Electron bridge, extract hooks, …
jahooma Jun 29, 2026
863f4bf
fix(freebuff-desktop): security hardening + safety fixes (local-CSRF …
jahooma Jun 29, 2026
039e4dd
refactor(freebuff-desktop): robustness pass (Electron lifecycle, rele…
jahooma Jun 29, 2026
6cb555f
feat(freebuff-desktop): SSE heartbeat, /healthz, and server integrati…
jahooma Jun 29, 2026
56b0ab9
feat(freebuff-desktop): LLM-generated tab titles on first message (#373)
jahooma Jun 29, 2026
a81a698
fix(freebuff-desktop): preserve agent context + auto-resume running t…
jahooma Jun 29, 2026
02d28f6
fix(freebuff-desktop): show "Freebuff" name + icon in macOS Dock/Cmd+…
jahooma Jun 29, 2026
76fd968
feat(freebuff/web): one-command golden snapshot deploy + tiered auto-…
harshkasat Jun 29, 2026
06dbff3
reduce costs for convex db egress and db io
victorxheng Jun 29, 2026
d0263c6
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 29, 2026
8fead6d
fix(freebuff/web): limit outer-region project creation during spikes …
harshkasat Jun 29, 2026
de53577
fix the refresh glitch for auth on opening projects
victorxheng Jun 29, 2026
232c3e0
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 29, 2026
ab16ad9
feat(freebuff/web): add golden snapshot delete action (#378)
harshkasat Jun 29, 2026
a9acae6
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 29, 2026
975dff6
re skin freebuff web
victorxheng Jun 29, 2026
f7d19b1
fix blog and colors
victorxheng Jun 29, 2026
6188e22
fix(ads): set explicit User-Agent on server-to-Gravity ad requests (#…
jahooma Jun 29, 2026
320082a
ui background touch ups
victorxheng Jun 29, 2026
2e809b4
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 29, 2026
995299c
BYOK changes implemented
victorxheng Jun 29, 2026
f1b79e0
fix(freebuff): stop GLM referral banner button overlapping invite tex…
jahooma Jun 30, 2026
bc460c4
fix(cli): pick AVX2 vs baseline binary from explicit CPU detection (#…
jahooma Jun 30, 2026
eaeb758
chaining together actions to bypass ten minute time limit
victorxheng Jun 30, 2026
e3175f0
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 30, 2026
afdb545
fix(freebuff-desktop): apply default queue width on a fresh profile (…
jahooma Jun 30, 2026
acbe682
fix(scripts): coerce db.execute timestamps to Date in backfill-referr…
jahooma Jun 30, 2026
f417d2b
fix(freebuff-desktop): calmer thread header (drop agent dot, right-al…
jahooma Jun 30, 2026
6d9fdda
feat(freebuff-desktop): clickable keycap send/add button in composer …
jahooma Jun 30, 2026
f6a4969
docs(desktop): rewrite e2e-testing guide + README for the thread mode…
jahooma Jun 30, 2026
4f45695
feat(referrals): Phase 2b — backfill referral_v2 github id on GitHub …
jahooma Jun 30, 2026
cde01f3
ci: retry deploy (transient convex start_push 500)
victorxheng Jun 30, 2026
dc1d642
feat(freebuff): add hard processing-deadline watchdog for agent runs
victorxheng Jun 30, 2026
56da0df
feat(referrals): Phase 3b — wire limited-tier daily-session referral …
jahooma Jun 30, 2026
c1b7583
fix(referrals): degrade limited referral bonus to 0 on query error (#…
jahooma Jun 30, 2026
748c33a
feat(referrals): require activation for GLM + web, restore self-bump,…
jahooma Jun 30, 2026
b2c05b3
fix(freebuff-desktop): make freebuff models work in free mode + surfa…
jahooma Jun 30, 2026
0af1f4b
feat(freebuff-desktop): tidy model picker — drop agent descriptions, …
jahooma Jun 30, 2026
2e331b6
feat(referrals): enforce v2 anti-abuse invariants in attribution + te…
jahooma Jun 30, 2026
5efdf1c
fix(referrals): resilient github-id resolution so backfill gaps can't…
jahooma Jun 30, 2026
d27d080
perf(freebuff): stream via append-only deltas to cut Convex DB IO + e…
victorxheng Jun 30, 2026
87722a3
reporting flow: bug report and feature request popover
victorxheng Jun 30, 2026
183740a
redeploy
victorxheng Jun 30, 2026
cd6af4a
fix refresh issue on cloud
victorxheng Jun 30, 2026
e2a38ba
fix(freebuff): drop agent_thread by_processing index to unblock deploy
victorxheng Jun 30, 2026
74d31e5
redeploy: retrigger Render deploy after granting CONVEX_DEPLOY_KEY da…
victorxheng Jun 30, 2026
b307908
fix(freebuff-desktop): fix `bun run dev` ECONNREFUSED on 8787 (#400)
jahooma Jun 30, 2026
80b7b42
fix the feedback button
victorxheng Jun 30, 2026
083f3b2
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 30, 2026
c9584aa
fix(freebuff-desktop): unstick sign-in "Waiting for sign-in…" (#402)
jahooma Jun 30, 2026
874e105
fixed form
victorxheng Jun 30, 2026
ac95492
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 30, 2026
f412649
automations (#398)
pranav100000 Jun 30, 2026
62b2ad4
fix form submission error blocking email sending
victorxheng Jun 30, 2026
85fb197
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jun 30, 2026
56800be
fix(freebuff): stop rendering Convex-based issue report button on /chat
victorxheng Jun 30, 2026
f89ad0d
Bump Freebuff version to 0.0.116
github-actions[bot] Jun 30, 2026
46e4abb
feat(freebuff-desktop): per-tab project directories (#403)
jahooma Jun 30, 2026
e3c8b37
Bump version to 1.0.683
github-actions[bot] Jun 30, 2026
5424133
ci: retry bun install on transient tarball integrity failures (#404)
jahooma Jul 1, 2026
8bd3a61
feat(freebuff): show referral copy button in limited mode
jahooma Jul 1, 2026
98633de
Merge: show freebuff referral copy button in limited mode (advertise …
jahooma Jul 1, 2026
86a2278
Merge remote-tracking branch 'origin/main'
jahooma Jul 1, 2026
8168757
vm sizing status popover, vm sizing adjustment, surface disk error me…
victorxheng Jul 1, 2026
79508a9
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 1, 2026
3625d8e
Bump Freebuff version to 0.0.117
github-actions[bot] Jul 1, 2026
7cdf239
ci(freebuff-desktop): mark releases as GitHub pre-release (beta) (#405)
jahooma Jul 1, 2026
bba1f5b
fix(freebuff-desktop): bump release version with bun, not npm (#406)
jahooma Jul 1, 2026
c0bad1d
Bump Freebuff Desktop version to 0.0.1
github-actions[bot] Jul 1, 2026
38676a1
fix(cloud): stop workspace flash/refresh loop from transient auth re-…
pranav100000 Jul 1, 2026
0e8053f
Automations: redesigned schedule picker + move to workspace tab (god-…
pranav100000 Jul 1, 2026
cfae33a
fix(freebuff-desktop): remove sticky last-user-prompt bar (#411)
jahooma Jul 1, 2026
2b48930
feat(freebuff-desktop): in-app updater (Install / Install When Idle) …
jahooma Jul 1, 2026
ec2dbf9
feat(freebuff-web): Freebuff Desktop download page (beta) (#409)
jahooma Jul 1, 2026
d28733d
chore(freebuff-web): unlist Desktop download page (soft launch) (#414)
jahooma Jul 1, 2026
8487c20
Automations: timezone picker + drop Daily (#410)
pranav100000 Jul 1, 2026
70ad717
one active project enforcement, lift ban on freebuff cloud, git sync …
victorxheng Jul 1, 2026
22dbd7c
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 1, 2026
ba44c21
adding harsh to email support
victorxheng Jul 1, 2026
4143561
fix(freebuff-desktop): first-launch folder picker + ad-hoc code signi…
jahooma Jul 1, 2026
261e8d6
Bump Freebuff Desktop version to 0.0.2
github-actions[bot] Jul 1, 2026
7f188d1
feat(freebuff-desktop): easier project-folder browsing in the picker …
jahooma Jul 1, 2026
c138af0
fix the saving context error (#418)
harshkasat Jul 1, 2026
47db025
higher requirements for bug report quality, adjust mobile UI
victorxheng Jul 1, 2026
ed869ba
feat(freebuff-desktop): offer to git init a non-repo folder (#419)
jahooma Jul 1, 2026
c15c9d2
added DAU metrics for freebuff web activity vs freebuff cloud
victorxheng Jul 1, 2026
5fa78ae
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 1, 2026
1837b42
posthog data emission
victorxheng Jul 1, 2026
9e560d2
feat(freebuff-desktop): Developer ID signing + notarization for macOS…
jahooma Jul 1, 2026
4cc259e
Bump Freebuff Desktop version to 0.0.3
github-actions[bot] Jul 1, 2026
05a4ece
fix(freebuff-desktop): export APPLE_API_ISSUER for notarization (#422)
jahooma Jul 1, 2026
ac0414d
Bump Freebuff Desktop version to 0.0.4
github-actions[bot] Jul 1, 2026
29a655f
Fix cloud GitHub auth recovery and chat loading flicker (#424)
harshkasat Jul 1, 2026
5c59fc6
Bump Freebuff Desktop version to 0.0.5
github-actions[bot] Jul 1, 2026
6f0514e
automatically triage bugs and submit PRs via codex on freebuff cloud
victorxheng Jul 1, 2026
8702451
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 1, 2026
82b4fbc
feat(freebuff-desktop): replace custom project picker with the native…
jahooma Jul 1, 2026
137da9b
fix(freebuff-desktop): persist queue-panel width, spruce up welcome C…
jahooma Jul 1, 2026
c0d9811
feat(freebuff-desktop): combined agent+model picker with per-thread C…
jahooma Jul 1, 2026
05d47f3
feat(freebuff-desktop): recovery card when local Claude Code is signe…
jahooma Jul 2, 2026
380131a
larger sandbox snapshot environments
victorxheng Jul 2, 2026
1ac2358
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
44832df
feat(freebuff-desktop): lock project + agent/model once a thread star…
jahooma Jul 2, 2026
d88a670
fix(freebuff-desktop): make sign-in recoverable while waiting (#431)
jahooma Jul 2, 2026
71a74fc
Activate referrals from web-chat messages (at 'limited') (#433)
jahooma Jul 2, 2026
b2756f2
reduction in deploy time (need to be more careful before merging majo…
victorxheng Jul 2, 2026
f5ccbc1
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
d34c6c5
sandbox agent guide for cleaning low storage configurations
victorxheng Jul 2, 2026
446cbfc
chore(freebuff-desktop): staple .dmg + drop quarantine strip (#435)
jahooma Jul 2, 2026
766d5f8
Fix DeepSeek 400: pass reasoning_content back on tool-call replay (#430)
jahooma Jul 2, 2026
1ea368c
Full-tier referral activation from /chat and /web (verified access ti…
jahooma Jul 2, 2026
6d6e8e7
chore(freebuff-desktop): simplify new-thread welcome
jahooma Jul 2, 2026
b62427b
feat(freebuff-desktop): move "Set up preview" behind queue menu, add …
jahooma Jul 2, 2026
3b54f90
Persist Freebuff desktop session instance IDs (#437)
jahooma Jul 2, 2026
0458a19
[codex] Clean up desktop preview and account controls (#438)
jahooma Jul 2, 2026
98a085a
Bump Freebuff Desktop version to 0.0.6
github-actions[bot] Jul 2, 2026
e9839ed
feat(freebuff-desktop): surface the API host with a header badge + sh…
jahooma Jul 2, 2026
f1d25f8
fix(freebuff-desktop): resolve Claude Code CLI in the packaged app (#…
jahooma Jul 2, 2026
3a6c618
Bump Freebuff Desktop version to 0.0.7
github-actions[bot] Jul 2, 2026
0b27e22
feat(freebuff-desktop): move account menu to tab bar as icon-only con…
jahooma Jul 2, 2026
3fa7201
fix(freebuff-desktop): treat a Freebuff API 401 as a sign-out (#442)
jahooma Jul 2, 2026
c473fc6
fix(freebuff-desktop): host-scope the sign-in + share one sign-out pa…
jahooma Jul 2, 2026
c6c8d03
chat connect ui changes and badge fix
victorxheng Jul 2, 2026
869a152
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
7272930
feat(freebuff-desktop): move Freebuff sign-in to the tab bar account …
jahooma Jul 2, 2026
5296d25
feat(freebuff-desktop): single sign-in CTA on the signed-out welcome …
jahooma Jul 2, 2026
b6aa5d0
Bump Freebuff Desktop version to 0.0.8
github-actions[bot] Jul 2, 2026
c9761c2
feat(referrals): log redemption failures + capture sock-puppet eviden…
jahooma Jul 2, 2026
5b04b1c
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
2f15db0
avatar dropdown menu fix
victorxheng Jul 2, 2026
6f3add5
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
2fdd3a8
referalls lead to landing page with unified click tracking
victorxheng Jul 2, 2026
50e4a83
feat(desktop): intersperse persistent sponsored ads into the chat tra…
jahooma Jul 2, 2026
63d7304
fix chat flicker, gravity ad UI,
victorxheng Jul 2, 2026
21de8be
refresh chat fix, log efficiency fixes, DB bandwidth fixes
victorxheng Jul 2, 2026
26e5c74
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
00ac071
fix(cli): stop /new from overwriting the previous chat's history (#449)
jahooma Jul 2, 2026
70745bb
feat(desktop): sign in through freebuff.com instead of codebuff.com (…
jahooma Jul 2, 2026
9a291e0
broken styles fix, stuck VMs, vm status accuracy, reasoning UI, error…
victorxheng Jul 2, 2026
b7d4c04
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
2688e0c
fix(cli): don't lose the in-flight turn when the CLI is interrupted o…
jahooma Jul 2, 2026
00b8176
iframe fix, local dev fix
victorxheng Jul 2, 2026
9fddc73
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
c213eda
feat(desktop): one composer — queue-by-default while running, per-ite…
jahooma Jul 2, 2026
bfd27ac
reasoning and new ad placement in the input box
victorxheng Jul 2, 2026
f0c4a2a
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 2, 2026
afdaff1
fix(cli): persist full chat transcript instead of trimming to last 10…
jahooma Jul 2, 2026
c07aaef
fix: move SDK runtime app-URL env reads into the env helper (#454)
jahooma Jul 3, 2026
350387d
fix(sdk): kill in-flight terminal commands (and other tools) when the…
jahooma Jul 3, 2026
9425b40
fix(desktop): show connection warning in tab bar only when disconnect…
jahooma Jul 3, 2026
5939f4a
local dev instructions with images, project recency on cloud, gravity…
victorxheng Jul 3, 2026
e76b5f3
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
9c35b30
Mirror message_sent DAU events to Axiom from web (Convex) and chat su…
jahooma Jul 3, 2026
f48d7ef
fix install and cloud loading state
victorxheng Jul 3, 2026
a242807
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
89a0bf1
Drop zero-byte image parts before they reach LLM providers
victorxheng Jul 3, 2026
a365909
Fix DeepSeek tool_choice 400s and make agent-step ingest idempotent
victorxheng Jul 3, 2026
ec00cfa
git diff viewer and codex oauth fix
victorxheng Jul 3, 2026
48a32e9
fix(desktop): move the transcript copy button from assistant to user …
jahooma Jul 3, 2026
e44b37c
feat(freebuff): limited tier = one desktop tab, session-quota badge, …
jahooma Jul 3, 2026
a0473b9
feat(desktop): first-run onboarding — no demo repo, sign-in → folder …
jahooma Jul 3, 2026
c298c09
perf(convex): direct sandbox→R2 fallback dist upload + 1.5s stream fl…
harshkasat Jul 3, 2026
4876c41
referral
victorxheng Jul 3, 2026
d43a6d1
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
3eab035
refactor(desktop): remove TARGET_REPO — repos are runtime state, fres…
jahooma Jul 3, 2026
347b6ca
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
f7c9da9
feat(web): migrate new projects from Daytona to WebContainer (#399)
harshkasat Jul 3, 2026
ef3d750
fix(freebuff): stop bogus "out of date" error after session expiry; h…
jahooma Jul 3, 2026
2282174
a bit more unified nav bar, separate cloud web projects
victorxheng Jul 3, 2026
32bf266
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
af3ca5a
fixing next build simple and short (#464)
harshkasat Jul 3, 2026
d3689f0
fix(freebuff): close residual queued-message loss after session expir…
jahooma Jul 3, 2026
7aa6b3b
status refresh accuracy
victorxheng Jul 3, 2026
50612ba
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
2a34f46
fix(desktop): show parent dir, not full path, in welcome recents (#466)
jahooma Jul 3, 2026
ff86a7e
Bump Freebuff Desktop version to 0.0.9
github-actions[bot] Jul 3, 2026
c7bea82
fix codex byok and spacing
victorxheng Jul 3, 2026
b45ca29
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
1f7f7a2
fix(freebuff-cli): add 20s timeout to session API calls (#468)
jahooma Jul 3, 2026
f86cad5
Queue-time + event-loop observability; skip token-count API for free …
jahooma Jul 3, 2026
2f3e53e
fix(freebuff): add 5s fetch timeouts to IP-privacy provider lookups (…
jahooma Jul 3, 2026
c2bdfda
ci: hash only root bun.lock for dep cache keys; align cache path list…
jahooma Jul 3, 2026
e0f8bfe
fix(db): harden prod Postgres against abandoned-transaction lock hold…
jahooma Jul 3, 2026
7eab3f9
feat(freebuff): server-rendered Gravity ads experiment in /chat (#472)
jahooma Jul 3, 2026
e7280f5
docs(freebuff): rewrite waiting-room doc as session-admission; scrub …
jahooma Jul 3, 2026
bfb9eba
cache speedup for render for deployments
victorxheng Jul 3, 2026
8b845c1
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
f16ff43
fix(cli): reset the terminal even when the CLI is killed uncatchably …
jahooma Jul 3, 2026
89060a6
refactor(cli): rename waiting-room vocabulary to landing screen / ses…
jahooma Jul 3, 2026
5b7183f
fix(freebuff): make session admission atomic, ending maps-to-no-view …
jahooma Jul 3, 2026
d718f0f
feat(freebuff/web): standalone output to shrink Render deploy artifac…
victorxheng Jul 3, 2026
dc7f276
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
bfaccd3
fix(freebuff-desktop): preload .scm loader so `bun test` doesn't segf…
jahooma Jul 3, 2026
efc869b
fix(web): move Node-only instrumentation out of the edge bundle (#478)
jahooma Jul 3, 2026
a457e44
feat(freebuff-desktop): richer tab status — PR state/number, elapsed …
jahooma Jul 3, 2026
882aa44
login and git refresh
victorxheng Jul 3, 2026
fd11e47
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 3, 2026
35fc8e9
feat(freebuff-desktop): remove API host badge from thread header (#480)
jahooma Jul 3, 2026
34d2a3c
feat(freebuff-desktop): kill stale instances before app/dev launch (#…
jahooma Jul 3, 2026
9673a64
next js 16 upgrade
victorxheng Jul 4, 2026
e0cf02b
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 4, 2026
f08f3fc
fix(sdk): retry dropped socket connections and surface them gracefull…
jahooma Jul 4, 2026
45417f9
Bump Freebuff version to 0.0.118
github-actions[bot] Jul 4, 2026
1be6d9e
fix(web): Next 16 revalidateTag requires a second argument (#483)
jahooma Jul 4, 2026
db4aff1
fix(freebuff-web): copy @codebuff/sdk into turbopack standalone output
victorxheng Jul 4, 2026
65b43e9
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 4, 2026
06eadd8
git access
victorxheng Jul 4, 2026
107fc5d
chore(freebuff-web): trigger deploy to validate warm turbopack cache
victorxheng Jul 4, 2026
a19448a
fix(cli): stop leaking mocked getProjectRoot across test files (#485)
jahooma Jul 4, 2026
37f80c8
fix badge logic
victorxheng Jul 4, 2026
5812c4c
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 4, 2026
ae0b3e7
fix(cli): replace mock.module() function mocks with DI in ChatGPT com…
jahooma Jul 4, 2026
57254df
fix(freebuff-desktop): use grayscale for the "Premium" pill (#487)
jahooma Jul 4, 2026
a5fa62c
more detailed information of cloud agent process
victorxheng Jul 4, 2026
8235e47
Merge branch 'main' of https://github.com/CodebuffAI/freebuff-private
victorxheng Jul 4, 2026
644509f
remove kimi, surface staling issues
victorxheng Jul 4, 2026
5fe602d
remove guiding for cloud agents
victorxheng Jul 4, 2026
c0e35c4
feat(freebuff-desktop): add Beta badge to tab bar (#488)
jahooma Jul 4, 2026
dadd166
Bump Freebuff Desktop version to 0.0.10
github-actions[bot] Jul 4, 2026
1f500b0
feat(sdk): allow file tools to operate on any path (#490)
jahooma Jul 4, 2026
e83d084
Observability follow-ups: contentBytes on completions + GC pause attr…
jahooma Jul 4, 2026
20aa073
fix(token-count): send real JSON Schema for tool input_schema, not ra…
jahooma Jul 4, 2026
bcc6d2d
fix(token-count): narrow upstream-4xx remap; backfill null/empty type…
jahooma Jul 4, 2026
e7e906c
feat(desktop): focus composer input when opening a new tab (#493)
jahooma Jul 4, 2026
03f49e9
feat(desktop): add Codex (GPT-5.5) as a local-CLI harness (#492)
jahooma Jul 4, 2026
b795b9b
feat(ops): scheduled peak-hours scaling for the Render web service
jahooma Jul 5, 2026
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
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .agents/types/agent-definition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,7 @@ export type ModelName =
| 'z-ai/glm-4.7-flash:nitro'
| 'minimax/minimax-m2.5'
| 'minimax/minimax-m2.7'
| 'minimax/minimax-m3'
| (string & {})

import type { ToolName, GetToolParams } from './tools'
Expand Down
6 changes: 4 additions & 2 deletions .bin/bun
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ PROJECT_ROOT="$(find_project_root)"
ENV_LOCAL_FILE="$PROJECT_ROOT/.env.local"
ENV_DEVELOPMENT_LOCAL_FILE="$PROJECT_ROOT/.env.development.local"
CACHE_TTL_SECONDS=${INFISICAL_CACHE_TTL:-900} # Default 15 minutes
INFISICAL_ENV_NAME=${INFISICAL_ENV:-dev}
CALLING_DIR="$(pwd)"

# Clean up any leftover temporary files
Expand Down Expand Up @@ -103,8 +104,9 @@ sync_from_infisical() {

local temp_file=$(mktemp)

# Run infisical export in background from project root
(cd "$PROJECT_ROOT" && infisical export > "$temp_file" 2>/dev/null; echo $? > "$temp_file.exit") &
# Run infisical export in background from project root. Pass an explicit
# environment so the CLI never waits for interactive environment selection.
(cd "$PROJECT_ROOT" && infisical export --env="$INFISICAL_ENV_NAME" --silent > "$temp_file" 2>/dev/null; echo $? > "$temp_file.exit") &
local pid=$!

# Wait up to 10 seconds
Expand Down
Binary file added .bin/cloudflared
Binary file not shown.
2 changes: 1 addition & 1 deletion .bun-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.3.11
1.3.14
57 changes: 57 additions & 0 deletions .claude/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "freebuff-web",
"runtimeExecutable": "bun",
"runtimeArgs": [
"--cwd",
"freebuff/web",
"dev"
],
"port": 3002,
"autoPort": false
},
{
"name": "codebuff-web",
"runtimeExecutable": "bun",
"runtimeArgs": [
"--cwd",
"web",
"dev"
],
"port": 3000,
"autoPort": false
},
{
"name": "freebuff-desktop",
"runtimeExecutable": "bash",
"runtimeArgs": [
"-c",
"PORT=8787 exec bun freebuff-desktop/src/app/server.ts"
],
"port": 8787,
"autoPort": false
},
{
"name": "freebuff-desktop-web",
"runtimeExecutable": "bash",
"runtimeArgs": [
"-c",
"cd freebuff-desktop && exec bun run dev:web"
],
"port": 5174,
"autoPort": false
},
{
"name": "freebuff-desktop-ui-only",
"runtimeExecutable": "bash",
"runtimeArgs": [
"-c",
"cd freebuff-desktop && exec bun run ui:dev"
],
"port": 5174,
"autoPort": false
}
]
}
56 changes: 56 additions & 0 deletions .cursor/rules/end-to-end-pr-development.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
description: End-to-end PR development, deployment, and production verification workflow
alwaysApply: true
---

# End-To-End PR Development

Use this workflow for complex UI changes, backend changes, deployment-sensitive fixes, and features that need real product verification. For simple questions, small bug explanations, or low-risk local edits, do not run the full production loop.

## Environment Checklist

- Ensure `direnv` is active and `bun` resolves to the repo wrapper: `command -v bun` should point at `.bin/bun`.
- Infisical manages local secrets sync. If env sync fails or `.env.local` appears stale, ask the user to run `infisical login` / `direnv allow`, then retry with `INFISICAL_CACHE_TTL=0 bun ...`.
- Axiom manages production logs for the Next.js server. Use the repo log scripts and the Axiom query token from env when production behavior needs diagnosis.
- Convex manages Freebuff Web production backend logs. Use Convex logs for backend runtime errors and operational warnings.
- GitHub Actions manages deployment status and required checks. Monitor checks actively after merging or pushing deploy fixes.
- If Convex APIs changed, regenerate types before typechecking with `bun x convex dev --once` from the relevant Convex app directory. In non-interactive agent terminals, never use `convex dev`, `npx convex dev`, or `bun x convex dev` without `--once`, and never hand-edit `src/convex/_generated/*` files to fake a clean typecheck.

## Development Loop

- Keep changes scoped and delivery-focused. Prefer the simplest implementation that matches existing repo patterns.
- Run targeted checks first. Typecheck or broader tests when the change touches shared contracts, backend behavior, generated Convex APIs, or critical UI paths.
- If typecheck items are skipped for speed, still ensure no obvious type issues in changed files and state what was skipped.
- Do not wait for perfect local coverage when the user asks for production iteration. Fix, push, merge, monitor, and verify in production.

## Merge And Deploy

- For changes intended to ship, merge directly with `main` when requested.
- After merge/push, monitor GitHub Actions for about 12 minutes or until the relevant checks/deployment state is clear.
- If checks fail, resolve merge conflicts or failures quickly, push fixes, and keep monitoring.
- When a fix needs a PR, keep iterations in a single PR thread where practical. Merge immediately when requested, then continue monitoring checks and deployment.

## Production Verification

- Test immediately in production after deployment: web changes on `https://freebuff.com/web`; CLI changes through tmux output.
- For Freebuff Web, assume the browser is logged in as Victor. If auth is missing, stop and ask the user to log in/authenticate before continuing tests.
- Keep testing fast and focused: verify each new feature or fix, click through the main affected paths, and make sure adjacent core behavior is not broken.
- For chat/platform changes, type into inputs, send messages, inspect output, navigate between relevant links/tabs, and test on production data.
- For complex features, broaden coverage enough to catch broken states, regressions, and missing interactions. For smaller fixes, run the minimum test that proves the core behavior.

## Evidence

- Capture screenshots for production verification, especially before/after states and the final working state.
- If video is needed, use a real click-through screen recording, not stitched screenshots. Make clicks visible and easy to follow.
- Attach screenshot/video evidence to the PR thread in comments. Keep all iteration history in that PR thread when possible.
- Final summaries should link the PR or PRs used for the branch and mention where the screenshot/video evidence lives.

## External Services

- If testing requires external accounts, email inboxes, payment flows, private provider dashboards, or other access the agent does not have, document it in the PR and final summary.
- Include a clear checklist of what the agent verified versus what the user must verify manually.

## Final Report

- State what shipped, what was verified in production, which checks/deployments were monitored, and any remaining risks.
- Call out skipped checks, auth blockers, external-service gaps, or logs that indicate follow-up is needed.
18 changes: 18 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,29 @@ OPENCODE_API_KEY=dummy_opencode_key

# Database & Server
DATABASE_URL=postgresql://manicode_user_local:secretpassword_local@localhost:5432/manicode_db_local
# Optional: Redis-compatible store for distributed free-mode rate limits.
# On Render, set this to the Key Value instance's internal URL.
# REDIS_URL=redis://localhost:6379
PORT=4242

# Authentication
CODEBUFF_GITHUB_ID=dummy_github_id
CODEBUFF_GITHUB_SECRET=dummy_github_secret
FREEBUFF_GITHUB_ID=dummy_freebuff_github_id
FREEBUFF_GITHUB_SECRET=dummy_freebuff_github_secret
# Google OAuth (optional). Authorized redirect URI per origin:
# {origin}/api/auth/callback/google
# Freebuff falls back to CODEBUFF_GOOGLE_* when its own are unset.
CODEBUFF_GOOGLE_ID=dummy_google_id
CODEBUFF_GOOGLE_SECRET=dummy_google_secret
FREEBUFF_GOOGLE_ID=dummy_freebuff_google_id
FREEBUFF_GOOGLE_SECRET=dummy_freebuff_google_secret
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_FREEBUFF_URL=http://localhost:3002
NEXTAUTH_SECRET=dummy_nextauth_secret_at_least_32_chars_long
# Codebuff user ID for the dedicated server-only Freebuff Web service account.
# Never set this to a personal user ID.
# FREEBUFF_WEB_SERVICE_USER_ID=00000000-0000-0000-0000-000000000000

# Payment (Stripe)
STRIPE_SECRET_KEY=sk_test_dummy_stripe_secret
Expand All @@ -29,6 +44,7 @@ STRIPE_SUBSCRIPTION_500_PRICE_ID=price_dummy_subscription_500_id

# External Services
SERPER_API_KEY=dummy_serper_key
GRAVITY_API_KEY=dummy_gravity_ads_key
LOOPS_API_KEY=dummy_loops_key
ZEROCLICK_API_KEY=dummy_zeroclick_key

Expand All @@ -40,9 +56,11 @@ DISCORD_APPLICATION_ID=dummy_discord_app_id
# Frontend/Public Variables
NEXT_PUBLIC_CB_ENVIRONMENT=dev
NEXT_PUBLIC_CODEBUFF_APP_URL=http://localhost:3000
NEXT_PUBLIC_FREEBUFF_APP_URL=http://localhost:3002
NEXT_PUBLIC_SUPPORT_EMAIL=support@codebuff.com
NEXT_PUBLIC_POSTHOG_API_KEY=phc_dummy_posthog_key
NEXT_PUBLIC_POSTHOG_HOST_URL=https://us.i.posthog.com
NEXT_PUBLIC_GRAVITY_PIXEL_ID=00000000-0000-0000-0000-000000000000
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=pk_test_dummy_publishable
NEXT_PUBLIC_STRIPE_CUSTOMER_PORTAL=https://billing.stripe.com/p/login/test_dummy
NEXT_PUBLIC_WEB_PORT=3000
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1 +1 @@
* @brandonkachen @jahooma @charleslien
* @jahooma
17 changes: 14 additions & 3 deletions .github/actions/setup-project/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,22 @@ runs:
path: |
node_modules
*/node_modules
key: ${{ runner.os }}-deps-${{ hashFiles('**/bun.lock*', '**/package.json') }}
packages/*/node_modules
freebuff/*/node_modules
key: ${{ runner.os }}-deps-${{ hashFiles('bun.lock') }}
restore-keys: |
${{ runner.os }}-deps-${{ hashFiles('**/bun.lock*') }}
${{ runner.os }}-deps-

- name: Install dependencies
shell: bash
run: bun install --frozen-lockfile
run: |
for i in 1 2 3; do
bun install --frozen-lockfile && break
if [ "$i" -eq 3 ]; then
echo "bun install failed after $i attempts"
exit 1
fi
echo "bun install failed (attempt $i), clearing download cache and retrying..."
rm -rf ~/.bun/install/cache
sleep 5
done
4 changes: 2 additions & 2 deletions .github/knowledge.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ GitHub API URLs are extracted as environment variables to avoid duplication:
```yaml
env:
GITHUB_API_URL: https://api.github.com/repos/CodebuffAI/codebuff
GITHUB_UPLOADS_URL: https://uploads.github.com/repos/CodebuffAI/codebuff
GITHUB_API_URL: https://api.github.com/repos/CodebuffAI/freebuff-private
GITHUB_UPLOADS_URL: https://uploads.github.com/repos/CodebuffAI/freebuff-private
```
This pattern:
Expand Down
10 changes: 8 additions & 2 deletions .github/workflows/bot-sweep.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
name: Freebuff Bot Sweep

# DISABLED 2026-06-17: the hourly email report was ignored in practice and
# wasn't surfacing real bots. Replaced by the admin dashboard at
# freebuff.com/abuse (interactive suspect list + one-click bans). The
# /api/admin/bot-sweep endpoint still works; re-enable the schedule below
# if you want the email back.
#
# Hourly dry-run sweep over active freebuff sessions. Calls the
# /api/admin/bot-sweep endpoint, which emails james@codebuff.com with a
# ranked list of suspects. No bans are issued — review and run
# scripts/ban-freebuff-bots.ts manually.

on:
schedule:
- cron: '0 * * * *'
# schedule:
# - cron: '0 * * * *'
workflow_dispatch:

jobs:
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/buffbench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
- name: Set up Bun
uses: oven-sh/setup-bun@v2
with:
bun-version: '1.3.5'
bun-version-file: .bun-version

- name: Cache dependencies
uses: actions/cache@v5
Expand All @@ -23,7 +23,8 @@ jobs:
node_modules
*/node_modules
packages/*/node_modules
key: ${{ runner.os }}-deps-${{ hashFiles('**/bun.lock*') }}
freebuff/*/node_modules
key: ${{ runner.os }}-deps-${{ hashFiles('bun.lock') }}
restore-keys: |
${{ runner.os }}-deps-
Expand Down
46 changes: 46 additions & 0 deletions .github/workflows/chat-attachment-sweep.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: Freebuff Chat Attachment Sweep

# Reclaims storage by deleting the extracted-text blobs of chat document
# attachments older than the retention window (CHAT_DOC_RETENTION_DAYS), then
# clearing those messages' attachment refs. Calls the
# /api/admin/chat-attachment-sweep endpoint on the freebuff web deployment
# (which owns the chat Convex blob store). Idempotent and bounded per run, so a
# daily schedule comfortably drains the backlog.
#
# Requires:
# - secret CHAT_ATTACHMENT_SWEEP_SECRET (also set on the freebuff web service)
# - optional var CHAT_ATTACHMENT_SWEEP_URL to override the endpoint URL

on:
schedule:
# Daily at 04:17 UTC — off-peak, retention is measured in days so frequency
# doesn't need to be high.
- cron: '17 4 * * *'
workflow_dispatch:

jobs:
sweep:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Trigger chat-attachment-sweep
env:
CHAT_ATTACHMENT_SWEEP_SECRET: ${{ secrets.CHAT_ATTACHMENT_SWEEP_SECRET }}
CHAT_ATTACHMENT_SWEEP_URL: ${{ vars.CHAT_ATTACHMENT_SWEEP_URL || 'https://freebuff.com/api/admin/chat-attachment-sweep' }}
run: |
set -euo pipefail
if [ -z "$CHAT_ATTACHMENT_SWEEP_SECRET" ]; then
echo "CHAT_ATTACHMENT_SWEEP_SECRET is not set — skipping."
exit 0
fi
status=$(curl -sS -o /tmp/resp.json -w '%{http_code}' \
-X POST "$CHAT_ATTACHMENT_SWEEP_URL" \
-H "Authorization: Bearer $CHAT_ATTACHMENT_SWEEP_SECRET" \
-H "Content-Type: application/json" \
--max-time 120)
echo "HTTP $status"
cat /tmp/resp.json
echo
if [ "$status" != "200" ]; then
exit 1
fi
Loading