@agent-native/core 0.114.5 → 0.114.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +14 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/cli/mcp-config-writers.ts +6 -4
  5. package/corpus/core/src/cli/mcp.ts +124 -0
  6. package/corpus/core/src/cli/skills-content/help.ts +4 -3
  7. package/corpus/core/src/cli/skills-content/index.ts +1 -0
  8. package/corpus/core/src/cli/skills-content/rewind-skill.ts +52 -0
  9. package/corpus/core/src/cli/skills.ts +115 -13
  10. package/corpus/core/src/client/resources/ResourceTree.tsx +11 -5
  11. package/corpus/core/src/client/resources/ResourcesPanel.tsx +141 -18
  12. package/corpus/core/src/mcp/screen-memory-stdio.ts +1360 -104
  13. package/corpus/core/src/mcp-client/index.ts +9 -0
  14. package/corpus/core/src/mcp-client/screen-memory-local.ts +847 -13
  15. package/corpus/templates/clips/actions/apply-rewind-extension.ts +195 -0
  16. package/corpus/templates/clips/actions/delete-agent-recording-if-unpromoted.ts +64 -0
  17. package/corpus/templates/clips/actions/get-rewind-extension-request.ts +22 -0
  18. package/corpus/templates/clips/actions/get-screen-memory-status.ts +18 -2
  19. package/corpus/templates/clips/actions/list-rewind-extension-requests.ts +52 -0
  20. package/corpus/templates/clips/actions/make-recording-private-for-rewind.ts +55 -0
  21. package/corpus/templates/clips/actions/query-screen-memory-context.ts +4 -4
  22. package/corpus/templates/clips/actions/request-rewind-extension.ts +81 -0
  23. package/corpus/templates/clips/actions/update-rewind-extension-request.ts +47 -0
  24. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +25 -0
  25. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +36 -0
  26. package/corpus/templates/clips/app/components/editor/rewind-extension-dialog.tsx +338 -0
  27. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +1 -16
  28. package/corpus/templates/clips/app/components/editor/timeline.tsx +26 -0
  29. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +1 -2
  30. package/corpus/templates/clips/app/i18n/en-US.ts +18 -0
  31. package/corpus/templates/clips/app/lib/ffmpeg-export.ts +19 -12
  32. package/corpus/templates/clips/app/lib/rewind-visibility.ts +31 -0
  33. package/corpus/templates/clips/app/lib/timestamp-mapping.ts +7 -0
  34. package/corpus/templates/clips/app/lib/upload-file-client.ts +17 -0
  35. package/corpus/templates/clips/changelog/2026-07-14-rewind-keeps-recent-screen-context-local-and-turns-it-into-clips.md +6 -0
  36. package/corpus/templates/clips/changelog/2026-07-17-active-clips-keep-rewind-stable-and-settings-clear.md +12 -0
  37. package/corpus/templates/clips/changelog/2026-07-17-clicking-the-clips-icon-during-a-recording-now-opens-the-app.md +6 -0
  38. package/corpus/templates/clips/changelog/2026-07-17-default-mic-now-uses-the-mac-default-and-transcription-shares-one-capture.md +6 -0
  39. package/corpus/templates/clips/changelog/2026-07-17-full-screen-clips-finalize-even-when-screencapturekit-stop-hangs.md +6 -0
  40. package/corpus/templates/clips/changelog/2026-07-17-normal-full-screen-clips-no-longer-stop-immediately-after-th.md +6 -0
  41. package/corpus/templates/clips/changelog/2026-07-17-rewind-can-hand-one-bounded-private-clip-to-your-agent.md +12 -0
  42. package/corpus/templates/clips/changelog/2026-07-17-rewind-home-can-copy-a-local-agent-prompt.md +6 -0
  43. package/corpus/templates/clips/changelog/2026-07-17-rewind-now-has-a-calm-home-status-focused-first-run-consent-.md +6 -0
  44. package/corpus/templates/clips/changelog/2026-07-17-rewind-settings-are-smaller-clearer-and-agent-first.md +6 -0
  45. package/corpus/templates/clips/changelog/2026-07-17-the-full-clips-interface-stays-available-while-recording.md +6 -0
  46. package/corpus/templates/clips/changelog/2026-07-18-rewind-organizes-recent-work-into-local-searchable-chapters.md +8 -0
  47. package/corpus/templates/clips/changelog/2026-07-18-searchable-rewind-chapters.md +6 -0
  48. package/corpus/templates/clips/changelog/2026-07-19-rewind-backed-recordings-now-start-immediately-after-the-cou.md +6 -0
  49. package/corpus/templates/clips/changelog/2026-07-20-opening-zoom-meeting-launches-native-app.md +6 -0
  50. package/corpus/templates/clips/changelog/2026-07-20-rewind-can-set-up-your-local-agent-once-so-future-requests-w.md +6 -0
  51. package/corpus/templates/clips/desktop/package.json +1 -0
  52. package/corpus/templates/clips/desktop/scripts/sign-macos-local.ts +12 -1
  53. package/corpus/templates/clips/desktop/src/app.tsx +2478 -223
  54. package/corpus/templates/clips/desktop/src/components/ReadinessPanel.tsx +21 -1
  55. package/corpus/templates/clips/desktop/src/components/Switch.tsx +3 -0
  56. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +156 -24
  57. package/corpus/templates/clips/desktop/src/lib/native-recording-warm.ts +6 -7
  58. package/corpus/templates/clips/desktop/src/lib/open-meeting-join-url.ts +22 -0
  59. package/corpus/templates/clips/desktop/src/lib/recorder.ts +1763 -1160
  60. package/corpus/templates/clips/desktop/src/lib/rewind-agent-prompt.ts +9 -0
  61. package/corpus/templates/clips/desktop/src/lib/rewind-recording-start.ts +20 -0
  62. package/corpus/templates/clips/desktop/src/main.tsx +3 -0
  63. package/corpus/templates/clips/desktop/src/overlays/countdown.tsx +14 -14
  64. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +2 -3
  65. package/corpus/templates/clips/desktop/src/overlays/onboarding.tsx +4 -4
  66. package/corpus/templates/clips/desktop/src/overlays/preparing.tsx +13 -0
  67. package/corpus/templates/clips/desktop/src/overlays/toolbar.tsx +27 -2
  68. package/corpus/templates/clips/desktop/src/shared/config.ts +16 -0
  69. package/corpus/templates/clips/desktop/src/styles.css +956 -134
  70. package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +5 -0
  71. package/corpus/templates/clips/desktop/src-tauri/build.rs +69 -1
  72. package/corpus/templates/clips/desktop/src-tauri/src/accessibility.rs +386 -12
  73. package/corpus/templates/clips/desktop/src-tauri/src/capture_audio_bus.rs +382 -0
  74. package/corpus/templates/clips/desktop/src-tauri/src/capture_graph.rs +777 -0
  75. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +249 -22
  76. package/corpus/templates/clips/desktop/src-tauri/src/config.rs +148 -1
  77. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +58 -4
  78. package/corpus/templates/clips/desktop/src-tauri/src/logfile.rs +13 -1
  79. package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +1505 -51
  80. package/corpus/templates/clips/desktop/src-tauri/src/native_screen/live_upload.rs +124 -0
  81. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +1006 -95
  82. package/corpus/templates/clips/desktop/src-tauri/src/rewind_capture_suspension.rs +165 -0
  83. package/corpus/templates/clips/desktop/src-tauri/src/rewind_chapters.rs +2434 -0
  84. package/corpus/templates/clips/desktop/src-tauri/src/rewind_clip.rs +1650 -0
  85. package/corpus/templates/clips/desktop/src-tauri/src/rewind_egress.rs +643 -0
  86. package/corpus/templates/clips/desktop/src-tauri/src/rewind_local_ask.rs +803 -0
  87. package/corpus/templates/clips/desktop/src-tauri/src/rewind_meeting_history.rs +595 -0
  88. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory.rs +2900 -91
  89. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory_ocr.rs +360 -0
  90. package/corpus/templates/clips/desktop/src-tauri/src/screen_memory_transcript.rs +408 -0
  91. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +114 -33
  92. package/corpus/templates/clips/desktop/src-tauri/src/state.rs +2 -2
  93. package/corpus/templates/clips/desktop/src-tauri/src/system_audio.rs +13 -3
  94. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +4 -1
  95. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +7 -13
  96. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +198 -11
  97. package/corpus/templates/clips/desktop/src-tauri/tauri.alpha.conf.json +17 -0
  98. package/corpus/templates/clips/shared/meeting-join-url.ts +0 -5
  99. package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +9 -1
  100. package/corpus/templates/content/AGENTS.md +4 -1
  101. package/corpus/templates/content/actions/_content-spaces.ts +6 -1
  102. package/corpus/templates/content/actions/_database-row-batch.ts +15 -2
  103. package/corpus/templates/content/actions/_database-utils.ts +83 -15
  104. package/corpus/templates/content/actions/add-database-item.ts +3 -0
  105. package/corpus/templates/content/actions/connect-local-folder-source.ts +2 -1
  106. package/corpus/templates/content/actions/delete-content-database.ts +12 -9
  107. package/corpus/templates/content/actions/delete-database-items.ts +3 -2
  108. package/corpus/templates/content/actions/delete-document.ts +233 -6
  109. package/corpus/templates/content/actions/duplicate-database-item.ts +1 -0
  110. package/corpus/templates/content/actions/get-document.ts +4 -1
  111. package/corpus/templates/content/actions/list-content-databases.ts +1 -0
  112. package/corpus/templates/content/actions/list-documents.ts +1 -0
  113. package/corpus/templates/content/actions/list-trashed-content-databases.ts +8 -2
  114. package/corpus/templates/content/actions/list-trashed-documents.ts +50 -0
  115. package/corpus/templates/content/actions/permanently-delete-document.ts +28 -0
  116. package/corpus/templates/content/actions/pull-document.ts +15 -2
  117. package/corpus/templates/content/actions/restore-content-database.ts +48 -11
  118. package/corpus/templates/content/actions/restore-document.ts +28 -0
  119. package/corpus/templates/content/actions/search-documents.ts +2 -1
  120. package/corpus/templates/content/actions/view-screen.ts +2 -1
  121. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +149 -55
  122. package/corpus/templates/content/app/components/editor/database/GalleryView.tsx +7 -2
  123. package/corpus/templates/content/app/components/editor/database/ListView.tsx +7 -2
  124. package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +3 -0
  125. package/corpus/templates/content/app/components/editor/database/sidebar.tsx +26 -5
  126. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +243 -163
  127. package/corpus/templates/content/app/components/sidebar/WorkspaceSourceMenu.tsx +154 -0
  128. package/corpus/templates/content/app/components/sidebar/select-content-space.ts +11 -0
  129. package/corpus/templates/content/app/hooks/use-content-database.ts +6 -0
  130. package/corpus/templates/content/app/hooks/use-documents.ts +57 -0
  131. package/corpus/templates/content/app/i18n-data.ts +83 -2
  132. package/corpus/templates/content/app/routes/_app.local-files.tsx +8 -1
  133. package/corpus/templates/content/changelog/2026-07-19-pages-now-move-to-a-reversible-trash-and-the-organization-pi.md +6 -0
  134. package/corpus/templates/content/changelog/2026-07-20-trash-actions-now-preserve-independent-archived-pages-enforc.md +6 -0
  135. package/corpus/templates/content/changelog/2026-07-20-workspace-toggles-now-stay-independently-open-or-closed-and-.md +6 -0
  136. package/corpus/templates/content/changelog/2026-07-20-workspaces-can-be-added-from-a-blank-workspace-or-a-connecte.md +6 -0
  137. package/corpus/templates/content/parity/matrix.md +1 -1
  138. package/corpus/templates/content/parity/matrix.ts +3 -0
  139. package/corpus/templates/content/server/db/schema.ts +2 -0
  140. package/corpus/templates/content/server/lib/public-documents.ts +8 -2
  141. package/corpus/templates/content/server/plugins/db.ts +52 -0
  142. package/corpus/templates/content/server/routes/api/document-agent-context.json.get.ts +2 -2
  143. package/corpus/templates/content/shared/api.ts +10 -0
  144. package/corpus/toolkit/CHANGELOG.md +6 -0
  145. package/corpus/toolkit/package.json +1 -1
  146. package/corpus/toolkit/src/ui/progress.tsx +3 -2
  147. package/dist/cli/mcp-config-writers.d.ts +2 -2
  148. package/dist/cli/mcp-config-writers.d.ts.map +1 -1
  149. package/dist/cli/mcp-config-writers.js +6 -6
  150. package/dist/cli/mcp-config-writers.js.map +1 -1
  151. package/dist/cli/mcp.d.ts +14 -0
  152. package/dist/cli/mcp.d.ts.map +1 -1
  153. package/dist/cli/mcp.js +79 -0
  154. package/dist/cli/mcp.js.map +1 -1
  155. package/dist/cli/skills-content/help.d.ts +1 -1
  156. package/dist/cli/skills-content/help.d.ts.map +1 -1
  157. package/dist/cli/skills-content/help.js +4 -3
  158. package/dist/cli/skills-content/help.js.map +1 -1
  159. package/dist/cli/skills-content/index.d.ts +1 -0
  160. package/dist/cli/skills-content/index.d.ts.map +1 -1
  161. package/dist/cli/skills-content/index.js +1 -0
  162. package/dist/cli/skills-content/index.js.map +1 -1
  163. package/dist/cli/skills-content/rewind-skill.d.ts +2 -0
  164. package/dist/cli/skills-content/rewind-skill.d.ts.map +1 -0
  165. package/dist/cli/skills-content/rewind-skill.js +53 -0
  166. package/dist/cli/skills-content/rewind-skill.js.map +1 -0
  167. package/dist/cli/skills.d.ts +6 -0
  168. package/dist/cli/skills.d.ts.map +1 -1
  169. package/dist/cli/skills.js +90 -14
  170. package/dist/cli/skills.js.map +1 -1
  171. package/dist/client/resources/ResourceTree.d.ts +3 -1
  172. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  173. package/dist/client/resources/ResourceTree.js +4 -4
  174. package/dist/client/resources/ResourceTree.js.map +1 -1
  175. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  176. package/dist/client/resources/ResourcesPanel.js +55 -6
  177. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  178. package/dist/collab/routes.d.ts +1 -1
  179. package/dist/collab/struct-routes.d.ts +1 -1
  180. package/dist/mcp/screen-memory-stdio.d.ts +365 -0
  181. package/dist/mcp/screen-memory-stdio.d.ts.map +1 -1
  182. package/dist/mcp/screen-memory-stdio.js +1014 -91
  183. package/dist/mcp/screen-memory-stdio.js.map +1 -1
  184. package/dist/mcp-client/index.d.ts +1 -1
  185. package/dist/mcp-client/index.d.ts.map +1 -1
  186. package/dist/mcp-client/index.js +1 -1
  187. package/dist/mcp-client/index.js.map +1 -1
  188. package/dist/mcp-client/screen-memory-local.d.ts +90 -0
  189. package/dist/mcp-client/screen-memory-local.d.ts.map +1 -1
  190. package/dist/mcp-client/screen-memory-local.js +590 -12
  191. package/dist/mcp-client/screen-memory-local.js.map +1 -1
  192. package/dist/notifications/routes.d.ts +2 -2
  193. package/dist/observability/routes.d.ts +5 -5
  194. package/dist/progress/routes.d.ts +1 -1
  195. package/dist/provider-api/actions/provider-api.d.ts +4 -4
  196. package/dist/resources/handlers.d.ts +1 -1
  197. package/dist/secrets/routes.d.ts +9 -9
  198. package/dist/server/transcribe-voice.d.ts +1 -1
  199. package/package.json +2 -2
  200. package/src/cli/mcp-config-writers.ts +6 -4
  201. package/src/cli/mcp.ts +124 -0
  202. package/src/cli/skills-content/help.ts +4 -3
  203. package/src/cli/skills-content/index.ts +1 -0
  204. package/src/cli/skills-content/rewind-skill.ts +52 -0
  205. package/src/cli/skills.ts +115 -13
  206. package/src/client/resources/ResourceTree.tsx +11 -5
  207. package/src/client/resources/ResourcesPanel.tsx +141 -18
  208. package/src/mcp/screen-memory-stdio.ts +1360 -104
  209. package/src/mcp-client/index.ts +9 -0
  210. package/src/mcp-client/screen-memory-local.ts +847 -13
