Commit Graph

3314 Commits

Author SHA1 Message Date
Peter Steinberger
eeed6ca96e fix(ui): self-heal ui builds 2026-01-06 16:03:04 +01:00
Peter Steinberger
53f9d5b121 test: make test:coverage pass 2026-01-06 15:43:24 +01:00
Peter Steinberger
eedd1e62c4 chore: changelog for #293 2026-01-06 15:32:06 +01:00
Palash Oswal
7e45d2579f fix(cli): don't force localhost gateway url in remote mode
Fixes remote gateway setup (remote mode) by not overriding url; adds regression tests. Thanks @oswalpalash.
2026-01-06 14:30:45 +00:00
Simon Kelly
41467f1fd4 fix(slack): use named import for @slack/bolt App class (#299)
* fix(slack): use named import for @slack/bolt App class

The default import `import bolt from '@slack/bolt'` followed by
`const { App } = bolt` doesn't work correctly in Bun due to ESM/CJS
interop issues. The default export comes through as a function rather
than the module object.

Switching to a named import `import { App } from '@slack/bolt'`
resolves the issue and allows the Slack provider to start successfully.

* fix(slack): align Bolt mock with named App export

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-06 14:22:14 +00:00
Lukáš Loukota
8c0a7b7a59 fix: install Bun in Dockerfile (#284)
Install Bun in Dockerfile so `pnpm build` can run Bun scripts inside Docker.

Thanks @loukotal.
2026-01-06 14:05:19 +00:00
Peter Steinberger
f6fda75f02 chore(protocol): regenerate GatewayModels.swift 2026-01-06 09:55:58 +01:00
Peter Steinberger
4ed5daf5fe docs: point docs links to GitHub while docs down 2026-01-06 09:45:03 +01:00
Peter Steinberger
f291a88171 feat: sandbox session tool visibility 2026-01-06 08:40:30 +00:00
Peter Steinberger
67c855b701 docs(changelog): note auth rotation + configure order 2026-01-06 09:25:42 +01:00
Peter Steinberger
ea97da1da9 fix(configure): don’t write auth.order by default 2026-01-06 09:25:36 +01:00
Peter Steinberger
de313957b6 test(auth): stop prioritizing lastGood 2026-01-06 09:25:33 +01:00
Peter Steinberger
f3920c39ec test(gateway): deflake cron finished event wait 2026-01-06 09:25:31 +01:00
Muhammed Mukhthar CM
4ee1be4cf5 fix(auth): prioritize round-robin over lastGood for multi-account rotation (#281)
* fix(auth): prioritize round-robin over lastGood for multi-account rotation

When multiple OAuth accounts are configured, the round-robin rotation was
not working because lastGood was always prioritized, defeating the sort by
lastUsed.

Changes:
- Remove lastGood prioritization in resolveAuthProfileOrder
- Always apply orderProfilesByMode (sorts by lastUsed, oldest first)
- Only respect configuredOrder when explicitly set in config
- preferredProfile still takes priority for explicit user choice

Tested with 2 Google Antigravity accounts - verified alternating usage.

Follow-up to PR #269.

* style: fix formatting
2026-01-06 08:16:35 +00:00
Peter Steinberger
437b6bd6ab fix: add OpenAI Codex OAuth to configure 2026-01-06 09:13:51 +01:00
Peter Steinberger
ce228e50a8 docs(changelog): note bun UI build 2026-01-06 09:13:51 +01:00
Muhammed Mukhthar CM
5660be8406 fix(cron-tool): use generic object schema for job/patch to fix Claude via Antigravity (#280) 2026-01-06 02:13:09 -06:00
Peter Steinberger
67b2f07bfb build(control-ui): prefer bun for UI build 2026-01-06 09:08:25 +01:00
Peter Steinberger
2560bd9d76 fix(control-ui): pad chat composer in focus mode 2026-01-06 08:59:05 +01:00
Peter Steinberger
b083e7049b docs: update docs domain + link labels 2026-01-06 08:57:58 +01:00
Peter Steinberger
57fda6df5d feat: add sessions_spawn sub-agent tool 2026-01-06 08:41:45 +01:00
Peter Steinberger
eedbfa56df feat(tui): add /elev alias 2026-01-06 08:41:04 +01:00
Peter Steinberger
bb998b2e5a feat(control-ui): add chat focus mode 2026-01-06 08:16:21 +01:00
Peter Steinberger
86a7ffe438 docs: add changelog entry for bun migration (#278) 2026-01-06 08:15:20 +01:00
Peter Steinberger
139ab736b9 docs: prefer bun-first TypeScript execution 2026-01-06 08:15:03 +01:00
Ayaan Zaidi
757c19e6e7 refactor: replace tsx with bun for TypeScript execution (#278) 2026-01-06 07:14:08 +00:00
Peter Steinberger
bd26f4e023 chore: update terminal css 2026-01-06 07:58:09 +01:00
Peter Steinberger
45f2e195bf Merge pull request #274 from kiranjd/fix/chat-scroll-to-bottom
fix(ui): scroll chat to bottom on initial load
2026-01-06 06:49:29 +00:00
Peter Steinberger
207220af7b fix(ui): scroll chat to bottom on initial load 2026-01-06 07:49:12 +01:00
Peter Steinberger
b1558f28e2 feat: unify group policy allowlists 2026-01-06 06:40:42 +00:00
Peter Steinberger
f4fce0e74f style: normalize type definitions 2026-01-06 07:21:10 +01:00
Peter Steinberger
60ae0b99ca fix: improve auth profile failover 2026-01-06 07:18:06 +01:00
Peter Steinberger
df97b7d9be Merge pull request #269 from mukhtharcm/feat/multi-account-roundrobin
feat: Multi-account OAuth with round-robin rotation
2026-01-06 06:13:19 +00:00
Peter Steinberger
6d10e8b369 fix: require slash for control commands 2026-01-06 07:05:17 +01:00
Peter Steinberger
73829144c4 fix: doctor memory hint 2026-01-06 06:01:24 +00:00
Kiran Jd
479342bea0 Merge branch 'main' into fix/chat-scroll-to-bottom 2026-01-06 11:27:57 +05:30
Shadow
4e42430279 docs: add issue templates 2026-01-05 23:55:51 -06:00
kiranjd
bf7cae0bca fix(ui): scroll chat to bottom on initial load
The chat view was starting at the top showing oldest messages instead of
scrolling to the bottom to show the latest messages (like WhatsApp).

Root causes:
1. scheduleChatScroll() was called without force flag in refreshActiveTab()
2. The scroll was targeting .chat-thread element which has overflow:visible
   and doesn't actually scroll - the window scrolls instead

Fixes:
- Pass force flag (!chatHasAutoScrolled) when loading chat tab
- Wait for Lit updateComplete before scrolling to ensure DOM is ready
- Scroll the window instead of the .chat-thread container
- Use behavior: 'instant' for immediate scroll without animation
2026-01-06 11:23:27 +05:30
Shadow
2f57696bd7 fix: allow optional reply body 2026-01-05 23:47:33 -06:00
Shadow
36674427a8 docs: add recent contributors 2026-01-05 23:44:48 -06:00
Shadow
d6d816b90a docs: add PR 272 changelog entry 2026-01-05 23:37:37 -06:00
Shadow
aae366d41b chore: fixed CI 2026-01-05 23:36:48 -06:00
Ayaan Zaidi
233c318b39 fix: targetDir symlink handling in postinstall script (#272) 2026-01-05 23:36:11 -06:00
Peter Steinberger
11a373685b feat(providers): normalize location parsing 2026-01-06 06:31:09 +01:00
Nacho Iacovino
6297fa9d9a feat(telegram): parse location and venue messages
- Add TelegramLocation, TelegramVenue, and TelegramMessageWithLocation types
- Add formatLocationMessage() to convert location/venue shares to text
- Add extractLocationData() for structured location access in ctxPayload
- Handle both raw location pins and venue shares (places with names)
- Include location in reply-to context for quoted messages

Location messages now appear as:
- [Location: lat, lon ±accuracy] for raw pins
- [Venue: Name - Address (lat, lon)] for places

ctxPayload includes LocationLat, LocationLon, LocationAccuracy,
VenueName, and VenueAddress fields for programmatic access.
2026-01-06 06:31:09 +01:00
Peter Steinberger
6d09280bdc templates: Add memory maintenance during heartbeats
New section explaining how to periodically review daily memory files
and update MEMORY.md with distilled learnings. Like a human reviewing
their journal and updating their mental model.
2026-01-06 05:21:09 +00:00
Muhammed Mukhthar CM
7eacc0b1a2 feat: treat timeout as rate limit for profile rotation
Antigravity rate limits cause requests to hang indefinitely rather than
returning 429 errors. This change detects timeouts and treats them as
potential rate limits:

- Added timedOut flag to track timeout-triggered aborts
- Timeout now triggers profile cooldown + rotation
- Logs: "Profile X timed out (possible rate limit). Trying next account..."

This ensures automatic failover when Antigravity hangs due to rate limiting.
2026-01-06 05:20:01 +00:00
Iamadig
d9bae71f39 nano-banana: emit MEDIA token for generated images (#271) 2026-01-05 23:19:50 -06:00
Peter Steinberger
6b8866ffd7 templates: Add MEMORY.md long-term memory concept
- Updated session start to include MEMORY.md loading for main sessions
- Added 🧠 MEMORY.md section explaining:
  - Only load in main sessions (direct with human), not shared contexts
  - Security boundary: personal context shouldn't leak to strangers
  - Can freely read/edit/update in main sessions
  - Write significant events, thoughts, decisions, opinions
  - Curated memory vs raw daily logs

This gives new agents proper long-term memory that's secure and personal.
2026-01-06 05:19:24 +00:00
Muhammed Mukhthar CM
7505300916 feat: add round-robin rotation and cooldown for auth profiles
Adds usage tracking to auth profiles for automatic rotation:

- ProfileUsageStats type with lastUsed, cooldownUntil, errorCount
- markAuthProfileUsed(): tracks successful usage, resets errors
- markAuthProfileCooldown(): applies exponential backoff (1/5/25/60min)
- isProfileInCooldown(): checks if profile should be skipped
- orderProfilesByMode(): now sorts by lastUsed (oldest first)

On auth/rate-limit failures, profiles are marked for cooldown before
rotation. On success, usage is recorded for round-robin ordering.

This enables automatic load distribution across multiple accounts
(e.g., Antigravity 5-hour rate limit windows).
2026-01-06 05:17:59 +00:00