Commit Graph
23 Commits
Author SHA1 Message Date
asepharyana fb9d3667b7 feat(shorts): 10 more assets (bouncy count, split, banner, track, cloud, fan, camera, world clock, hands, padlock) + label-aware picker for HOOK/CTA 2026-09-23 00:41:35 +07:00
asepharyana 2c92ec3bff feat(shorts): 11 reusable animated assets (charts, ring, gauge, ticker, countdown, nodeflow, pulse, checklist, HUD, stat) + label-aware asset picker 2026-09-23 00:27:58 +07:00
asepharyana 20ecbf1f98 feat(shorts): 11 animated bg motifs (grid/dots/waves/stars/zigzag/brackets) + per-script seed shuffle 2026-09-22 22:58:11 +07:00
asepharyana 005d9880e6 feat(shorts): worker force scenes for AI-tips — terminal/compare/fix/bullets/bang 2026-09-22 22:42:29 +07:00
asepharyana a992d73eda feat(shorts): creative scenes — terminal hook, DON'T/DO compare, bullets, bang; MiniKaraoke strip 2026-09-22 22:38:30 +07:00
asepharyana e7fc629e54 fix(shorts): pass category through generate -> scripts POST -> DB 2026-09-22 22:21:13 +07:00
asepharyana 897c33eeac feat(shorts): AI agent tips category — ideas, script structure, tips voice, category column 2026-09-22 22:16:02 +07:00
MythEclipse 85ce16d6d7 fix(news): fetch article directly (og:title/desc + <p>) with Jina fallback
Jina Reader returned 404/garbage for many news sites. Now fetch the page
HTML directly, parse og:title/og:description + author + article<time>
+ <p> paragraphs; Jina only as fallback. Verified: theverge AI page →
real title 'Artificial Intelligence', 8 paragraphs.
2026-09-22 21:46:04 +07:00
MythEclipse 9c6ea226f8 feat(shorts): render source content (tweets/threads/news) as visual cards
- New scripts/source-fetch.mjs: fetch tweet/thread via fxtwitter API +
  Jina fallback; news via r.jina.ai (title/author/excerpt/paragraphs)
- New src/remotion/cards.tsx: TweetCard, ThreadCard, NewsCard — mono,
  flat, white cards w/ avatar initial, handle, text, stats (views/likes/
  replies/retweets) or headline+excerpt; ThreadCard stacks tweets
- ShortsVideo: new scene types tweet/thread/news; source card scene
  REPLACES the story segment's visual (duration kept identical so the
  audio/video mux stays in sync) — the voiceover keeps playing while the
  actual tweet/news is shown on screen
- Worker: fetch sourceUrl when present → sourceToCard() → inject card
- Schema: YoutubeScript.sourceUrl + sourceData (Json)
- UI: approved scripts get a '🔗 Tweet/News URL' input; Render Shorts
  saves sourceUrl then queues the render
- Verified: card scene renders (bright%≈20.8 vs caption 3.9 in pixel
  histogram); TSC clean; frame extraction OK
2026-09-22 21:40:59 +07:00
MythEclipse 4a61766ee4 style(shorts): monochrome flat design — no gradients, no purple
User directive: no gradient, no purple (consistent with GMW black-white
monochrome theme). Full redesign of parts.tsx:
- Solid near-black scene backgrounds (5 subtle variants: circle, plus,
  barcode, rings, diagonal motifs as faint white SVG line art)
- GlassCard → flat white card (black text) — high contrast inversion
- CaptionKaraoke: black on white card, active sentence full-opacity
- KineticTitle: white on black; accent word = inverted white block w/ black ink
- StatCounter: big number framed by 2 offset rectangle outlines (editorial)
- BrandTag: white outline pill (flat), ProgressBar: solid white fill
- Removed ALL color props/palettes; removed gradient backgrounds/orbs
Perf: lighter than v2 (7.1MB vs 10.3MB); ~2min render per 32s short
2026-09-22 21:17:14 +07:00
MythEclipse 1db00c4182 feat(shorts): cinematic v2 visual design + synced karaoke captions
- Fix critical bug: scenes were stacked without <Sequence> — every segment
  rendered simultaneously, last scene covering the whole video (root cause
  of 'too simple/ugly' visual)
- Scene variety: kinetic word-by-word title (hook), karaoke caption card,
  big-number stat scene (auto-detected: $12B, 65%, 3.2M), CTA center