@@ -142,6 +142,7 @@ body[data-clips-route="recording-pill"] #root {
142
142
  100vh - var(--popover-shadow-gutter) - var(--popover-shadow-gutter)
143
143
  );
144
144
  overflow-y: auto;
145
+ overflow-x: hidden;
145
146
  overscroll-behavior: contain;
146
147
  }
147
148
 
@@ -151,6 +152,34 @@ body[data-clips-route="recording-pill"] #root {
151
152
  overflow-y: auto;
152
153
  }
153
154
 
155
+ /* Recorder Home keeps its navigation present even when active-recording
156
+ content exceeds the restored popover height. Only the content region may
157
+ scroll; the window shell and bottom destinations stay put. */
158
+ .app-recorder {
159
+ gap: 0;
160
+ padding: 0;
161
+ overflow: hidden;
162
+ }
163
+
164
+ .recorder-home-content {
165
+ min-height: 0;
166
+ padding: 14px;
167
+ display: flex;
168
+ flex: 1 1 auto;
169
+ flex-direction: column;
170
+ gap: 14px;
171
+ overflow-y: auto;
172
+ overflow-x: hidden;
173
+ overscroll-behavior: contain;
174
+ }
175
+
176
+ .app-recorder > .bottom-row {
177
+ flex: 0 0 auto;
178
+ padding: 7px 14px 10px;
179
+ border-top: 1px solid var(--border);
180
+ background: var(--bg);
181
+ }
182
+
154
183
  /* Header — logo + mode toggle + close */
