Revert "Feature/extension reflow" - #8
Merged
Conversation
…logo transition" This reverts commit ebf0870.
This reverts commit eedeeb7.
This reverts commit 5eb6c9d.
This reverts commit 6f053b6.
This reverts commit edae6ad.
…oving notification interactivity" This reverts commit 6b17a4f.
This reverts commit 727ae8e.
This reverts commit 24aad91.
This reverts commit d9ac8cb.
This reverts commit ad437e1.
This reverts commit 86ed4c0.
This reverts commit 0bd4b4f.
… icon sizes" This reverts commit 830b943.
This reverts commit b7b88ff.
This reverts commit a47ab2b.
This reverts commit 2ae5d12.
This reverts commit db327f8.
This reverts commit 06f5128.
There was a problem hiding this comment.
Pull request overview
This PR reverts changes introduced in #7, reshaping the extension UI and check-in flow (including moving camera capture into a dedicated popup window) and removing the onboarding/animation/preset infrastructure that was previously added.
Changes:
- Introduces a capture popup window flow (camera permission + record + confirm + countdown) and adds
chromeApiwrappers plus auseCycleStatushook to keep the side panel in sync with background state. - Reworks the side panel UI styling and states (new design tokens, new header/shell layout, updated state components).
- Simplifies backend/extension integration by removing settings/presets/onboarding support and trimming backend server endpoints/behavior accordingly.
Reviewed changes
Copilot reviewed 51 out of 85 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| vite.config.js | Adds Vite multi-entry build configuration for side panel, background, and capture window. |
| src/style.css | Replaces design tokens and animations used by the new “film-strip” UI styling. |
| src/panel/states/SkeletonState.jsx | Tweaks skeleton sizing/typography to match new panel styling. |
| src/panel/states/ReadyState.jsx | Reworks “ready” layout and changes callback shape (dismiss → later). |
| src/panel/states/PlayerState.jsx | Replaces player overlay UI with simplified player + progress UI. |
| src/panel/states/PendingState.jsx | Replaces step-list UI with three explicit pending substates + cancel/redo button. |
| src/panel/states/OnboardingState.jsx | Removes onboarding wizard state (deleted). |
| src/panel/states/OnboardingComplete.jsx | Removes onboarding completion screen (deleted). |
| src/panel/states/IdleState.jsx | Updates idle prompt copy/layout and button presentation. |
| src/panel/states/ErrorState.jsx | Reworks error presentation and retry/dismiss actions. |
| src/panel/states/CountdownState.jsx | Simplifies countdown UI copy (removes “Okay” button UI). |
| src/panel/states/ConfirmState.jsx | Updates confirmation UI styling and typography. |
| src/panel/states/CaptureState.jsx | Updates capture UI styling and recording indicator presentation. |
| src/panel/SidePanel.jsx | Removes onboarding gating and wires new “Later” behavior to closeSidePanel(). |
| src/main.jsx | Adds root React entry for the Vite app. |
| src/lib/constants.js | Removes settings/preset constants and backend routes that supported onboarding/presets. |
| src/lib/chromeApi.js | Introduces wrappers/fallbacks for chrome APIs, plus closeSidePanel() helper. |
| src/lib/checkIn.js | Simplifies check-in payload (drops preset/settings) and keeps tab-derived user_name. |
| src/hooks/useSettings.js | Removes settings hook (deleted). |
| src/hooks/useCycleStatus.js | Adds cycle-status storage sync hook (new single source of truth for UI state). |
| src/hooks/useCameraCapture.js | Adds camera capture hook (permission + MediaRecorder + cleanup) for popup window. |
| src/components/ui/TagPill.jsx | Adds small “tag pill” UI component. |
| src/components/ui/ProgressBar.jsx | Adds simple progress bar UI component. |
| src/components/ui/Logo.jsx | Removes Motion-based logo component (deleted). |
| src/components/ui/Button.jsx | Reworks button styling and variants to match new design tokens. |
| src/components/ui/BreathingDot.jsx | Updates breathing dot size/color and state speed mapping. |
| src/components/layout/SprocketRail.jsx | Adds the “sprocket rail” layout element for film-strip style. |
| src/components/layout/PanelShell.jsx | Reworks panel shell layout to include sprocket rail and new padding/overflow behavior. |
| src/components/layout/PanelHeader.jsx | Replaces animated/logo header with simplified header + decorative line + progress bar. |
| src/capture/main.jsx | Adds capture window React entrypoint. |
| src/capture/CaptureWindow.jsx | Implements the capture popup window flow and state transitions. |
| src/capture/capture.html | Adds capture window HTML entry. |
| src/background/index.js | Adjusts alarms lifecycle, notification payloads, and message handling for the new flow. |
| src/App.jsx | Adds top-level app wrapper rendering SidePanel. |
| README.md | Adds minimal repo README header. |
| public/manifest.json | Updates icons list and formatting; keeps required permissions. |
| package.json | Removes lucide-react and motion dependencies. |
| package-lock.json | Reflects dependency removals and lockfile updates. |
| opencode.json | Removes opencode MCP config (deleted). |
| MINDSTREAM_PROJECT_SUMMARY.md | Updates architecture/stack documentation (notably compositor references). |
| index.html | Adds main HTML entry for Vite/React app. |
| IMPLEMENTATION_SUMMARY.md | Removes Motion onboarding transition write-up (deleted). |
| eslint.config.js | Adds ESLint flat config for JS/JSX + react-hooks/react-refresh. |
| CardReference.jsx | Removes reference/demo component (deleted). |
| backend/test.sh | Adjusts messaging/output and removes preset-related usage notes. |
| backend/test_presets.py | Removes preset regression tests (deleted). |
| backend/server.js | Removes presets/cancel/health endpoints; simplifies generation invocation/output naming. |
| backend/requirements.txt | Adds backend requirements file (MovieLite + deps). |
| backend/README.md | Removes render presets documentation section. |
| backend/package.json | Adds backend npm package manifest for the Express server. |
| backend/output/audio/sample-job-001.srt | Adds sample SRT output file. |
| backend/movielite_docs/api.md | Removes vendored MovieLite docs (deleted). |
| backend/movielite_docs/advanced.md | Removes vendored MovieLite docs (deleted). |
| backend/data/sample_emotion_result.json | Changes sample emotion label/user fields. |
| backend/benchmark_render_presets.py | Removes preset benchmarking script (deleted). |
| backend/assets/audio/README.md | Adds guidance for ambient audio assets per emotion. |
| backend/.gitignore | Updates backend gitignore patterns (removes render profile calibration ignore). |
| backend/.env.example | Adds example env file for required/optional API keys. |
| .opencode/skills/motion/transition-preview/index.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/SKILL.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/performance-audit/index.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/css-spring/index.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/codex/index.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/best-practices/vue.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/best-practices/react.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/best-practices/motion.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/best-practices/index.md | Removes Motion skill files (deleted). |
| .opencode/skills/motion/best-practices/base-ui.md | Removes Motion skill files (deleted). |
| .gitignore | Adds repository-wide ignores (node, dist, env files, backend outputs, venv, etc.). |
Suppressed comments (1)
src/background/index.js:204
handleJobPollleaves the JOB_POLL alarm running when the cycle is no longer pending andjob_idis null (e.g. after the panel marks a reel as viewed and resets the cycle to IDLE). Because the early-return checks!cycle.job_idfirst, the alarm can keep firing forever and wake the service worker unnecessarily.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| Video unavailable — make sure the backend is running | ||
| </p> | ||
| <div className="flex flex-col animate-fadein"> | ||
| <div className="w-full aspect-9/13 rounded-[14px] border border-hairline bg-[linear-gradient(200deg,#233A38,#101615)] relative overflow-hidden flex flex-col justify-end mb-3.5"> |
| TTS[TTS Engine: edge-tts or KittenTTS] | ||
| Assets[(Asset Library: bg videos + ambient audio)] | ||
| Compositor[MovieLite / FFmpeg: Video Compositor] | ||
| Compositor[MoviePy: Video Compositor] |
Comment on lines
141
to
145
| - **Subtitle Timing (Phase 3):** Purely local, proportional word-count distribution. Total TTS audio duration (read via `AudioFileClip.duration`) is divided across subtitle phrases proportionally by word count. Subtitles start at 0s with no delay, keeping them synced with the near-zero-latency MiMo TTS. Pause-weighting adds ~15% extra time to phrases ending with sentence punctuation (`.`, `!`, `?`, `…`). No upload to Gemini, no Whisper, no AssemblyAI — free-tier safe. | ||
| - **Subtitle Rendering:** Subtitles overlaid using MovieLite/FFmpeg compositor at bottom of frame, uppercase, yellow text (`#FFFF00`) with black stroke. | ||
| - **Subtitle Rendering:** MoviePy `SubtitlesClip` overlaid at vertical position `1700` (bottom ~11% of 1920px frame), font size `80`, uppercase, yellow text (`#FFFF00`) with black 3px stroke. | ||
| - **Video Search:** Pexels API with cinematic/moody query terms extracted by Gemini from the script. Fallback terms (`moody nature`, `dusk calm`, `foggy forest`) used if primary queries return no results. | ||
| - **Media Rendering (Phase 3):** Python + `MovieLite`/`FFmpeg` (4x faster than MoviePy with support for `normal` background preset and `fast` multi-worker preset), compositing Pexels-sourced video clips + Edge-TTS/MiMo audio + ambient audio (15% volume) + proportional subtitles into a 9:16 (720×1280 or 1080×1920) MP4. | ||
| - **Media Rendering (Phase 3):** Python + `MoviePy`/`FFmpeg`, compositing Pexels-sourced video clips + Xiaomi MiMo TTS audio + ambient audio (15% volume) + proportional subtitles into a 9:16 (1080×1920) MP4. | ||
| - **Asset Library:** A local folder (`assets/audio/`) of ambient audio tracks organised by emotion. Background videos are fetched dynamically from Pexels per generation (no pre-built video library needed). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reverts #7