feat: Claude Agent integration + cookbook reconnect + UI polish
- Claude Agent integration: AGENT_CONFIGS.claude, INTG_TYPES.claude, setup_claude_routes + integrations/claude/ skill bundle. Wired in app.py alongside the existing Codex integration; same scope-gated /api/codex/* backend; agent form has new description so users know it's setup for an external CLI, not an agent streamed inside Odysseus. - Remove mark_email_boundaries action: not good enough yet. Stripped from task UI, scheduler defaults, registry, tool schema, clear-cache route. Added to RETIRED_HOUSEKEEPING_ACTIONS so existing rows + their task_runs auto-purge on startup. - Cookbook download reliability: "Reconnect" fix button in the crash diagnosis runs _reconnectTask after probing has-session. 30s confirm window before marking a download "done" — kills the Finished/Downloading flicker when tmux briefly drops between captures. - Mobile UX: tap anywhere on a note card body opens the editor; Update button morphs to Archive when no text was edited; bell icon accent-colored; chip-trashing notif pills fade so only the icon rotates into the trash zone. - Settings integrations: SVG-per-provider in email + API preset dropdowns, custom drop-up-aware menus, accent sub-header icons (IMAP/SMTP), consistent card styling between list + edit, contacts Edit/Delete icons, agent form description copy.
This commit is contained in:
@@ -938,6 +938,7 @@ function _wireChipDrag(chip, dock) {
|
||||
if (tz) {
|
||||
const dx = (tz.left + tz.width / 2) - (l.x + l.width / 2);
|
||||
const dy = (tz.top + tz.height / 2) - (l.y + l.height / 2);
|
||||
l.chip.classList.add('chip-trashing');
|
||||
l.chip.style.transition = 'transform 0.32s cubic-bezier(0.45, 0, 0.25, 1), opacity 0.3s ease-in, left 0.32s cubic-bezier(0.45, 0, 0.25, 1), top 0.32s cubic-bezier(0.45, 0, 0.25, 1)';
|
||||
// Whirlpool: spin + shrink so the chip swirls into the X.
|
||||
l.chip.style.transform = 'scale(0.15) rotate(720deg)';
|
||||
@@ -1001,6 +1002,7 @@ function _wireChipDrag(chip, dock) {
|
||||
// `!important`, so the close animation needs setProperty(...important)
|
||||
// too or the styles don't apply and the chip just snaps.
|
||||
const cur = chip.style.transform || 'translate(0,0)';
|
||||
chip.classList.add('chip-trashing');
|
||||
chip.style.setProperty('transition', 'transform 0.32s cubic-bezier(0.45, 0, 0.25, 1), opacity 0.3s ease-in', 'important');
|
||||
// Whirlpool: spin + shrink as the chip swirls into the X.
|
||||
chip.style.setProperty('transform', `${cur} scale(0.15) rotate(720deg)`, 'important');
|
||||
|
||||
Reference in New Issue
Block a user