155
184
 
156
185
  .header {
@@ -709,6 +738,12 @@ body[data-clips-route="recording-pill"] #root {
709
738
  box-shadow: 0 0 0 2px var(--brand-ring);
710
739
  }
711
740
 
741
+ .switch:disabled {
742
+ opacity: 0.42;
743
+ filter: grayscale(0.55);
744
+ cursor: not-allowed;
745
+ }
746
+
712
747
  .switch-on {
713
748
  background: #16a34a;
714
749
  }
@@ -997,201 +1032,925 @@ body[data-clips-route="recording-pill"] #root {
997
1032
  box-shadow: 0 0 0 3px var(--brand-ring);
998
1033
  }
999
1034
 
1000
- .readiness-item-actions {
1001
- display: flex;
1002
- align-items: center;
1003
- gap: 6px;
1004
- flex-shrink: 0;
1035
+ .readiness-item-actions {
1036
+ display: flex;
1037
+ align-items: center;
1038
+ gap: 6px;
1039
+ flex-shrink: 0;
1040
+ }
1041
+
1042
+ .readiness-status {
1043
+ display: inline-flex;
1044
+ align-items: center;
1045
+ justify-content: center;
1046
+ }
1047
+
1048
+ .readiness-status-ok {
1049
+ color: var(--status-ok);
1050
+ }
1051
+
1052
+ .readiness-status-warn {
1053
+ color: var(--status-warn);
1054
+ }
1055
+
1056
+ .readiness-refresh {
1057
+ display: inline-flex;
1058
+ align-items: center;
1059
+ justify-content: center;
1060
+ width: 24px;
1061
+ height: 24px;
1062
+ border: none;
1063
+ background: transparent;
1064
+ color: var(--fg-muted);
1065
+ cursor: pointer;
1066
+ border-radius: var(--radius-sm);
1067
+ transition:
1068
+ color 120ms,
1069
+ background 120ms;
1070
+ flex-shrink: 0;
1071
+ }
1072
+
1073
+ .readiness-refresh:hover {
1074
+ color: var(--fg);
1075
+ background: var(--surface-hover);
1076
+ }
1077
+
1078
+ .readiness-refresh:disabled {
1079
+ opacity: 0.6;
1080
+ cursor: default;
1081
+ }
1082
+
1083
+ .readiness-refresh-spinning svg {
1084
+ animation: readiness-spin 0.8s linear infinite;
1085
+ }
1086
+
1087
+ @keyframes readiness-spin {
1088
+ to {
1089
+ transform: rotate(360deg);
1090
+ }
1091
+ }
1092
+
1093
+ .readiness-empty {
1094
+ padding: 8px;
1095
+ color: var(--fg-muted);
1096
+ font-size: 12px;
1097
+ line-height: 1.3;
1098
+ }
1099
+
1100
+ .rec-dot {
1101
+ width: 8px;
1102
+ height: 8px;
1103
+ border-radius: 50%;
1104
+ background: #ef4444;
1105
+ box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.3);
1106
+ }
1107
+
1108
+ .active-recording-card {
1109
+ display: grid;
1110
+ grid-template-columns: auto minmax(0, 1fr);
1111
+ align-items: start;
1112
+ gap: 10px;
1113
+ padding: 16px;
1114
+ border: 1px solid var(--border);
1115
+ border-radius: var(--radius);
1116
+ background: var(--surface);
1117
+ }
1118
+
1119
+ .active-recording-dot {
1120
+ margin-top: 4px;
1121
+ }
1122
+
1123
+ .active-recording-copy strong {
1124
+ display: block;
1125
+ font-size: 13px;
1126
+ }
1127
+
1128
+ .active-recording-copy p {
1129
+ margin: 3px 0 0;
1130
+ color: var(--fg-muted);
1131
+ font-size: 11px;
1132
+ line-height: 1.4;
1133
+ }
1134
+
1135
+ .active-recording-stop {
1136
+ grid-column: 1 / -1;
1137
+ margin-top: 4px;
1138
+ }
1139
+
1140
+ .active-recording-card-compact {
1141
+ grid-template-columns: auto minmax(0, 1fr) auto;
1142
+ align-items: center;
1143
+ gap: 8px;
1144
+ padding: 8px 10px;
1145
+ }
1146
+
1147
+ .active-recording-live {
1148
+ display: inline-flex;
1149
+ align-items: center;
1150
+ gap: 5px;
1151
+ min-height: 22px;
1152
+ padding: 0 7px;
1153
+ border-radius: 999px;
1154
+ background: #dc2626;
1155
+ color: #fff;
1156
+ font-size: 9px;
1157
+ font-weight: 800;
1158
+ letter-spacing: 0.08em;
1159
+ line-height: 1;
1160
+ }
1161
+
1162
+ .active-recording-live-dot {
1163
+ position: relative;
1164
+ width: 6px;
1165
+ height: 6px;
1166
+ border-radius: 50%;
1167
+ background: #fff;
1168
+ }
1169
+
1170
+ .active-recording-live-dot::after {
1171
+ content: "";
1172
+ position: absolute;
1173
+ inset: -2px;
1174
+ border: 1px solid rgba(255, 255, 255, 0.7);
1175
+ border-radius: inherit;
1176
+ animation: active-recording-pulse 1.2s ease-out infinite;
1177
+ }
1178
+
1179
+ @keyframes active-recording-pulse {
1180
+ 0% {
1181
+ transform: scale(0.8);
1182
+ opacity: 1;
1183
+ }
1184
+ 75%,
1185
+ 100% {
1186
+ transform: scale(1.8);
1187
+ opacity: 0;
1188
+ }
1189
+ }
1190
+
1191
+ .active-recording-card-compact .active-recording-stop {
1192
+ grid-column: auto;
1193
+ margin-top: 0;
1194
+ min-height: 28px;
1195
+ height: 28px;
1196
+ padding: 5px 10px;
1197
+ font-size: 12px;
1198
+ }
1199
+
1200
+ @media (prefers-reduced-motion: reduce) {
1201
+ .active-recording-live-dot::after {
1202
+ animation: none;
1203
+ opacity: 0.65;
1204
+ transform: none;
1205
+ }
1206
+ }
1207
+
1208
+ /* Active-recording state on the primary button: softened orange-red
1209
+ (Tailwind orange-700) — semantic "recording is live" without the harsh
1210
+ pure-red assault. White square icon + live pulsing dot still read as
1211
+ "stop". Hover stays the same shade (no brighten-on-hover) to keep the
1212
+ affordance calm. */
1213
+ .primary.start.rec-active {
1214
+ background: #c2410c;
1215
+ color: #fff;
1216
+ }
1217
+ .primary.start.rec-active:hover {
1218
+ background: #9a3412;
1219
+ }
1220
+
1221
+ .rec-dot-live {
1222
+ position: relative;
1223
+ background: white;
1224
+ }
1225
+
1226
+ .rec-dot-live::after {
1227
+ content: "";
1228
+ position: absolute;
1229
+ inset: -1px;
1230
+ border-radius: inherit;
1231
+ border: 1px solid rgba(255, 255, 255, 0.6);
1232
+ animation: rec-live-pulse 1.2s ease-out infinite;
1233
+ pointer-events: none;
1234
+ }
1235
+
1236
+ @keyframes rec-live-pulse {
1237
+ 0% {
1238
+ transform: scale(1);
1239
+ opacity: 1;
1240
+ }
1241
+ 70% {
1242
+ transform: scale(2.4);
1243
+ opacity: 0;
1244
+ }
1245
+ 100% {
1246
+ transform: scale(2.4);
1247
+ opacity: 0;
1248
+ }
1249
+ }
1250
+
1251
+ @media (prefers-reduced-motion: reduce) {
1252
+ .rec-dot-live::after {
1253
+ animation: none;
1254
+ opacity: 0.6;
1255
+ transform: none;
1256
+ }
1257
+ }
1258
+
1259
+ /* ------------------------------------------------------------------------- */
1260
+ /* Bottom quick-actions row */
1261
+ /* ------------------------------------------------------------------------- */
1262
+
1263
+ .bottom-row {
1264
+ display: grid;
1265
+ grid-template-columns: repeat(4, 1fr);
1266
+ gap: 4px;
1267
+ }
1268
+
1269
+ .bottom-btn {
1270
+ display: flex;
1271
+ flex-direction: column;
1272
+ align-items: center;
1273
+ gap: 4px;
1274
+ padding: 8px 4px;
1275
+ border: none;
1276
+ background: transparent;
1277
+ border-radius: var(--radius-sm);
1278
+ color: var(--fg-muted);
1279
+ cursor: pointer;
1280
+ transition:
1281
+ background 120ms,
1282
+ color 120ms;
1283
+ }
1284
+
1285
+ .bottom-btn:hover {
1286
+ background: var(--surface-hover);
1287
+ color: var(--fg);
1288
+ }
1289
+
1290
+ .bottom-icon {
1291
+ position: relative;
1292
+ display: inline-flex;
1293
+ align-items: center;
1294
+ justify-content: center;
1295
+ color: var(--fg-muted);
1296
+ }
1297
+
1298
+ .bottom-btn:hover .bottom-icon {
1299
+ color: var(--fg);
1300
+ }
1301
+
1302
+ .bottom-label {
1303
+ font-size: 11px;
1304
+ font-weight: 500;
1305
+ }
1306
+
1307
+ /* ------------------------------------------------------------------------- */
1308
+ /* Popover drill-in views */
1309
+ /* ------------------------------------------------------------------------- */
1310
+
1311
+ .app-popover-view {
1312
+ gap: 0;
1313
+ padding: 0;
1314
+ }
1315
+
1316
+ .popover-view {
1317
+ min-height: 260px;
1318
+ }
1319
+
1320
+ .popover-view-header {
1321
+ margin-bottom: 2px;
1322
+ }
1323
+
1324
+ .popover-view-header-spacer {
1325
+ flex: 1;
1326
+ }
1327
+
1328
+ .popover-view-link {
1329
+ font-size: 11px;
1330
+ }
1331
+
1332
+ /* Rewind is a calm everyday status first; configuration is a drill-in. */
1333
+ .rewind-home-card {
1334
+ display: grid;
1335
+ gap: 8px;
1336
+ padding: 10px 11px;
1337
+ border: 1px solid var(--border);
1338
+ border-radius: var(--radius);
1339
+ background: color-mix(in srgb, var(--surface) 72%, var(--bg));
1340
+ }
1341
+
1342
+ .rewind-home-status {
1343
+ display: grid;
1344
+ grid-template-columns: auto minmax(0, 1fr) auto;
1345
+ align-items: center;
1346
+ gap: 9px;
1347
+ }
1348
+
1349
+ .rewind-settings-entry-main {
1350
+ display: grid;
1351
+ grid-template-columns: auto minmax(0, 1fr);
1352
+ align-items: start;
1353
+ gap: 9px;
1354
+ }
1355
+
1356
+ .rewind-home-status p {
1357
+ margin: 2px 0 0;
1358
+ color: var(--fg-muted);
1359
+ font-size: 11px;
1360
+ line-height: 1.4;
1361
+ }
1362
+
1363
+ .rewind-home-status strong {
1364
+ font-size: 13px;
1365
+ font-weight: 500;
1366
+ }
1367
+
1368
+ .rewind-home-lock-note,
1369
+ .rewind-capture-lock-note {
1370
+ margin: 0;
1371
+ color: var(--fg-muted);
1372
+ font-size: 10.5px;
1373
+ line-height: 1.4;
1374
+ }
1375
+
1376
+ .rewind-capture-lock-note {
1377
+ padding: 9px 10px;
1378
+ border-radius: var(--radius-sm);
1379
+ background: var(--surface);
1380
+ }
1381
+
1382
+ .rewind-home-controls {
1383
+ display: inline-flex;
1384
+ align-items: center;
1385
+ gap: 8px;
1386
+ }
1387
+
1388
+ .rewind-agent-prompt-copy {
1389
+ width: 28px;
1390
+ height: 28px;
1391
+ display: grid;
1392
+ place-items: center;
1393
+ padding: 0;
1394
+ border: none;
1395
+ border-radius: 7px;
1396
+ background: transparent;
1397
+ color: var(--fg-muted);
1398
+ cursor: pointer;
1399
+ }
1400
+
1401
+ .rewind-agent-prompt-copy:hover {
1402
+ background: var(--surface-hover);
1403
+ color: var(--fg);
1404
+ }
1405
+
1406
+ .rewind-agent-prompt-copy:focus-visible {
1407
+ outline: none;
1408
+ box-shadow: 0 0 0 3px var(--brand-ring);
1409
+ }
1410
+
1411
+ .rewind-home-dot {
1412
+ width: 9px;
1413
+ height: 9px;
1414
+ margin-top: 4px;
1415
+ border-radius: 50%;
1416
+ background: var(--fg-subtle);
1417
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--fg-subtle) 13%, transparent);
1418
+ flex-shrink: 0;
1419
+ }
1420
+
1421
+ .rewind-home-dot.is-live {
1422
+ background: var(--status-ok);
1423
+ box-shadow: 0 0 0 4px color-mix(in srgb, var(--status-ok) 15%, transparent);
1424
+ }
1425
+
1426
+ .rewind-home-actions {
1427
+ display: grid;
1428
+ grid-template-columns: repeat(3, minmax(0, 1fr));
1429
+ gap: 6px;
1430
+ }
1431
+
1432
+ .rewind-home-actions button {
1433
+ min-width: 0;
1434
+ min-height: 31px;
1435
+ display: inline-flex;
1436
+ align-items: center;
1437
+ justify-content: center;
1438
+ gap: 5px;
1439
+ border: 1px solid var(--border-strong);
1440
+ border-radius: var(--radius-sm);
1441
+ background: var(--bg);
1442
+ color: var(--fg);
1443
+ cursor: pointer;
1444
+ font-size: 10.5px;
1445
+ font-weight: 600;
1446
+ }
1447
+
1448
+ .rewind-home-actions button:hover:not(:disabled) {
1449
+ background: var(--surface-hover);
1450
+ }
1451
+
1452
+ .rewind-home-actions button:disabled {
1453
+ opacity: 0.42;
1454
+ cursor: default;
1455
+ }
1456
+
1457
+ .rewind-home-actions button:focus-visible,
1458
+ .rewind-consent-choices button:focus-visible,
1459
+ .rewind-consent-primary:focus-visible,
1460
+ .rewind-quiet-button:focus-visible,
1461
+ .rewind-search-row input:focus-visible,
1462
+ .rewind-search-row button:focus-visible,
1463
+ .rewind-setting-control:focus-visible,
1464
+ .rewind-settings-entry .secondary:focus-visible,
1465
+ .rewind-evidence-card .secondary:focus-visible,
1466
+ .rewind-memory-empty .secondary:focus-visible,
1467
+ .setup-back:focus-visible {
1468
+ outline: none;
1469
+ box-shadow: 0 0 0 3px var(--brand-ring);
1470
+ }
1471
+
1472
+ .rewind-home-actions .icon {
1473
+ width: 14px;
1474
+ height: 14px;
1475
+ }
1476
+
1477
+ .rewind-consent {
1478
+ min-height: 430px;
1479
+ align-items: center;
1480
+ padding: 24px;
1481
+ text-align: center;
1482
+ }
1483
+
1484
+ .rewind-consent-mark {
1485
+ width: 48px;
1486
+ height: 48px;
1487
+ display: grid;
1488
+ place-items: center;
1489
+ border-radius: 15px;
1490
+ background: var(--surface);
1491
+ }
1492
+
1493
+ .rewind-kicker {
1494
+ margin: -4px 0 -10px;
1495
+ color: var(--fg-muted);
1496
+ font-size: 10px;
1497
+ font-weight: 700;
1498
+ letter-spacing: 0.09em;
1499
+ text-transform: uppercase;
1500
+ }
1501
+
1502
+ .rewind-consent h2 {
1503
+ margin: 0;
1504
+ font-size: 20px;
1505
+ letter-spacing: -0.02em;
1506
+ }
1507
+
1508
+ .rewind-consent-copy,
1509
+ .rewind-surface-lede {
1510
+ margin: 0;
1511
+ color: var(--fg-muted);
1512
+ font-size: 12px;
1513
+ line-height: 1.5;
1514
+ }
1515
+
1516
+ .rewind-consent-choices {
1517
+ width: 100%;
1518
+ display: grid;
1519
+ gap: 8px;
1520
+ }
1521
+
1522
+ .rewind-consent-choices button {
1523
+ display: grid;
1524
+ gap: 3px;
1525
+ padding: 12px 13px;
1526
+ border: 1px solid var(--border);
1527
+ border-radius: var(--radius);
1528
+ background: var(--bg);
1529
+ color: var(--fg);
1530
+ cursor: pointer;
1531
+ text-align: left;
1532
+ }
1533
+
1534
+ .rewind-consent-choices button.selected {
1535
+ border-color: var(--fg);
1536
+ box-shadow: 0 0 0 1px var(--fg);
1537
+ }
1538
+
1539
+ .rewind-consent-choices span {
1540
+ color: var(--fg-muted);
1541
+ font-size: 11px;
1542
+ }
1543
+
1544
+ .rewind-local-promise {
1545
+ display: grid;
1546
+ grid-template-columns: auto minmax(0, 1fr);
1547
+ gap: 9px;
1548
+ width: 100%;
1549
+ padding: 11px;
1550
+ border-radius: var(--radius);
1551
+ background: var(--surface);
1552
+ color: var(--fg-muted);
1553
+ text-align: left;
1554
+ }
1555
+
1556
+ .rewind-local-promise p {
1557
+ margin: 0;
1558
+ font-size: 11px;
1559
+ line-height: 1.5;
1560
+ }
1561
+
1562
+ .rewind-local-promise strong {
1563
+ color: var(--fg);
1564
+ }
1565
+
1566
+ .rewind-consent-primary {
1567
+ width: 100%;
1568
+ min-height: 42px;
1569
+ }
1570
+
1571
+ .rewind-quiet-button {
1572
+ border: none;
1573
+ background: transparent;
1574
+ color: var(--fg-muted);
1575
+ cursor: pointer;
1576
+ font-size: 12px;
1577
+ font-weight: 600;
1578
+ }
1579
+
1580
+ .rewind-memory-surface,
1581
+ .rewind-settings-surface {
1582
+ gap: 14px;
1583
+ min-width: 0;
1584
+ max-width: 100%;
1585
+ overflow-x: hidden;
1586
+ }
1587
+
1588
+ .rewind-settings-surface {
1589
+ padding-bottom: 18px;
1590
+ }
1591
+
1592
+ .rewind-search-row {
1593
+ display: grid;
1594
+ grid-template-columns: auto minmax(0, 1fr) auto;
1595
+ align-items: center;
1596
+ gap: 8px;
1597
+ min-height: 42px;
1598
+ padding-left: 11px;
1599
+ border: 1px solid var(--border-strong);
1600
+ border-radius: 11px;
1601
+ background: var(--bg);
1602
+ }
1603
+
1604
+ .rewind-search-row input {
1605
+ min-width: 0;
1606
+ border: none;
1607
+ outline: none;
1608
+ background: transparent;
1609
+ color: var(--fg);
1610
+ }
1611
+
1612
+ .rewind-search-row button {
1613
+ align-self: stretch;
1614
+ border: none;
1615
+ border-left: 1px solid var(--border);
1616
+ border-radius: 0 10px 10px 0;
1617
+ background: var(--surface);
1618
+ padding: 0 12px;
1619
+ cursor: pointer;
1620
+ font-size: 11px;
1621
+ font-weight: 600;
1622
+ }
1623
+
1624
+ .rewind-search-row button:disabled {
1625
+ opacity: 0.45;
1626
+ cursor: default;
1627
+ }
1628
+
1629
+ .rewind-search-results {
1630
+ display: grid;
1631
+ gap: 8px;
1632
+ }
1633
+
1634
+ .rewind-result-summary {
1635
+ display: flex;
1636
+ justify-content: space-between;
1637
+ gap: 10px;
1638
+ color: var(--fg-muted);
1639
+ font-size: 10.5px;
1640
+ }
1641
+
1642
+ .rewind-result-summary strong {
1643
+ color: var(--fg);
1644
+ }
1645
+
1646
+ .rewind-evidence-card {
1647
+ display: grid;
1648
+ gap: 9px;
1649
+ padding: 12px;
1650
+ border: 1px solid var(--border);
1651
+ border-radius: var(--radius);
1652
+ background: var(--bg);
1653
+ }
1654
+
1655
+ .rewind-evidence-card p {
1656
+ margin: 0;
1657
+ line-height: 1.45;
1658
+ }
1659
+
1660
+ .rewind-evidence-meta {
1661
+ color: var(--fg-muted);
1662
+ font-size: 10.5px;
1663
+ font-weight: 600;
1664
+ }
1665
+
1666
+ .rewind-memory-empty {
1667
+ margin-top: 4px;
1668
+ }
1669
+
1670
+ .rewind-coverage-details {
1671
+ margin-top: 2px;
1672
+ }
1673
+
1674
+ .rewind-setting-row {
1675
+ min-height: 62px;
1676
+ display: grid;
1677
+ grid-template-columns: minmax(0, 1fr) 142px;
1678
+ align-items: center;
1679
+ gap: 14px;
1680
+ border-bottom: 1px solid var(--border);
1681
+ }
1682
+
1683
+ .rewind-setting-row > * {
1684
+ min-width: 0;
1685
+ }
1686
+
1687
+ .rewind-setting-control {
1688
+ width: 142px;
1689
+ max-width: 100%;
1690
+ padding-right: 28px;
1691
+ }
1692
+
1693
+ .rewind-settings-status,
1694
+ .rewind-boundary-note {
1695
+ display: flex;
1696
+ align-items: flex-start;
1697
+ gap: 9px;
1698
+ padding: 10px;
1699
+ border-radius: var(--radius-sm);
1700
+ background: var(--surface);
1701
+ color: var(--fg-muted);
1702
+ font-size: 11px;
1703
+ line-height: 1.45;
1704
+ }
1705
+
1706
+ .rewind-boundary-note {
1707
+ margin: -4px 0 0;
1708
+ }
1709
+
1710
+ .rewind-agent-row {
1711
+ border-bottom: none;
1712
+ }
1713
+
1714
+ .rewind-excluded-apps {
1715
+ display: grid;
1716
+ gap: 9px;
1717
+ padding: 12px 0;
1718
+ border-bottom: 1px solid var(--border);
1719
+ }
1720
+
1721
+ .rewind-excluded-apps-header {
1722
+ display: flex;
1723
+ align-items: center;
1724
+ justify-content: space-between;
1725
+ gap: 10px;
1726
+ min-width: 0;
1727
+ }
1728
+
1729
+ .rewind-choose-apps.secondary {
1730
+ width: auto;
1731
+ flex: 0 0 auto;
1732
+ padding: 7px 9px;
1733
+ font-size: 10.5px;
1734
+ }
1735
+
1736
+ .rewind-excluded-app-list {
1737
+ display: grid;
1738
+ gap: 5px;
1739
+ }
1740
+
1741
+ .rewind-excluded-app {
1742
+ display: grid;
1743
+ grid-template-columns: 28px minmax(0, 1fr) 26px;
1744
+ align-items: center;
1745
+ gap: 8px;
1746
+ min-width: 0;
1747
+ padding: 6px 7px;
1748
+ border: 1px solid var(--border);
1749
+ border-radius: var(--radius-sm);
1750
+ background: var(--surface);
1751
+ }
1752
+
1753
+ .rewind-excluded-app.is-missing {
1754
+ opacity: 0.62;
1755
+ }
1756
+
1757
+ .rewind-excluded-app-mark {
1758
+ width: 28px;
1759
+ height: 28px;
1760
+ display: grid;
1761
+ place-items: center;
1762
+ border-radius: 7px;
1763
+ background: var(--surface-strong);
1764
+ color: var(--fg-muted);
1765
+ font-size: 11px;
1766
+ font-weight: 700;
1767
+ }
1768
+
1769
+ .rewind-excluded-app-copy {
1770
+ display: grid;
1771
+ min-width: 0;
1005
1772
  }
