Commit Graph

44 Commits

Author SHA1 Message Date
shitratgit[bot] 80639a382a fix: bound flowing capture and retire old memory surfaces 2026-08-25 07:22:16 +00:00
shitratgit[bot] 4e7d6ec353 fix(web): remove undeployable local dependencies 2026-07-29 22:24:12 -07:00
Joel Hooks 42d5c4a61f feat(convex): custody transferred to joelclaw-api — apps/web is now a client
convex/ (schema, functions, deploy role for :3210) moved to
joelclaw-api; apps/web consumes generated api/types via link:.
sessions schema is a deliberate temporary v.union (auth + call
telemetry shapes) — separation chartered. All four readback checks
pass: deploy clean, tsc clean, no old-path refs, live read works.
Worker-authored, steering-verified.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-15 09:25:54 -07:00
Joel Hooks aae6ab0c8c Degrade apps/web Convex static generation when env is missing, seed placeholder slug params for Cache Components, and no-op client Convex providers during prerender 2026-03-10 09:15:07 -07:00
Joel Hooks 19e092c8ec web: render CLAWMAIL marker as deterministic head script 2026-03-03 13:53:08 -08:00
Joel Hooks 22ae72fab5 Move CLAWMAIL marker to head and add ASCII header 2026-03-03 13:47:16 -08:00
Joel Hooks 919fd104ae web: place CLAWMAIL marker in head with strict content-type guidance 2026-03-03 13:37:54 -08:00
Joel Hooks e76ca4bca6 chore(web): use fully qualified CLAWMAIL endpoint URLs 2026-03-03 13:36:33 -08:00
Joel Hooks 34a006f437 refine clawmail html source marker instructions 2026-03-03 13:33:15 -08:00
Joel Hooks 27d6b5d120 web: move CLAWMAIL marker to top html and add content-type checks 2026-03-03 13:32:16 -08:00
Joel Hooks ca0ce29784 web: add CLAWMAIL source comment for HTML pages 2026-03-03 13:16:36 -08:00
Joel Hooks e20d5a96a7 refactor(web): centralize copy prompt template 2026-03-01 16:34:38 -08:00
Joel Hooks 6b57097808 fix(web): soften copy-for-claw prompt text 2026-03-01 16:23:08 -08:00
Joel Hooks ab7732d0ba fix: remove stale 'markdown' ref in useCallback deps — broke prerender for 3hrs 2026-03-01 15:50:40 -08:00
Joel Hooks fafdfda76f refactor: copy-for-your-claw now copies link to .md route with brief context, not full markdown 2026-03-01 15:07:26 -08:00
Joel Hooks 01dd9267bf design: clean up article header — draft badge, inline copy button with tags, claw pink containment breach 2026-03-01 12:51:48 -08:00
Joel Hooks 47826b2a19 feat: copy-as-prompt with claw logo, grab animation, and 'snatched' confirmation 2026-03-01 12:47:33 -08:00
Joel Hooks 1c533ece4e style: copy-as-prompt hover accent to claw pink 2026-03-01 12:46:58 -08:00
Joel Hooks 8b10f62846 feat: copy-as-prompt button on articles — copies markdown + agent instructions to clipboard 2026-03-01 12:44:15 -08:00
Joel Hooks 043b385163 feat: ContainmentBreach MDX component — orange divider with shield icons 2026-03-01 12:29:58 -08:00
Joel Hooks d0c9e99998 fix: bump textarea font to 16px to prevent iOS auto-zoom on focus 2026-03-01 11:49:18 -08:00
Joel Hooks 9ab8c6d7f6 ADR-0180 Phase 4: live streaming + agent watch CLI
- joelclaw agent watch <taskId|chainId> — NDJSON streaming watcher
- Redis pub/sub subscription to joelclaw:notify:gateway for real-time events
- Inngest API polling fallback when Redis is degraded or task completed before watch started
- Detects task (at-*) vs chain (ac-*) IDs, adjusts timeout accordingly
- Emits step/progress/result/error NDJSON stream events matching existing protocol
- Graceful degradation: Redis down → polling only, pre-completed → immediate result
- --timeout option (default: 300s tasks, 900s chains)
- SIGINT/SIGTERM cleanup
- HATEOAS next_actions in terminal events
- Import sorting from biome across capabilities/adapters (harmless)
2026-02-28 15:00:14 -08:00
Joel Hooks 0fa826ae1d redesign: feedback status → compact LED pill with live Convex sync
Replaces ugly amber banner with minimal glass pill at bottom-right.
Uses StatusPulseDot from design system. Smooth enter/exit transitions.
Auto-hides after applied state. No emoji, no spinners.
2026-02-28 12:59:41 -08:00
Joel Hooks 2821dc3d6f feat: gate feedback UI on auth instead of ?review=1 query param
Logged-in users see feedback/review UI automatically.
No query param needed. enabled prop preserved as override.
2026-02-28 12:52:28 -08:00
Joel Hooks 33888e908d sync: commit all pending changes 2026-02-28 11:51:21 -08:00
Joel Hooks ec33ac1235 web: harden article rendering + source diagnostics 2026-02-28 06:37:17 -08:00
Joel Hooks 1edd703bfc feat: processing indicator + comment lockout during feedback review
- Banner moved above article content with pulsing animation
- Review sheet disabled when feedback items are processing
- FAB dimmed and disabled during processing
- Submit button shows 'Processing feedback…' state
- 'Comments paused' note shown under form
2026-02-27 17:16:42 -08:00
Joel Hooks ea5745a0e4 fix: error boundary on feedback status island — never crash article pages 2026-02-27 16:11:31 -08:00
Joel Hooks 10c1ee42a9 feat(CFP-7): Wire feedback form to Convex + show processing status 2026-02-27 15:42:46 -08:00
Joel Hooks 8881242236 chore: biome auto-fix import ordering across repo 2026-02-27 14:55:43 -08:00
Joel Hooks acd0dcd1a3 move agent search to /api/search, remove /api/agent prefix
- /api/search now serves HATEOAS envelope for agents AND web UI
- Search dialog reads from .result.hits (envelope-aware)
- Updated /api discovery and layout comment
- Removed /api/agent/ directory
2026-02-26 18:48:50 -08:00
Joel Hooks c3b1c92590 adr: ADR-0114 researching — Elixir/BEAM/Jido migration evaluation
Full architecture analysis: what BEAM replaces natively, what doesn't map,
three migration strategies (full rewrite, hybrid, strangler), Jido framework
assessment, cost/benefit matrix, open questions. Status: researching.
2026-02-23 10:57:36 -08:00
Joel Hooks 6079824945 web: restore shiki highlighting and harden public search 2026-02-22 15:46:38 -08:00
Joel Hooks 44e6b048f5 fix(web): add missing review gate components for Vercel build
LazyReviewGate and ConvexReviewGate were untracked but imported by
[slug]/page.tsx and adrs/[slug]/page.tsx. Lazy-loads Convex client
via useEffect to avoid Date.now() during static prerender.
2026-02-22 12:56:52 -08:00
Joel Hooks 39518c6c34 feat: Next.js best practices audit fixes (ADR-0108)
Error boundaries:
- app/error.tsx: route-level error recovery with reset button
- app/global-error.tsx: root layout failure handler with html/body