- Karaoke captions synced to TTS: edge-tts SentenceBoundary timing via new
  scripts/tts-words.py (mp3 + sentences.json per segment); active sentence
  bright, others dimmed
- Rich background per scene: 4 color palettes (indigo/pink, cyan/teal,
  purple/pink, orange/red), drifting orbs, dot grid, ken-burns motion
- Real fonts: @fontsource Inter 700 + Montserrat 800 (display/captions)
- Glass card captions, progress bar per-scene, safe zone 900x1400
- Word-boundary truncation for stat labels (no mid-word cuts)
- Perf kept: no blur/SVG-noise (software renderer); ~2 min per 32s short
2026-09-22 21:03:22 +07:00
MythEclipse c0849dde62 docs: mark yt-shorts-render spec implemented 2026-09-22 20:21:26 +07:00
MythEclipse 33e85ce8bf feat: AI-generated shorts render pipeline
- Remotion composition (ShortsVideo) renders 1080x1920 9:16 shorts
  from script segments (hook/setup/conflict/insight/cta) with animated
  gradient background, word-by-word captions, progress bar
- render-worker.mjs: standalone poller (systemd hermyhq-render.service)
  TTS via edge-tts → Remotion render via Chrome headless → ffmpeg mux +
  thumbnail; ≤60s gate; marks YoutubeScript rendered
- API: POST /api/youtube/render (queue approved→render_queued),
  GET status, GET /render/file (stream video/thumb with Range support)
- Schema: YoutubeScript.videoUrl/thumbnailUrl + YoutubeRender model
- UI: youtube tab gains Renders view (preview/review/approve/reject/
  download), Render Shorts button on approved scripts
- Prisma db push applied to prod DB
2026-09-22 20:16:25 +07:00
MythEclipse 2a051875f3 ci: remove probe-key workflow (diagnosis complete) 2026-09-20 16:30:42 +07:00
MythEclipse e194f37dbb ci: show ssh-keygen error in deploy 2026-09-20 16:17:32 +07:00
MythEclipse 92b5af7d9d ci: probe key format deeper 2026-09-20 16:13:22 +07:00
MythEclipse bf30e3910e ci: probe SSH key secret round-trip 2026-09-20 16:12:28 +07:00
MythEclipse 9d527d749e ci(deploy): base64-encode SSH key in secret to survive Actions multiline handling 2026-09-20 16:07:32 +07:00
MythEclipse 5a30971ded ci(deploy): Nix flake + GitHub Actions pipeline for hermyhq (Next.js 16 standalone)
- flake.nix: build hermyhq via npm ci + next build (standalone), package .next/standalone + static + public behind /nix/var/nix/profiles/hermyhq
- next.config.ts: output: 'standalone' (Nix deploy bundles self-contained server)
- .github/workflows/deploy.yml: nix-installer (DeterminateSystems) + attic push pub:asepharyana + VPS nix-store realise (fallback ssh copy) + nix-env profile + systemctl restart hermyhq + GC cleanup
2026-09-20 15:59:41 +07:00
asepharyana b5ba9bdf96 feat: add dependabot-auto-merge.yml 2026-09-20 03:01:10 +07:00
asepharyana c66dde5bc1 feat: add dependabot.yml 2026-09-20 03:01:09 +07:00
sharbelxyzandClaude Opus 4.8 2cfa033ed9 README: add hero banner, badges, and agent-start callout
- Committed SVG hero (Calm Luxury: near-black ground, blue accent,
  Postgres-bus architecture motif) rendered inline on GitHub
- Shields badges for the stack
- Native [!IMPORTANT] callout at the top so a Hermes handed only the
  repo URL knows to clone, read ONBOARDING.md, and guide the install
- "Two ways to install" section (agent-driven vs by hand)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-26 11:13:28 +02:00
sharbelxyzandClaude Opus 4.8 b463027468 Hermy HQ: self-hostable mission-control template for your Hermes agent
A Next.js 16 + Prisma/Postgres dashboard that pairs with a local Hermes
agent over a Postgres message bus: dispatch work, approve side-effecting
actions, browse the agent's memory, and watch it run. Ships with an
agent-onboarding prompt (ONBOARDING.md) so your Hermes can install it for
you step by step. All secrets are env-configured; nothing sensitive is
bundled.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-26 09:33:24 +02:00