1006
1773
 
1007
- .readiness-status {
1008
- display: inline-flex;
1009
- align-items: center;
1010
- justify-content: center;
1774
+ .rewind-excluded-app-copy strong,
1775
+ .rewind-excluded-app-copy span {
1776
+ overflow: hidden;
1777
+ text-overflow: ellipsis;
1778
+ white-space: nowrap;
1011
1779
  }
1012
1780
 
1013
- .readiness-status-ok {
1014
- color: var(--status-ok);
1781
+ .rewind-excluded-app-copy strong {
1782
+ font-size: 11px;
1015
1783
  }
1016
1784
 
1017
- .readiness-status-warn {
1018
- color: var(--status-warn);
1785
+ .rewind-excluded-app-copy span {
1786
+ color: var(--fg-muted);
1787
+ font-size: 9.5px;
1019
1788
  }
1020
1789
 
1021
- .readiness-refresh {
1022
- display: inline-flex;
1023
- align-items: center;
1024
- justify-content: center;
1025
- width: 24px;
1026
- height: 24px;
1790
+ .rewind-excluded-app-remove {
1791
+ width: 26px;
1792
+ height: 26px;
1793
+ display: grid;
1794
+ place-items: center;
1027
1795
  border: none;
1796
+ border-radius: 7px;
1028
1797
  background: transparent;
1029
1798
  color: var(--fg-muted);
1030
1799
  cursor: pointer;
1031
- border-radius: var(--radius-sm);
1032
- transition:
1033
- color 120ms,
1034
- background 120ms;
1035
- flex-shrink: 0;
1036
1800
  }
1037
1801
 
1038
- .readiness-refresh:hover {
1039
- color: var(--fg);
1802
+ .rewind-excluded-app-remove:hover:not(:disabled) {
1040
1803
  background: var(--surface-hover);
1804
+ color: var(--fg);
1041
1805
  }
1042
1806
 
1043
- .readiness-refresh:disabled {
1044
- opacity: 0.6;
1045
- cursor: default;
1807
+ .rewind-agent-guide {
1808
+ display: grid;
1809
+ grid-template-columns: auto minmax(0, 1fr);
1810
+ gap: 9px;
1811
+ padding: 11px;
1812
+ border: 1px solid var(--border);
1813
+ border-radius: var(--radius);
1814
+ background: color-mix(in srgb, var(--surface) 78%, var(--bg));
1046
1815
  }
1047
1816
 
1048
- .readiness-refresh-spinning svg {
1049
- animation: readiness-spin 0.8s linear infinite;
1817
+ .rewind-agent-guide-icon {
1818
+ width: 28px;
1819
+ height: 28px;
1820
+ display: grid;
1821
+ place-items: center;
1822
+ border-radius: 9px;
1823
+ background: var(--bg);
1050
1824
  }
1051
1825
 
1052
- @keyframes readiness-spin {
1053
- to {
1054
- transform: rotate(360deg);
1055
- }
1826
+ .rewind-agent-guide p {
1827
+ margin: 2px 0 5px;
1828
+ line-height: 1.45;
1056
1829
  }
1057
1830
 
1058
- .readiness-empty {
1059
- padding: 8px;
1831
+ .rewind-text-button {
1832
+ padding: 0;
1833
+ border: none;
1834
+ background: transparent;
1060
1835
  color: var(--fg-muted);
1061
- font-size: 12px;
1062
- line-height: 1.3;
1836
+ cursor: pointer;
1837
+ font-size: 10.5px;
1838
+ font-weight: 600;
1839
+ text-decoration: underline;
1840
+ text-underline-offset: 2px;
1063
1841
  }
1064
1842
 
1065
- .rec-dot {
1066
- width: 8px;
1067
- height: 8px;
1068
- border-radius: 50%;
1069
- background: #ef4444;
1070
- box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.3);
1843
+ .rewind-text-button:hover {
1844
+ color: var(--fg);
1071
1845
  }
1072
1846
 
1073
- /* Active-recording state on the primary button: softened orange-red
1074
- (Tailwind orange-700) — semantic "recording is live" without the harsh
1075
- pure-red assault. White square icon + live pulsing dot still read as
1076
- "stop". Hover stays the same shade (no brighten-on-hover) to keep the
1077
- affordance calm. */
1078
- .primary.start.rec-active {
1079
- background: #c2410c;
1080
- color: #fff;
1081
- }
1082
- .primary.start.rec-active:hover {
1083
- background: #9a3412;
1847
+ .rewind-detail-label {
1848
+ font-size: 11px;
1084
1849
  }
1085
1850
 
1086
- .rec-dot-live {
1087
- position: relative;
1088
- background: white;
1851
+ .rewind-memory-actions {
1852
+ display: grid;
1089
1853
  }
1090
1854
 
1091
- .rec-dot-live::after {
1092
- content: "";
1093
- position: absolute;
1094
- inset: -1px;
1095
- border-radius: inherit;
1096
- border: 1px solid rgba(255, 255, 255, 0.6);
1097
- animation: rec-live-pulse 1.2s ease-out infinite;
1098
- pointer-events: none;
1855
+ .rewind-memory-action {
1856
+ display: grid;
1857
+ grid-template-columns: minmax(0, 1fr) minmax(120px, 156px);
1858
+ align-items: center;
1859
+ gap: 12px;
1860
+ min-width: 0;
1861
+ padding: 11px 0;
1862
+ border-bottom: 1px solid var(--border);
1099
1863
  }
1100
1864
 
1101
- @keyframes rec-live-pulse {
1102
- 0% {
1103
- transform: scale(1);
1104
- opacity: 1;
1105
- }
1106
- 70% {
1107
- transform: scale(2.4);
1108
- opacity: 0;
1109
- }
1110
- 100% {
1111
- transform: scale(2.4);
1112
- opacity: 0;
1113
- }
1865
+ .rewind-memory-action:first-child {
1866
+ padding-top: 2px;
1114
1867
  }
1115
1868
 
1116
- @media (prefers-reduced-motion: reduce) {
1117
- .rec-dot-live::after {
1118
- animation: none;
1119
- opacity: 0.6;
1120
- transform: none;
1121
- }
1869
+ .rewind-memory-action:last-child {
1870
+ padding-bottom: 2px;
1871
+ border-bottom: none;
1122
1872
  }
1123
1873
 
1124
- /* ------------------------------------------------------------------------- */
1125
- /* Bottom quick-actions row */
1126
- /* ------------------------------------------------------------------------- */
1874
+ .rewind-memory-action p {
1875
+ margin: 3px 0 0;
1876
+ color: var(--fg-muted);
1877
+ font-size: 10.5px;
1878
+ line-height: 1.4;
1879
+ }
1127
1880
 
1128
- .bottom-row {
1129
- display: grid;
1130
- grid-template-columns: repeat(4, 1fr);
1131
- gap: 4px;
1881
+ .rewind-memory-action-copy {
1882
+ min-width: 0;
1132
1883
  }
1133
1884
 
1134
- .bottom-btn {
1885
+ .rewind-inline-receipt {
1135
1886
  display: flex;
1136
- flex-direction: column;
1137
1887
  align-items: center;
1138
- gap: 4px;
1139
- padding: 8px 4px;
1140
- border: none;
1141
- background: transparent;
1142
- border-radius: var(--radius-sm);
1143
- color: var(--fg-muted);
1144
- cursor: pointer;
1145
- transition:
1146
- background 120ms,
1147
- color 120ms;
1888
+ gap: 8px;
1889
+ margin-top: 7px;
1890
+ color: #15803d;
1891
+ font-size: 10.5px;
1892
+ font-weight: 600;
1148
1893
  }
1149
1894
 
1150
- .bottom-btn:hover {
1151
- background: var(--surface-hover);
1152
- color: var(--fg);
1895
+ .rewind-inline-receipt .rewind-text-button {
1896
+ color: inherit;
1153
1897
  }
1154
1898
 
1155
- .bottom-icon {
1156
- position: relative;
1157
- display: inline-flex;
1158
- align-items: center;
1159
- justify-content: center;
1160
- color: var(--fg-muted);
1899
+ .rewind-agent-repair .rewind-memory-actions {
1900
+ grid-template-columns: repeat(2, minmax(0, 1fr));
1901
+ gap: 8px;
1902
+ margin-top: 8px;
1161
1903
  }
1162
1904
 
1163
- .bottom-btn:hover .bottom-icon {
1164
- color: var(--fg);
1905
+ .rewind-agent-repair .secondary {
1906
+ min-width: 0;
1907
+ white-space: normal;
1165
1908
  }
1166
1909
 
1167
- .bottom-label {
1168
- font-size: 11px;
1169
- font-weight: 500;
1910
+ @media (max-width: 420px) {
1911
+ .rewind-setting-row,
1912
+ .rewind-memory-action {
1913
+ grid-template-columns: minmax(0, 1fr);
1914
+ align-items: stretch;
1915
+ }
1916
+
1917
+ .rewind-setting-control {
1918
+ width: 100%;
1919
+ }
1920
+
1921
+ .rewind-agent-repair .rewind-memory-actions {
1922
+ grid-template-columns: minmax(0, 1fr);
1923
+ }
1170
1924
  }
1171
1925
 
1172
- /* ------------------------------------------------------------------------- */
1173
- /* Popover drill-in views */
1174
- /* ------------------------------------------------------------------------- */
1926
+ .rewind-memory-action .secondary {
1927
+ width: 100%;
1928
+ min-width: 0;
1929
+ white-space: normal;
1930
+ line-height: 1.25;
1931
+ }
1175
1932
 
1176
- .app-popover-view {
1177
- gap: 0;
1178
- padding: 0;
1933
+ .rewind-memory-action.is-danger strong {
1934
+ color: #991b1b;
1179
1935
  }
1180
1936
 
1181
- .popover-view {
1182
- min-height: 260px;
1937
+ .rewind-danger-button {
1938
+ color: #b91c1c;
1183
1939
  }
1184
1940
 
1185
- .popover-view-header {
1186
- margin-bottom: 2px;
1941
+ .setup .rewind-settings-entry {
1942
+ display: grid;
1943
+ grid-template-columns: minmax(0, 1fr) auto;
1944
+ align-items: center;
1945
+ gap: 12px;
1187
1946
  }
1188
1947
 
1189
- .popover-view-header-spacer {
1190
- flex: 1;
1948
+ .rewind-settings-entry .secondary {
1949
+ width: auto;
1191
1950
  }
1192
1951
 
1193
- .popover-view-link {
1194
- font-size: 11px;
1952
+ .setup .setup-rewind-legacy {
1953
+ display: none;
1195
1954
  }
1196
1955
 
1197
1956
  .popover-empty-card {
@@ -1493,7 +2252,7 @@ body[data-clips-route="recording-pill"] #root {
1493
2252
  content isn't flush with the panel edge. Must follow `.setup` so it wins
1494
2253
  over the shorthand padding above. */
1495
2254
  .setup.popover-view {
1496
- padding-bottom: 16px;
2255
+ padding-bottom: 32px;
1497
2256
  }
1498
2257
 
1499
2258
  .setup h2 {
@@ -1835,6 +2594,13 @@ body[data-clips-route="recording-pill"] #root {
1835
2594
  background-repeat: no-repeat;
1836
2595
  }
1837
2596
 
2597
+ .setup-select:disabled {
2598
+ opacity: 0.48;
2599
+ color: var(--fg-muted);
2600
+ background-color: var(--surface);
2601
+ cursor: not-allowed;
2602
+ }
2603
+
1838
2604
  .setup-grid {
1839
2605
  display: grid;
1840
2606
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -2572,6 +3338,45 @@ body[data-clips-route="recording-pill"] #root {
2572
3338
  /* Overlay: finalizing spinner */
2573
3339
  /* ------------------------------------------------------------------------- */
2574
3340
 
3341
+ .preparing-root {
3342
+ position: fixed;
3343
+ inset: 0;
3344
+ display: flex;
3345
+ align-items: flex-end;
3346
+ justify-content: flex-start;
3347
+ padding: 10px;
3348
+ background: transparent;
3349
+ }
3350
+
3351
+ .preparing-card {
3352
+ display: flex;
3353
+ align-items: center;
3354
+ gap: 10px;
3355
+ width: 100%;
3356
+ padding: 12px 14px;
3357
+ border-radius: 16px;
3358
+ background: rgba(20, 22, 28, 0.94);
3359
+ backdrop-filter: blur(20px);
3360
+ -webkit-backdrop-filter: blur(20px);
3361
+ border: 1px solid rgba(255, 255, 255, 0.08);
3362
+ box-shadow:
3363
+ 0 14px 40px rgba(0, 0, 0, 0.45),
3364
+ 0 2px 6px rgba(0, 0, 0, 0.3);
3365
+ color: white;
3366
+ font-size: 13px;
3367
+ font-weight: 600;
3368
+ }
3369
+
3370
+ .preparing-spinner {
3371
+ width: 18px;
3372
+ height: 18px;
3373
+ flex: 0 0 auto;
3374
+ border-radius: 50%;
3375
+ border: 2px solid rgba(255, 255, 255, 0.18);
3376
+ border-top-color: #ffffff;
3377
+ animation: finalizing-spin 0.9s linear infinite;
3378
+ }
3379
+
2575
3380
  /*
2576
3381
  * Compact transparent window shown after the user clicks Stop. Keeping the OS
2577
3382
  * window close to the card's bounds lets its open/dismiss controls stay
@@ -2962,11 +3767,28 @@ body[data-clips-route="recording-pill"] #root {
2962
3767
 
2963
3768
  .toolbar-v-time {
2964
3769
  flex: 0 0 auto;
3770
+ appearance: none;
3771
+ padding: 2px 4px;
3772
+ border: 0;
3773
+ border-radius: 6px;
3774
+ background: transparent;
2965
3775
  font-variant-numeric: tabular-nums;
2966
3776
  font-size: 14px;
2967
3777
  font-weight: 600;
2968
3778
  color: white;
2969
3779
  letter-spacing: 0.3px;
3780
+ cursor: pointer;
3781
+ }
3782
+
3783
+ .toolbar-v-time:hover,
3784
+ .toolbar-v-time:focus-visible {
3785
+ background: rgba(255, 255, 255, 0.1);
3786
+ outline: none;
3787
+ }
3788
+
3789
+ .toolbar-v-time-preparing {
3790
+ font-size: 9px;
3791
+ letter-spacing: 0;
2970
3792
  }
2971
3793
 
2972
3794
  .toolbar-v-pause {