Loading skeletons:
- vault, memory, syslog, system, system/events, dashboard, voice
- Pulse shimmer matching each page's actual layout structure
- font-pixel labels for consistent dashboard aesthetic

Import aliases:
- Converted all relative imports (../../lib/, ../../../lib/) to @/*
- 40+ files across app/, components/site-header, components/mobile-nav
- tsconfig @/* alias was already configured, now actually used
2026-02-22 12:13:22 -08:00
Joel Hooks 7354f1f35e fix: isOwner query throws when logged out, CLS on wrapper mount
auth.isOwner: wrap getAuthUser in try/catch — returns false instead
of throwing when no session token exists.

ReviewGate: treat undefined (loading) same as false — render children
without wrapper to prevent layout shift.

ReviewWrapper: remove -mx-2/px-2/py-0.5 from paragraph hover styles
that caused vertical CLS when wrapper mounted after auth resolved.
2026-02-22 11:55:12 -08:00
Joel Hooks 85beeb2594 feat: functional animations across joelclaw.com
Nav: sliding active indicator bar (CSS transition, no framer-motion).
Measures active link position, slides on route change. 200ms
cubic-bezier(0.22, 1, 0.36, 1).

Mobile nav: exit animation mirrors entrance. Links slide out right
with reverse stagger (30ms), overlay fades out 150ms.

Fix transition-all violations (emilkowal props-transform-opacity):
- signin button: explicit property list
- review FAB: explicit + scale(0.97) per spec
- review submit: explicit + motion-reduce

All animations respect prefers-reduced-motion.
2026-02-22 11:48:46 -08:00
Joel Hooks 8643845c6f feat(review): auto-expanding textarea with smooth animation
useAutoResize hook: measures scrollHeight, transitions height at
150ms with cubic-bezier(0.22, 1, 0.36, 1). Expands as you type,
collapses when content is deleted. Applied to both compose and
edit textareas. Max height 240px then scrolls.
2026-02-22 11:42:15 -08:00
Joel Hooks 003597ebd6 feat(review): cmd/ctrl/shift multi-select paragraphs
- Plain click: single select (toggle)
- Cmd/Ctrl+click: add/remove from selection
- Shift+click: range select (DOM order)
- Cmd+Shift: range added to existing selection
- Multi-select shows '3 paragraphs' badge in comment header
- Comment prefixed with selection context for agent
- Hint bar shows keyboard shortcuts
2026-02-22 11:30:23 -08:00
Joel Hooks 0e6e1a6c85 refactor(review): generalize from ADR-only to universal content review
- Drop adrComments table, use contentResources + contentResourceResource
- New reviewComments.ts Convex functions (getByContent, addComment, etc)
- Rename Adr* components → Review* (review-gate, review-wrapper, etc)
- Move /api/adrs/submit-review → /api/review/submit
- Event: content/review.submitted (was adr/review.submitted)
- Props: contentId + contentType + contentSlug (was adrSlug)
- Add content-review.ts Inngest function in system-bus
- Registry renamed: adr-review → content-review
- listLinkedReviewComments query added to contentResources

ADR-0106. Zero data existed so schema migration was free.
2026-02-22 11:00:06 -08:00
Joel Hooks 04c4c3c28e fix(adr-review): esc cancels pending comment, clears draft
Document-level keydown listener so esc works even without textarea focus.
2026-02-22 10:50:00 -08:00
Joel Hooks 162cbcb147 fix(adr-review): inline comment under paragraph, not bottom drawer
Replaces Vaul drawer with portal-based inline editor that renders
directly below the clicked paragraph. Paragraph gets ring highlight
and scrolls into view. Click same paragraph to toggle closed. Esc to dismiss.
2026-02-22 10:42:16 -08:00
Joel Hooks 6bff2cc455 feat(adr-review): ADR-0106 — inline paragraph comment system
- Convex adrComments table + 7 mutations/queries
- rehype-paragraph-ids plugin (content-hash anchoring)
- Review UI: comment drawer, review sheet, FAB, auth gate
- shadcn init (Tailwind v4) + registry.json
- Submit review API route (fires Inngest event)
- @/* path alias for imports
2026-02-22 10:38:59 -08:00
Joel Hooks 016dccc295 redesign: cool finds index — full titles, readable descriptions, compact cards
- Titles wrap fully instead of truncating
- Relevance text shows complete (no line-clamp)
- Date shown as relative time (2d ago) above title, not stealing width
- Single type badge (repo/article/video) replaces full tag list
- Source URL removed from index (shown on detail page)
- Tighter card spacing for better scan density
- Re-removed duplicate self-hosting discovery (also from Vault source)
2026-02-22 08:07:35 -08:00